(defun c:e3()
;;;这个范例在模型空间中建立一个文字对象
;;;接着改变文字对象的 TextAlignmentPoint 和HorizontalAlignment属性
(VL-LOAD-COM)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
mSpace (vla-get-ModelSpace AcadDocument)
)
;;;定义文字对象
(setq textString "嗨,你好。")
(setq insertionPnt (vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill insertionPnt '(30 30 0))
(setq alignmentPnt (vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill alignmentPnt '(30 30 0))
(setq height 5)
;;;在模型空间中建立文字对象
(setq TextObj (vla-AddText mSpace textString insertionPnt height))
(vla-ZoomExtents AcadObject)
(setq currAlignmentPnt (vla-get-TextAlignmentPoint TextObj))
(setq currAlignmentPnt (vlax-variant-value currAlignmentPnt))
(princ
(STRCAT " TextAlignmentPoint 设定默认值: "
(RTOS (vlax-safearray-get-element currAlignmentPnt 0))
", "
(RTOS (vlax-safearray-get-element currAlignmentPnt 1))
", "
(RTOS (vlax-safearray-get-element currAlignmentPnt 2))
" TextAlignmentPoint 范例\n"
)
)
(PROMPT "<Enter>进行:")
(VL-CMDF pause)
;;;改变HorizontalAlignment 和
;;;TextAlignmentPoint 属性的值
;;;注意,必须将 HorizontalAlignment 属性改变为,
;;;要求TextAlignmentPoint的值,这样
;;;才可以设定TextAlignmentPoint属性的值
(setq newAlignmentPnt (vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill newAlignmentPnt '(50 30 0))
(vla-put-HorizontalAlignment
TextObj
acHorizontalAlignmentFit
)
(vla-put-TextAlignmentPoint TextObj newAlignmentPnt)
(vla-ZoomExtents AcadObject)
(setq newAlignmentPnt (vla-get-TextAlignmentPoint viewPortObj))
(setq newAlignmentPnt (vlax-variant-value newAlignmentPnt))
(princ
(STRCAT "TextAlignmentPoint 设定为: "
(RTOS (vlax-safearray-get-element newAlignmentPnt 0))
", "
(RTOS (vlax-safearray-get-element newAlignmentPnt 1))
", "
(RTOS (vlax-safearray-get-element newAlignmentPnt 2))
"\r \n"
" HorizontalAlignment 设定为 acHorizontalAlignmentFit"
"TextAlignmentPoint 范例"
)
)
(princ)
)
上面的函数为什么会出错那? |