明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1266|回复: 6

vba选择集的问题

[复制链接]
发表于 2015-11-18 11:40:49 | 显示全部楼层 |阅读模式
  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主视图”动态块,对其中的一个自定义参数进行操作。
发表于 2015-11-18 22:15:01 | 显示全部楼层
你的问题是什么 ?测试文件在哪?
是选不上吗?

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

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

点评

我问你的是几个问题?  发表于 2015-11-19 17:24
发表于 2015-11-23 13:06:06 | 显示全部楼层
dage23wo 发表于 2015-11-18 23:12
我的问题是不能选中动态块,并且动态块的参数没有驱动

你还在整这个啊
 楼主| 发表于 2015-11-27 09:19:36 | 显示全部楼层
wangshuping42 发表于 2015-11-23 13:06
你还在整这个啊

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

谢谢前辈的指点,我去试下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:51 , Processed in 0.182491 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表