找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2300|回复: 12

[求助] 看完G版的教程入门篇后 有问题请教!

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2013-11-7 20:02:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 spp_wall 于 2013-11-7 21:11 编辑

(command "OPENDCL")
;主程序
     (defun c:hello()
        ; 加载对话框文件
        (dcl_Project_Load "helloworld" T)
        ; 显示对话框,其中dcl_Project_Load 后面的"HelloWorld"是对话框文件(工程)的路径名,T指的是重新加载,其中的HelloWorld_Form1应该是对话框的名字,从第一个图片的第三部分来看,对话框的名字应该是Form1,但是在程序中是HelloWorld_Form1,那就说明了一个问题:在程序中,工程名+对话框名=真正使用的名字。
         (dcl_Form_Show helloworld_Form1)
        (princ)
     )
;;对话框初始化事件代码
(defun c:HelloWorld_Form1_OnInitialize (/)
        ;;将labell控件标签设为“hello world”
(dcl_Control_SetCaption HelloWorld_Form1_Label1 "hello world" )
)
;;确定按钮事件,退出对话框
(defun c:HelloWorld_Form1_TextButton1_OnClicked (/)
        ;;关闭对话框
(dcl_Form_CLose HelloWorld_Form1 )
)
openDCL入门篇.png


如果我希望点击OK后执行下面lsp代码 应该如何处理呢?
(defun C:cstc (/ sg i s1)   (setvar "cmdecho" 0)  (command "_.undo" "_begin")  (princ "\n填充重生边框,请选择填充图案:")  (setq sg (ssget '((0 . "hatch"))) i -1)  (while (setq s1 (ssname sg (setq i (1+ i))))    (command "-hatchedit" s1 "b" "p" "y")   )  (command "_.undo" "_end")  (princ))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-7 20:17:21 | 显示全部楼层
本帖最后由 newer 于 2013-11-7 20:18 编辑

1、你要在对话框编辑器中,把点OK的事件勾上,然后把回调函数拷贝粘贴到你的LISP程序中。

2、你把你的代码放到OK回调函数里面,或者OK回调函数里面设个函数执行你的代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-7 20:24:00 | 显示全部楼层
本帖最后由 spp_wall 于 2013-11-7 20:26 编辑

命令刚好像 自己试会了 {:soso_e113:}
但是点了 好像还是不会退出窗体  我再试试

点评

ODCL很好学的。代码都不用自己写。学会拷贝粘贴编辑器里面的事件回调代码。 你把你写的代码贴上来吧,帮你看看。  详情 回复 发表于 2013-11-7 20:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-7 20:28:58 | 显示全部楼层
spp_wall 发表于 2013-11-7 20:24
命令刚好像 自己试会了
但是点了 好像还是不会退出窗体  我再试试

ODCL很好学的。代码都不用自己写。学会拷贝粘贴编辑器里面的事件回调代码。

你把你写的代码贴上来吧,帮你看看。

点评

我完全不会的! (command "OPENDCL") ;主程序 (defun c:hello() ; 加载对话框文件 (dcl_Project_Load "helloworld" T) (dcl_Form_Show helloworld_Form1) (princ)  详情 回复 发表于 2013-11-7 20:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-7 20:45:39 | 显示全部楼层
本帖最后由 spp_wall 于 2013-11-7 20:49 编辑
newer 发表于 2013-11-7 20:28
ODCL很好学的。代码都不用自己写。学会拷贝粘贴编辑器里面的事件回调代码。

你把你写的代码贴上来吧, ...
我完全不会的!  刚开始学
第一个不会退出的问题我找到了  是我的代码错了  但是执行命令还是不会 我完全不会的!

(command "OPENDCL")
;主程序
     (defun c:hello()
        ; 加载对话框文件
        (dcl_Project_Load "helloworld" T)

         (dcl_Form_Show helloworld_Form1)
        (princ)
     )



;;对话框初始化事件代码
(defun c:HelloWorld_Form1_OnInitialize (/)
(defun C:cstc(/ sg i s1)   
(setvar "cmdecho" 0)  
(command "_.undo" "_begin")  
(princ "\n填充重生边框,请选择填充图案:")
  (setq sg (ssget '((0 . "hatch"))) i -1)
   (while (setq s1 (ssname sg (setq i (1+ i))))   
           (command "-hatchedit" s1 "b" "p" "y")   )
            (command "_.undo" "_end")  
            (princ))
        ;;将label1控件标签设为“hello world”
(dcl_Control_SetCaption HelloWorld_Form1_Label1 "hello world" )
)

;;确定按钮事件,退出对话框
(defun c:HelloWorld_Form1_TextButton1_OnClicked (/)

        ;;关闭对话框
(dcl_Form_CLose HelloWorld_Form1 )
)


还是没有退出 也没有执行命令

点评

你用编辑器,把对话框打开,看看里面OK按钮的回调事件勾上没  详情 回复 发表于 2013-11-7 20:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-7 20:49:52 | 显示全部楼层
spp_wall 发表于 2013-11-7 20:45
我完全不会的!

(command "OPENDCL")

你用编辑器,把对话框打开,看看里面OK按钮的回调事件勾上没

点评

OK按钮的问题解决了 是我的代码写错了 1写成 L了 就是不知道怎么点OK加载lisp命令  详情 回复 发表于 2013-11-7 21:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-7 21:00:44 | 显示全部楼层
newer 发表于 2013-11-7 20:49
你用编辑器,把对话框打开,看看里面OK按钮的回调事件勾上没

OK按钮的问题解决了  是我的代码写错了 1写成 L了

就是不知道怎么点OK加载lisp命令

点评

点完OK后,执行的是OK那个回调函数,你想做什么,在这个回调函数内部写上就行了。  详情 回复 发表于 2013-11-7 21:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-7 21:19:17 | 显示全部楼层
spp_wall 发表于 2013-11-7 21:00
OK按钮的问题解决了  是我的代码写错了 1写成 L了

就是不知道怎么点OK加载lisp命令

点完OK后,执行的是OK那个回调函数,你想做什么,在这个回调函数内部写上就行了。

点评

其实我的要求比较简单 现在我手上有helloworld.lsp 控制DCL的文件 (command "OPENDCL") ;主程序 (defun c:hello() ; 加载对话框文件 (dcl_Project_Load "helloworld" T)  详情 回复 发表于 2013-11-8 09:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-11-8 08:31:20 | 显示全部楼层
你看的哪个“G版的教程入门篇”啊?是哪个连接啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-8 09:37:15 | 显示全部楼层
newer 发表于 2013-11-7 21:19
点完OK后,执行的是OK那个回调函数,你想做什么,在这个回调函数内部写上就行了。

其实我的要求比较简单

现在我手上有helloworld.lsp 控制DCL的文件
(command "OPENDCL")
;主程序
     (defun c:hello()
        ; 加载对话框文件
        (dcl_Project_Load "helloworld" T)
                (dcl_Form_Show helloworld_Form1)
        (princ)
     )
     ;;对话框初始化事件代码
(defun c:HelloWorld_Form1_OnInitialize (/)

;;将label1控件标签设为“hello world”
(dcl_Control_SetCaption HelloWorld_Form1_Label1 "hello world" )
)
;;确定按钮事件,退出对话框
  
(defun c:HelloWorld_Form1_TextButton1_OnClicked (/)

;;关闭对话框
(dcl_Form_CLose HelloWorld_Form1 )
)


helloworld.odcl  这个窗体文件  

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:helloworld.odcl 
下载次数:4  文件大小:691 Bytes 
下载权限: 不限 以上  [免费赚D豆]


2dy命令的lsp文件


(defun c:2dy ()
(princ "\n圆:相切 相切 半径:")
(COMMAND "CIRCLE" "2P")
(princ)
)

如何在点击OK按钮的情况下 触发2dy命令
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-11-8 09:55:50 | 显示全部楼层

  1. (defun c:HelloWorld_Form1_TextButton1_OnClicked (/)

  2. ;;关闭对话框
  3. (dcl_Form_CLose HelloWorld_Form1 )

  4. (c:2dy)
  5. )
这样写不行吗?

点评

谢谢 可以了 但是这个用在我这个dcl可以 用在其他为什么这样做不行呢  详情 回复 发表于 2013-11-8 16:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-8 16:17:25 | 显示全部楼层
Lisphk 发表于 2013-11-8 09:55
这样写不行吗?

谢谢  可以了

但是这个用在我这个dcl可以  用在其他为什么这样做不行呢

点评

其他你举个例子。  详情 回复 发表于 2013-11-8 16:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-8 16:43:45 | 显示全部楼层
spp_wall 发表于 2013-11-8 16:17
谢谢  可以了

但是这个用在我这个dcl可以  用在其他为什么这样做不行呢

其他你举个例子。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-27 12:08 , Processed in 0.547196 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表