动态块Vis状态
是否可以使用VBA更改动态块的可见性状态 ;我可以';似乎找不到可见性状态的任何属性。谢谢。马特-
您可以使用以下内容:
Sub SetDynBlockToElevation()
Dim ent As AcadEntity
Dim oSSet As AcadSelectionSet
Dim oBlkRef As IAcadBlockReference2
Dim vDynProps As Variant
Dim oDynProp As AcadDynamicBlockReferenceProperty
Dim iCnt As Long
Set oSSet = vbdPowerSet("DynBlock")
oSSet.Select acSelectionSetLast
Set oBlkRef = oSSet.Item(0)
vDynProps = oBlkRef.GetDynamicBlockProperties
For iCnt = LBound(vDynProps) To UBound(vDynProps)
Set oDynProp = vDynProps(iCnt)
If oDynProp.PropertyName = "Visibility" Then
If oDynProp.Value = "Plan" Then
oDynProp.Value = "Elevation"
End If
End If
Next iCnt
End Sub
Public Function vbdPowerSet(strName As String) As AcadSelectionSet
Dim objSelSet As AcadSelectionSet
Dim objSelCol As AcadSelectionSets
Set objSelCol = ThisDrawing.SelectionSets
For Each objSelSet In objSelCol
If objSelSet.Name = strName Then
objSelCol.Item(strName).Delete
Exit For
End If
Next
Set objSelSet = objSelCol.Add(strName)
Set vbdPowerSet = objSelSet
End Function
谢谢,但是…..Dim oBlkRef As IAcadBlockReference2 ;本人';我使用2007(因为它的价值)
据我所知,Dim oBlkRef作为IAcadBlockReference2来获取intellisense,但在此之后,您可以将其更改为Dim oBlkRef作为acadblockreforence 这在2007年对我有效,但正如Bryco指出的那样,使用这种方法没有Intellisense
Sub test()
Dim oBlkRef As AcadBlockReference
Dim oEnt As AcadEntity
Dim vPick As Variant
Dim vDynProps As Variant
Dim oDynProp As AcadDynamicBlockReferenceProperty
Dim i As Long
ThisDrawing.Utility.GetEntity oEnt, vPick, "select block: "
If TypeOf oEnt Is AcadBlockReference Then
Set oBlkRef = oEnt
If oBlkRef.IsDynamicBlock = True Then
vDynProps = oBlkRef.GetDynamicBlockProperties
For i = 0 To UBound(vDynProps)
Set oDynProp = vDynProps(i)
If oDynProp.PropertyName = "Visibility" Then
Debug.Print oDynProp.Value
End If
Next
End If
End If
End Sub
马特-I';我用的是2006年。2007年可能有点不同
Bryco-
在AutoCAD 2006中,必须使用IAcadBlockReference2才能访问GetDynamicBlockProperties方法。2007年的情况可能有所改变 谢谢大家的帮助/信息! 它在2006年对我有效,你试过了吗,戴夫? 还没有,但我会的
马特,你成功了吗
页:
[1]
2