barakar42 发表于 2022-7-6 21:41:13

使用VBA关闭特定

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

PeterPan9720 发表于 2022-7-6 21:46:23

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

barakar42 发表于 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
 
如果结束
 
 
 
 

PeterPan9720 发表于 2022-7-6 21:51:27

嗨,barakar42,这是一个应该可以工作的代码
它进行了几个循环,首先围绕所有布局,其次是在不同于布局名称的层名称上。
范围是保持布局名称中指示的所有层处于活动状态。
试试看,它应该可以工作,它是在Autocad VBA环境中开发的。
我不懂你的代码,我会查清楚的。你在用Excel吗?

barakar42 发表于 2022-7-6 21:55:59

嗨,彼得,
 
我试过你的代码,它不是wokring。
 
它会在此行中显示所需的错误对象:
 
设置MyLayOuts=此图形。布局
 
 
此外,如果图层与布局名称和图层名称匹配,您的代码是否通过冻结图层来工作?

PeterPan9720 发表于 2022-7-6 22:00:08

 
在我的计算机上工作正常,请检查参考库,您使用的是哪个Autocad版本?

“……此外,如果图层与布局名称和图层名称匹配,您的代码是否通过冻结图层来工作?”
不,恰恰相反,如果我能很好地理解你的要求,与布局名称不同的所有层都将被冻结。

barakar42 发表于 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,我们可以看到需要哪些层

PeterPan9720 发表于 2022-7-6 22:03:36

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

barakar42 发表于 2022-7-6 22:08:35

嗨,皮特,
 
很抱歉没有提及这一点
清单将由工程师制作,并且只使用excel文档中的数字
我们做的每项工作都会有变化
前一段时间你帮我编写的代码运行得很好
 
我把代码放在模块10中,因为它将冻结/隐藏层
 
你之前给我的代码在模块4中

PeterPan9720 发表于 2022-7-6 22:10:40

你好
主要问题是在Excel VBA中复制并粘贴为Autocad VBA开发的代码,当然它无法工作,我将尝试解决您的问题。
VBA意味着Visual Basic for Application,因此每个应用程序都有自己的开发工具,当然有一些方法可以相互指向并交换数据,但您所做的完全是错误的复制和粘贴无论如何都不起作用。
那么你更喜欢使用excel作为主要工作场所?然后按下cad按钮。
 
我很快会给你答复。
 
页: [1] 2
查看完整版本: 使用VBA关闭特定