明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2112|回复: 10

ODCL怎样才能退出对话框再返回?

[复制链接]
发表于 2013-5-1 21:01 | 显示全部楼层 |阅读模式
本帖最后由 alwtyp 于 2013-5-1 21:33 编辑

各位高手,请问OPENDCL怎样才能退出对话框再返回?
  1. (Defun C:ABC(/)
  2.   (Setvar "Cmdecho" 1)
  3.   ;(Setq Block (Ssget))
  4.   (Command "Opendcl")
  5.   (Setvar "Cmdecho" 1)
  6.   ;(_Load_ODCL_Frame nil nil)
  7.   (Dcl_Project_Load "ABC.Odcl");加载对话框
  8.   (Dcl_Form_Show ABC_FORM1);启动对话框界面
  9. (Princ)
  10. )

  11. (defun c:abc_Form1_TextButton1_OnClicked (/)
  12.   (Dcl_Form_Close abc_Form1)
  13.   (Setq Block (Ssget))
  14.   (Dcl_Form_Show ABC_FORM1)
  15.   )

本帖子中包含更多资源

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

x
发表于 2013-5-1 22:13 | 显示全部楼层
OPENDCL的 SAMPLE目錄內SELECTION.LSP 就有了.
发表于 2013-5-1 22:17 | 显示全部楼层
这是初学者经常容易犯的错误!c:abc_Form1_TextButton1_OnClicked事件中关闭对话框后,在该代码中并未执行后面的(Setq Block (Ssget))(Dcl_Form_Show ABC_FORM1),因为此时对话框并未真正关闭!应该修改如下:
  1. (Defun C:ABC(/)
  2.   (Setvar "Cmdecho" 1)
  3.   ;(Setq Block (Ssget))
  4.   (Command "Opendcl")
  5.   (Setvar "Cmdecho" 1)
  6.   ;(_Load_ODCL_Frame nil nil)
  7.   (Dcl_Project_Load "ABC.Odcl");加载对话框
  8.   
  9.   (Dcl_Form_Show ABC_FORM1);启动对话框界面
  10. (if loop
  11.    (progn
  12. (Setq Block (Ssget))
  13.   (Dcl_Form_Show ABC_FORM1)
  14.    )
  15.   )
  16. (Princ)
  17. )

  18. (defun c:abc_Form1_TextButton1_OnClicked (/)
  19.   (Dcl_Form_Close abc_Form1)
  20.   (setq loop t)
  21.    )
发表于 2013-5-1 22:27 | 显示全部楼层
謝謝G版的解說.
 楼主| 发表于 2013-5-1 22:37 | 显示全部楼层
Gu_xl 发表于 2013-5-1 22:17
这是初学者经常容易犯的错误!c:abc_Form1_TextButton1_OnClicked事件中关闭对话框后,在该代码中并未执行后 ...

谢谢GU版.非常感谢
 楼主| 发表于 2013-5-1 22:38 | 显示全部楼层
shenhung 发表于 2013-5-1 22:13
OPENDCL的 SAMPLE目錄內SELECTION.LSP 就有了.

水平有限,在SELECTION中只看到关闭对话框,没看明白怎么回调的
发表于 2013-5-2 08:06 | 显示全部楼层
本帖最后由 shenhung 于 2013-5-2 08:13 编辑
  1. (Defun C:ABC(/)
  2.   (Setvar "Cmdecho" 1)
  3.   ;(Setq Block (Ssget))
  4.   (Command "Opendcl")
  5.   (Setvar "Cmdecho" 1)
  6.   ;(_Load_ODCL_Frame nil nil)
  7.   (Dcl_Project_Load "ABC.Odcl");加载对话框
  8.   
  9.   (setq intshow (Dcl_Form_Show ABC_FORM1))  ;启动对话框界面
  10.   ;intshow 為關閉對話框後取得的返回值
  11. (if  (= intshow 1)   ;借由判斷返回值. 執行你的程序.
  12.    (progn
  13. (Setq Block (Ssget))
  14.   (Dcl_Form_Show ABC_FORM1)
  15.    )
  16.   )
  17. (Princ)
  18. )

  19. (defun c:abc_Form1_TextButton1_OnClicked (/)
  20.   (Dcl_Form_Close abc_Form1  1 )   ;關閉對話框並傳遞一個值 給 dcl_form_show
  21.   
  22.    )
SELECTION.LSP 的範例.基本上跟 AUTOCAD DCL 的用法是一樣的. !!


发表于 2013-5-2 10:03 | 显示全部楼层
是应该向OPENDCL的作者公司提意见,汉字如果作它的文件名,插件就无法运行了
比如写成这样“CJ567dxm第一个可理解的OPENDCL文件”,插件就不成立
发表于 2013-5-2 11:20 | 显示全部楼层

RE: ODCL怎样才能退出对话框再返回?

清风明月名字 发表于 2013-5-2 10:03
是应该向OPENDCL的作者公司提意见,汉字如果作它的文件名,插件就无法运行了
比如写成这样“CJ567dxm第一个 ...

其实你可以为每个控件定义一变量名,这样不管你如何更改文件名都不会影响。
发表于 2013-5-2 19:09 | 显示全部楼层
如何定义?有例子吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 09:21 , Processed in 2.740510 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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