수정 합니다.
하기 리습으로 부탁 드립니다.
감사 합니다.
;####################### [ ISOAUTODIMMARK. LSP ] #######################
;;======================================================================================;;
;; Author : I’m peter http://cafe.daum.net/archimore & http://cafe.daum.net/notcolor
;; : Sooya12 https://www.gocad.co.kr/ & https://blog.naver.com/khs12kim
;; arragnge : I’m peter http://cafe.daum.net/archimore & http://cafe.daum.net/notcolor
;; coaching : 달수님 http://cafe.daum.net/notcolor, 자유천지(따라지)님 http://cafe.daum.net/notcolor
;; Title : 등각투영라인에 길이 표시하기
;; Request : 아키모아 데오늬님
;;======================================================================================;;
;; 위 타이틀 삭제 없이 공유 가능합니다
(defun c:isoautodimmark(/ ss ks_MakeText ks_polyVtx ks_midpt ks_LinVtx ks_LRUDsor ks_Text)
;;=======
;; SUB 1.
;;=======
(defun ks_MakeText(a b / c xc yc ang dst mdp txtpt i)
(setq xc(- (car a)(car b)) yc(-(cadr a)(cadr b)))
(if(and (/= xc 0)(/= yc 0))
(setq c (/ yc xc))
(setq c 0)
)
(setq ang (angle a b))
(setq dst(distance a b))
(setq mdp(ks_midpt a b))
(if (minusp c)
(progn
(setq txtpt (polar mdp (+ ang 1.5708)(* 2.0 (getvar ‘dimgap))))
(setq i ang)
)
(progn
(setq ang (+ pi ang))
(setq txtpt (polar mdp (+ ang 1.5708)(* 2.0 (getvar ‘dimgap))))
(setq i 0.523599)
)
)
(setq obj(vlax-ename->vla-object(ks_Text txtpt (getvar ‘dimtxt)(rtos dst 2 (getvar ‘dimdec)) ang)))
(vla-put-obliqueangle obj i)
)
;;=======
;; SUB 2.
;;=======
(defun ks_PolyVtx (EntList / L)
(setq L'())
(foreach x EntList
(if (= (car x) 10)
(setq L (append L (list (cdr x))))
)
)
L
)
;;=======
;; SUB 3.
;;=======
(defun ks_midpt (p1 p2)
(mapcar ‘(lambda (x1 x2) (/ (+ x1 x2) 2.0)) p1 p2)
)
;;=======
;; SUB 4.
;;=======
(defun ks_LinVtx(eL / L)
(mapcar ‘cdr (vl-remove-if-not ‘(lambda (x)(or (= (car x)10)(= (car x) 11)))eL))
)
;;=======
;; SUB 5.
;;=======
(defun ks_LRUDsort(L)
(vl-sort (vl-sort L ‘(lambda (a b)(< (car a)(car b))))'(lambda (a b)(>(cadr a)(cadr b))))
)
;;=======
;; SUB 6.
;;=======
(defun ks_Text (pt hgt str ang)
(entmakex (list (cons 0 “TEXT”)
(cons 10 pt)
(cons 11 pt)
(cons 40 hgt)
(cons 1 str)
(cons 50 ang)
(cons 72 1)
(cons 73 2)
)
)
)
;;=======
;;===MAIN
;;=======
(setq ss(ssget (list(cons 0 “*LINE”))))
(foreach e(vl-remove-if ‘listp (mapcar ‘cadr (ssnamex ss)))
(setq en(entget e))
(if(= “LWPOLYLINE” (cdr(assoc 0 en)))
(progn
(setq Lst(ks_polyVtx en))
(mapcar
‘(lambda (a b / ang dst mdp txtpt)
(setq L(ks_LRUDsort(list a b)))
(setq a (car L)b(cadr L))
(ks_MakeText a b)
)
Lst (cdr Lst)
)
);progn
(progn
(setq L(ks_LRUDsort(ks_LinVtx en)))
(setq a (car L)b(cadr L))
(ks_MakeText a b)
);progn
);if
);foreach
(princ)
)
(vl-load-com)
(defun c:iadm nil (c:isoautodimmark))
(princ
(STRCAT
“n :: << ISOAUTODIMMARK(proto type. 1)>> ::”
“n :: COMMAND << ISOAUTODIMMARK >> ::”
“n :: OR << IADM >> ::”
)
)
(PRINC “n :: http://cafe.daum.net/archimore & http://cafe.daum.net/notcolor ::”)
(princ)