我从不建议使用命令调用来生成文本,因为它可能非常不可预测,相反,我会使用entmake(或等效的VL方法):
- (defun c:insdwg (/ M-Text p)
- (defun M-Text (pt str)
- (entmakex (list (cons 0 "MTEXT")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbMText")
- (cons 10 pt)
- (cons 1 str))))
- (if (setq p (getpoint "\nSelect Point for DWG Name: "))
- (M-Text p (getvar 'DWGNAME)))
- (princ))
或根据您的示例:
- (defun c:insdwg (/ Text)
- (defun Text (pt hgt str)
- (entmakex (list (cons 0 "TEXT") (cons 10 pt)
- (cons 40 hgt) (cons 1 str)
- (cons 72 1) (cons 73 0)
- (cons 11 pt))))
- (Text '(50. 50. 0.) 5. (getvar 'DWGNAME))
- (princ))
或者,使用字段:
- (defun c:insdwg (/ doc)
- (vl-load-com)
- (vla-addText
- (if (or (eq AcModelSpace
- (vla-get-ActiveSpace
- (setq doc (vla-get-ActiveDocument
- (vlax-get-acad-object)))))
-
- (eq :vlax-true (vla-get-MSpace doc)))
- (vla-get-ModelSpace doc)
- (vla-get-PaperSpace doc))
- "%<\\AcVar Filename \\f "%tc4%fn6">%"
- (vlax-3D-point '(50. 50. 0.)) 5.)
- (princ))
|