Grenco 发表于 2022-7-6 15:14:07

读取可见性状态和c

大家好
 
为了减少错误的绘图(同事的绘图设置),我想用VBA制作一个自定义绘图命令。
 
我得到了一个名为“Kader”(英语=Drawingborder)的动态块,其可见性状态(“Kader”)称为“A3”、“A2”、“A1”、“A0”、“A1x3”、“A2,3”(与纸张大小相同)
Command: list
Select objects: 1 found
Select objects:
               BLOCK REFERENCELayer: "Kader"
                           Space: Model space
                  Handle = 219f6
      Block Name: "KADER"
Anonymous Name: "*U13"
               at point, X=   0.0000Y=   0.0000Z=   0.0000
X scale factor:    1.0000
Y scale factor:    1.0000
rotation angle:      0
Z scale factor:    1.0000
      InsUnits: Millimeters
Unit conversion:    1.0000
Scale uniformly: No
Allow exploding: Yes
          Kaders: A3
 
我现在要做的是生成一个plot命令,wich首先查看这个动态块的可见性状态(“Kaders”)。当选择“A3”时,VBA将打印设备和图纸尺寸更改为A3。当选择“A2”时,它会将绘图仪更改为另一台绘图仪,并将图纸尺寸更改为A2。对于所有其他纸张尺寸。
 
VBA中处理动态块的标准帮助对我没有帮助,因为没有用于读取可见性状态的示例和信息。
 
有人能帮我吗?谢谢!

RickyD302 发表于 2022-7-6 15:54:02

我从某个论坛上得到了这个代码。。。。。。很好,希望有帮助
 
 
 
 
Dim道具作为变体
Dim Idex为整数
 
使用Handle2使用“我的区块名”
如果IsDynamicBlock=True Then
道具=。GetDynamicBlockProperties
Dim索引作为变量
对于索引=LBound(Props)到UBound(Props)
Dim oprop作为AcadDynamicBlockReferenceProperty
 
Set oprop=道具(索引)
 
如果oprop。PropertyName=“可见性”然后“可见性”属性
oprop。值=strBlkName
退出
 
如果结束
 
下一个索引
如果结束
 
以结束

Grenco 发表于 2022-7-6 15:59:48

谢谢你的帮助,瑞奇!
但是为什么程序中“dim idex作为整数”?它不在其他地方使用。
另一个问题,“handle2use…”那该怎么办?我是否需要将其更改为“With Handle2Use Kader”(Kader是blockname)
strBlkName是什么?
 
 
我是(VBA)编程新手。如何在DWG中搜索块名?
 
thnx公司

RickyD302 发表于 2022-7-6 16:21:34

我的错。。。很可能是我弄乱了什么,然后忘了注释或删除它。
 
是的Handle2use是我的街区
strBlkHandle是一个字符串,用于设置所需的可见性状态。
 
要搜索块,需要创建选择集
 
Dim fcode(0)为整数
Dim ftype(0)作为变体
将对象设置为AcadSelectionSet
Dim VARBOCK作为变体
将objBlock设置为acadBlock
 
F代码(0)=0:F类型(0)=“插入”'查找块
 
出错时继续下一步
此图纸。选择集。项目(“FindMyBLocks”)。删去
出错时转到0
 
设置objss=ThisDrawing。选择集。添加(“FIndMyBlocks”)
 
objss。选择acSelectionSetAll、fcode、ftype
 
如果是objss。然后计数>0
对于OBJS中的每个VARBOCK
设置objBlock=varBlock
'--现在在前面发布的代码中寻找动态(需要更改名称)--
下一个
如果结束
页: [1]
查看完整版本: 读取可见性状态和c