Kor_Storm님이 올려주신 리습은
양 끝을 20씩 되게 하는 리습을 잘쓰고있는데…
이 리습을 수정해서 바깥라인에서 2mm 정도 뛰우고
양 끝을 20씩 되게 하는 작업도 한번의 명령으로 연속작업이 가능한가요?
(defun c:test( / sl-mapcar-ens ss)
(defun sl-mapcar-ens (func ss) (mapcar func (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex ss)))))
(princ “n선 양끝 남기기”)
(and
(setq ss (ssget ‘((0 . “LINE”))))
(or *dis* (setq *dis* 20))
(setq *dis* (cond ((getdist (strcat “n남길 길이 입력 <” (vl-princ-to-string *dis*) “>:”))) (*dis*)))
(sl-mapcar-ens
‘(lambda (en / ent1 len ep ent2 sp)
(setq ent1 (entget en) len (vlax-curve-getdistatparam en (vlax-curve-getendparam en)))
(if (> len *dis*)
(progn
(setq ep (vlax-curve-getpointatdist en *dis*) sp (vlax-curve-getpointatdist en (- len *dis*)))
(setq nen (entmakex (vl-remove ‘(lambda (-1 5)) (entget en))) ent2 (entget nen))
(entmod (subst (cons 10 sp) (assoc 10 ent1) ent1))
(entmod (subst (cons 11 ep) (assoc 11 ent2) ent2))
)
(princ “n입력한 길이보다 선이 짧습니다.”)
)
)
ss
)
)
(princ)
)
공유