REMOVED 请记住,vla explode将在图形中保留原始块,而新对象将是副本。 啊,好的。这是有道理的。
试试这个。。。
(defun c:LongWall (/ blockname p1 p2)
;; Insert and array "LONG WALL" block (required)
;; Alan J. Thompson, 05.05.10
(vl-load-com)
(setq blockname "LONG WALL")
(if (and (or (tblsearch "block" blockname)
(findfile (strcat blockname ".dwg"))
(alert (strcat blockname " cannot be found!"))
)
(setq p1 (getpoint "\nSpecify block insertion point: "))
(setq p2 (getpoint p1 "\nSpecify block end point: "))
)
((lambda (block)
(foreach x (vlax-invoke block 'GetDynamicBlockProperties)
(and (eq (vla-get-propertyname x) "Distance")
(vla-put-value
x
((lambda (dist / num)
(cond
((>= 1. (/ dist 46.)) 46.)
((< 1. (setq num (/ dist 46.))) (* 46. (1+ (fix num))))
(46.)
)
)
(distance p1 p2)
)
)
)
)
(vl-catch-all-apply (function (lambda () (vla-explode block) (vla-delete block))))
)
(vla-insertblock
(if
(or (eq acmodelspace
(vla-get-activespace
(cond (*AcadDoc*)
((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
)
)
)
(eq :vlax-true (vla-get-mspace *AcadDoc*))
)
(vla-get-modelspace *AcadDoc*)
(vla-get-paperspace *AcadDoc*)
)
(vlax-3d-point (trans p1 1 0))
blockname
1.
1.
1.
(angle (trans p1 1 0) (trans p2 1 0))
)
)
)
(princ)
) 我并没有真正遵循这个思路,但当修改动态块(在AutoCAD中)时,它们会得到匿名名称。这会对您使用代码所做的任何事情产生任何影响吗?
与通过动态夹点进行更改时相同。 刚记起来,我忘了在角度上解释非WCS;以上更新。 你就是那个男人!!这正是我想要的。谢谢
不客气。很乐意帮忙。
支票在邮寄吗眨眼: 肯定
页:
1
[2]