[求助]求从多段线偏移某个线条的lisp程序?
<p>大家好,从某个封闭多段线偏移一个直线,一般我会把当前的封闭多段线炸开,然后选一直线偏移,能不能不用炸开就直接选一条直线偏移,这样就能节约很多时间,求这种功能的lisp,谢谢!</p> <p>;; 多段线逐段双向偏移<br/>(defun c:test823 ()<br/> (CMDLA0)<br/> (xyp-MkLaCo "TEST" 1)<br/> (SETQ DIST (UDIST 1 "" "距离<输入或鼠标直接量取>" DIST nil))<br/> (while (setq e (entsel "\n多段线: ")) <br/> (if (member (xyp-get-dxf 0 (car e)) '("POLYLINE" "LWPOLYLINE"))<br/> (progn<br/> (setq a (xyp-get-Pts&Pte e)<br/> p1 (car a)<br/> p2 (cadr a)<br/> S2 (XYP-ADD-LINE P1 P2)<br/> )<br/> (xyp-Offset (entlast) dist t t t)<br/> )<br/> )<br/> )<br/> (CMDLA1)<br/>)</p><p></p> 谢谢版主回复,有没有单向偏移的啊要,双向的用得很少,呵呵! <p>版主,我用后出现错误的提示:</p><p>命令: TEST823 ; 错误: no function definition: CMDLA0</p><p>怎么回事啊要,谢谢!</p> 这个功能外挂有的。PRESSCAD ;;;;单段偏移(defun c:oo (/ od ss_1 s1 s3 s2 sa sa1 ssK3 e)
(Setvar "cmdecho" 0)
(command "_undo" "g")
(setq od (getvar 'offsetdist))
(princ "\n 请输入偏移复制距离<")
(princ od)
(princ ">")
(setq od (getreal))
(if od
(setvar 'offsetdist od)
)
(prompt "\n 请选择要偏移复制的图元")
(SETQ ss_1 NIL)
(WHILE (null ss_1)
(setq ss_1 (entsel))
)
(SETQ S1 (CaR SS_1))
(redraw s1 3)
(prompt "\n 请选择偏移复制方向")
(setq s3 (getpoint))
(IF (= (cdr (assoc 0 (entget s1))) "LWPOLYLINE")
(PROGN
(setq s2 (CAR (cdr ss_1)))
(setq sa (entlast))
(command "_explode" s1)
(setq sa1 (ssnamex (ssget s2)))
(setq ssk3 (ssadd))
(setq e (entnext sa))
(ssadd e ssk3)
(while e
(setq e (entnext e))
(if e
(ssadd e ssk3)
)
)
(SETQ s1 (nth 1 (car sa1)))
(command "_offset" "" s1 s3 "")
(command "_pedit" s1 "" "j" ssk3 "")
)
(command "_offset" "" s1 s3 "")
)
(command)
(command "_undo" "e")
(princ)
)
哇强大呀 好东西收下了
页:
[1]