您不理解…..VBA编辑块时,仅编辑块表中的属性。它不影响块引用b)如果在使用命令后使用attsync,则所有不';t存在于块中,但附加到块引用的属性将从块引用中删除,并且块中但不在块引用中的所有属性将添加到块引用中
VBA没有处理代码的机制,因此,您必须创建自己的
我之前发布的代码实际上删除了块中的属性,但没有删除块引用。在VBA中没有这样做的方法,您可以执行以下操作之一:
1)运行程序后在命令行执行attsync<2)删除图形中所有出现的Fixings\u图表,并将其替换为新的块引用- Dim OldBlkRef As AcadBlockReference
- Dim NewBlkRef As AcadBlockReference
-
- For Each OldBlkRef In ThisDrawing.ModelSpace
- With OldBlkRef
- If UCase(.Name) = "FIXINGS_CHART" Then
- Set NewBlkRef = ThisDrawing.ModelSpace.InsertBlock(.InsertionPoint, .Name, .XScaleFactor, .YScaleFactor, .ZScaleFactor, .Rotation)
- NewBlkRef.layer = .layer
- NewBlkRef.Color = .Color
- NewBlkRef.Linetype = .Linetype
- NewBlkRef.LinetypeScale = .LinetypeScale
- NewBlkRef.Lineweight = .Lineweight
- NewBlkRef.Normal = .Normal
- NewBlkRef.Visible = .Visible
- ' transfer all of the attribute tag values over in this area
- ' if you want to keep the existing values in the attributes
- .Delete
- End If
- End With
- Next OldBlkRef
现在需要记住的重要一点是,如果使用代码替换现有块引用,则需要手动填充所有属性,除非在块中使用默认值设置属性值。 |