如何用entmake函数创建多重引线?
(entmake (list '(0 . "MULTILEADER") '(100 . "AcDbEntity")'(100 . "AcDbMLeader")
'(300 . "CONTEXT_DATA{") '(10 4.0 2.0 0.0)
'(302 . "LEADER{") '(10 2.0 2.0 0.0)
'(304 . "LEADER_LINE{") '(10 0.0 0.0 0.0) '(305 . "}")
'(304 . "LEADER_LINE{") '(10 2.0 0.0 0.0) '(305 . "}")
'(303 . "}") '(301 . "}")))
先手动创建了一个多重引线,查DXF组码,试图抠出关键元素,失败,不知道有没有人会,还有用vla-addMleader创建的例子么》
放弃吧 还不如改当前设定样式,用command调用来的方便,虽然速度不如entmake 。多重结构的dxf码太麻烦 与标注一样,本质是块,不好做 liuhe 发表于 2023-4-20 17:22
放弃吧 还不如改当前设定样式,用command调用来的方便,虽然速度不如entmake 。多重结构的dxf码太麻 ...
;P哈哈,理解理解~~~ 本帖最后由 自贡黄明儒 于 2023-4-20 17:39 编辑
晓东上有 ,一般vla
(defun c:tt (/ p1 p2 mLeader p)
(if (and (setq p1 (getpoint "\nDim Point: "))
(setq p2 (getpoint p1 "\nLocation Point: "))
)
(progn
(setq mLeader (invoke (fy:acspace) 'addmleader (append p1 p2) 0))
(while (setq p (getpoint p2 "\nNew Dim Point: "))
(invoke mLeader
'AddLeaderline
0
(append p p2)
)
)
)
)
(princ)
)
(defun c:tt (/ lst p v mLeader)
(fy:begin)
(princ "\n选择圆....")
(if (and (ssget '((0 . "circle")))
(setq lst (fy:cset->objs))
(setq lst (mapcar '(lambda (x)
(vlax-get x 'center)
)
lst
)
lst (vl-sort lst
'(lambda (a b)
(> (car a) (car b))
)
)
)
(setq p (getpoint (car lst) "\nPosition: "))
)
(progn
(setq v (mapcar '- p (car lst))
mLeader (invoke (fy:acspace) 'addmleader (append (car lst)p ) 0)
)
(mapcar '(lambda (x)
(invoke mLeader
'AddLeaderLine
0
(append x (mapcar '+ x v))
)
)
(cdr lst)
)
)
)
(fy:end)
(princ)
)
自贡黄明儒 发表于 2023-4-20 17:37
晓东上有 ,一般vla
感谢感谢,学习一下。 http://bbs.mjtd.com/thread-186442-1-1.html 自贡黄明儒 发表于 2023-4-20 17:37
晓东上有 ,一般vla
这个里面的(fy:acspace)什么什么函数呢
页:
[1]