안녕하세요.
배관 관련 일을 하고 있습니다
지금 쓰고 있는 치수선뽑는 리습입니다. 여기에 치수선 위쪽에는 피트인치를 넣고 아래쪽에는 괄호속에 밀리미터 길이를 넣었으면 합니다.
피트와 인치는 00’00-0/0″ 이렇게 나타내었으면 좋겠습니다(분수가 힘들다면 소수로 넣어도 괜찮습니다). 아래쪽 숫자는 피트 인치를 적어 넣으면 자동 계산해서 밀리미터 숫자로 나왔으면 좋겠습니다.(단위mm은 안넣고 그냥 괄호와 숫자만) 첨부도면의 치수처럼 나오면 좋겠습니다(기울기는 빼고)
고수님들 부탁드립니다. ~꾸벅~
(defun c:SD (/ V aang bB dD ds cC l e1 f1
g1 h1 i1 j1 DT t2 t3 t4 TXT ln txp texp texp1 ang1 lnp1 lnp2 di di2 zi
lp1 lp2 po1 po2 ang2 lp2 texp2 mo ll3 tx1 PNT1 PNT2 DEG FG FI G11 H11 MOV
ANG TL) ;t
(graphscr)
(defun dtr (V)
(* pi (/ V 180.0))
)
(defun rtd (V)
(/ (* V 180.0) pi)
)
(defun *err1* (msg)
(prompt msg)(terpri)
(setvar “osmode” osm)
(setvar “cmdecho” 1)
(SETVAR “AUTOSNAP” 59)
(setq *error* nil))
(princ)
(setq osm (getvar “osmode”))
(setq *error* *err1*)
(setvar “cmdecho” 0)
(command “CLAYER” “4” )
(setvar “ORTHOMODE” 1)
(setvar “OSMODE” 49)
(setvar “cmdecho” 0)
(setq *error* *err1*)
(setq pnt1 (getpoint “n Pick 1st point:”))
(setq *error* *err1*)
(setq pnt2 (getpoint pnt1 “n Pick 2nd point:”))
(setq deg (getangle pnt2 “n pick angle of dim.:”))
(setvar “OSMODE” 0)
;;(setq pnt3 (polar pnt2 deg 30))(terpri)
(setq *error* *err1*)
(setq fi (getreal “n DIM. text line Locate.:
n <In:0, Mid:1, Out:2 , last:3> [2]:”))
(setvar “cmdecho” 0)
(if (= fi nil) (setq fi 2))
(setq fg fi)
(if (= fg 0) (setq l 20.0))
(if (= fg 1) (setq l 30.0))
(if (= fg 2) (setq l 10.0))
(if (= fg 3) (setq l 15.0 ))
(setq ds (getvar “dimscale”))
(setvar “textsize” (* 2.5 ds))
(setq bB (* ds l))
(setq cC (* ds 1))
(setq dD (* ds 2.65))
(setq g1 (polar pnt1 deg bB))
(setq h1 (polar pnt2 deg bB))
(setq e1 (polar pnt1 deg cC))
(setq f1 (polar pnt2 deg cC))
(setq i1 (polar g1 deg cC))
(setq j1 (polar h1 deg cC))
(setq DT (distance g1 h1))
(setq t2 (rtos DT 2 2))
(setq t3 ( / DT 2))
(setq txt (getstring “If change dim. text, input dim.text value.[ex;6000]:”))
(if (= txt “”) (setq txt 6000) (setq txt (rtos (atof txt) 2 0)) )
(setq aang (angle pnt1 pnt2))
(setq ang (abs (rtd aang)))
(setq t4 (polar g1 aang t3))
(if (> DT (* 7.0 ds))
(progn
(command “INSERT” “arr1” g1 ds ds ang )
(command “INSERT” “arr2” h1 ds ds ang )
)
(progn
(command “INSERT” “arr2” g1 ds ds ang )
(command “INSERT” “arr1” h1 ds ds ang )
(setq g11 (polar g1 (+ aang (dtr 180)) (+ (* ds 2.5) (* ds 1.5))) )
(setq h11 (polar h1 (+ aang (dtr 0)) (+ (* ds 2.5) (* ds 1.5))) )
(command “LINE” g1 g11 “”)
(command “LINE” h1 h11 “”)
)
)
;
;
(if (and (> ang 0) (< ang 90) (> deg (dtr 180)) )
(progn
(setq ang ang)
(setq deg (+ deg (dtr 180)) )
)
)
(if (and (> ang 0) (< ang 90) (< deg (dtr 180)) )
(progn
(setq ang ang)
(setq deg deg)
)
)
(if (and (= ang 90) (or (< deg (dtr 90)) (> deg (dtr 270)) ))
(progn
(setq ang ang)
(setq deg (+ deg (dtr 180)) )
)
)
(if (and (= ang 90) (or (> deg (dtr 90)) (> deg (dtr 270)) ))
(progn
(setq ang ang)
(setq deg deg)
)
)
(if (and (> ang 90) (< ang 180) (> deg (dtr 180)) )
(progn
(setq ang (- ang 180))
(setq deg (+ deg (dtr 180)) )
)
)
(if (and (> ang 90) (< ang 180) (< deg (dtr 180)) )
(progn
(setq ang (- ang 180))
(setq deg deg)
)
)
(if (and (> ang 180) (< ang 270) (> deg (dtr 180)) )
(progn
(setq ang (- ang 180))
(setq deg (+ deg (dtr 180)) )
)
)
(if (and (> ang 180) (< ang 270) (< deg (dtr 180)) )
(progn
(setq ang (- ang 180))
(setq deg deg)
)
)
(if (and (= ang 270) (or (< deg (dtr 90)) (> deg (dtr 270)) ))
(progn
(setq ang (- ang 180))
(setq deg (+ deg (dtr 180)) )
)
)
(if (and (= ang 270) (or (> deg (dtr 90)) (> deg (dtr 270)) ))
(progn
(setq ang (- ang 180))
(setq deg deg)
)
)
(if (and (> ang 270) (< ang 360) (< deg (dtr 180)) )
(progn
(setq ang (- ang 360))
(setq deg deg)
)
)
(if (and (> ang 270) (< ang 360) (> deg (dtr 180)) )
(progn
(setq ang (- ang 360))
(setq deg (+ deg (dtr 180)) )
)
)
;
(setq tl (polar t4 deg dD))
(command “LINE” e1 i1 “”)
(command “LINE” f1 j1 “”)
(command “LINE” g1 h1 “”)(setq ll3 (entlast))
(command “CLAYER” “4” )
(command “text” “j” “m” tl “” ang txt )
;;(command “TEXT” “C” tl “” ang txt )
(command “CHANGE” “l” “” “p” “la” “4” “c” “yellow” “”)(setq tx1 (entlast))
(setq ln (entget ll3))
(setq txp (entget tx1))
(setq texp (assoc 11 txp))
(setq texp1 (cdr (assoc 11 txp)));;;old point(text)
(setq ang1 (cdr (assoc 50 txp)))
(setq lnp1 (cdr (assoc 10 ln)))
(setq lnp2 (cdr (assoc 11 ln)))
(setq di (distance lnp1 lnp2))
(setq di2 (/ di 2))
(setq ds (getvar “dimscale”))
(setq zi (* ds 2.3))
(setq lp1 (polar texp1 (+ ang1 (dtr 270)) zi))
(setq np (inters lnp1 lnp2 texp1 lp1 nil))
(setq po1 (distance np lnp1))
(setq po2 (distance np lnp2))
(setq ang2 (angle lnp1 np))
(if (< po1 po2)
(progn
(setq lp2 (polar lnp1 (+ ang2 (dtr 0 )) di2))
))
(if (< po2 po1)
(progn
(setq lp2 (polar lnp1 (- ang2 (dtr 0)) di2))
))
(setq mov (polar lp2 (+ ang1 (dtr 90)) zi))
(setq texp2 (cons 11 mov))
(setq mo (subst texp2 texp txp))
(entmod mo)
(setvar “OSMODE” 49)
(setvar “autosnap” 59)
;;;(setvar “ORTHOMODE” 1)
(setvar “cmdecho” 1)
(princ)
);end defun sdd
;