博克赢得#039;t在p之后更新
大家好我有一个块,我想通过使用
(setq acdoc(vla-get-ActiveDocument (vlax-get-acad-object))
blocks (vla-get-Blocks acdoc))
(setq itm (car (entsel)))
(setq name (vla-get-Name (vlax-ename->vla-object itm)))
(setq def (vla-item blocks name))
(setq base (vla-get-Origin def))
(vlax-for o def (vla-ScaleEntity o base 0.5))
例行程序仅处理选定的块。。。块的其他实例不会在绘图单元中更新。我打开块编辑器“bedit”,在那里做一些工作,保存并关闭它
如有任何建议,我们将不胜感激。。
谢谢 你的方块是动态的吗? 是的
我现在用这个做这个工作
(COMMAND "-BEDIT" "" blockname)
(COMMAND "ZOOM" "A")
(COMMAND "_BCLOSE" "SAVE")
只需将其添加到原始代码的最后一行
(vla-Regen acdoc acActiveViewport)
我用这个
(vla-Regen acdoc acAllViewports)
也没有希望
这是两个比例相同的区块
https://s26.postimg.org/p5mdrt6zd/scadddd.png
只有在打开块编辑器并保存块后,它们才能恢复到正确的比例
https://s26.postimg.org/6ep1ve1sp/scale2.png
如果动态块参照具有不同于块定义的动态块参数值,则动态块参照将引用匿名块定义,其中包含与动态参数值集的预期显示匹配的几何图形。
因此,如果希望缩放每个动态块参照内的对象,则需要缩放动态块定义内的对象,以及与动态块相关的每个匿名块定义内的对象。 .... 当缩放相关/连接的对象时,您可能会失去这些参数的控制/好处,除非该参数不是可见性。
我猜是因为参数对象不支持任何方法:
_$ (vlax-dump-object (car (vlax-invoke (vlax-ename->vla-object (car (entsel "\nPick dynamic block: "))) 'GetDynamicBlockProperties)) t)
; IAcadDynamicBlockReferenceProperty: AutoCAD Dynamic Block Property Interface
; Property values:
; AllowedValues (RO) = nil
; Description (RO) = ""
; PropertyName (RO) = "blabla"
; ReadOnly (RO) = 0
; show (RO) = -1
; UnitsType (RO) = 2
; Value = 60.0
; No methods
因此,ScaleEntity方法不可用。
例如,当对象被缩放得更大时,对象可能会超出参数的选择限制,因此这应该使对象脱离除可见性之外的任何参数的边界,因为最后一个参数不需要任何选择。
希望这足够清楚。
啊,现在我明白你的意思了(通过可视化如何手动从头开始创建参数)。
页:
[1]
2