首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用VBA在CAD绘图中更改颜色

如何使用VBA在CAD绘图中更改颜色
EN

Stack Overflow用户
提问于 2017-11-19 20:49:09
回答 2查看 1.7K关注 0票数 0

我有一张AutoCAD图,是电力系统的单线图。我想使用VBA来改变它的颜色。怎么办?对不起,我的英语水平:)。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-04-22 02:43:51

此示例将绘图中的所有线条都显示为红色:

代码语言:javascript
复制
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”的新层之前),则:

代码语言:javascript
复制
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

如果要将层更改为所有对象:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47377037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档