这个层存在吗?
嗨,希望你们都好..
这无疑是一个非常简单的问题,但我似乎无法找到我需要的所有答案..
我试图检查一个层是否存在,如果存在,使用它进行块插入,如果不存在,创建它并使用它..下面是我的函数(我想是从这里找到的一个函数修改而来的):
Private Function DoesLayerExist(ByRef LayerName As String) As Boolean
LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
Dim objLayer As AcadLayer
For Each objLayer In ThisDrawing.Layers
If UCase(objLayer.Name) = UCase(LayerName) Then
DoesLayerExist = True
Exit Function
End If
Next objLayer
DoesLayerExist = False
RMlayer = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
RMlayer.Plottable = False
End Function
首先,这个功能可以吗?其次,我如何在程序中的其他subs中使用它?
这是部分主要代码的摘录,我正在使用:
'Insert block..
Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
RMblock.Layer = RMlayer
有什么想法吗?
**** Hidden Message ***** 一旦你知道该层存在,你需要设置它为激活层,如果你想你的块插入该层。或者替代方案是在插入后将块改变到层。 嗨,亚利桑那州,
我当前的代码在插入后确实改变了块的层,但是我的功能有问题或者我忽略了什么...
有什么想法吗? 请注意,如果该图层存在,请为 RMlayer 设置一个值。 试试这个。
Private Function DoesLayerExist(ByRef LayerName As String) As Boolean
LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
Dim objLayer As AcadLayer
For Each objLayer In ThisDrawing.Layers
If UCase(objLayer.Name) = UCase(LayerName) Then
DoesLayerExist = True
RMlayer = objLayer
Exit Function
End If
Next objLayer
DoesLayerExist = False
RMlayer = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
RMlayer.Plottable = False
End Function
嗨,埃里克,
好的。我试过了,但还是一无所获。如果我在函数后使用floowing代码….
'Insert block..
Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
RMblock.Layer = RMlayer
…这一切是如何相互联系的?如何在插入块的代码中调用函数的返回? 它没有。拉斯蒂+没有完全清醒+还没有咖啡=回答不好
试试
Private Function DoesLayerExist(ByRef LayerName As String) As acadlayer
LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
Dim objLayer As AcadLayer
For Each objLayer In ThisDrawing.Layers
If UCase(objLayer.Name) = UCase(LayerName) Then
DoesLayerExist = objLayer
Exit Function
End If
Next objLayer
DoesLayerExist = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
RMlayer.Plottable = False
End Function
'Insert block..
Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
RMblock.Layer = DoesLayerExist
仅供参考,尽管咖啡现在已经煮好了,但我的杯子还没有装满。有一段时间没有做任何VBA,也没有加载它,所以我无法测试,所以我只是瞎插。 嗨埃里克,
希望你的咖啡很好.
我累了把...
RMblock.Layer = DoesLayerExist
...但它打破了并说“参数不是可选的”
人民币锁。Layer=DoesLayerExist(将传递给LayerName的字符串放在这里)
咖啡是古德咖啡 嗨,Eric,我尝试了各种方法:
RMblock.Layer = DoesLayerExist(RMLayer.name)
or
Private Function DoesLayerExist() As acadlayer
dim LayerName as string
LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
Dim objLayer As AcadLayer
For Each objLayer In ThisDrawing.Layers
If UCase(objLayer.Name) = UCase(LayerName) Then
DoesLayerExist = objLayer
Exit Function
End If
Next objLayer
DoesLayerExist = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
RMlayer.Plottable = False
End Function
'Insert block..
Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
RMblock.Layer = DoesLayerExist
抱歉,这和我在没有第一手资料的情况下所能做的一样好。 RMblock。layer = DoesLayerExist(RM layer . name)
DoesLayerExist需要返回一个字符串(Layername而不是acadlayer本身)
页:
[1]
2