Get Solid-fill Hatch Information Example (VBA)
This example shows how to get information about solid-fill hatches in
a detail view in the current drawing sheet.
'----------------------------------
' Preconditions:
' 1. Open a SolidWorks drawing that has a
' solid-fill
hatch in a detail view.
' 2. Run the macro and examine the Immediate window
' and
drawing document to verify the results.
'
' Postconditions: None
'----------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDrawing As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swView As SldWorks.View
Dim nbrSolidFillHatches As Long
Dim ArraySize As Long
Dim i As Long
Dim boundaryData As Variant
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDrawing = swModel
' Get drawing sheet
Set swSheet = swDrawing.GetCurrentSheet
' Get name of drawing sheet
Debug.Print " Number
of drawing views on drawing sheet: " & swDrawing.GetViewCount
' First view is the current drawing sheet
Set swView = swDrawing.GetFirstView
Debug.Print " First
drawing view is the current drawing sheet, so..."
' Get first drawing view on drawing sheet
Set swView = swView.GetNextView
nbrSolidFillHatches = 0
ArraySize = 0
While Not swView Is Nothing
Debug.Print
" Get
next drawing view on drawing sheet..."
Debug.Print
" View
name: " & swView.Name
nbrSolidFillHatches
= swView.GetSolidHatchCount(ArraySize)
Debug.Print
" Number
of solid-fill hatches in this view: " & nbrSolidFillHatches
Debug.Print
" Size
of array for the boundary data for the solid-fill hatch(es): " &
ArraySize
If
ArraySize > 0 Then
boundaryData
= swView.GetSolidHatchInfo
Debug.Print
" Is
the loop an outer loop (first)? " & boundaryData(0)
Debug.Print
" Number
of polylines in loop: " & boundaryData(1)
Debug.Print
" Type
( 0 = polyline; 1 = arc or circle): " & boundaryData(2)
Debug.Print
" Size
of geometric data array (will be 0 if Type = 0): " & boundaryData(3)
Debug.Print
" See
IView::GetSolidHatchInfo's API
Help topic for descriptions of these array elements: "
For
i = 4 To ArraySize - 1
Debug.Print
" Boundary
data, array element " & i & ": " & boundaryData(i)
Next
i
End
If
'
Get next drawing view
Set
swView = swView.GetNextView
Wend
End Sub