(defun c:O ( / offsetlf_err olderr s CalDist DispDist
OffsetDist Old_cmdecho )
;;;
;;; offsetlf_err 은 offsetlf 사용도중 Error가 생기면,
;;; 아래의 두틴이 실행된 후 프로그램을 종료한다.
;;;
(defun offsetlf_err (s)
(if Old_cmdecho (setvar “CMDECHO” Old_cmdecho))
(setq *error* olderr)
(princ)
)
;;;
;;; CalDist 는 정수를 실수로 바꾸어 주어,
;;; CAL 함수에 모든 값을 실수로 바꾸어 전달한다.
;;; 또한, INCH 및 FEET 단위를 MM 단위로 바꾸어 준다.
;;;
(defun CalDist ( y / Count Number? ifDot? CalString Char1 )
(setq Count 0 Number? nil ifDot? nil CalString “” )
(repeat (strlen y)
(setq Char1 (substr y (setq Count (1+ Count)) 1))
(cond
((and (>= Char1 “0”)(<= Char1 "9"))
(setq CalString (strcat CalString Char1) Number? ‘T )
)
((= Char1 “.”)
(setq CalString (strcat CalString Char1) Number? nil ifDot? ‘T ))
((= Char1 “””)(setq CalString (strcat CalString “*25.4”) ifDot? ‘T ))
((= Char1 “‘”) (setq CalString (strcat CalString “*304.8”) ifDot? ‘T ))
(‘T
(if (and (= Number? ‘T)(= ifDot? nil))
(setq CalString (strcat CalString “.0” Char1))
(setq CalString (strcat CalString Char1))
)
(setq Number? nil ifDot? nil)
)
)
)
(if (and (= Number? ‘T)(= ifDot? nil))
(setq CalString (strcat CalString “.0”))
)
(cal CalString)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; OFFSETLF 의 시작 입니다. ;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq olderr *error* *error* offsetlf_err)
;;;
;;; CAL 함수를 LOADING 한다.
;;; R14일 경우에는 ARXLOAD 를 사용한다.
;;;
(if (null cal)
(cond
((= (substr (getvar “ACADVER”) 1 2) “14”)(arxload “GEOMCAL”))
(‘T (xload “GEOMCAL”))
)
)
(setq ANS(getvar “offsetdist”))
(if (= ANS -1)
(setq ANS “Through” DispDist “Through”)
(setq DispDist(rtos (setq ANS (* ANS (getvar “DIMLFAC”)))))
)
(princ “nOffsetLF, Version 2.6 CHANG LIM ENG”)
(princ “nProgramed by Cha Dong Ryul. 1999/07/04 Tel. 017-847-5828”)
(setq OffsetDist
(getstring (strcat “nOffset distance or Through <" DispDist ">: “))
)
(cond
((or (= (substr OffsetDist 1 1) “t”)(= (substr OffsetDist 1 1) “T”))
(setq OffsetDist “T”)
)
((= (substr OffsetDist 1 1) “;”)
(setq OffsetDist (* (CalDist (substr OffsetDist 2))(getvar “DIMSCALE”)))
)
((or (null OffsetDist)(= OffsetDist “”))
(setq OffsetDist ANS)
)
(‘T
(setq OffsetDist (/ (CalDist OffsetDist)(getvar “DIMLFAC”)))
)
)
(setq Old_cmdecho(getvar “CMDECHO”))(setvar “CMDECHO” 0)
(command “_.OFFSET” OffsetDist)
(if Old_cmdecho (setvar “CMDECHO” Old_cmdecho))
(setq olderr (setq *error* olderr))
(princ)
)
(princ ” OFFSETLF Command loaded.”)
(princ)