热度 2||
献给不喜欢用command的坛友们。
有则改之,无则新建
(defun sn:settextstyle
;;; 示例:(sn:settextstyle "123" (list (cons 40 3) (cons 41 1)(cons 50 0)(cons 71 0)) (list "txt.shx" "hztxt.shx"))
;;; 或(sn:settextstyle "123" (list (cons 40 3) (cons 41 1)(cons 50 0)(cons 71 0)) (list "宋体"))
;;; 返回:T or nil
;;; 需要的话先运行(vl-load-com)
(textstylename proplst shxlist / oTextStyle
textstylelst
)
(cond ((= (length shxlist) 1)
(sn:settextstyle textstylename proplst (list "" ""))
(setq oTextStyle
(vla-item
(vla-get-textstyles
(vla-get-activedocument (vlax-get-acad-object))
)
textstylename
)
)
(vla-setfont
oTextStyle
(car shxlist)
:vlax-false
:vlax-false
0
0
)
t
)
((= (length shxlist) 2)
(if (tblsearch "style" textstylename)
(progn ;_exist
(setq textstylelst
(entget (tblobjname "style" textstylename))
)
(mapcar '(lambda (x)
(setq textstylelst
(subst x
(assoc (car x) textstylelst)
textstylelst
)
)
)
(append proplst
(list (cons 3 (car shxlist))
(cons 4 (cadr shxlist))
)
)
)
(entmod textstylelst)
t
)
(progn ;_not exist
(entmake (append (list
(cons 0 "STYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbTextStyleTableRecord")
(cons 2 textstylename)
(cons 70 0)
(cons 3 (car shxlist))
(cons 4 (cadr shxlist))
)
proplst
)
)
t
)
)
)
(t nil)
)
) ;_end defun