请高手完善一下程序
(defun C:STR (/ pt1 pt2 l n p0 p1 t01 t02 t1 t2 S1 S2 old_osmode old_cmdecho k ent13 i th );;保存系统变量设置
(setq old_osmode (getvar "osmode"))
(setq old_CMDECHO (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setvar "osmode" 32)
(command "-layer" "m" "栏杆" "C" "1" "" "")
(if (= thss nil)
(setq thss 0)
)
(setq th (getreal (strcat "\n栏杆离板边距<" (rtos thss 2 0) ">:")))
(if (= th nil)
(setq th thss)
)
(setq thss th)
(if (setq pt1 (getpoint "\n第一点(顺时针):"))
(while (setq pt2 (getpoint pt1 "\n下一点:"))
(setvar "osmode" 0)
(setq k (angle pt1 pt2))
;(setq L (distance pt1 pt2))
(setq t01 (polar pt1 (- k (* 0.5 pi)) th))
(setq t1 (polar t01kth))
(setq t02 (polar pt2 (- k (* 0.5 pi)) th))
(setq t2 (polar t02 (- k (* 1 pi)) th))
(setq L (distance t1 t2))
(command "line" t1 t2 "")
(setq ENT13 (entlast)
S1 (list ENT13 t1)
)
(if S2
(command "_.EXTEND" S1 S2 "" S1 S2 "")
)
(command "donut" "0" "80" t1 "")
(command "donut" "0" "80" t2 "")
(setq N (/ L 1200))
(setq I 1)
(setq P0 t1)
(while (<= i N)
(setq P1 (polar p0 k 1200))
;(setvar "osmode" 0)
(progn
(command "donut" "0" "80" p1 "")
(setq P0 (polar p0 k 1200))
(setq I (+ i 1))
(setq S2 (list ENT13 t2))
)
)
(setvar "osmode" 32)
(setq pt1 pt2)
)
)
;;恢复系统变量设置
(setvar "osmode" old_osmode)
(setvar "CMDECHO" old_CMDECHO)
(setvar "clayer" "0")
(princ)
) 这个程序当栏杆离板边距不为0时,在凸90度的地方可以闭合,但在凹90度的地方不能闭合,请高手完善一下,不胜感激
页:
[1]