원클릭으로 치수 작성해주는 리습인데
단점이 치수가 정렬치수로 된다는 점입니다
이걸 선형치수로 변경해 주실 수 있으실까요?
꼭 좀 부탁 드립니다
(defun m:AD (/ _SC _DT _ORTHO _OSM AD## DSTT AD#Q P1 P2 P3 ANG A1 A2 AA
MM MODE)
(princ (strcat “ntAD, Version ” version “,” logo “”))
(setvar “cmdecho” 0)
(setq _SC (getvar “ltscale”))
(setq _DT (getvar “dimtxt”))
(setq _ORTHO (getvar “orthomode”))
(setq _OSM (getvar “osmode”))
(if (= AD_DLI nil)(setq AD_DLI (* _DT 3)))
(setsty “sim” “simplex” “1”)
(setq m:err *error* *error* *merrmsg*)
(defun AD## ()
(setq DSTT (getreal (strcat “n>> Distance : “)))
(if (numberp DSTT)(setq AD_DLI DSTT))
(AD#Q)
)
(setvar “orthomode” 0)
(defun AD#Q ()
(setvar “osmode” 1)
(initget “Dist”)
(setq P1 (getpoint (strcat
“n>> Dist/First extention line origin : END of”)))
(cond ((= P1 “Dist”)(AD##)))
)
(AD#Q)
(setvar “osmode” 128)
(setq P2 (getpoint P1 “n>> Second extention line origin : PER of”))
; (setq ANG (angle P1 P2)
; A1 (rtd ANG)
; A2 (rtos A1 2 0)
; )
; (if (or (/= A2 “0”) (/= A2 “360”) (/= A2 “180”) (/= A2 “90”) (/= A2 “270”))
; (setq MODE “al”))
; (if (or (= A2 “0”) (= A2 “360”) (= A2 “180”))
; (setq MODE “hor”))
; (if (or (= A2 “270”) (= A2 “90”))
; (setq MODE “ver”))
(setlay “dim”)
(setvar “osmode” 0)
(command “dim1” “AL” P1 P2 pause “”)
(setvar “osmode” 128)
(setq P3 (getpoint P2 “n>> Next extention line orgin : PER of”))
(if (/= P3 nil)
(progn
(setvar “dimse1” 1)
(while P3
(setq PP P3)
(setvar “osmode” 0)
(command “dim1” “co” P3 “”)
(setvar “osmode” 128)
(setq P3 (getpoint P3 “n>> Next extention line orgin : PER of”))
)
(setvar “dimse1” 0)
(setq NN (getpoint “n>> IF, double=mouse pick, or single=enter.”))
(if (/= NN nil)
(progn
(setvar “osmode” 0)
; (setq pp(polar pp (+ (angle p1 pp) (/ pi 2.0)) 0.1));
(setq pp(list (+ (car pp) 0.00000001) (+ (cadr pp) 0.000000001) (caddr pp)))
(command “dim1” “co” PP “”)
(setq ll(entlast))
(setvar “dimdli” AD_DLI)
(command “dim1” “bas” P1 “”)
(entdel ll)
(setvar “dimdli” 0)
)
)
)
)
(rtnlay)
(rtnsty)
(setvar “osmode” _OSM)
(setvar “orthomode” _ORTHO)
(princ)
)
(defun C:AD () (m:AD))
(princ “nt Auto Dimension loaded. Command: AD “)
(princ)
간단히
(defun c:ad(/ en p1 p2)
(while (setq en (entsel “n라인 연속 선택:”))
(setq en (entget (car en)))
(setq p1 (cdr (assoc 10 en))
p2 (cdr (assoc 11 en)))
(command “_DIMALIGNED” p1 p2 “”) ;따움표사이 역슬레쉬 기호 2개 넣어야됨 사이트애러
)
(princ)
)