Get Knit Surface Data Example (VBA)
This example shows how to get a knit surface's data.
'-------------------------------------------------
'
' Preconditions:
' (1)
Model document is open.
' (2)
Surface-knit feature is selected.
'
' Postconditions: None
'
'--------------------------------------------------
Option Explicit
Public Enum swSelectType_e
swSelFACES
= 2 '
"FACE"
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
swFeat As
SldWorks.feature
Dim
swKnit As
SldWorks.SurfaceKnitFeatureData
Dim
vEnt As
Variant
Dim
swEnt As
SldWorks.Entity
Dim
swFace As
SldWorks.face2
Dim
swSeedFace As
SldWorks.face2
Dim
swSurf As
SldWorks.Surface
Dim
swSurfRadFeat 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
swKnit = swFeat.GetDefinition
Debug.Print
"File = " & swModel.GetPathName
Debug.Print
" "
& swFeat.Name
Debug.Print
" EntitiesCount
=
" & swKnit.GetEntitiesCount
'
Roll back to get to geometric entities
bRet
= swKnit.AccessSelections(swModel,
Nothing): Debug.Assert bRet
Set
swSeedFace = swKnit.SeedFace
If
Not swSeedFace Is Nothing Then
swModel.ClearSelection2 True
Set
swEnt = swSeedFace
Debug.Print
" SeedEntType
=
" & swEnt.GetType
bRet
= swEnt.Select4(True, swSelData):
Debug.Assert bRet
End
If
'
Get surface knit data
bRet
= False
swModel.ClearSelection2 True
vEnt
= swKnit.Entities
For
i = 0 To UBound(vEnt)
Set
swEnt = vEnt(i)
Set
swSurfRadFeat = vEnt(i)
Debug.Assert
Not swEnt Is Nothing
Debug.Print
" EntType("
& i & ") =
" & swEnt.GetType
If
swSelFACES = swEnt.GetType Then
bRet
= swEnt.Select4(True, swSelData):
Debug.Assert bRet
Else
'
Cannot select a Surface-Radiate feature through Entity interface,
'
so select through Feature interface
Debug.Assert
Not swSurfRadFeat Is Nothing
Debug.Print
" Feature
Type =
" & swSurfRadFeat.GetTypeName
bRet
= swSurfRadFeat.Select2(True,
0): Debug.Assert bRet
End
If
Next
i
'
Apply changes
bRet
= swFeat.ModifyDefinition(swKnit,
swModel, Nothing): Debug.Assert bRet
End Sub
'-------------------------------------------------