继续画多段线,可撤销
本帖最后由 sandyvs 于 2025-11-10 16:10 编辑;根据wzg356大佬的函数编写,函数见http://bbs.mjtd.com/forum.php?mo ... 8%2B%B6%E0%2B%CF%DF
[*];继续画多线,可撤销
[*](defun c:ContinuePL (/ e en f first index len ml numpt p pam ptn)
[*](setq en (entsel "\n 请选择LWPOLYLINE,POLYLINE多线段:"))
[*](if (and en (wcmatch (cdr (assoc 0 (entget (setq e (car en))))) "LWPOLYLINE,POLYLINE"))
[*] (progn
[*] (setq p (cadr en)
[*] p (vlax-curve-getclosestpointto e p)
[*] pam (vlax-curve-getparamatpoint e p)
[*] len (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
[*] ml (vlax-curve-getdistatparam e pam))
[*] (setq f (>ml (* len 0.5)))
[*] (setq ptn t)
[*] (while ptn
[*] (setq index (fix pam));所击子段
[*] (setq numpt (if (vlax-curve-isClosed e)(fix (vlax-curve-getendParam e))
[*] (1+ (fix (vlax-curve-getendParam e)))));顶点数量
[*] (if first
[*] (if f
[*] (setq ptn (getpoint (vlax-curve-getendpoint e)"\n请输入下一点(R撤销):"))
[*] (setq ptn (getpoint (vlax-curve-getstartpoint e) "\n请输入下一点(R撤销):"))
[*] )
[*] (if f
[*] (setq ptn (getpoint (vlax-curve-getendpoint e)"\n请输入下一点:"))
[*] (setq ptn (getpoint (vlax-curve-getstartpoint e) "\n请输入下一点:"))
[*] )
[*] )
[*] (if ptn
[*] (iff
[*] (ContinuePoly e numpt ptn)
[*] (ContinuePoly e 0 ptn)
[*] )
[*] )
[*] (if (= "R" ptn)
[*] (ContinuePoly e (1- numpt) nil);末尾删点
[*] )
[*] (initget "R")
[*] (setq first t)
[*] )
[*] )
[*] (princ "\n 选择的对象不是LWPOLYLINE,POLYLINE多线段!")
[*])
[*](princ)
[*])
可以,很方便!!都是牛人,人家不错.实用,可以集成到Pline里面用了.可以,方便画线,谢谢分享.这个和南方CASS中B命令一样啊 本帖最后由 中国梦 于 2025-11-12 06:56 编辑
大佬。我这里不能使用,不知道什么原因
请选择LWPOLYLINE,POLYLINE多线段:
请输入下一点:;错误:no function definition:CONTINUEPOLY
可以,很方便!!
可以,很方便!! 都是牛人,人家不错
实用,可以集成到Pline里面用了 可以,方便画线,谢谢分享 这个和南方CASS中B命令一样啊 多谢分享!!! 这个续接多段线功能挺好的
页:
[1]
2