请问各位大侠,在CAD中,如何将点批量沿选定直线垂线的方向移动至该直线上?
答案:2 悬赏:40
解决时间 2021-01-30 00:11
- 提问者网友:藍了天白赴美
- 2021-01-29 03:40
请问各位大侠,在CAD中,如何将点批量沿选定直线垂线的方向移动至该直线上?
最佳答案
- 二级知识专家网友:神的生死簿
- 2021-01-29 04:02
(defun C:MJL3 ( / &kw &kw1 &kw2 i @p1 @p2)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(princ "
请选择点")
(setq &kw (ssget (list (cons 0 "POINT"))));;选择对象是点
(if (= &kw nil) (alert "
对象不是点") )
(if (/= &kw nil)
(setq &kw1 (entsel "
请选择要对齐的直线或多段线或圆"))
)
(if (= &kw1 nil) (alert "
没有选择对齐的直线或多段线") )
(if (/= &kw1 nil)
(progn
(setq i 0)
(setq &kw1 (vlax-ename->vla-object (car &kw1)))
(repeat (sslength &kw)
(setq &kw2 (entget (ssname &kw i)))
(setq @p1 (cdr (assoc 10 &kw2)))
(setq @p1 (vlax-curve-getclosestpointto &kw1 @p1));;取得点到直线最短距离
(setq @p1 (cons 10 @p1))
(setq @p2 (assoc 10 &kw2))
(setq &kw2 (subst @p1 @p2 &kw2))
(entmod &kw2);;点到直线
(setq i (+ i 1))
)
)
)
(prin1)
)
(prompt "
命令《C:MJL3》")
(prin1)复制到记事本,以(.lsp)后缀命名,加载autoLISP,快捷键(MJL3)就可以批量移动点了
追问朱老师,我试了,但不行,提示“参数类型错误: listp”。追答这个原因打错了一个字:length修改为sslength即可,上面的已经修改过了,重新复制粘贴即可解决。
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(princ "
请选择点")
(setq &kw (ssget (list (cons 0 "POINT"))));;选择对象是点
(if (= &kw nil) (alert "
对象不是点") )
(if (/= &kw nil)
(setq &kw1 (entsel "
请选择要对齐的直线或多段线或圆"))
)
(if (= &kw1 nil) (alert "
没有选择对齐的直线或多段线") )
(if (/= &kw1 nil)
(progn
(setq i 0)
(setq &kw1 (vlax-ename->vla-object (car &kw1)))
(repeat (sslength &kw)
(setq &kw2 (entget (ssname &kw i)))
(setq @p1 (cdr (assoc 10 &kw2)))
(setq @p1 (vlax-curve-getclosestpointto &kw1 @p1));;取得点到直线最短距离
(setq @p1 (cons 10 @p1))
(setq @p2 (assoc 10 &kw2))
(setq &kw2 (subst @p1 @p2 &kw2))
(entmod &kw2);;点到直线
(setq i (+ i 1))
)
)
)
(prin1)
)
(prompt "
命令《C:MJL3》")
(prin1)复制到记事本,以(.lsp)后缀命名,加载autoLISP,快捷键(MJL3)就可以批量移动点了
追问朱老师,我试了,但不行,提示“参数类型错误: listp
全部回答
- 1楼网友:未来江山和你
- 2021-01-29 05:03
通过坐标进行快速定位,我就以直线在X轴为例,查看直线的Y轴坐标是多少,然后选取全部的点,右击选择特性,位置Y坐标处填写直线的Y轴坐标即可搞定。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯