Get Radiate Surface Data Example (VBA)
This example shows how to get data for a radiate surface.
'-------------------------------------------------------
'
' Preconditions:
' (1)
Model document is open.
' (2)
Radiate surface feature is selected.
'
' Postconditions: None
'
'--------------------------------------------------------
Option Explicit
Public Enum swSelectType_e
swSelEDGES
= 1 '
"EDGE"
swSelFACES
= 2 '
"FACE"
swSelDATUMPLANES
= 4 '
"PLANE"
swSelREFSURFACES
= 27 '
"REFSURFACE"
End Enum
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swSelMgr As
SldWorks.SelectionMgr
Dim
swSelData As
SldWorks.SelectData
Dim
swRadiate As
SldWorks.SurfaceRadiateFeatureData
Dim
swFeat As
SldWorks.feature
Dim
swEnt As
SldWorks.Entity
Dim
vRadEnt As
Variant
Dim
swRadDirEnt As
SldWorks.Entity
Dim
swRefPlaneFeat As
SldWorks.feature
Dim
i As
Long
Dim
bRet As
Boolean
Set
swApp = CreateObject("SldWorks.Application")
Set
swModel = swApp.ActiveDoc
Set
swSelMgr = swModel.SelectionManager
Set
swSelData = swSelMgr.CreateSelectData
Set
swFeat = swSelMgr.GetSelectedObject5(1)
Set
swRadiate = swFeat.GetDefinition
'
Can be a face or reference plane or reference surface
Set
swRadDirEnt = swRadiate.DirectionReference
'
Get radiate surface data
Debug.Print
"File = " & swModel.GetPathName
Debug.Print
" "
& swFeat.Name
Debug.Print
" Distance
=
" & swRadiate.Distance
* 1000# & " mm"
Debug.Print
" Flip
=
" & swRadiate.Flip
Debug.Print
" RadiatedEntitiesCount
=
" & swRadiate.GetRadiatedEntitiesCount
Debug.Print
" PropagateToTangentFaces
=
" & swRadiate.PropagateToTangentFaces
Debug.Print
" RadDirEntType
=
" & swRadDirEnt.GetType
'
Roll back to get to radiated edges
bRet
= swRadiate.AccessSelections(swModel,
Nothing): Debug.Assert bRet
'
Cannot select reference plane through Entity interface,
'
so select through Feature interface
If
swSelDATUMPLANES = swRadDirEnt.GetType
Then
Set
swRefPlaneFeat = swRadDirEnt
bRet
= swRefPlaneFeat.Select2(True,
0)
Else
bRet
= swRadDirEnt.Select4(True, swSelData)
End
If
Debug.Assert
bRet
swModel.ClearSelection2 True
vRadEnt
= swRadiate.RadiatedEntities
For
i = 0 To UBound(vRadEnt)
Set
swEnt = vRadEnt(i)
Debug.Print
" Ent("
& i & ") =
" & swEnt.GetType
bRet
= swEnt.Select4(True, swSelData):
Debug.Assert bRet
Next
i
'
Cancel rollback
swRadiate.ReleaseSelectionAccess
End Sub
'-------------------------------------------------------