乐筑天下

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

[编程交流] 使用VBA关闭特定

[复制链接]

2

主题

19

帖子

17

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:41:13 | 显示全部楼层 |阅读模式
你好
 
我正在尝试编写一个小程序,使用VBA关闭选定层。在我们的图纸中,有多个布局选项卡,所有选项卡都称为唯一名称,例如cxxx-e-000、cxxxx-e-001、cxxxx-e-002等。
 
这些名称也对应于其指定的图层名称,因此图纸cxxxx-e-000位于一个名为cxxxx-e-000的图层上
 
我有一个需要的图纸列表,需要关闭所有其他图层。
 
因此,如果我们需要图纸00000 1005,我们需要关闭图层00200304和所有其他图层
 
最好的方法是关闭所有层,然后打开选择层,还是只关闭未需要的层?
 
亲切的问候
克里斯
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 21:46:23 | 显示全部楼层
你好
问题:
1) 例如,有需要放置在图层0上的对象?或与布局名称?中指示的名称无关的任何其他层?。
我问你这个问题是因为“活动层”不能被冻结。
2) 所选图层上的对象是否相似?都是积木?都是直线还是直线?,都是文本?。
3) 要关闭的对象或对应层上的对象位于PaperSpace或ModelSpace上?
 
关闭与布局名称中指示的图层不同的图层上的所有对象可能会很有用。
回复

使用道具 举报

2

主题

19

帖子

17

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:49:00 | 显示全部楼层
1.0层上不需要任何对象
2、对象主要是线条和文字
3.所有对象都将位于模型空间中
 
我已经想出了一些可能有用的代码,但需要你的意见
 
 
对于a=2到53'的总行数
set LAYERBJ=(“B”和a)”将图层设置为第一个图形
 
如果(“E”&a)=true,则“E”列包含true或false
设置LAYERBJ=(“B”和a+1)
下一个a
否则,如果(“E”和a)=false,则
layerobj。layeron=假
设置LAYERBJ=(“B”和a+1)
下一个a
 
如果结束
 
 
 
 
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 21:51:27 | 显示全部楼层
嗨,barakar42,这是一个应该可以工作的代码
它进行了几个循环,首先围绕所有布局,其次是在不同于布局名称的层名称上。
范围是保持布局名称中指示的所有层处于活动状态。
试试看,它应该可以工作,它是在Autocad VBA环境中开发的。
我不懂你的代码,我会查清楚的。你在用Excel吗?
回复

使用道具 举报

2

主题

19

帖子

17

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:55:59 | 显示全部楼层
嗨,彼得,
 
我试过你的代码,它不是wokring。
 
它会在此行中显示所需的错误对象:
 
设置MyLayOuts=此图形。布局
 
 
此外,如果图层与布局名称和图层名称匹配,您的代码是否通过冻结图层来工作?
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 22:00:08 | 显示全部楼层
 
在我的计算机上工作正常,请检查参考库,您使用的是哪个Autocad版本?
224114xu3ephhcpz4b16ze.png
“……此外,如果图层与布局名称和图层名称匹配,您的代码是否通过冻结图层来工作?”
不,恰恰相反,如果我能很好地理解你的要求,与布局名称不同的所有层都将被冻结。
回复

使用道具 举报

2

主题

19

帖子

17

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:01:07 | 显示全部楼层
我已经在参考列表中选择了AutoCAD 2019类型库
 
所有布局和图层名称都将相同
 
布局图层
cxxxx-e-000 cxxxx-e-000
cxxxx-e-001 cxxxx-e-001
cxxxx-e-002 cxxxx-e-002
cxxxx-e-003 cxxxx-e-003
等等等等
 
最好要么全部关闭,要么只打开所需的层(true)
 

 
仅关闭不需要的层(false)
 
因此,使用柱e,我们可以看到需要哪些层
224116ay5dutidu2zidueh.png
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 22:03:36 | 显示全部楼层
您好,barakar42,
您从未告诉过我们excel,所以您有一个要在excel中打开和关闭的图层列表,您想使用它来打开和关闭图形模型空间中的图层吗?
清单将由您自己制作?一切都会一样吗?我是说图层名在同一位置?在同一位置是真还是假?
在任何情况下,最好是在Autocad VBA内操作,指向Excel以获取图层列表,并选择true或false选项。
在我给你的时间码中,它起作用了?或者不是。
我会尝试修改它以符合您的要求,请给我发送excel文件。
我前一段时间已经向您发送了通过autocad VBA访问excel文件的方法,它可以工作吗?
回复

使用道具 举报

2

主题

19

帖子

17

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:08:35 | 显示全部楼层
嗨,皮特,
 
很抱歉没有提及这一点
清单将由工程师制作,并且只使用excel文档中的数字
我们做的每项工作都会有变化
前一段时间你帮我编写的代码运行得很好
 
我把代码放在模块10中,因为它将冻结/隐藏层
 
你之前给我的代码在模块4中
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 22:10:40 | 显示全部楼层
你好
主要问题是在Excel VBA中复制并粘贴为Autocad VBA开发的代码,当然它无法工作,我将尝试解决您的问题。
VBA意味着Visual Basic for Application,因此每个应用程序都有自己的开发工具,当然有一些方法可以相互指向并交换数据,但您所做的完全是错误的复制和粘贴无论如何都不起作用。
那么你更喜欢使用excel作为主要工作场所?然后按下cad按钮。
 
我很快会给你答复。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 14:38 , Processed in 0.328375 second(s), 74 queries .

© 2020-2025 乐筑天下

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