harilalmn 发表于 2022-7-6 22:50:06

VBA - 更新对

我创建了一个 vba 宏来编辑 Blocks 中的属性。我尝试了很多次,但它并没有更新绘图中的属性,除非我手动做一个 BATTMAN... 有
什么问题?

SEANT 发表于 2022-7-6 23:00:17

我认为这种情况通常可以通过 ThisDrawing.SendCommand 调用 ATTSYNC 来解决。尽管使用 SendCommand 可能令人反感,但如果在例程结束时进行调用,它的效果相当好。

另一个更费力的选择是询问所有属性,存储信息,删除然后从头开始重新创建所有内容。这应该允许 .Update 方法的预期性能。

BIGAL 发表于 2022-7-6 23:17:37

也许这会有所帮助


Set SS = ThisDrawing.SelectionSets.Add("issued")SS.Select acSelectionSetAll, , , FilterDXFCode, FilterDXFValFor Cntr = 0 To SS.Count - 1attribs = SS.Item(Cntr).GetAttributes                     attribs(0).TextString = "ISSUED FOR CONSTRUCTION"       attribs(3).TextString = "0"            attribs(0).Update       attribs(3).Update       Next Cntr

harilalmn 发表于 2022-7-6 23:24:26

BIGAL 和 SEANT,
非常感谢您的回复...
关于 FilterDXFCode,我遇到了一些错误。但是,ATTSYNC 为我工作。谢谢你们俩...

BIGAL 发表于 2022-7-6 23:33:13

是的,把你需要的东西放在外面


Dim FilterDXFCode(1) As IntegerDim FilterDXFVal(1) As VariantDim attribs As VariantDim BLOCK_NAME As StringOn Error Resume NextFilterDXFCode(0) = 0FilterDXFVal(0) = "INSERT"FilterDXFCode(1) = 2FilterDXFVal(1) = "DA1DRTXT"BLOCK_NAME = "DA1DRTXT"

harilalmn 发表于 2022-7-6 23:46:53

谢谢....!!

SEANT 发表于 2022-7-6 23:56:10

这个线程促使我回顾一些旧的 VBA 代码,发现我错过了 Attribute.Update 方法。代码很旧,但(大约 AutoCAD 2000)可能还有其他问题。

当我放弃任何新的 VBA 编码时,我现在发现它太糟糕了。
页: [1]
查看完整版本: VBA - 更新对