圆角倒直角
求大神帮忙写一下这个功能的代码,画圆角延伸线,圆角保留不变,最好是多段线的情况也可以用moranyuyan 发表于 2024-9-24 07:02
经测试,不起作用。
[*](defun c:tt6 (/ a b dx ename jd n pt ss ss1 zx1 zx2)
[*](vl-load-com)
[*](setq dx (entsel "\n请选择圆角:")
[*] pt (cadr dx)
[*] ename (car dx)
[*])
[*](setq n (fix (vlax-curve-getparamatpoint ename(vlax-curve-getclosestpointto ename pt))))
[*](setq a (vlax-curve-getpointatparamename n))
[*](setq b (vlax-curve-getpointatparamename (1+ n)))
[*](command "_.copy" ename "" "0,0" "@")
[*](command "explode" (entlast))
[*](setq ss1 (ssget "p"))
[*](setq ss (ssget "c" a b '((0 . "LINe"))))
[*](setq zx1 (ssname ss 0))
[*](setq zx2 (ssname ss 1))
[*](setq jd(vlax-invoke (vlax-ename->vla-object zx2) 'IntersectWith (vlax-ename->vla-object zx1) acExtendBoth))
[*](command "line" a jd b "")
[*](command "ERASE" ss1 "")
[*](princ)
[*])
本帖最后由 统一网名 于 2024-9-23 15:05 编辑
[*](defun c:tt6 (/ a b ename jd ss zx1 zx2)
[*](vl-load-com)
[*](setq ename (car (entsel "\n选择对象:")))
[*](setq a (vlax-curve-getstartpoint ename))
[*](setqb (vlax-curve-getendpoint ename))
[*](setq ss (ssget "c" a b '((0 . "LINe"))))
[*](setq zx1 (ssname ss 0))
[*](setq zx2 (ssname ss 1))
[*](setq jd(vlax-invoke (vlax-ename->vla-object zx2) 'IntersectWith (vlax-ename->vla-object zx1) acExtendBoth))
[*];(command "_extend" "" (list zx1 jd) "");延长原来直线到交点
[*];(command "_extend" "" (list zx2 jd) "");延长原来直线到交点
[*](command "line" a jd "")
[*] (command "line" b jd "")
[*](princ)
[*])
xzd716 发表于 2024-9-24 21:19
在Autocad2021版上试用,12#程序对多段线有效,对普通线无效;最前面程序对对普通线有效,对多段线无效。能 ...
加一个对象类型判断,类型是 "ARC"就用第一个,类型是 "LWPOLYLINE" 就用后一个 全选所有外侧圆弧
或点选个别圆弧
比选线不是更省事? 本帖最后由 自贡黄明儒 于 2024-9-23 13:18 编辑
我也偶尔这样画,都是手工完成,觉得没必要用程序。如果经常这样干,有程序倒是比较方便 自贡黄明儒 发表于 2024-9-23 11:18
我也偶尔这样画,都是手工完成,觉得没必要用程序。如果经常这样干,有程序倒是比较方便
大佬,这个怎么实现的? 本帖最后由 624777395 于 2024-9-23 17:09 编辑
统一网名 发表于 2024-9-23 14:58(defun c:tt6 (/ a b ename jd ss zx1 zx2)(vl-load-com)(setq ename (car (entsel "\n ...
大佬,这个只对普通线有用,如果圆弧和相邻的线是连接在一起的多段线就识别不了 624777395 发表于 2024-9-23 16:48
大佬,这个只对普通线有用,如果圆弧和相邻的线是连接在一起的多段线就识别不了
(setq ss (ssget "c" a b '((0 . "LINe,LWPOLYLINE")))) 改一行代码 统一网名 发表于 2024-9-23 19:21
(setq ss (ssget "c" a b '((0 . "LINe,LWPOLYLINE")))) 改一行代码
经测试,不起作用。 本帖最后由 统一网名 于 2024-9-24 07:43 编辑
moranyuyan 发表于 2024-9-24 07:02
经测试,不起作用。
有没有啥提示?我测试是没问题的,我的是cad 2020.
统一网名 发表于 2024-9-24 07:42
有没有啥提示?我测试是没问题的,我的是cad 2020.
他的意思是圆弧和两边的线是一条完整的多段线,你理解的是三条线是断开的,直线段是直线或多段线,所以修改的那一行代码不起作用。
页:
[1]
2