cxs259 发表于 2010-4-22 17:16:00

请教能否把下面画二线的程序改为四线,谢谢!

<p>(defun C:2x(/ th ss bp sp ep pt1 pt2 pt3 pt4 n tmp bbp ssp)<br/>&nbsp; (setq old_err *error*)<br/>&nbsp; (setvar "CMDECHO" 0)<br/>&nbsp; (setvar "BLIPMODE" 0)<br/>&nbsp; (command "layer" "m" "wall" "c" "w" "wall" "")<br/>&nbsp; (setvar "osmode" 32)</p><p>&nbsp; (if (= thw nil) (setq thw 240.0))<br/>&nbsp; (setq th (getreal (strcat "\n外墙厚&lt;" (rtos thw 2 0) "&gt;:")))<br/>&nbsp;&nbsp;&nbsp; (if (= th nil) (setq th thw))<br/>&nbsp;&nbsp;&nbsp; (setq thw th)</p><p>&nbsp; (if (= thlsw nil) (setq thlsw 120.0))<br/>&nbsp; (setq thls (getreal (strcat "\n轴线外的墙厚&lt;" (rtos thlsw 2 0) "&gt;:")))<br/>&nbsp;&nbsp;&nbsp; (if (= thls nil) (setq thls thlsw))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;thls轴线外墙厚<br/>&nbsp;&nbsp;&nbsp; (setq thlsw thls)</p><p>&nbsp; (setq thrx (- th thls))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;thrx轴线内墙厚</p><p>&nbsp; (setq bp (getpoint "\n第一点: "))<br/>&nbsp; (setq bbp bp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;bbp记录下第一点<br/>&nbsp; (if (= nil bp) (quit))<br/>&nbsp; (setq sp (getpoint bp "\n下一点(注意:按顺时针): "))<br/>&nbsp; (setq ssp sp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;ssp记录下第二点<br/>&nbsp; (setvar "osmode" 0)<br/>&nbsp; (if (= nil sp) (quit))<br/>&nbsp; (setq n 0 tmp 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;n=0为第一条线&nbsp; ;tmp=0<br/>&nbsp; (while T<br/>&nbsp;&nbsp;&nbsp; (setq ang1 (angle bp sp))<br/>&nbsp;&nbsp;&nbsp; (setq dis1 (distance bp sp))&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq pt1 (polar bp (+ ang1 (* pi 0.5)) thls))<br/>&nbsp;&nbsp;&nbsp; (setq pt2 (polar pt1 ang1 dis1))<br/>&nbsp;&nbsp;&nbsp; (if (= 0 n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt1 pt2 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt11 pt2 "")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq ss (ssadd))<br/>&nbsp;&nbsp;&nbsp; (setq ss (ssget "L"))<br/>&nbsp;&nbsp;&nbsp; (setq pt3 (polar bp (- ang1 (* pi 0.5)) thrx))<br/>&nbsp;&nbsp;&nbsp; (setq pt4 (polar pt3 ang1 dis1))<br/>&nbsp;&nbsp;&nbsp; (if (= 0 n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt3 pt4 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt33 pt4 "")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq ss (ssadd (entlast) ss))<br/>&nbsp;&nbsp;&nbsp; (if (= 1 tmp) (command "erase" ss ""))<br/>&nbsp;&nbsp;&nbsp; (if (= nil ep)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(if (= 1 tmp)<br/>&nbsp;&nbsp; (progn <br/>&nbsp;&nbsp;&nbsp;&nbsp; (redraw)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (quit)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setvar "osmode" 32)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (initget "C")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ep (getpoint sp "\nC闭合/下一点: "))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setvar "osmode" 0)<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(if (= nil ep) (quit))<br/>&nbsp;(if (eq ep "C") (setq ep bbp)) <br/>&nbsp;(setq ang2 (angle sp ep))<br/>&nbsp;(setq ang3 (- pi ang1))<br/>&nbsp;(setq ang4 (- (* pi 2) ang2))<br/>&nbsp;(setq ang3 (- (/ pi 2) (/ (- ang3 ang4) 2)))<br/>&nbsp;(setq dis2 (distance sp ep))<br/>&nbsp;(setq dis3 (* thls (tan ang3)))<br/>&nbsp;(setq dis4 (* thrx (tan ang3)))</p><p>&nbsp;(setq pt1 (polar bp (+ ang1 (* pi 0.5)) thls))<br/>&nbsp;(setq pt2 (polar pt1 ang1 (+ dis1 dis3)))<br/>&nbsp;(command "erase" ss "")<br/>&nbsp;(if (= 0 n)<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt1 pt2 "") <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq sss (ssadd))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq sss (ssget "L"))<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (command "line" pt11 pt2 "")<br/>&nbsp;)<br/>&nbsp;(setq pt3 (polar bp (- ang1 (* pi 0.5)) thrx))<br/>&nbsp;(setq pt4 (polar pt3 ang1 (- dis1 dis4)))<br/>&nbsp;(if (= 0 n)<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command "line" pt3 pt4 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq sss (ssadd (entlast) sss))<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (command "line" pt33 pt4 "")<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(command "erase" sss "")<br/>&nbsp;(setq ang2 (angle sp ep))<br/>&nbsp;(setq ang3 (- pi ang1))<br/>&nbsp;(setq ang4 (- (* pi 2) ang2))<br/>&nbsp;(setq ang3 (- (/ pi 2) (/ (- ang3 ang4) 2)))<br/>&nbsp;(setq dis2 (distance sp ep))<br/>&nbsp;(setq dis3 (* thls (tan ang3)))<br/>&nbsp;(setq dis4 (* thrx (tan ang3)))<br/>&nbsp;(setq pt1 (polar bp (+ ang1 (* pi 0.5)) thls))<br/>&nbsp;(setq pt2 (polar pt1 ang1 (+ dis1 dis3)))<br/>&nbsp;(command "erase" ss "") <br/>&nbsp;(command "line" pt11 pt2 "")<br/>&nbsp;(setq ss (ssadd))<br/>&nbsp;(setq ss (ssget "L"))<br/>&nbsp;(setq pt3 (polar bp (- ang1 (* pi 0.5)) thrx))<br/>&nbsp;(setq pt4 (polar pt3 ang1 (- dis1 dis4)))<br/>&nbsp;(command "line" pt33 pt4 "")<br/>&nbsp;(setq ss (ssadd (entlast) ss))<br/>&nbsp;(command "line" pt2 pte1 "")<br/>&nbsp;(command "line" pt4 pte2 "")<br/>&nbsp;(setq tmp 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if (= 0 n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pte1 pt2 pte2 pt4)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq pt11 pt2 pt33 pt4)<br/>&nbsp;&nbsp;&nbsp; (setq bp sp sp ep n 1) <br/>&nbsp;&nbsp;&nbsp; (if (equal bbp ep)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ep ssp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ep nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)&nbsp; <br/>)</p>

gufeng 发表于 2010-4-28 09:54:00

错误: no function definition: TAN
页: [1]
查看完整版本: 请教能否把下面画二线的程序改为四线,谢谢!