本帖最后由 highflybir 于 2013-8-22 00:45 编辑
【DynamicLisp的高级应用】-- 对图神器
画图的时候,我们常常遇到要比较两个图纸的不同之处。
这时候,我们可以用
方法1: 把要比较的图插入进来或者外部参照近来,然后可能稍微改变一下颜色。这样就可以检查一下有哪些不同。
方法2: 两张图纸并排窗口,不时用放大缩小等命令,在两张图纸之间进行。
方法1的优点是视窗较大。但缺点是如果图形复杂了,会让人眼花缭乱。虽说高版本的CAD可以对参照图纸进行透明之类的调整,但不适合低版本。
方法2的的优点是可以不更改图纸内容。缺点是并排窗口会使得检测窗口较小,而且频繁在两个窗口之间进行放大缩小等命令,
效率不高。
针对方法2的缺点,我利用我以前的程序DynamicLisp中的钩子函数,编写了一个程序,使得在对图时候能做到两个图形的缩放比例同步变化。
用法: 并排两个要比较的图纸,两张图纸都加载此程序。在原图中输入命令: tt,然后激活要比较的图,再回到原图。那么,你就可以看到效果了。
在原图中的视窗的任何比例缩放或平移变换,都会在要比较的图中同步出来。
另外,我同时用ARX编写了一个命令是:CompareDwgs,嫌命令长的可以修改:
因为这个是一个C:开头lisp函数C: CompareDwgs,所以用户可以自己定义:譬如 (defun c:dtz () (C:CompareDwgs) (princ))
ARX的命令更快,错误更少。
如果想要停止比较,用remhook命令停止同步。
如果想要切换原图和对比图之间的关系,只需要在对比图上输入命令,然后在原图上激活,再回到对比图。
输入命令的为原图,激活的另一张图为对比图。
因为对图的基点是依据UCS的原点来进行的,所以想要进行基点对准的,只需要进行一下UCS的原点设置使得它们对准就可以。
另外附件的arx文件加载需要依据你的CAD版本和操作系统进行。
请看如下对应关系:
32位CAD:
DynamicLisp.R15.x32.arx --- AutoCAD 2000-2002
DynamicLisp.R16.x32.arx --- AutoCAD 2004-2006
DynamicLisp.R17.x32.arx --- AutoCAD 2007-2009 32位
DynamicLisp.R18.x32.arx --- AutoCAD 2010-2012 32位
DynamicLisp.R19.x32.arx --- AutoCAD 2013-2014 32位
64位CAD:
DynamicLisp.R17.x64.arx --- AutoCAD 2007-2009 64位
DynamicLisp.R18.x64.arx --- AutoCAD 2010-2012 64位
DynamicLisp.R19.x64.arx --- AutoCAD 2013-2014 64位
如有不能加载的版本,请告诉我。
建议用户使用arx命令 comparedwgs较好,无需使用lisp.
=============================================
2013.08.15更新, 新的特性如下:1、可以同步多个视图了。
2、不再闪屏。
3、可以直接用对话框设置好要同步的视图。
4、增加开关,随时关闭,随时打开,也可以随时设置同步的视图。
5、可以互动了。即4楼说的效果。
以下是LISP程序代码:
附件见如下:
相关DynamicLisp的介绍请见:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90447&page=1&extra=#pid604291
|