乐筑天下

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

[编程交流] 读取可见性状态和c

[复制链接]

14

主题

40

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 15:14:07 | 显示全部楼层 |阅读模式
大家好
 
为了减少错误的绘图(同事的绘图设置),我想用VBA制作一个自定义绘图命令。
 
我得到了一个名为“Kader”(英语=Drawingborder)的动态块,其可见性状态(“Kader”)称为“A3”、“A2”、“A1”、“A0”、“A1x3”、“A2,3”(与纸张大小相同)
  1. Command: list
  2. Select objects: 1 found
  3. Select objects:
  4.                  BLOCK REFERENCE  Layer: "Kader"
  5.                            Space: Model space
  6.                   Handle = 219f6
  7.       Block Name: "KADER"
  8.   Anonymous Name: "*U13"
  9.                at point, X=   0.0000  Y=   0.0000  Z=   0.0000
  10.   X scale factor:    1.0000
  11.   Y scale factor:    1.0000
  12.   rotation angle:      0
  13.   Z scale factor:    1.0000
  14.         InsUnits: Millimeters
  15. Unit conversion:    1.0000
  16. Scale uniformly: No
  17. Allow exploding: Yes
  18.           Kaders: A3

 
我现在要做的是生成一个plot命令,wich首先查看这个动态块的可见性状态(“Kaders”)。当选择“A3”时,VBA将打印设备和图纸尺寸更改为A3。当选择“A2”时,它会将绘图仪更改为另一台绘图仪,并将图纸尺寸更改为A2。对于所有其他纸张尺寸。
 
VBA中处理动态块的标准帮助对我没有帮助,因为没有用于读取可见性状态的示例和信息。
 
有人能帮我吗?谢谢!
回复

使用道具 举报

3

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
19
发表于 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
退出
 
如果结束
 
下一个索引
如果结束
 
以结束
回复

使用道具 举报

14

主题

40

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 15:59:48 | 显示全部楼层
谢谢你的帮助,瑞奇!
但是为什么程序中“dim idex作为整数”?它不在其他地方使用。
另一个问题,“handle2use…”那该怎么办?我是否需要将其更改为“With Handle2Use Kader”(Kader是blockname)
strBlkName是什么?
 
 
我是(VBA)编程新手。如何在DWG中搜索块名?
 
thnx公司
回复

使用道具 举报

3

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
19
发表于 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
'--现在在前面发布的代码中寻找动态(需要更改名称)--
下一个
如果结束
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 18:30 , Processed in 0.697299 second(s), 80 queries .

© 2020-2025 乐筑天下

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