我有一张AutoCAD图,是电力系统的单线图。我想使用VBA来改变它的颜色。怎么办?对不起,我的英语水平:)。谢谢!
发布于 2019-04-22 02:43:51
此示例将绘图中的所有线条都显示为红色:
Sub color_all_lines()
Dim c As Long
Dim lineObj As AcadLine
For c = 0 To ThisDrawing.ModelSpace.Count - 1
If ThisDrawing.ModelSpace.Item(c).ObjectName = "AcDbLine" Then
Set lineObj = ThisDrawing.ModelSpace.Item(c)
lineObj.color = acRed
End If
Next c
End Sub如果您想要更改层(在必须创建名为“layerRED”的新层之前),则:
Sub change_layer()
Dim c As Long
Dim lineObj As AcadLine
For c = 0 To ThisDrawing.ModelSpace.Count - 1
If ThisDrawing.ModelSpace.Item(c).ObjectName = "AcDbLine" Then
Set lineObj = ThisDrawing.ModelSpace.Item(c)
lineObj.layer = "layerRED"
End If
Next c
End Sub如果要将层更改为所有对象:
Sub color_all()
Dim c As Long
Dim lineObj As AcadLine
For c = 0 To ThisDrawing.ModelSpace.Count - 1
Set lineObj = ThisDrawing.ModelSpace.Item(c)
Next c
End Sub发布于 2017-11-19 21:29:38
这里有很多可用的信息。您可能需要研究AxDbDocument。
以下是直接从this站点获取的信息:
如果你在这个论坛上搜索"AxDbDocument“或"DBX",你可能会找到相当多关于使用ObjectDBX在AutoCAD中打开"side”绘图的主题的讨论(即不在AutoCAD编辑器中打开的情况下将绘图读取到AutoCAD进程的内存中)。
关键的一步是创建一个AxDbDocument并将*.dwg文件读入其中。然后,可以使用与VBA的ThisDrawing对象相同的方式访问图形文件中的数据。
下面是一个非常简单的代码片段(我使用Acad2015,因此版本代码(xxxxx.20):
Option Explicit Public Sub DbxTest() Dim dwgFiles(0 To 1) As String dwgFiles(0) = "C:\Temp\DbxTest01.dwg“dwgFiles(1) = "C:\Temp\DbxTest02.dwg”Dim doc As AXDBLib.AxDbDocument Dim i As Integer For I=0 To 1 Set doc = ThisDrawing.Application.GetInterfaceObject("ObjectDBX.AxDbDocument.20") doc.Open dwgFiles(i) DoWorkWithDwg doc Next End Sub私有子DoWorkWithDwg(dwg As AXDBLib.AxDbDocument) ''MsgBox dwg.Name Dim count As Integer Dim As AcadEntity As AcadEntity For Each ent In dwg.ModelSpace ''MsgBox ent.ObjectName count = count +1 Next MsgBox "Drawing:“& dwg.Name & vbCrLf &”End Sub:“& count End Sub
https://stackoverflow.com/questions/47377037
复制相似问题