最近在全球论坛有个问题是想知道局部视图中显示出来的部件。可考虑两个方法:
1. 遍历装配文档,依次用Drawingview.DrawingCurves查看是否有视图曲线
2. 遍历视图曲线,依次访问其ModelGeometry,看看是哪些部件产生的。
以下代码用了方法1。假定图纸中第二个视图是局部视图。
Public Sub GetViewComponents()
Dim doc As DrawingDocument
Set doc = ThisApplication.ActiveDocument
Dim sectionView As SectionDrawingView
Set sectionView = doc.ActiveSheet.DrawingViews(2)
Dim docDesc As DocumentDescriptor
Set docDesc = sectionView.ReferencedDocumentDescriptor
Dim asm As AssemblyDocument
Set asm = docDesc.ReferencedDocument
Debug.Print "Occurrences in View: " & sectionView.name
On Error Resume Next
Dim occurrence As ComponentOccurrence
For Each occurrence In asm.ComponentDefinition.Occurrences
Dim curves As DrawingCurvesEnumerator
Set curves = sectionView.DrawingCurves(occurrence)
If Err Then
'DrawingCurves fails if no curves...
Err.Clear
ElseIf curves Is Nothing Or curves.count = 0 Then
'Component not in view...
Else
'Component is in section view
Debug.Print occurrence.name
End If
Next
End Sub