长期以来我就想把Express tools工具中的arc-aligned text的功能扩展。但在我未学编程之前,这一直是个空想。到今天,学LISP也将近一年了,自认为,快要毕业了,(autolisp基本语法,VLISP,对话框,反应器等可算勉强及格了),不是论文的话,总得交一份答卷吧!
(不知道这份答卷能得多少分?请各位提提批评意见和测试。)
于是趁着自己稍微学了一下反应器的知识和刚刚接触的openDCL ,编写了一个程序。编这个程序,的确花费我许多时间,一来是我水平有限,经验不够丰富,二来中间插了很多事情,断断续续,说十年磨一剑是夸张了点,但十天半个月是已经超出的。
本程序的运行命令为:eee.
本程序需要openDCL.16.ARX或者openDCL.17.ARX支持,最好把程序文件和原代码全部拷贝到搜索路径中。因为反应器和openDCL 以及自己水平的缘故,所以程序可能导致CAD 崩溃,故运行前务必先保存文件。
没有openDCL.arx的到我的网络硬盘http://highflybird.ys168.com/中去下载。
本程序只能运行于AutoCAD R2004以上。对AutoCAD R2006支持最好。
我这个程序有点有点象3dsmax的路径路径追随功能,能沿曲线或者直线路径阵列 CAD 物体:文字,选择集,图块。
也许你们要说,我这个程序不就是用命令MESURE,或者DIVIDE就能完成吗? 当然,如果我的程序仅仅是达到这两个命令的功能,我也就不好意思把这个程序拿出来了。下面我来说说其中几个功能:
1、 如果是文字的话,则你输入一行文字,或者选择文本,则此文字内容可以沿路径阵列相当于express tools 中ArcAlignedText工具的扩展。
2、 如果是你在CAD 中选择物体的话,则选择的物体沿着路径阵列而且阵列后的物体不是块,也不是组,只是原选择集的复制。
3、 如果是选择图块,则从对话框或图形中选择图块沿着路径阵列阵列后的图块可以有随机比例大小。(在某些情况有用)
所有阵列后物体可以跟路径关联,如果是永久关联的话,下次打开文件需要加载程序才能运行。如果关联了鼠标双击反应器,可以对路径或者阵列后的物体双击,则弹出对话框,你可以随时改变参数。如果你对路径作夹点编辑或者移动旋转等变换,则阵列物体跟随路径的形状一起动.
两大突出的功能:
1、 吸星大法。阵列的物体仿佛吸在路径上。路径怎么动,它就怎么动。它长我也长,它缩我也缩。
2、 乾坤大挪移。当你选择另外一条路径关联时,则阵列的物体就自动跑到那条路径上去。
其他还有很多功能就不一一说明了。
编写了这次程序后,最大的心得和体会就是:
程序在进入主题前,要进行严格的数据检查,否则程序会出现各种难以预料的错误。令外在程序的结构上最好不要有冗余的程序段,应尽量做到能省则一定省,否则对计算和运行都有影响。
对反应器的深刻体会是:
要避免反应器出错,必须要了解反应器的流程。因为反应器不像一个程序一个流程。它的流程不是线性的,也不是连续的。
要避免删除和恢复删除这之类的错误,如:"; 错误: Automation 错误。 对象已被删除"必须定义四个函数:
:vlr-OpenedForModify :vlr-erased :vlr-unerased :vlr-modified;
要不然就得用到command反应器或者数据库反应器。 顺序一般是删除时: :vlr-OpenedForModify->:vlr-erased->:vlr-modified; 恢复删除时::vlr-OpenedForModify->:vlr-unerased->:vlr-modified; 搞清楚了它们的顺序,然后分别定义好各自的函数,(例如我上面的例子),在函数中加上判 断语句,这样就不会出错了。
对openDCL的体会就是:openDCL对话框的操作实在太简便了,而且多了很多autocad中DCL中不能完成的功能。我就是即学即会的。
我想尽力去赶超Express Tools,但我深知这是不可能的,也是不现实的。J
这个程序中有几个小小的错误,我正在想办法解决:
1、 鼠标双击的错误:在鼠标双击弹出对话框后,如果进行交互操作可能有错误提示:但并不影响程序进行。
2、 选择集的错误,有好几个,因为选择集最麻烦了,不像图块或者文字。
3、 乾坤大挪移后的关联问题,也没仔细考虑清楚。
其他隐藏的就还暂时没发现,所以这个版本不能是正式版本,需要做很多调整。大家多提意见啊,谢谢了!
|