乐筑天下

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

vba选择集的问题

[复制链接]

12

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2015-11-18 11:40:00 | 显示全部楼层 |阅读模式
  1. Dim blk As AcadBlockReference
  2. Private Sub CommandButton1_Click()
  3. '打开一个图幅
  4. If Len(Dir("E:\擦窗机总库\底架总成\180固定方管\513.8.dwg"))  0 Then
  5. ThisDrawing.Application.Documents.Open "E:\擦窗机总库\底架总成\180固定方管\513.8.dwg"
  6. '
  7. Else
  8. MsgBox "指定的文件不存在!"
  9. End If
  10. '选择该对应的主视图
  11.     Dim filterType1(0 To 2) As Integer
  12.     Dim filterData1(0 To 2) As Variant
  13.     Dim ssetObj1 As AcadSelectionSet
  14.     filterType1(0) = 2
  15.     filterData1(0) = "180主视图"
  16.     filterType1(1) = 100
  17.     filterData1(1) = "AcDbBlockReference"
  18.     Set ssetObj1 = CreateSelectionSet("180主视图")
  19.     ssetObj1.SelectOnScreen filterType1, filterData1
  20.    
  21.     If ssetObj1.Count = 0 Then
  22.         ThisDrawing.Utility.Prompt "用户取消放置状态,退出" & vbCrLf
  23.         Exit Sub
  24.     End If
  25.    
  26.    
  27.    
  28. For Each elem In ssetObj1    '把指定动态块过滤出来
  29.    
  30.     Dim vv As Long
  31.    If blk.IsDynamicBlock Then
  32.         ' 获得动态块的自定义特性
  33.         
  34.         dyBlkPropCol = blk.GetDynamicBlockProperties
  35.             
  36.         For vv = 0 To UBound(dyBlkPropCol)
  37.             Set DBlockProperties = dyBlkPropCol(vv)
  38.             
  39.             With DBlockProperties
  40.         If .PropertyName = "底架轨距" Then
  41.            .Value = CDbl(GJ)
  42.          Exit For
  43.          End If
  44.          End With
  45.         Next vv
  46.    
  47.     blk.Update
  48.   End If
  49.    
  50.    
  51. Next
  52. End Sub
目的是想通过vba打开一个图幅,选择其中一个名叫“180主视图”动态块,对其中的一个自定义参数进行操作。
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-11-18 22:15:00 | 显示全部楼层
你的问题是什么 ?测试文件在哪?
是选不上吗?
    filterType1(0) = 2
    filterData1(0) = "180主视图"
    filterType1(1) = 100
    filterData1(1) = "AcDbBlockReference"
好像顺序反了,试试
    filterType1(0) = 100
    filterData1(0) = "AcDbBlockReference"
    filterType1(1) = 2
    filterData1(1) = "180主视图"
回复

使用道具 举报

12

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2015-11-18 23:12:00 | 显示全部楼层

我的问题是不能选中动态块,并且动态块的参数没有驱动
回复

使用道具 举报

8

主题

72

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2015-11-23 13:06:00 | 显示全部楼层

你还在整这个啊
回复

使用道具 举报

12

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2015-11-27 09:19:00 | 显示全部楼层

主要是老板要搞这个,没办法
回复

使用道具 举报

8

主题

72

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2015-11-27 14:48:00 | 显示全部楼层
跟你说动态块是没办法用选择集来选中的,好像不支持。
如果要这么做,只能在添加零件的时候给新加入的动态块添加一个标记,以后就用这个标记来选中它。
这个标记可以使扩展数据
回复

使用道具 举报

12

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2015-11-29 10:12:00 | 显示全部楼层

谢谢前辈的指点,我去试下
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-20 05:11 , Processed in 0.830283 second(s), 67 queries .

© 2020-2025 乐筑天下

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