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