找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 597|回复: 8

[编程申请]:斑竹能编这样的程序吗?

[复制链接]
发表于 2004-9-13 19:54:48 | 显示全部楼层 |阅读模式

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

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

×
两张CAD图形对比,找出其不同之处,最好将不同之处单独显示、保存
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-9-13 20:38:57 | 显示全部楼层

Re: [编程申请]:斑竹能编这样的程序吗?

最初由 空三 发布
[B]两张CAD图形对比,找出其不同之处,最好将不同之处单独显示、保存 [/B]

利用2000以上多文档环境可以完成部分比较,但不是全部,举个例子,当前图形是A,和另外的图B比较,假如B图形中有的实体A中没有怎么显示和保存?


_$ (setq docs (vla-get-documents (vlax-get-acad-object)))
#<VLA-OBJECT IAcadDocuments 1911fa40>
_$ (vla-get-name (vla-item docs 0))
"Drawing1.dwg"
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 0)))
((-1 . <图元名: 7ef5bce8>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "1D") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "AR3_INFO") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 1)))
((-1 . <图元名: 7ef5d018>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "BB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 1) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 3)))
((-1 . <图元名: 7ef5d028>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 4) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 4)))
((-1 . <图元名: 7ef5d030>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "BE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 5) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 5)))
((-1 . <图元名: 7ef5d038>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "BF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 6) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 6)))
((-1 . <图元名: 7ef5d040>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "C0") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 7) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 7)))
((-1 . <图元名: 7ef5d048>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "C1") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 8) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 8)))
((-1 . <图元名: 7ef5d050>) (0 . "INSERT") (330 . <图元名: 7ef5bc10>) (5 . "C2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "ASHADE") (62 . 9) (100 . "AcDbBlockReference") (2 . "AVE_RENDER") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
_$ (entget (vlax-vla-object->ename (vla-item (vla-get-modelspace (vla-item docs 0)) 10)))
((-1 . <图元名: 7ef5d290>) (0 . "SPLINE") (330 . <图元名: 7ef5bc10>) (5 . "15A") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 8) (71 . 3) (72 . 14) (73 . 10) (74 . 0) (42 . 1.0e-010) (43 . 1.0e-010) (40 . 2172.24) (40 . 2172.24) (40 . 2172.24) (40 . 2172.24) (40 . 7424.84) (40 . 16080.7) (40 . 23593.4) (40 . 30469.3) (40 . 44327.8) (40 . 54254.0) (40 . 59095.4) (40 . 59095.4) (40 . 59095.4) (40 . 59095.4) (10 19086.1 8326.05 0.0) (10 21874.6 11135.3 0.0) (10 22786.6 15803.8 0.0) (10 31619.8 12716.7 0.0) (10 39489.1 7321.8 0.0) (10 43763.1 20944.2 0.0) (10 29822.8 20436.2 0.0) (10 16984.9 20538.8 0.0) (10 18697.0 15079.6 0.0) (10 19258.4 13289.8 0.0))
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-13 20:57:27 | 显示全部楼层
我说的“两张图”主要是指同一图形经不同时期、不同人修改(或删加)后产生差异,需要设法快速区分改动内容的情况。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-9-13 22:51:27 | 显示全部楼层
最初由 空三 发布
[B]我说的“两张图”主要是指同一图形经不同时期、不同人修改(或删加)后产生差异,需要设法快速区分改动内容的情况。 [/B]

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

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-9-14 12:24:54 | 显示全部楼层
最初由 Cyberyll 发布
[B]如果不都是DWG图呢,比如一张是,而另一张不是!! [/B]

开什么玩笑,DWG和TXT比较什么?

提供一种思路。使用方法: 首先打开其中的一张图,加载以下代码,执行命令选择要比较的文件,第二个图形修改的实体以红色显示,打开的图形中不同的实体显示黄色,两种实体位于特殊的图层。


  1. (defun c:Compfl
  2.        (/ cel cfi chd cms e eacad el el1 hd hdl ms thisdrawing)
  3.   (if (setq fi (getfiled "选择比较文件" "Dwg" "" 9))
  4.     (progn
  5.       (setq eAcad        (vlax-get-acad-object)
  6.             docs        (vla-get-documents eAcad)
  7.             thisdrawing        (vlax-get-property eAcad 'activedocument)
  8.             ms                (vla-get-modelspace thisdrawing)
  9.       )
  10.       (vla-open docs fi :vlax-false)
  11.       (setq cFi        (vla-item docs (strcat (vl-filename-base fi) ".dwg"))
  12.             cMs        (vla-get-modelspace cfi)
  13.       )
  14.       ;;检查彼图修改的实体
  15.       (vlax-for        i cMs
  16.         (setq cel (entget (vlax-vla-object->ename i))
  17.               cel (vl-remove-if
  18.                     '(lambda (x)
  19.                        (or (= (car x) 62) ;去除颜色
  20.                            (= (car x) 8) ;去除层
  21.                            (= (car x) 6) ;去除线形
  22.                            (= (car x) -1) ;Entity Name
  23.                            (= (car x) 330) ;扩展,不好比较
  24.                        )
  25.                      )
  26.                     cel
  27.                   )
  28.               chd (vla-get-handle i)
  29.               e          (handent chd)                ;当前图形中的实体
  30.         )
  31.         (if e
  32.           (progn
  33.             (setq el (vl-remove-if
  34.                        '(lambda        (x)
  35.                           (or (= (car x) 62) ;去除颜色
  36.                               (= (car x) 8) ;去除层
  37.                               (= (car x) 6) ;去除线形
  38.                               (= (car x) -1) ;Entity Name
  39.                               (= (car x) 330) ;扩展,不好比较
  40.                           )
  41.                         )
  42.                        (entget e)
  43.                      )
  44.             )
  45.             (if        (not (equal cel el))
  46.               (entmake (append cel '((8 . "Ea_cchg_lyr") (62 . 1))))
  47.             )
  48.             (setq hdl (cons chd hdl))
  49.           )
  50.           (entmake (append cel '((8 . "Ea_cchg_lyr") (62 . 1))))
  51.         )
  52.       )
  53.       ;;检查此图修改的实体
  54.       (vlax-for        c ms
  55.         (setq hd (vla-get-handle c))
  56.         (if (and (not (vl-position hd hdl))
  57.                  (/= (strcase (vla-get-layer c)) "EA_CCHG_LYR")
  58.             )
  59.           (progn
  60.             (setq el1 (entget (vlax-vla-object->ename c)))
  61.             (if        (setq cel1 (assoc 62 el1))
  62.               (setq el1        (subst '(62 . 2)
  63.                                cel1
  64.                                el1
  65.                         )
  66.               )
  67.               (setq el1 (append el1 '((62 . 2))))
  68.             )
  69.             (entmake (subst '(8 . "Ea_nchg_lyr")
  70.                             (assoc 8 el1)
  71.                             el1
  72.                      )
  73.             )
  74.           )
  75.         )
  76.       )
  77.       (vla-close (vla-item docs (strcat (vl-filename-base fi) ".dwg"))
  78.                  :vlax-false
  79.       )
  80.     )
  81.   )
  82.   (princ)
  83. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-14 12:51:44 | 显示全部楼层
比如我的另一张图是用可视化图纸V1.0做出来的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-9-14 14:43:22 | 显示全部楼层
最初由 Cyberyll 发布
[B]比如我的另一张图是用可视化图纸V1.0做出来的 [/B]

与Unknown联系。你要把 Exe 文件都读出来,VDmaker 还卖什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 21:49 , Processed in 0.197276 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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