김희태님의 홈페이지에서 퍼왔습니다.
텍스트의 위치변동없이 정점의 위치만 바꾸는 코드라고 하는데요
이것을 실제 리습으로 사용하고 싶은데 어떻게해야 할지를 모르겠씁니다.
야근하는데 도움이 될것 같은데여…부탁드리겠습니다.
(defun text_align (txtent AlignStr / tal t10 l10 l11 aldata)
(setq AlignStr (strcase AlignStr)
tal ‘((“L” 0 0) (“C” 1 0) (“R” 2 0) (“M” 4 0) (“TL” 0 3) (“TC” 1 3) (“F” 5 0) (“A” 3 0)
(“TR” 2 3) (“ML” 0 2) (“MC” 1 2) (“MR” 2 2) (“BL” 0 1) (“BC” 1 1) (“BR” 2 1))
)
(and
txtent
(= ‘ENAME (type txtent))
(entget txtent)
(= ‘STR (type AlignStr))
(assoc AlignStr tal)
(progn
(cond
((or (= AlignStr “A”) (= AlignStr “F”))
(setq aldata (cdr (assoc “R” tal)))
)
(t (setq aldata (cdr (assoc AlignStr tal))))
)
(setq txtent (entget txtent)
t10 (cdr (assoc 10 txtent))
txtent (subst (cons 72 (car aldata)) (assoc 72 txtent) txtent)
txtent (subst (cons 73 (cadr aldata)) (assoc 73 txtent) txtent)
)
(entmod txtent)
(setq txtent (entget (cdr (assoc -1 txtent)))
l10 (cdr (assoc 10 txtent))
l11 (cdr (assoc 11 txtent))
txtent (subst (list 11
(+ (car t10) (- (car l11) (car l10)))
(+ (cadr t10) (- (cadr l11) (cadr l10)))
0
)
(assoc 11 txtent)
txtent
)
txtent (subst (cons 10 t10) (assoc 10 txtent) txtent)
aldata (cdr (assoc AlignStr tal))
txtent (subst (cons 72 (car aldata)) (assoc 72 txtent) txtent)
txtent (subst (cons 73 (cadr aldata)) (assoc 73 txtent) txtent)
)
(entmod txtent)
)
)
)