- UID
- 203542
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-12-17
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
ObjectDCL 是 3rd Day software 公司的著名产品, 曾在2001年;两度获得The CAD Depot (www.caddepot.com)一周最佳CAD工具称号.如果您擅长ObjectARX编程,您不需要ObjectDCL, 如果您钟爱LISP/VLISP, 那么, ObjectDCL 将是您不可缺少的威力工具.
ObjectDCL 是第三方开发者为AutoCAD新增的一种对话框工具语言, 它编辑简单, 功能强大, 使您通过LISP就能充分利用Windows资源, 完全可以替代AutoCAD的DCL语言。就象Autodesk 收购了加里佛尼亚Brian Segers 和Robbie Creamer 的Visual Lisp, 进而形成AutoCAD内置的VLISP 语言一样, 我有种预感:ObjectDCL(或这种思路)会成为AutoCAD未来的一种新的内置扩充DCL语言。
1、ObjectDCL 的工作原理。
首先,ObjectDCL是一个可视化编辑器,用它可以编辑出您需要的对话框,存储为 .ODS 和.ODC文件,ODC是ObjectDCL的编辑文件,.ODS是ObjectDCL 输出的成果文件,也就是用户得到的可以用于LISP程序的文件。
其次,ObjectDCL 提供给用户一个ARX文件,这个ARX文件定义了.ODS所有控件的LISP函数,要在AutoCAD环境中先装载这个ARX文件,然后,利用其定义的LISP函数调用.ODS文件并控制其所有控件。
2、实战
或许您还不够清楚,那么就让我们在实战中慢慢体会。
在ObjectDCL中添加一个Modelless Form(图1) ,
修改Property中的(name)和TitleBarText(图2)。
您将获得一个基本的对话框(图3),将其存储为mydcl.odc(同时一个同名的.ods文件也被存储)。
点击左边的”T”图标,然后,用鼠标在对话框中选择位置(窗口)添加文本(Label)到对话框中(图4),
修改property中的Caption为“输入文本”(图5),
您的到图6。
用同样的办法,在对话框中添加TextBox1文本输入框和TextButton按钮两项,修改Caption后,获得如图7对话框。这就是我们要在AutoCAD中使用的对话框。实战001目的在于通过输入文本,然后点击“实战001”按钮,将输入的文本内容Prompt到AutoCAD命令提示行。
在AutoCAD的AutoLISP编辑器中编辑一个如下的LISP程序:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;实战 Objectdcl 实例 ....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:myDCL ( / )
(objectdcl_loadarx)
(Odcl_LoadProject "mydcl" T)
(Odcl_Form_Show "mydcl" "Dcl001")
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;自动加载 ObjectDCL.ARX 文件程序...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun objectdcl_loadarx ()
(if (not (or (findfile "Objectdcl2000.arx")(findfile "objectdcl2004.arx")))
(progn
(alert "ARX: OBJECTDCL.Cannot be found !.")
(exit)
) ; end progn
(progn
(cond
((= (atoi (substr (getvar "acadver") 1 2)) 15)
(if (not (member "objectdcl2000.arx" (arx)))
(arxload (findfile "objectdcl2000.arx"))
)
)
((= (atoi (substr (getvar "acadver") 1 2)) 16)
(if (not (member "objectdcl2004.arx" (arx)))
(arxload (findfile "objectdcl2004.arx"))
)
)
) ; end cond
) ; end progn
) ; end if
)
把mydcl.ods, mydcl.lsp和objectDCL2000.arx放在AutoCAD的搜索路径,加载mydcl.lsp程序后,在AutoCAD中运行“mydcl”命令,就可以显示对话框了。
但是,这个对话框仅仅能够显示,各种控件还没有控制。
回到ObjectDCL中,将mydcl.ods和mydcl.lsp相互关联。在Project栏的Visual/Autolisp file name 处右键鼠标,选Set Viuaal/Autolisp File Name, 然后指定到前面编辑的mydcl.lsp文件,关联完毕。
下面,我们给“实战001”按钮添加LISP控制程序。在ObjectDCL中击活按钮“实战001”,然后点击property中的Events,选种Clicked前面的复选框,一段LISP代码自动生成(图10),点击下部的”Add to .lsp File”,这段代码将被添加到上面关联的mydcl.lsp文件中。
当您回到AutoLisp编辑器时,您回得到提示,选择“是(Y)”,这段代码就加到mydcl.lsp中了。
这段代码如下:
(defun c:Dcl001_TextButton1_Clicked ()
(Odcl_MessageBox "To Do: code must be added to c:Dcl001_TextButton1_Clicked" "To do")
)
他的意思就是:点击“实战001”按钮所要进行的动作。我们下面要作的就是把(Odcl_MessageBox "To Do: code must be added to c:Dcl001_TextButton1_Clicked" "To do")修改成我们需要的代码。
我们计划,点击“实战001”按钮时,读取TextBox1中的内容,promp到AutoCAD.要作到这一点需要使用ObjectDCL.ARX提供的函数,这些函数可以从ObjectDCL的帮助文件中获得,这里我们需要函数:Odcl_Control_GetProperty, 这是一个常用的LISP函数, 具体代码是:
(setq mystring (Odcl_Control_GetProperty "mydcl" "Dcl001" "TextBox1" "Text" ))要在AutoCAD中Prompt, 大家都知道,是:(princ (strcat "\n" mystring))。至此,大功告成。无论您在文本框中输入什么,点击“实战001”按钮时都会在AutoCAD中提示!
仔细阅读ObjectDCL帮助文件,您就会成为一名ObjectDCL高手,掌握了ObjectDCL, 即便是您只会Viual/AutoLISP编程,您的程序界面将比ObjectARX高手的毫不逊色!
文章涉及的实利程序源码见附件
****************************
我的一些用ObjectDCL编辑的对话框示例
.....
......
比较复杂的对话框
|
|