AutoCAD VBA判断指定图层是否存在,如不存在则新建.
请教各位,怎样在AutoCAD 里编写vab程序,判断指定图层(如:HAT)是否存在,如不存在则新建该图层(HAT).
请教这样的VBA程序是怎样写的。
Thanks.
本帖最后由 泉(Ango) 于 2012-11-11 20:49 编辑
还有,新建新建该图层(HAT)时,怎样定义其颜色及线型?
情况是这样的:
以下是我在网上找的程序,用于标注时自动切换到标注图层(如:Dim)。
但其前提是要有Dim图层存在的情况下,
现我想在程序中自带判断程序,判断是否有Dim 图层,如果没有,则自动生成Dim图层。有请你帮我补上这一程序。
程序如下:
Option Explicit
Dim oldLayer As AcadLayer
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
Debug.Print CommandName
Select Case CommandName
Case "DIMLINEAR", "DIMALIGNED", "DIMARC", "DIMORDINATE", "DIMRADIUS", "DIMJOGGED", "DIMDIAMETER", "DIMANGULAR", "QDIM", "DIMBASELINE", "DIMCONTINUE", "QLEADER"
Set oldLayer = ThisDrawing.ActiveLayer
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Dim")
End Select
End Sub
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
Select Case CommandName
Case "DIMLINEAR", "DIMALIGNED", "DIMARC", "DIMORDINATE", "DIMRADIUS", "DIMJOGGED", "DIMDIAMETER", "DIMANGULAR", "QDIM", "DIMBASELINE", "DIMCONTINUE", "QLEADER"
ThisDrawing.ActiveLayer = oldLayer
End Select
End Sub
以上代码为在没有其它插件的情况下, "Dim"已经存在的情况下 。
请问怎样在代码里判断并创建此图层??
谢谢!
找到对象模型(VBA界面随便输入一个CAD图元专属,譬如circle。按F1,转到帮助第一项)
application——document——layers——layer——你需要的设置项
父子关系,找子先找父,慢慢看吧,解说附带例子(example点进去)
Flyingdancing 发表于 2012-11-11 11:03 static/image/common/back.gif
找到对象模型(VBA界面随便输入一个CAD图元专属,譬如circle。按F1,转到帮助第一项)
application——doc ...
情况是这样的:
以下是我在网上找的程序,用于标注时自动切换到标注图层(如:Dim)。
但其前提是要有Dim图层存在的情况下,
现我想在程序中自带判断程序,判断是否有Dim 图层,如果没有,则自动生成Dim图层。有请你帮我补上这一程序。
程序如下:
Option Explicit
Dim oldLayer As AcadLayer
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
Debug.Print CommandName
Select Case CommandName
Case "DIMLINEAR", "DIMALIGNED", "DIMARC", "DIMORDINATE", "DIMRADIUS", "DIMJOGGED", "DIMDIAMETER", "DIMANGULAR", "QDIM", "DIMBASELINE", "DIMCONTINUE", "QLEADER"
Set oldLayer = ThisDrawing.ActiveLayer
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Dim")
End Select
End Sub
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
Select Case CommandName
Case "DIMLINEAR", "DIMALIGNED", "DIMARC", "DIMORDINATE", "DIMRADIUS", "DIMJOGGED", "DIMDIAMETER", "DIMANGULAR", "QDIM", "DIMBASELINE", "DIMCONTINUE", "QLEADER"
ThisDrawing.ActiveLayer = oldLayer
End Select
End Sub
以上代码为在没有其它插件的情况下, "Dim"已经存在的情况下 。
请问怎样在代码里判断并创建此图层??
谢谢!
泉(Ango) 发表于 2012-11-11 20:49 static/image/common/back.gif
情况是这样的:
以下是我在网上找的程序,用于标注时自动切换到标注图层(如:Dim)。
希望能有人更多人在这个贴子都都能学到东西。
所以恳请大师指点.
谢谢. 本帖最后由 Flyingdancing 于 2012-11-12 08:55 编辑
添加layer用layers的add
判断layer可以用layer的名字name
或者layers.item(i)——就是layer;的名字name
Set oldLayer = ThisDrawing.ActiveLayer
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Dim")改成On Error Resume Next
Set oldlayer = ThisDrawing.Layers.Item("Dim")
If Err Then
Err.Clear
Set oldlayer = ThisDrawing.Layers.Add("Dim")
End If
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Dim")或者Dim Mark As Integer
Mark = 0
For i = 0 To ThisDrawing.Layers.Count
If ThisDrawing.Layers(i).Name = "Dim" Then
Mark = 1
Exit For
End If
Next
If Mark = 1 Then
Set oldlayer = ThisDrawing.Layers.Add("dim")
Else
Set oldlayer = ThisDrawing.Layers.Item("Dim")
End If
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Dim") 谢谢 Flyingdancing 的回复。
还有,请问你的程序应该在我下载的程序的那里插入?
(你的程序放在哪个位置?) 写成自定义函数就知道在哪插入了吧。
http://www.mjtd.com/function/list.asp?id=283&ordertype=byletter mccad 发表于 2012-11-14 10:03 static/image/common/back.gif
写成自定义函数就知道在哪插入了吧。
http://www.mjtd.com/function/list.asp?id=283&ordertype=byletter
谢谢mccad的回复。
看了你帖子后还是不会把自动新建图层的程序结合到我下载的程序里。
请问你可以在我下载的程序里添加自动新建图层(Dim)的图层吗? 泉(Ango) 发表于 2012-11-14 21:44 static/image/common/back.gif
谢谢mccad的回复。
看了你帖子后还是不会把自动新建图层的程序结合到我下载的程序里。
请问你可以在我下 ...
晕死,这是个简单的问题。在你需要DIM图层之前建就行。或者你在你的程序开头写都行。
页:
[1]
2