dage23wo 发表于 2015-11-18 11:40:49

vba选择集的问题

Dim blk As AcadBlockReference
Private Sub CommandButton1_Click()

'打开一个图幅
If Len(Dir("E:\擦窗机总库\底架总成\180固定方管\513.8.dwg")) <> 0 Then

ThisDrawing.Application.Documents.Open "E:\擦窗机总库\底架总成\180固定方管\513.8.dwg"
'
Else
MsgBox "指定的文件不存在!"

End If


'选择该对应的主视图

    Dim filterType1(0 To 2) As Integer
    Dim filterData1(0 To 2) As Variant
    Dim ssetObj1 As AcadSelectionSet

    filterType1(0) = 2
    filterData1(0) = "180主视图"
    filterType1(1) = 100
    filterData1(1) = "AcDbBlockReference"

    Set ssetObj1 = CreateSelectionSet("180主视图")
    ssetObj1.SelectOnScreen filterType1, filterData1
   
    If ssetObj1.Count = 0 Then
      ThisDrawing.Utility.Prompt "用户取消放置状态,退出" & vbCrLf
      Exit Sub
    End If
   
   
   
For Each elem In ssetObj1    '把指定动态块过滤出来
   
    Dim vv As Long
   If blk.IsDynamicBlock Then
      ' 获得动态块的自定义特性
      
      dyBlkPropCol = blk.GetDynamicBlockProperties
            
      For vv = 0 To UBound(dyBlkPropCol)
            Set DBlockProperties = dyBlkPropCol(vv)
            
            With DBlockProperties
      If .PropertyName = "底架轨距" Then
         .Value = CDbl(GJ)
         Exit For
         End If
         End With
      Next vv
   
    blk.Update
End If
   
   
Next





End Sub目的是想通过vba打开一个图幅,选择其中一个名叫“180主视图”动态块,对其中的一个自定义参数进行操作。

zzyong00 发表于 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主视图"

dage23wo 发表于 2015-11-18 23:12:38

zzyong00 发表于 2015-11-18 22:15 static/image/common/back.gif
你的问题是什么 ?测试文件在哪?
是选不上吗?



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

wangshuping42 发表于 2015-11-23 13:06:06

dage23wo 发表于 2015-11-18 23:12 static/image/common/back.gif
我的问题是不能选中动态块,并且动态块的参数没有驱动

你还在整这个啊

dage23wo 发表于 2015-11-27 09:19:36

wangshuping42 发表于 2015-11-23 13:06 static/image/common/back.gif
你还在整这个啊

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

wangshuping42 发表于 2015-11-27 14:48:02

跟你说动态块是没办法用选择集来选中的,好像不支持。
如果要这么做,只能在添加零件的时候给新加入的动态块添加一个标记,以后就用这个标记来选中它。
这个标记可以使扩展数据

dage23wo 发表于 2015-11-29 10:12:47

wangshuping42 发表于 2015-11-27 14:48 static/image/common/back.gif
跟你说动态块是没办法用选择集来选中的,好像不支持。
如果要这么做,只能在添加零件的时候给新加入的动态 ...

谢谢前辈的指点,我去试下
页: [1]
查看完整版本: vba选择集的问题