雨的节奏 发表于 2023-10-14 10:50:50

简单的一个对图工具

本帖最后由 雨的节奏 于 2023-10-17 09:15 编辑

(defun c:gsauditing (/ vps oldverp x pt temppt code oldverp vsize ocpt opt whs vp vpindex ovpcpt vpcpt)
(setq vps (vports))
(if (= 1 (length vps)) (progn (vl-cmdf "-vports" "si""-vports" "2" "v") (setvar "cvport" (car (last (setq vps (vports)))))))
;;此时一定是有多视口的
(if (null vpsandptlist)
(progn
(setq vpsandptlist ())
(setq oldverp (getvar "cvport"))
(foreach x vps
       ;;得到视口名和点表
   (setvar "cvport" (car x))
   (setq pt (getpoint "\n请指定当前激活视口的参考原点"))
       (if (null pt) (vl-exit-with-value ""))
   (setq vpsandptlist (cons (cons (car x) pt) vpsandptlist))
    )
(setvar "cvport" oldverp)
)
)
(princ "\n输入S可以设置对比参考点")
;;这个时候得到了视口名与坐标点的数据,来注册一个事件
(setq temppt (getvar 'ViewCtr))
(while (and
         (setq code (grread T 8))
         (/= 32 (car code))
         (/= 25 (car code))
         (/= 3 (car code))
       )
       (if (and (= 2 (car code)) (or (= 83 (cadr code)) (= 115 (cadr code))))
          (progn
      (setq vpsandptlist ())
            (setq oldverp (getvar "cvport"))
            (foreach x vps
               ;;得到视口名和点表
               (setvar "cvport" (car x))
               (setq pt (getpoint "\n请指定当前激活视口的参考原点"))
               (if (null pt) (vl-exit-with-value ""))
               (setq vpsandptlist (cons (cons (car x) pt) vpsandptlist))
                  )
             (setvar "cvport" oldverp)
      
      )
       )
         (setq oldverp (getvar "cvport")
                   vsize (getvar "viewsize")
         ocpt (getvar 'ViewCtr)
         opt (cdr (assoc oldverp vpsandptlist))
         whs (mapcar '- ocpt opt)
         )
       (if (null (equal temppt ocpt))
         (progn
            (foreach vp vps
                (if (null (equal (car vp) oldverp))
                (progn
            (setq vpindex (car vp))
            (setvar "cvport" vpindex)
            (setq ovpcpt (cdr (assoc vpindex vpsandptlist))
                  vpcpt (mapcar '+ ovpcpt whs)
                )
            (vla-ZoomCenter (vlax-get-acad-object) (vlax-3d-point vpcpt) vsize)
            
            
               )
             )
          )
          ;;把对比值改成当前值
          (setvar "cvport" oldverp)
          (setq temppt ocpt)
         )
      )
               
       )

(princ "\n完成对比")
(prin1)
)https://www.bilibili.com/video/BV1U84y127sr/

注意事项:
1、只在当前图对比
2、对比点只设置一次,后面要再设置,输入s即可
3、随便拿去用,也不用注明出处,反正我也是在论坛找别人的东西参考着写的

水洗可口可乐 发表于 2023-10-16 10:47:50

问一下,不可以同一窗口,用重叠图形来对图吗?修改/不同处 亮显?

panliang9 发表于 2023-10-16 09:11:50

cj52000 发表于 2023-10-14 19:56
大师,对图的中途好像不能进行操作,比如刷新,如要继续,再输入一遍命令是吧

楼主的这个程序已经很好了,如果你想中途有操作,必须使用
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=106978&highlight=%B6%D4%CD%BC%C9%F1%C6%F7

树櫴希德 发表于 2023-10-18 11:14:29

cj52000 发表于 2023-10-14 19:56
大师,对图的中途好像不能进行操作,比如刷新,如要继续,再输入一遍命令是吧

请问大神 你的程序是两个DWG图形对图还是一个DWG里面对图

菜卷鱼 发表于 2023-10-14 11:19:52

本帖最后由 菜卷鱼 于 2023-10-14 11:30 编辑

CAD2020-2024自带了对图功能,别的版本不知道

https://help.autodesk.com/view/ACD/2020/CHS/?guid=GUID-32C9F232-64BA-412A-9176-A8AE24CDFBC7
视频的1分34秒开始有介绍

yoyoho 发表于 2023-10-14 15:50:56

谢谢! 雨的节奏 分享学习!!!!!

664571221 发表于 2023-10-14 18:28:56

大哥你那个侧边栏是自己开发的嘛

cj52000 发表于 2023-10-14 19:56:27

大师,对图的中途好像不能进行操作,比如刷新,如要继续,再输入一遍命令是吧

菜鸟初来乍到 发表于 2023-10-15 08:36:01

感谢楼主分享

hzyhzjjzh 发表于 2023-10-15 12:17:33

感谢楼主分享{:1_1:}

czb203 发表于 2023-10-16 09:02:44


感谢楼主分享
页: [1] 2
查看完整版本: 简单的一个对图工具