如果图层存在,则:
我正在开发一个模块,但我需要编写一个Errorhandler来处理与重复层相关的重复记录错误消息。不幸的是,经过多次尝试,我无法编写足够的代码来检查图层集合以查看图层是否已经存在
有人碰巧有我可以借鉴的例子吗?
谢谢
Mark
**** Hidden Message ***** 你刚才有什么代码?
我不知道你说的
这是直接来自acad帮助的什么意思
Private Sub addlayer()
' This example creates a new layer called "New_Layer"
Dim layerObj As AcadLayer
' Add the layer to the layers collection
Set layerObj = ThisDrawing.Layers.Add("New_Layer")
' Make the new layer the active layer for the drawing
ThisDrawing.ActiveLayer = layerObj
' Display the status of the new layer
MsgBox layerObj.Name & " has been added." & vbCrLf & _
"LayerOn Status: " & layerObj.LayerOn & vbCrLf & _
"Freeze Status: " & layerObj.Freeze & vbCrLf & _
"Lock Status: " & layerObj.Lock & vbCrLf & _
"Color: " & layerObj.color, , "Add Example"
End Sub
你可以随意运行它,它不会生成错误消息 嘿,Hendie
实际上,我没有任何与我的请求相关的内容可以发布。
如果您愿意,我可以告诉您我正在做什么,或者这是否会有帮助?
我希望有一段非常通用的代码,它将删除一个已经存在于我的新图层集合标记中的图层
意思是如果它存在于绘图中,不要尝试重新创建它? 是的CmdrDuh
这正是我正在寻找的
如果层存在,那么不要尝试重新创建它
我需要完全
的代码标记 让我看看我有什么 像这样的
Option Explicit
Public Sub test()
Dim bResult As Boolean
bResult = DoesLayerExist("XXX_001")
If bResult Then
MsgBox "Layer XXX_001 exists"
Else
MsgBox "Not Today Mark"
End If
End Sub
Public Function DoesLayerExist(sLayer As String) As Boolean
Dim oLayers As AcadLayers
Dim oLayer As AcadLayer
On Error GoTo Skippy
Set oLayers = ThisDrawing.Layers
Set oLayer = oLayers.Item(sLayer)
DoesLayerExist = True
Exit Function
Skippy:
End Function
嘿,Kerry
我可以用你上面的代码来指定多个层吗?
我的绘图中大约有8-10个层,我希望VBA检查它们是否已经存在。
谢谢
马克 谢谢Kerry,
谢谢CMD
对不起,我最近几次没有登录,所以我是以访客的身份发帖的。 这可能会给你一些想法,
Public Sub test_01()
Dim bResult As Boolean
Dim svLayerList(0 To 9) As String
Dim cnt As Integer
Dim sLayName As String
svLayerList(0) = "Layer0"
svLayerList(1) = "0"
svLayerList(2) = "Layer2"
svLayerList(3) = "NoWay"
svLayerList(4) = "Layer4"
svLayerList(5) = "Layer5"
svLayerList(6) = "Layer6"
svLayerList(7) = "Layer7"
svLayerList(8) = "Layer8"
svLayerList(9) = "Bogus"
For cnt = 0 To UBound(svLayerList)
sLayName = svLayerList(cnt)
bResult = DoesLayerExist(sLayName)
If bResult Then
MsgBox "Layer : " & sLayName & vbCrLf & " exists"
Else
MsgBox "Layer : " & sLayName & vbCrLf & " does NOT exist"
End If
Next
End Sub
Public Function DoesLayerExist(sLayer As String) As Boolean
Dim oLayers As AcadLayers
Dim oLayer As AcadLayer
On Error Resume Next
Set oLayers = ThisDrawing.Layers
Set oLayer = oLayers.Item(sLayer)
DoesLayerExist = (Err.Number = 0)
Err.Clear
End Function
页:
[1]
2