求双线墙体绘制的LISP源程序
<p>我想要一个双线墙绘制的LISP源程序,要求,可以实现双线直墙与双线弧墙的切换,类似晓东工具箱\建荣工具箱里的墙线绘制工具!哪位高手能提供源码?本不不甚感激!!!</p> <p>;;;--------墙线----------</p><p>(defun C:WL (/ L1 L2 PT1 PT2 PT3 PT4 KU)</p><p> (if (setq L1 (getpoint "\nPick point:"))<br/> (progn<br/> (setq OLD_CMDECHO (getvar "CMDECHO"))<br/> (setvar "CMDECHO" 0)<br/> (setq CL (getvar "clayer"))<br/> (setvar "EDGEMODE" 1) <br/> (command "-layer" "m" "WALL" "C" "1" "" "")<br/> ;;PLINEWID 存储多段线的缺省宽度<br/> (setvar "PLINEWID" 60)<br/> (while (setq L2 (getpoint L1 "\nPick point:"))</p><p> (setq KU (angle L1 L2))<br/> (setq PT1 (polar L1 (+ KU (* 0.5 pi)) 120))<br/> (setq PT2 (polar L1 (+ KU (* 1.5 pi)) 120))<br/> (setq PT3 (polar L2 (+ KU (* 0.5 pi)) 120))<br/> (setq PT4 (polar L2 (+ KU (* 1.5 pi)) 120))</p><p> ;;绘制<br/> (command "_.Pline" "non" PT1 "non" PT3 "")<br/> (setq ENT13 (entlast)<br/> S1 (list ENT13 PT1)<br/> )<br/> (command "_.Pline" "non" PT2 "non" PT4 "")<br/> (setq ENT24 (entlast)<br/> S2 (list ENT24 PT2)<br/> )</p><p> ;;对上一交点处尝试进行修剪或延伸<br/> (if S3<br/> (progn<br/> (command "_.TRIM" S1 S3 "" S1 S3 "")<br/> (command "_.TRIM" S2 S4 "" S2 S4 "")<br/> (command "_.EXTEND" S1 S3 "" S1 S3 "")<br/> (command "_.EXTEND" S2 S4 "" S2 S4 "")<br/> )<br/> )<br/> ;;为下一段做准备<br/> (setq S3 (list ENT13 PT3)<br/> S4 (list ENT24 PT4)<br/> L1 L2<br/> )<br/> )</p><p></p><p> ;;图层名称应是字符串<br/> (setvar "clayer" CL)<br/> (setvar "CMDECHO" OLD_CMDECHO)<br/> )<br/> )<br/> (princ)<br/>)</p> <p>不能设定墙线的宽度,不好用!而且画完了不能闭合终端的线,改下会很方便的</p> <p>看看这个</p><p>(defun c:dl()<br/>(if (= wwdy nil) (setq wwdy 240))<br/>(setq str1 (rtos wwdy 2 2))<br/>(prompt "\n now dline width is: ")<br/>(prompt str1)<br/>(setq pt1 (getpoint "\n enter start point:"))<br/>(setq pt2 (getpoint pt1 "\n enter next point:"))<br/>(setq dis1 (* 0.5 wwdy))<br/>(setq ag1 (angle pt1 pt2))<br/>(setq pt1u (polar pt1 (+ ag1 1.5708) dis1))<br/>(setq pt2u (polar pt2 (+ ag1 1.5708) dis1))<br/>(setq pt1d (polar pt1 (- ag1 1.5708) dis1))<br/>(setq pt2d (polar pt2 (- ag1 1.5708) dis1))<br/>(command "pline" "non" pt1u "non" pt2u "")<br/>(command "pline" "non" pt1d "non" pt2d "")<br/>(repeat 100<br/> (setq pt1 pt2)<br/> (setq pt2 (getpoint pt1 "\n enter next point:"))<br/> (setq dis1 (* 0.5 wwdy))<br/> (setq ag1 (angle pt1 pt2))<br/> (setq pt1u (polar pt1 (+ ag1 1.5708) dis1))<br/> (setq pt2u (polar pt2 (+ ag1 1.5708) dis1))<br/> (setq pt1d (polar pt1 (- ag1 1.5708) dis1))<br/> (setq pt2d (polar pt2 (- ag1 1.5708) dis1))<br/> (command "pline" "non" pt1u "non" pt2u "")<br/> (command "pline" "non" pt1d "non" pt2d "")<br/>)<br/>)</p> 默认为240墙线了 好像挺好,留记号,明天电脑试下
页:
[1]