层是否存在?
嗨,希望你';大家好。这无疑是一个非常简单的问题,但我可以';似乎找不到我需要的所有答案;我试图检查一个层是否存在,如果存在,将其用于块插入,如果不存在';t、 创建并使用它。这是我的函数(我想是从我在这里找到的函数中修改过来的):
[代码首先,这个函数可以吗?其次,我该如何在程序中的其他sub中使用它
这是对部分主代码和i 35;039;m使用:
'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
有什么想法吗?
一旦知道该层存在,如果希望在该层上插入块,则需要将其设置为活动层。或者,替代方法是在插入后将块更改为图层。 你好,亚利桑那州,我当前的代码在插入块后确实改变了块的层,但有些东西';我的功能或其他方面出错了';我忽略了……有什么想法吗? 你';请注意,如果存在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 嗨,埃里克,好的,我试过了,但还是什么都没有。如果我在函数后使用地板代码'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
这一切是如何相互联系的?如何在插入块的代码中调用函数的返回? 它不#039;t、  ;生锈+没有完全清醒+还没有咖啡=回答不好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 仅供参考,still haven#039;虽然咖啡现在煮好了,但我还是把杯子装满了 ;哈文#039;有一段时间没有做任何VBA,don#039;我不能把它装上,这样我就可以#039;t检验,所以I';我只是堵住了百叶窗。 你好,埃里克,希望你';咖啡很好。我累了RMblock.Layer = DoesLayerExist
但是它打断了,说';参数非可选'
人民币锁。Layer=DoesLayerExist(将传递给LayerName的字符串放在此处)
咖啡是gud 嗨,埃里克,I';我试过各种方法:
RMblock.Layer = DoesLayerExist("LSC-REVISIONS_" & revnumCOMBO.Text)
但是这没有';我什么都不做RMblock.Layer = DoesLayerExist(LayerName)
但是它说变量没有定义(即使它在函数中)…RMblock.Layer = DoesLayerExist(RMLayer)
但是它说';ByRef参数类型不匹配'
试试看RMblock.Layer = DoesLayerExist(RMLayer.name)
或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 对不起,那';大约和我一样好';我不需要亲自动手就能做到。
页:
[1]
2