自贡黄明儒 发表于 2021-2-18 13:53:00

移动对象与捕捉

;;移动对象与捕捉

;;移动对象方法http://bbs.xdcad.net/forum.php?m ... hlight=%D2%C6%B6%AF
;;第①种
(defun C:w11 ()
(setq os (getvar 'osmode))
(setvar 'osmode 0)

(. . .)
(command "_.move" e "" p1 p2)
(setvar 'osmode os);㈠
(princ)
)
;;这是常用的方式,如果用户中间按了ESC,或者中间出现了错误,那么后面㈠可能就执行不了,
;;所以还得加上错误处理。

;;第②种
(defun C:w12 ()

(. . .)
(command "_.move" e "" "non" p1 "non" p2)
(princ)
)
;;这种办法不错,采用"non"临时关闭捕捉

;;第③种
(defun C:w13 ()
(setq en (entget e))
;;修改组码
(entmod en)
(princ)
)
;;这种办法比较麻烦,如果是直线需要修改组码10和11;如果是属性块,还得修改属性。
;;好处嘛,不受捕捉的影响

;;第④种,矩阵法
(defun C:w14 ()
(. . .)
(setq o (vlax-ename->vla-object e))
(vla-transformby o (MAT:TRANSLATEBY2P P1 p2))
(princ)
)
;;这是最高级的玩法,不受捕捉的影响。见highflybird大师的《Matrix-Lib.LSP》
页: [1]
查看完整版本: 移动对象与捕捉