Bryco 发表于 2010-10-11 06:33:45

层是否存在?

嗨,希望你'大家好。这无疑是一个非常简单的问题,但我可以'似乎找不到我需要的所有答案;我试图检查一个层是否存在,如果存在,将其用于块插入,如果不存在'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
有什么想法吗?

Bryco 发表于 2010-10-11 06:49:11

一旦知道该层存在,如果希望在该层上插入块,则需要将其设置为活动层。或者,替代方法是在插入后将块更改为图层。

Bryco 发表于 2010-10-11 10:16:39

你好,亚利桑那州,我当前的代码在插入块后确实改变了块的层,但有些东西'我的功能或其他方面出错了'我忽略了……有什么想法吗?

Bryco 发表于 2010-10-11 10:19:55

你'请注意,如果存在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

Bryco 发表于 2010-10-11 10:52:03

嗨,埃里克,好的,我试过了,但还是什么都没有。如果我在函数后使用地板代码'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
这一切是如何相互联系的?如何在插入块的代码中调用函数的返回?

Bryco 发表于 2010-10-11 11:10:02

它不#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'我只是堵住了百叶窗。

Bryco 发表于 2010-10-11 11:36:00

你好,埃里克,希望你'咖啡很好。我累了RMblock.Layer = DoesLayerExist
但是它打断了,说'参数非可选&#039

Bryco 发表于 2010-10-11 11:44:45

人民币锁。Layer=DoesLayerExist(将传递给LayerName的字符串放在此处)
咖啡是gud

Bryco 发表于 2010-10-11 12:09:19

嗨,埃里克,I'我试过各种方法:
RMblock.Layer = DoesLayerExist("LSC-REVISIONS_" & revnumCOMBO.Text)
但是这没有'我什么都不做RMblock.Layer = DoesLayerExist(LayerName)
但是它说变量没有定义(即使它在函数中)…RMblock.Layer = DoesLayerExist(RMLayer)
但是它说'ByRef参数类型不匹配&#039

Bryco 发表于 2010-10-11 14:25:41

试试看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
查看完整版本: 层是否存在?