handasa 发表于 2022-7-5 16:02:59

博克赢得#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”,在那里做一些工作,保存并关闭它
 
 
如有任何建议,我们将不胜感激。。
谢谢

Lee Mac 发表于 2022-7-5 16:09:20

你的方块是动态的吗?

handasa 发表于 2022-7-5 16:15:23

是的
我现在用这个做这个工作
 
(COMMAND "-BEDIT" "" blockname)
(COMMAND "ZOOM" "A")
(COMMAND "_BCLOSE" "SAVE")
 

BIGAL 发表于 2022-7-5 16:25:29

只需将其添加到原始代码的最后一行
 

(vla-Regen acdoc acActiveViewport)

handasa 发表于 2022-7-5 16:28:48

我用这个
(vla-Regen acdoc acAllViewports)
也没有希望
 
这是两个比例相同的区块
https://s26.postimg.org/p5mdrt6zd/scadddd.png
 
只有在打开块编辑器并保存块后,它们才能恢复到正确的比例
 
https://s26.postimg.org/6ep1ve1sp/scale2.png

Lee Mac 发表于 2022-7-5 16:34:33

 
如果动态块参照具有不同于块定义的动态块参数值,则动态块参照将引用匿名块定义,其中包含与动态参数值集的预期显示匹配的几何图形。
 
因此,如果希望缩放每个动态块参照内的对象,则需要缩放动态块定义内的对象,以及与动态块相关的每个匿名块定义内的对象。

Tharwat 发表于 2022-7-5 16:43:29

.... 当缩放相关/连接的对象时,您可能会失去这些参数的控制/好处,除非该参数不是可见性。

Grrr 发表于 2022-7-5 16:49:49

 
我猜是因为参数对象不支持任何方法:
 
_$ (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方法不可用。

Tharwat 发表于 2022-7-5 16:51:32

 
例如,当对象被缩放得更大时,对象可能会超出参数的选择限制,因此这应该使对象脱离除可见性之外的任何参数的边界,因为最后一个参数不需要任何选择。
 
希望这足够清楚。

Grrr 发表于 2022-7-5 16:59:49

 
啊,现在我明白你的意思了(通过可视化如何手动从头开始创建参数)。
页: [1] 2
查看完整版本: 博克赢得#039;t在p之后更新