大家好,我是讯享网,大家多多关注。
通用工具ExcelVBA.EDAP. 38将多个图档整合为一个,在实际应用中暴露了一个问题。当某些层被锁定时,它们在被粘贴到完成的文件后不能被移动。一方面,无法获得每行10个绘图的预期数组;另一方面,锁定的内容总是停留在左上角的框架内,这两种错误都是不能接受的。因此增加了批量解锁指定文件夹中CAD文件所有图层的功能,并相应安排图层的批量锁定。
PS:C04-多图批量合并也做了相应更新。合并前默认执行解锁操作,无需额外操作C02按钮。
应读者要求,分享代码如下
–
sub dingmurch 01 su _ 8911 acad _ acad 2019 _ 02 layer lock()
‘[b对应功能]
‘[C调试时间]
‘[d简要说明]
‘0变量定义
将ttNo显示为整数
dim rate为整数
将ACADDWG_obj标注为AcadEntity
将Mylayer调暗为acadlayer
‘1变量初始化
rateratE = 1
ttNo = 0
”2阅读cad文件列表
Dingmurch02FU_8001_RTbySelect
Dingmurch02FU _ 8013 _文件列表0,1,0
”每个cad文件3个循环操作。
‘3.1对象初始化
出错时继续下一步
Set acadApp = GetObject(,& # 34;autocad.application & # 34)
如果出错,那么
呃。清楚的
set acadApp = CreateObject(& # 34;autocad.application & # 34)
如果…就会结束
acadApp。Visible = True & # 39假& # 39;
‘3.2未决图纸的计数
对于W = 0至UBound(dingmurch 10 Pb _ 04 arr _ file arr)-1
if Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。dwg & # 34或者Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。DWG & # 34;那么ttNo = ttNo + 1
然后
MsgBox ttNo & & # 34要处理的文件& # 34;
‘处理
对于W = 0至UBound(dingmurch 10 Pb _ 04 arr _ file arr)-1
if(Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。dwg & # 34或者Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。DWG & # 34;)然后
‘3.1打开对象处理
设置acaddwgnow = acadApp。documents . Open(dingmurch 10 Pb _ 06RT _ NAME & # 34;\”& Dingmurch10PB_04ARR_FILEARR(W))
对于学院的每一层。层
我的律师。Lock = True & # 39这里的True是锁定的,false是解锁的。
然后
acaddwgnow。救援
acaddwgnow。关闭
‘3.2显示进度
dingmurch 02 fu _ 1002 _ process rate rate,0,ttNo,0,0,100,0,100,0,100,1,1,& # 34;ACAD2019 _ 02Layerlock & # 34& Dingmurch10PB_04ARR_FILEARR(W)
多项活动
rateratE = rateratE
如果…就会结束
然后
MsgBox & # 34操作完成!”
设置ACADDWG_obj = Nothing
acadApp。放弃
设置acadApp = Nothing
卸载微信03FM_01
末端接头
–
sub dingmurch 01 su _ 8911 acad _ acad 2019 _ 04 dwgtoone()
‘[b对应功能]
‘[C调试时间]
‘[d简要说明]
‘0变量定义
将ttNo显示为整数
dim rate为整数
将Mylayer调暗为acadlayer
将ACADDWG_obj标注为AcadEntity
将浮点(0到2)显示为双精度
将TPoint(0到2)显示为Double
FPoint(0)= 0:FPoint(1)= 0:FPoint(2)= 0
‘1变量初始化
rateratE = 1
ttNo = 0
”2阅读cad文件列表
Dingmurch02FU_8001_RTbySelect
Dingmurch02FU _ 8013 _文件列表0,1,0
”每个cad文件3个循环操作。
‘3.1对象初始化
出错时继续下一步
Set acadApp = GetObject(,& # 34;autocad.application & # 34)
如果出错,那么
呃。清楚的
set acadApp = CreateObject(& # 34;autocad.application & # 34)
如果…就会结束
acadApp。可见=假
‘3.2未决图纸的计数
对于W = 0至UBound(dingmurch 10 Pb _ 04 arr _ file arr)-1
if Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。dwg & # 34或者Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。DWG & # 34;那么ttNo = ttNo + 1
然后
ttNo = ttNo – 1
MsgBox ttNo & & # 34要合并的文件& # 34;
SC = InputBox(& # 34;请输入绘图比例& # 34;, “1: 1,1: 10,1: 100,在冒号& # 34;, “”)
‘3.3打开ALL.dwg
设置acaddwgall = acadApp。documents . Open(dingmurch 10 Pb _ 06RT _ NAME & # 34;\”& “成品。dwg & # 34)
‘3.4处理其他文件
T1 =定时器
xxx = 0
yyy = 0
对于W = 0至UBound(dingmurch 10 Pb _ 04 arr _ file arr)-1
if(Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。dwg & # 34或者Right(dingmurch 10 Pb _ 04 arr _ file arr(W),4)= & # 34;。DWG & # 34;)和dingmurch 10 Pb _ 04 arr _ file arr(W)& lt;& gt”成品。dwg & # 34然后
‘3.4.1打开对象表,计算对象数量,并将其添加到选择集中。
‘MsgBox & # 34打开& # 34;& Dingmurch10PB_04ARR_FILEARR(W)
设置acaddwgnow = acadApp。documents . Open(dingmurch 10 Pb _ 06RT _ NAME & # 34;\”& Dingmurch10PB_04ARR_FILEARR(W))
对于学院的每一层。层
我的律师。Lock = False
然后
将SSSS定义为学术选择
设置SSSS = acaddwnow。selection sets . Add(& # 34;T1 & # 34)
SSSS。选择(acSelectionSetAll)
k = SSSS。数数
”MsgBox k
将对象集合(0到k – 1)重新定义为对象
l = 0
对于SSSS的每一个zzzz
Set objCollection(l) = zzzz
l = l + 1
然后
‘3.4.2打开成品。
‘MsgBox & # 34动& # 34;& “成品。dwg & # 34
阿卡德威尔。使活动
出错时继续下一步
retObjects = acaddwgnow。CopyObjects(objCollection,acaddwgall。模型空间)
TPoint(0)= XXX:TPoint(1)= yyy:TPoint(2)= 0
如果xxx & lt那么500 * 9 * SC
xxx = xxx + 500 * SC
那么ElseIf xxx = 500 * 9 * SC
xxx = 0
yyy = yyy – 300 * SC
如果…就会结束
对于对象中的每个MMMM
MMMM。移动FPoint,TPoint
然后
‘关闭对象
‘MsgBox & # 34关闭& # 34;& Dingmurch10PB_04ARR_FILEARR(W)
acaddwgnow。关闭
‘3.4.4保存成品。
‘阿卡德威尔。救援
ZoomExtents
‘显示进度
dingmurch 02 fu _ 1002 _ process rate rate,0,ttNo,0,0,100,0,100,0,100,1,1,& # 34;ACAD2019 _ 04DWGtoOne & # 34& Dingmurch10PB_04ARR_FILEARR(W)
多项活动
rateratE = rateratE
如果…就会结束
然后
阿卡德威尔。救援
ZoomExtents
T2 =计时器- T1
MsgBox & # 34操作完成!”& “耗时& # 34;& Format(T2,& # 34;0.000”) & “第二& # 34;
acadApp。可见=真
acadApp。WindowState = acMax
设置ACADDWG_obj = Nothing
‘acadApp。放弃
‘设置acadApp = Nothing
卸载微信03FM_01
末端接头
本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://51itzy.com/39077.html