tender138 发表于 2025-4-28 10:03:36

麻烦大师帮我改下如下反应器,使copy后新圆依然带反应器,谢谢!

CAD2016 中实现一个反应器,当绘制圆后,编辑圆时显示半径,希望使用 CAD 自带的 COPY 命令复制圆后,新圆也能触发同样的反应器。麻烦大师帮忙修改下,不胜感激!:handshake
(defun c:aa (/ cp r vla vlaLst)
(vl-load-com)
(setq cp (getpoint "\n指定圆心点:"))
(setq r (getdist cp "\n输入园半径:"))
(command "circle" cp r)
(setq vla (vlax-ename->vla-object (entlast)))
(setq vlaLst (list vla))
(vlr-pers (vlr-object-reactor vlaLst nil '((:vlr-modified . show))))
(princ)
)
(defun show (notifier-object reactor-object parameter-list / r)
(vl-load-com)
(setq r (vla-get-diameter notifier-object));获取直径(vla-get-diameter获取圆的直径)
(setq r (rtos r 2 4));转换为字符串
(alert (strcat "圆的内径是:" r))
)

tender138 发表于 2025-4-28 10:50:41

各位大师,麻烦帮忙啊,在此谢过了!:handshake

张向华 发表于 2025-4-28 20:05:01

单纯支持,给高手修改吧

kozmosovia 发表于 2025-4-28 20:39:41

需要追加一个copied反应器
(defun c:aa (/ cp r vla vlaLst)
(vl-load-com)
(setq cp (getpoint "\n指定圆心点:"))
(setq r (getdist cp "\n输入园半径:"))
(command "circle" cp r)
(setq vla (vlax-ename->vla-object (entlast)))
(setq vlaLst (list vla))
(vlr-pers (vlr-object-reactor vlaLst nil '((:vlr-modified . show)
                                             (:VLR-COPIED . copy))))
(princ)
)
(defun copy (notifier-object reactor-object parameter-list / r)
(vlr-pers (vlr-object-reactor (list (vlax-ename->vla-object (entlast)))
              nil '((:vlr-modified . show)
                                             (:VLR-COPIED . copy))))
)
(defun show (notifier-object reactor-object parameter-list / r)
(vl-load-com)
(setq r (vla-get-diameter notifier-object));获取直径(vla-get-diameter获取圆的直径)
(setq r (rtos r 2 4));转换为字符串
(alert (strcat "圆的内径是:" r))
)

tender138 发表于 2025-4-29 08:55:59

kozmosovia 发表于 2025-4-28 20:39
需要追加一个copied反应器

非常感谢大师一再帮忙!!!:handshake
页: [1]
查看完整版本: 麻烦大师帮我改下如下反应器,使copy后新圆依然带反应器,谢谢!