;*********************************************************
;interstion point multe trim program
;1999 . 6 . 15
;int.lsp
;**********************************************************
;degree to radian
(defun DTR(A)
(* Pi (/ A 180.0))
)
(defun C:int()
(princ “n>>Interstion point multe trim Program….. “)
(prin1)
(setvar “cmdecho” 0)
(setq sca(getvar “dimscale”))
(setq osm(getvar “osmode”))
(setvar “osmode” 0)
(setq ss (ssget))
(setq sno (sslength ss))
(if (= dista nil) (setq dista (* sca 2.6)))
(setq d_dista dista)
(setq lp 1)
(while lp
(progn
(initget “H V D”)
(setq sel (strcase (getstring “nSelect Horizntl/Vertical/Dist: “)))
)
(cond
((= sel “H”)
(setq ang 0)
(setq lp nil))
((= sel “V”)
(setq ang 90)
(setq lp nil))
((= sel “D”)
(setq dista (getint (strcat “nEnter trim object dist<"(rtos dista 2 1)">:”)))
(setq sel(getkword)))
)
)
(if (= dista “”) (setq dista d_dista))
(setq no 0)
(repeat sno
(setq x1 (ssname ss no))
(setq sp-1 (cdr (assoc 10 (entget x1))))
(setq ep-1 (cdr (assoc 11 (entget x1))))
(setq rep sno)
(setq lp 0)
(repeat rep
(setq x2 (ssname ss lp))
(setq sp-2 (cdr (assoc 10 (entget x2))))
(setq ep-2 (cdr (assoc 11 (entget x2))))
(setq int(inters sp-1 ep-1 sp-2 ep-2))
(if (/= int nil)
(progn
(command “circle” int (/ dista 2)) (setq e1(entlast))
(setq d1(polar int (dtr ang) 0.6))
(setq d2(polar int (dtr ang) 1))
(setq d3(polar d1 (dtr (+ ang 90)) 0.5))
(setq d4(polar d1 (dtr (- ang 90)) 0.5))
(command “trim” e1 “” “f” d3 d2 d4 “” “”)
(command “erase” e1 “”)
)
)
(setq lp (1+ lp))
)
(setq no (1+ no))
)
(setvar “osmode” osm)
(setvar “cmdecho” 1)
(prin1)
)
(princ “nt INT.LSP loaded. Start command with INT.”)
(princ)
여러선 한꺼번에 trip하는 리습인데요.
line에서는 되는데 pline 에서는 안되거든요.
pline에서도 되게 할수 없을까요?