设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8851|回复: 34

[原创]:十年磨一剑--openDCL和反应器

[复制链接]

点击这里给我发消息

已领礼包: 6715个

财富等级: 富甲天下

发表于 2007-7-8 17:53:25 | 显示全部楼层 |阅读模式

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

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

x
首先申明,鉴于晓东论坛不能上传附件,而本程序代码较长,故不再贴出来,要源码的请到 我的网络硬盘http://highflybird.ys168.com/中去下载.

http://ys-c.ys168.com/?path-arra ... 4btq0co2bu14z97f14z

现在有英文版了。
长期以来我就想把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,但我深知这是不可能的,也是不现实的。
这个程序中有几个小小的错误,我正在想办法解决:
1、鼠标双击的错误:在鼠标双击弹出对话框后,如果进行交互操作可能有错误提示:但并不影响程序进行。
2、选择集的错误,有好几个,因为选择集最麻烦了,不像图块或者文字。
3、乾坤大挪移后的关联问题,也没仔细考虑清楚。
其他隐藏的就还暂时没发现,所以这个版本不能是正式版本,需要做很多调整。大家多提意见啊,谢谢了!

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-8 20:25:39 | 显示全部楼层
:)
功能很强大啊,赶快下载一个回来试试学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-9 08:50:25 | 显示全部楼层
好久没见到ODCL和反应器的贴子了
也学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-10 08:52:45 | 显示全部楼层
功能非常实用!可否提供源码供学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-11 00:21:41 | 显示全部楼层
为啥在MJ和XD总是能见到相同的帖子 ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-11 08:41:59 | 显示全部楼层
学了一年,就有那么大的成就啦!佩服!我还停滞不前呢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-11 21:35:46 | 显示全部楼层
版主真是利害,这几天也是着用看看OPENDCL
不过发现这软体的输出LSP是要自己手动执行
真是不方便.
另外官网下载点
https://sourceforge.net/project/showfiles.php?group_id=187950
下载回来 4.0 (RC1) 安装后的 OpenDCL.16.arx 及 OpenDCL.17.arx
在使用版主的程序为何会缺少 ODCL_PROJECT_LOAD 函数
但使用您所提供的 OpenDCL.16.arx 及 OpenDCL.17.arx 却不会发生这情况
发现这两组的大小有异,不知道为何呢?

另外版主或是其他高手,有人知道
OpenDCL.Runtime.4.0.2.0.msm
这档案是做什么用的吗?

最后希望版主可以提供些您在使用OPENDCL上的编写技巧,
给大家参考学习一下.谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

点击这里给我发消息

已领礼包: 6715个

财富等级: 富甲天下

 楼主| 发表于 2007-7-12 13:37:46 | 显示全部楼层
我以前的用的openDCL的版本是4.0.1.16,但现在的版本4.0.2.1有很多地方都做了改变,以前所有的以ODCL开头的函数现在都变成了DCL的函数,所以程序不能运行。另外新版本的支持路径为\common\openDCL 和openDCL Studio,所以要使得我的程序能运行,还需做一些代码上的改动。明天我发上修改过后的英文版。
关于做个openDCL教程或技巧,我会做的,只怕得不好,请大家多担待。

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

使用道具 举报

发表于 2007-7-28 17:40:48 | 显示全部楼层
太好了,一直想用DCL写程序的用户界面,但实在是太麻烦了,所以每次要用lisp完成一个新任务时总是简单地写一个命令,在命令行键入执行。这样自己使用还好,但给别人用起来就麻烦,因为不直观。现在好了,但还要重新学习,所以建议楼主尽快将自己的学习心得贡献出来,好让大家学得快一点。谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-31 14:07:23 | 显示全部楼层
功能很强大,试试看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-31 20:12:19 | 显示全部楼层
功能好象十分强大,下一个下来试用以下,谢谢楼主的无私奉献,请再接再厉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2007-8-13 12:39:17 | 显示全部楼层
厉害了  学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-12-14 03:20:24 | 显示全部楼层
源码在那里下啊,,链接好像失效了哦。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-12-14 22:44:08 | 显示全部楼层
最初由 bloodmao 发布
[B]源码在那里下啊,,链接好像失效了哦。。 [/B]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-12-17 08:30:12 | 显示全部楼层
给的网址都下载不了啊,楼主,麻烦更新一下吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-9-23 14:50 , Processed in 0.247450 second(s), 60 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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