lisp_beginner 发表于 2018-3-24 14:38:39

【已解决】用LISP如何创建多重引线?

本帖最后由 newer 于 2019-2-10 15:58 编辑

各位大师,用LISP如何创建多重引线?

marting 发表于 2018-3-24 15:54:01


;;
;; 返回3d点的variant
;;
;; 变量 3d点表-type (x y z)-
(defun gc:3dPointListToVariant (lst)
(vlax-make-variant
    (vlax-safearray-fill
      (vlax-make-safearray vlax-VbDouble (cons 0 (1- (* 3 (length lst)))))
      (apply 'append lst)
    )
)
)
(defun mkmleader (p2 / pts)
(if (not *lead) ;如果不存在创建mleader对象
    (progn (setq pts (list (trans p1 1 0) (trans p2 1 0))
               pts (gc:3dPointListToVariant pts)
         )
         (setq *lead
                  (vla-AddMLeader
                  (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))
                  ) ;获得模型空间对象
                  pts
                  0
                  )
         )
         (vla-put-textstring *lead label)
         (vla-rotate *lead
                     (vlax-3d-point (trans p2 1 0))
                     (angle (trans '(0 0 0) 1 0) (trans '(1 0 0) 1 0))
         )
    ) ;对象存在的情况下更新它
    (progn (setq pts (list (trans p1 1 0) (trans p2 1 0))
               pts (gc:3dPointListToVariant pts)
         )
         (vla-SetLeaderLineVertices *lead 0 pts) ;重定义顶点
         (vla-SetDogLegDirection
             *lead
             0
             (vlax-3D-point (trans (list (if (> (car p2) (car p1))
                                           1
                                           -1
                                       )
                                       0
                                       0
                                 )
                                 1
                                 0
                                 T
                            )
             )
         )
;相对于起点,根据鼠标位置设置dogleg方向
         (vla-update *lead)
    )
)
)



下面是具体应用上面函数结合grread写的动态拖动生成mleader的写法



**** Hidden Message *****

q3_2006 发表于 2018-3-24 16:48:00

动态要学习一下..谢谢分享

sh_h 发表于 2018-3-24 19:09:03

谢谢大师分享!!!

HLCAD 发表于 2018-3-24 23:29:31

感谢“marting”的作品!!!

haplau 发表于 2018-4-16 23:24:54

xuexixuexi

819534890 发表于 2018-4-17 09:20:26

回复学习学习

bonny123 发表于 2018-5-20 15:11:21

动态真有魅力

kqqt6236 发表于 2018-5-21 12:09:16

回复学习。

bonny123 发表于 2018-5-27 10:26:26

马丁版主
两个疑问:
1=如果多重引线的文字部分是一个属性块呢?如何获取引注里的集成的属性块的属性,并可进行编辑。
2=如果在布局里做多重引线,vla-get-modelspace改成vla-get-paperspace,却只能在一个布局里注释,到第二个,第三第四****就注释不了。测试时,不知道是CAD问题还是怎么回事。理想化是,自动判别当前的空间。

qyming1996 发表于 2018-7-3 21:31:46

学刁。。。。。。。

cable2004 发表于 2018-7-3 23:23:28

动态要学习一下..谢谢分享

scnjlwb 发表于 2018-7-4 08:30:16

多谢分享!

543628024 发表于 2018-7-15 16:02:48

动态要学习一下..谢谢分享

heqi110 发表于 2018-10-11 16:47:54

学习一下分享{:1_12:}{:1_12:}
页: [1] 2 3 4 5 6
查看完整版本: 【已解决】用LISP如何创建多重引线?