- UID
- 8476
- 积分
- 442
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-8-4
- 最后登录
- 1970-1-1
|
发表于 2006-9-20 08:01:23
|
显示全部楼层
http://jaist.dl.sourceforge.net/ ... ll_Installation.zip
这个是可以安装的版本啊
安装之后写了一篇学习日记,只是一个超级简单的入门记录,高手莫笑,记录如下,以后学习多了,再添加吧:)
[php]
Object dcl 学习日记
华南理工大学建筑学院 qjchen
http://qjchen.googlepages.com
1.入门
今天,Libo2000说objectdcl2007出了,于是下一个回来学习
下载地址是:
http://jaist.dl.sourceforge.net/ ... ll_Installation.zip
安装之后的界面如图所示:
由于之前对objectdcl一窍不通,所以只能从头学起了。
首先根据帮助,必须在autocad中把objectdcl的安装目录和其下的example设置为支持路径。
下一步,关闭acad重启,加载安装目录下的objectdcl2004.arx以及example下面的demo.lsp。
加载之后,让我们看看objectdcl都有些什么样子的功能:
输入序号后的相应命令:如demo,demo2等
1)Demo
block里面可以load dwg,于是我加入一个自己作的dwg图,可以显示,非缩略图形式。
slide中按道理应该可以看到幻灯片的,不过可能是作者忘记放这几个支持文件吧,没有看到东西。
Combobox里面有一些下拉框等控件
Misc中有进度条,查找目录,选择等控件,有一个angle slider是vb没有的控件,挺有趣的。
2)demo2
Demo2中第一个picture box,可以绘制许多类型的图形。
Slider里面有不少直观显示数值变化的控件
而Manipulation里面可以动态控制控件位置
3)demodockable:
demodockable 可以增加一个侧边栏
4)demomodelss
demomodelss 可以当浮动工具栏使用,在这个界面下,你仍然可以进行acad的其他操作,如画线等。
5)events:
events用于触发某种事件,还不大明白起什么作用。
6)html:
按道理应该显示objectdcl网站的,不知道哪里出问题看不到。
7)viewdwg
显示缩略图。
8)folder
显示目录选择框
9)MsgBox
出现不同类型的提示框
10)tree:
可以人为控制的树状结构
看完了它的功能,还是让人很向往的。下一步要学习怎么自己创建一个自己的objectdcl文件了。
按照帮助来,作一个Hello World程序
1)添加一个窗体
如上图操作,添加了一个叫DclForm1的窗体
2)添加两个控件,一个是label1,一个是textbutton1。
把textbutton的Caption选项改为OK。
3)输入需要的代码
把下面一段代码拷入到Lisp的编辑程序中:
(defun ObjectDCL_LoadArx () (if (not (member "objectdcl.arx" (arx))) (arxload "objectdcl.arx" "ObjectDCL.arx not found.") ))(defun c:Hello () ; ensure the ObjectDCL.arx file is loaded (ObjectDCL_LoadArx) ; call the method to load the Hello.odc file. (Odcl_LoadProject "Hello") ; call the method to show the Hellow world dialog box example (Odcl_Form_Show Hello_DclForm1) (princ))
如下图示,本人用的是Lisplink,其他任何文本编辑器也都是一样。
4)添加一段控制控件的代码
如上图,选择整个窗体,依次点右边的三个箭头,这个是关于窗体初始化时候作的事情。(注意,帮助文件中写的最后一个箭头是add to lisp,而实际中改成了copy to clipboard,应该是没有来得及改过来的缘故),去Lisp编辑器中把这段代码加上。
再如上图,选择ok按钮,依次点右边的三个箭头,这个是关于点击Ok键时候的事件触发。去Lisp编辑器中把这段代码加上。
这个时候,可以看到新增加的代码是
(defun c:DclForm1_OnInitialize () (Odcl_MessageBox "To Do: code must be added to DclForm1" "To do"))(defun c:DclForm1_TextButton1_OnClicked () (Odcl_MessageBox "To Do: code must be added to TextButton1" "To do"))
这段代码明显达不到最终的要求,必须对里面的语句进行修改,看来这个只是给我们一个函数名称的功能了。比较奇怪的地方是它都采用了c:开始的函数,这个在objectdcl的帮助中有说明。
那么,把上面两段话修改,改成如下内容:
(defun c:DclForm1_OnInitialize () ; call the method to set the textual display of the Label to state "Hello World" (Odcl_Control_SetProperty "Hello" "DclForm1" "Label1" "Caption" "Hello World")) (defun c:DclForm1_TextButton1_OnClicked () ; call the method to close the Hello World dialog box example. (Odcl_Form_Close Hello_DclForm1))
注意,objectdcl的安装目录中有objectdcl manual.doc和objectdcl.hlp两个文件,第一个似乎版本更新一些,在hlp中的帮助是还没有更新。看这段代码,我们发现有一批新的函数odcl开头的函数。
关于c:函数和普通dcl中常用的actiontile,帮助文件说了如下的话:
Your program will never need to call this method directly, ObjectDCL will call it for you when the user press the OK button. The C: in the defun may seem like it should be declared without the C: because its a function to be called by another program and not by a user, but ObjectARX requires the C: in many cases to be able to actually activate the function. By requiring this, we have taken this confusing step out for you, so you don’t have to keep track of what events from what dialog box types require what type of declaration of defun’s.In Standard DCL you would normally use the ActionTile calls to set variables and close commands to close the dialog box, with ObjectDCL we have setup defun’s that it calls instead. This allows more flexible and powerful steps, procedures and checking to take place when a user takes an action. Using this event defun system, you can easily setup any action to check the user’s input against certain conditions and rules. You can also call ObjectDCL supplied to modify the look or contents of ObjectDCL controls.
大致的意思是,objectdcl中会用到不少c:开头的函数,至于为什么这样,你就先别理照作就是。而actiontile比较麻烦,objectdcl用了另外的方法来处理,根据灵活。
好了,把刚才编辑成功的几段代码存为hello.lsp
5)保存文件:
把这个窗体文件在objectdcl中存到acad的支持目录下,赋名为hello.odc。如下图所示
6)运行程序
在acad中加载hello.lsp,必要的时候加载objectdcl2004.arx,输入hello命令,出现如下图形:
2006.9.20
[/php]
具体的有图片版本放在这里,
http://qjchen.googlepages.com/chinese |
|