我一直在思考这些问题,但目前这只适用于使用Arial字体的文本样式-我不知道如何将多行文字设置为粗体/斜体,并在格式代码中指定正确的字体字符串。我想也许vla得到了字体文件,但这只是字体文件的文件名。
- (defun c:test ( / *error* ss ) (vl-load-com)
- ;; © Lee Mac 2010, www.lee-mac.com
- (defun *error* ( msg )
- (LM:ReleaseObject RegEx)
- (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " msg " **")))
- (princ)
- )
- (if (setq ss (ssget "_:L" '((0 . "MTEXT") (1 . "*\\P*"))))
- (
- (lambda ( i / RegEx e ) (setq RegEx (vlax-create-object "VBScript.RegExp"))
- (while (setq e (ssname ss (setq i (1+ i))))
- (entupd
- (cdr
- (assoc -1
- (entmod
- (subst
- (cons 1
- (LM:RegExReplace RegEx "{\\fArial|b1|i0|c0|p34;$1\\P\\fArial|b0|i1|c0|p34;$2}" "^(.*)\\\\P(.*)$"
- (cdr (assoc 1 (entget e)))
- )
- )
- (assoc 1 (entget e)) (entget e)
- )
- )
- )
- )
- )
- )
- (LM:ReleaseObject RegEx)
- )
- -1
- )
- )
- (princ)
- )
- (defun LM:RegExReplace ( regex new pat str )
- ;; © Lee Mac 2010
- (mapcar
- (function
- (lambda ( prop value ) (vlax-put-property regex prop value))
- )
- '(pattern global ignorecase) (list pat actrue acfalse)
- )
- (vlax-invoke regex 'replace str new)
- )
- ;;------------------=={ Release Object }==--------------------;;
- ;; ;;
- ;; Releases a VLA Object from memory via plentiful error ;;
- ;; trapping ;;
- ;;------------------------------------------------------------;;
- ;; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;
- ;;------------------------------------------------------------;;
- ;; Arguments: ;;
- ;; obj - VLA Object to be released from memory ;;
- ;;------------------------------------------------------------;;
- ;; Returns: T if Object Released, else nil ;;
- ;;------------------------------------------------------------;;
- (defun LM:ReleaseObject ( obj ) (vl-load-com)
- ;; © Lee Mac 2010
- (and obj (eq 'VLA-OBJECT (type obj)) (not (vlax-object-released-p obj))
- (not
- (vl-catch-all-error-p
- (vl-catch-all-apply
- (function vlax-release-object) (list obj)
- )
- )
- )
- )
- )
你的想法是什么? |