vla-AddMLeader函数用法
Lisp在创建多重引线时,有个函数vla-AddMLeader,但不知道怎么用,没有函数说明吗, 求助大家,谢谢!AutoCAD帮助 ->开发人员文档 -> ActiveX and VBA Reference ->Methods -> AddMLeader Method 本帖最后由 xgr 于 2014-10-9 10:51 编辑
(defun c:test()
;;; 这个范例在模型空间中建立一个具有关联注释的Leader 对象
;;; 接着使用ArrowheadType属性来改变
;;; 箭头的可见外观(造型)
(VL-LOAD-COM)
(setq AcadObject(vlax-get-acad-object)
AcadDocument(vla-get-ActiveDocument Acadobject)
mSpace(vla-get-ModelSpace Acaddocument)
)
;;; 定义新的 MText 对象
(setq textString "嗨,你好。")
(setq insertionPnt(vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill insertionPnt '(50 50 0))
(setq width 20)
;;; 在模型空间中建立 MText 对象
(setq MTextObj(vla-AddMText mSpace insertionPnt width textString))
;;; 引线的数据
(setq pnts(vlax-make-safearray vlax-vbDouble '(0 . 5)))
(vlax-safearray-fill pnts '(0 0 0 40 40 0))
(setq leaderType acLineWithArrow)
;;; 在模型空间中建立 MLeader 对象,接着将MText对象设成Leader的注释,
;;; 以使用新的MText对象和MLeader建立关联
(setq annotationObject MTextObj)
;;(setq leaderObj(vla-AddLeader mSpace pnts annotationObject leaderType))
(setq MleaderObj(vla-AddMLeader <FONT color=red>pnts </FONT>annotationObject leaderType))
(vla-ZoomExtents AcadObject)
;;; 读取并显示当前的箭头类型
(princ "这个对象的箭头类型是:")
(princ (vla-get-ArrowheadType MleaderObj))(princ "\n")
;;; 改变这个对象的箭头类型
(vla-put-ArrowheadType MleaderObj acArrowBoxBlank)
(vla-ZoomExtents AcadObject)
;;; 读取并显示当前的箭头类型
(princ "这个对象的箭头类型现在设定为:")
(princ (vla-get-ArrowheadType MleaderObj))(princ "\n")
(princ)
)简单修改例子,出现错误,
参数类型错误: VLA-OBJECT #<safearray...>; 出错后退出
这个点数组类型需要什么参数类型。
给你参考:
(defun c:mlte (/) (c:MLeaderToExistingtext))
(defun c:MLeaderToExistingtext (/)
(vl-load-com)
(cond
;;Select the text/mtext objects
((or
(null (setq ss1 (ssget ":S" '((0 . "text,mtext")))))
(= 0 (setq ssl (sslength ss1)))
)
nil ;nothing selected
)
(T
(setq
Textobj (vlax-ename->vla-object (ssname ss1 0))
ActSpace (if (= 0 (getvar "cvport"))
(vla-get-paperspace
(vla-get-activedocument (vlax-get-acad-object))
)
(vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object))
)
)
StartPt (getpoint "\nPick location for point of arrow head: ")
txt (vla-get-TextString Textobj)
TextPt
(vla-get-insertionpoint textobj)
TextPt
(vlax-variant-value TextPt)
TextPt
(vlax-safearray->list TextPt)
ptlist
(vlax-make-safearray
vlax-vbdouble
'(0 . 5)
)
ptlist
(vlax-safearray-fill ptlist (append StartPt TextPt))
MLObj
(vla-addmleader
ActSpace
ptlist
'LeaderIndex
)
)
(vla-put-textstring mlobj txt)
(vla-delete Textobj)
)
)
)
非常感谢!
页:
[1]