(defun c:jln(/ l1 l2 fz)
(setvar "PEDITACCEPT" 1)
(if
(and
(setq l1(entsel "\nSelect first line > "))
(setq l2(entsel "\nSelect second line > "))
(setq fz(distance(cadr l1)(cadr l2)))
(vl-cmdf "_.pedit" "_m" (car l1)(car l2) "" "_j" "_j" "_a" fz "")
); end and
(c:jln)
); end if
(princ)
); end c:jln
我的画上有很多线条,有时候线条有些重叠。该程序当前在顶点之间绘制线。我想稍微改变一下节目。你能帮忙吗?
1) 我想在窗口中选择多行或多次单击,而不是先选择第一行,然后选择第二行。
2) 不要在顶点之间绘制一条线,而是提示“要连接的顶点之间的最大距离”。如果较小,顶点将移动并捕捉在一起,如果较大,则不会移动顶点以将其捕捉在一起。(如果顶点有点偏离,请将其连接起来)
3) 提示“要绘制线的顶点之间的最大距离”如果较小,程序将在顶点之间绘制线,如果较大,程序将不连接顶点。(如果顶点太远,请绘制一条线并将其连接起来)
4) 如果顶点距离小于一定距离,并且在它们之间已经绘制了线,则先将它们连接起来并删除额外的顶点。
我想这里可能有两个节目。
谢谢
阿斯米,你以前的节目很有帮助!! 这可能会帮助你-我写的另一个人在这里使用数控机床。
(defun c:pljoin (/ *error* varLst oldVars oLst plnum ss)
;; --- Error Trap ---
(defun *error* (msg)
(mapcar 'setvar varLst oldVars)
(if (= msg "")
(princ "\nFunction Complete.")
(princ (strcat "\n" (strcase msg)))
) ;_end if
(princ)
) ; end of *error*
(setq varLst(list "CMDECHO" "PEDITACCEPT")
oldVars (mapcar 'getvar varLst)
) ; end setq
;; --- Error Trap ---
(vl-load-com)
(vlax-for l
(vla-get-Layers
(vla-get-ActiveDocument
(vlax-get-acad-object)
) ;_end vla-get-ActiveDocument
) ;_end vla-get-Layers
(setq oLst
(cons (vla-get-Name l) oLst)
) ; end setq
) ; end vlax-for
(setq oLst (reverse oLst))
(setvar "cmdecho" 0)
(setvar "PEDITACCEPT" 0)
(setq plnum 0)
(foreach lay oLst
(if
(setq ss (ssget "X"
(list (cons 0 "LINE")
(cons 410 (getvar "ctab"))
(cons 8 lay)
) ;_end list
) ;_end ssget
) ;_end setq
(progn
(command "_pedit" "M" ss "" "Y" "J" "0.0" "")
(setq plnum (+ (sslength ss) plnum))
) ;_end progn
) ;_end if
) ;_end foreach
(*error* "")
(alert (strcat (rtos plnum 2 0) " Polylines Created/Joined."))
(princ)
) ;_end defun
页:
1
[2]