선, 폴리선 등을 오프셋 후 끝 점을 결합하는 리습입니다.
옹벽 등을 표기할 때 오프셋 후에 양 끝 점에 선을 그려 결합하는 과정을 한번에 해 준다고 해서 사용하려합니다만. 실행이 되지 않습니다
(defun c:OC (/ AT:Offset ent pnt lst)
;; Offset selected curve and connect each end (also option to convert to LWPolyline).
;; Copyright Alan J. Thompson, 04.29.10
(vl-load-com)
(defun AT:Offset (O D P / _pt p1 p2 c D g)
;; Offset selected object
;; O – Object to offset
;; D – Distance to offset object
;; P – Point on side of object to offset
;; Alan J. Thompson, 09.12.09 / 03.25.10
(setq _pt (lambda (s)
(vlax-curve-getPointAtDist O (s (vlax-curve-getDistAtPoint O p1) 0.00001))
)
)
(if (and (setq p1 (vlax-curve-getclosestpointtoprojection O (trans P 1 0) ‘(0 0 1)))
(or (setq p2 (setq c (_pt +))) (setq p2 (_pt -)))
(if (minusp (- (* (- (car p2) (car p1)) (- (cadr (trans P 1 0)) (cadr p1)))
(* (- (cadr p2) (cadr p1)) (- (car (trans P 1 0)) (car p1)))
)
)
(if (vl-position (vla-get-objectname O) ‘(“AcDbLine” “AcDbXline”))
(setq D (- (abs D)))
(setq D (abs D))
)
(if (vl-position (vla-get-objectname O) ‘(“AcDbLine” “AcDbXline”))
(setq D (abs D))
(setq D (- (abs D)))
)
)
(or c (setq D (- D)))
(not (vl-catch-all-error-p (setq g (vl-catch-all-apply ‘vla-offset (list O D)))))
)
(car (vlax-safearray->list (vlax-variant-value g)))
)
)
(and (minusp (getvar ‘offsetdist)) (setvar ‘offsetdist 1.))
(cond
((and
(if AT:Entsel
(setq ent (car (AT:Entsel nil “n선, 폴리선, 호 선택: ” ‘(“L” (0 . “ARC,LINE,LWPOLYLINE”)) nil)))
(and (setq ent (car (entsel “n선, 폴리선, 호 선택: “)))
(or (vl-position (cdr (assoc 0 (entget ent))) ‘(“ARC” “LINE” “LWPOLYLINE”))
(alert “지원하지 않는 객체!”)
)
)
)
(not (initget 6))
(setvar
‘offsetdist
(cond
((getdist (strcat “nOffset 거리 지정 또는 <” (rtos (getvar ‘offsetdist)) “>: “)))
((getvar ‘offsetdist))
)
)
(setq pnt (getpoint “nOffset 방향 지정: “))
((lambda (off)