lionguns 发表于 2011-7-8 21:37:55

如何用ActiveX绘制引线

想通过pt1 pt2 pt3 三点画一条引线
结果最后一步NULL那里出错,
要如何才能在当前的空间(布局模型都可以)中画出一条引线呢?
望高手指点一下.
(setq pt1'(0.0 1.0 2.0) pt2 '(3.0 4.0 5.0) pt3 '(6.0 7.0 8.0))
(setq safarr (vlax-make-safearray vlax-vbDouble   (cons '0 8)))
(setq safarr2 (vlax-safearray-fill safarr '(0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0)))
(setq varptarr(vlax-make-variant safarr2))
(setq    AcadObject   (vlax-get-acad-object)
       AcadDocument (vla-get-ActiveDocument AcadObject)
       curSpace       (vla-get-ModelSpace AcadDocument)
)

(vla-AddLeader   curSpace   varptarrnull acSplineWithArrow);;;这里不行了

yarp 发表于 2011-7-8 22:47:42

我从我写的一个类似的东西摘下来的,仅供参考。

(setq LeaderBlock
        (vla-add (vla-get-blocks *Document*)
               (vlex-DblList->VariantArray '(0.0 0.0 0.0))
               (strcat *DrainAppId* "Leader")
               )
        )
(vla-addLine LeaderBlock (vlex-DblList->VariantArray '(0.0 0.0 0.0))
    (vlex-DblList->VariantArray '(0.0 7.0 0.0)))
(vla-addAttribute LeaderBlock 3.0 acAttributeModePreset ""
                  (vlex-DblList->VariantArray '(0.57 0.5 0.0))
                     "Number" "")
(vla-addAttribute LeaderBlock 3.0 acAttributeModePreset ""
                  (vlex-DblList->VariantArray '(0.57 4.5 0.0))
                     "Length" "")
)
   
(setq endPoint (drain:getEndPoint drain))
      (setq tagPoint (list (car endPoint) (+ 10 (cadr endPoint)) (caddr endPoint)))
      (setq pointList (vlex-DblList->VariantArray (append endPoint tagPoint)))
      (setq tagPoint (vlex-DblList->VariantArray tagPoint))
      (setq Annotation (vla-InsertBlock *ModelSpace* tagPoint (strcat *DrainAppId* "Leader") 1.0 1.0 1.0 0.0))
      (setq leader (vla-addLeader *ModelSpace* pointList Annotation acSplineNoArrow))
页: [1]
查看完整版本: 如何用ActiveX绘制引线