xgr 发表于 2014-10-8 18:23:43

vla-AddMLeader函数用法

Lisp在创建多重引线时,有个函数vla-AddMLeader,但不知道怎么用,没有函数说明吗, 求助大家,谢谢!

vectra 发表于 2014-10-8 21:23:14

AutoCAD帮助 ->开发人员文档 -> ActiveX and VBA Reference ->Methods -> AddMLeader Method

xgr 发表于 2014-10-9 10:50:13

本帖最后由 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...>; 出错后退出
这个点数组类型需要什么参数类型。

smartstar 发表于 2014-10-9 11:36:53

给你参考:
(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)

    )
)
)

xgr 发表于 2014-10-9 11:41:32

非常感谢!
页: [1]
查看完整版本: vla-AddMLeader函数用法