Get Reference Point Data Example (VBA)
This example shows how to get reference point data.
'------------------------------------------------
'
' Preconditions:
' (1)
Part, assembly, or drawing document is open.
' (2)
Reference point feature is selected.
'
' Postconditions: None
'
'-----------------------------------------------
Option Explicit
Public Enum swRefPointType_e
swRefPointInvalid
= 0
swRefPointUndefined
= 1
swRefPointAlongCurve
= 2
swRefPointCenterEdge
= 3
swRefPointFaceCenter
= 4
swRefPointFaceVertexProjection
= 5
swRefPointIntersection
= 6
End Enum
Public Enum swRefPointAlongCurveType_e
swRefPointAlongCurveDistance
= 0
swRefPointAlongCurvePercentage
= 1
swRefPointAlongCurveEvenlyDistributed
= 2
End Enum
Public Enum swOnSurfacePlaneProjectType_e
swOnSurfacePlaneProjecttoNearestLocation
= 0
swOnSurfacePlaneProjectAlongSketchNormal
= 1
End Enum
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swSelMgr As
SldWorks.SelectionMgr
Dim
swFeat As
SldWorks.feature
Dim
swRefPt As
SldWorks.refPoint
Dim
swRefPtData As
SldWorks.RefPointFeatureData
Dim
swMathPt As
SldWorks.MathPoint
Dim
vEntArr As
Variant
Dim
vEnt As
Variant
Dim
swEnt As
SldWorks.entity
Dim
swSkPt As
SldWorks.SketchPoint
Dim
swSkSeg As
SldWorks.SketchSegment
Dim
nStatus As
Long
Dim
bRet As
Boolean
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swSelMgr = swModel.SelectionManager
Set
swFeat = swSelMgr.GetSelectedObject5(1)
Set
swRefPt = swFeat.GetSpecificFeature2
Set
swRefPtData = swFeat.GetDefinition
Set
swMathPt = swRefPt.GetRefPoint
Debug.Print
"File = " & swModel.GetPathName
Debug.Print
" "
& swFeat.Name
Debug.Print
" Pt
= (" & _
swMathPt.ArrayData(0) * 1000# & ", "
& _
swMathPt.ArrayData(1) * 1000# & ", "
& _
swMathPt.ArrayData(2) * 1000# & ") mm"
Debug.Print
" AlongCurveOption
=
" & swRefPtData.AlongCurveOption
Debug.Print
" Distance
=
" & swRefPtData.distance
* 1000# & " mm"
Debug.Print
" Type
=
" & swRefPtData.Type
bRet
= swRefPtData.AccessSelections(swModel,
Nothing): Debug.Assert bRet
vEntArr
= swRefPtData.Selections
For
Each vEnt In vEntArr
'
Returns NULL entries if in assembly
If
Not Nothing Is vEnt Then
If
TypeOf vEnt Is SldWorks.entity Then
Set
swEnt = vEnt
bRet
= swEnt.Select4(True, Nothing):
Debug.Assert bRet
ElseIf
TypeOf vEnt Is SldWorks.SketchPoint Then
Set
swSkPt = vEnt
bRet
= swSkPt.Select4(True, Nothing):
Debug.Assert bRet
ElseIf
TypeOf vEnt Is SldWorks.SketchSegment Then
Set
swSkSeg = vEnt
bRet
= swSkSeg.Select4(True, Nothing):
Debug.Assert bRet
Else
Debug.Assert
False
End
If
End
If
Next
swRefPtData.ReleaseSelectionAccess
End Sub
'-----------------------------------------------------