乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 302|回复: 14

层是否存在?

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 06:33:45 | 显示全部楼层 |阅读模式
嗨,希望你'大家好。这无疑是一个非常简单的问题,但我可以'似乎找不到我需要的所有答案;我试图检查一个层是否存在,如果存在,将其用于块插入,如果不存在't、 创建并使用它。
这是我的函数(我想是从我在这里找到的函数中修改过来的):
[代码首先,这个函数可以吗?其次,我该如何在程序中的其他sub中使用它
这是对部分主代码和i 35;039;m使用:
  1. 'Insert block..
  2.     Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
  3.     RMblock.Layer = RMlayer
有什么想法吗?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 06:49:11 | 显示全部楼层
一旦知道该层存在,如果希望在该层上插入块,则需要将其设置为活动层。或者,替代方法是在插入后将块更改为图层。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 10:16:39 | 显示全部楼层
你好,亚利桑那州,我当前的代码在插入块后确实改变了块的层,但有些东西'我的功能或其他方面出错了'我忽略了……有什么想法吗?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 10:19:55 | 显示全部楼层
你'请注意,如果存在RMlayer,请为其设置一个值 试试这个
  1. Private Function DoesLayerExist(ByRef LayerName As String) As Boolean
  2. LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
  3.       Dim objLayer As AcadLayer
  4.       For Each objLayer In ThisDrawing.Layers
  5.             If UCase(objLayer.Name) = UCase(LayerName) Then
  6.                   DoesLayerExist = True
  7.                   RMlayer = objLayer
  8.                   Exit Function
  9.             End If
  10.       Next objLayer
  11.       DoesLayerExist = False
  12.       RMlayer = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
  13.       RMlayer.Plottable = False
  14. End Function
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 10:52:03 | 显示全部楼层
嗨,埃里克,好的,我试过了,但还是什么都没有。如果我在函数后使用地板代码
  1. 'Insert block..
  2.     Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
  3.     RMblock.Layer = RMlayer
这一切是如何相互联系的?如何在插入块的代码中调用函数的返回?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 11:10:02 | 显示全部楼层
它不#039;t、  生锈+没有完全清醒+还没有咖啡=回答不好
  1. Private Function DoesLayerExist(ByRef LayerName As String) As acadlayer
  2. LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
  3.       Dim objLayer As AcadLayer
  4.       For Each objLayer In ThisDrawing.Layers
  5.             If UCase(objLayer.Name) = UCase(LayerName) Then
  6.                   DoesLayerExist = objLayer
  7.                   Exit Function
  8.             End If
  9.       Next objLayer
  10.       DoesLayerExist = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
  11.       RMlayer.Plottable = False
  12. End Function
  1. 'Insert block..
  2.     Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
  3.     RMblock.Layer = DoesLayerExist
仅供参考,still haven#039;虽然咖啡现在煮好了,但我还是把杯子装满了 哈文#039;有一段时间没有做任何VBA,don#039;我不能把它装上,这样我就可以#039;t检验,所以I'我只是堵住了百叶窗。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 11:36:00 | 显示全部楼层
你好,埃里克,希望你'咖啡很好。我累了
  1. RMblock.Layer = DoesLayerExist
但是它打断了,说'参数非可选&#039
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 11:44:45 | 显示全部楼层
人民币锁。Layer=DoesLayerExist(将传递给LayerName的字符串放在此处)
咖啡是gud
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 12:09:19 | 显示全部楼层
嗨,埃里克,I'我试过各种方法:
  1. RMblock.Layer = DoesLayerExist("LSC-REVISIONS_" & revnumCOMBO.Text)
但是这没有'我什么都不做
  1. RMblock.Layer = DoesLayerExist(LayerName)
但是它说变量没有定义(即使它在函数中)…
  1. RMblock.Layer = DoesLayerExist(RMLayer)
但是它说'ByRef参数类型不匹配&#039
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2010-10-11 14:25:41 | 显示全部楼层
试试看
  1. RMblock.Layer = DoesLayerExist(RMLayer.name)
  1. Private Function DoesLayerExist() As acadlayer
  2. dim LayerName as string
  3. LayerName = "LSC-REVISIONS_" & revnumCOMBO.Text
  4.       Dim objLayer As AcadLayer
  5.       For Each objLayer In ThisDrawing.Layers
  6.             If UCase(objLayer.Name) = UCase(LayerName) Then
  7.                   DoesLayerExist = objLayer
  8.                   Exit Function
  9.             End If
  10.       Next objLayer
  11.       DoesLayerExist = ThisDrawing.Layers.Add("LSC-REVISIONS_" & revnumCOMBO.Text)
  12.       RMlayer.Plottable = False
  13. End Function
  1. 'Insert block..
  2.     Set RMblock = ThisDrawing.PaperSpace.InsertBlock(BlockPoint, "P:\CAD_Blocks\PaperSpace Stuff\Program Blocks\Revision Marker.dwg", 1#, 1#, 1#, 0)
  3.     RMblock.Layer = DoesLayerExist
对不起,那'大约和我一样好'我不需要亲自动手就能做到。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 09:16 , Processed in 1.563585 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表