Create Library Feature Data Object and Library Feature With References (VBA)
This example shows how to create a library feature with references in order
to position the library feature on a model. First you create the library
feature; then you access it to set references.
'-------------------------------------------
' Preconditions:
' 1. Model and library part exist.
' 2. Model is open.
' 3. Plane1 and Point1@Location Point sketch point features exist.
'
' Postconditions:
' 1. Library feature is defined and initialized.
' 2. Library feature is created on selected face on the model.
' 3. References are set for the library feature to position
' it on the model.
'-------------------------------------------
Option Explicit
Dim swFeat As SldWorks.Feature
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swLibFeat As SldWorks.LibraryFeatureData
Dim selMgr As SldWorks.SelectionMgr
Dim boolstatus As Boolean
Dim obj() As Object
Dim vRefs As Variant, vRefTypes As Variant, refType As Variant
Dim nRefCount As Long
Private Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set selMgr = swModel.SelectionManager
Set swFeatMgr = swModel.FeatureManager
' Create library feature
Set swLibFeat = swFeatMgr.CreateDefinition(swFmLibraryFeature)
' Initialize newly created library feature using the specified library part
boolstatus = swLibFeat.Initialize("C:\MyLibraryParts\SlotWithRefs.SLDLFP")
' Get the type of references required for the library feature
nRefCount = swLibFeat.GetReferencesCount
vRefs = swLibFeat.GetReferences2(swLibFeatureData_FeatureRespect, vRefTypes)
If Not IsEmpty(vRefTypes) Then
Debug.Print "Types of references required: "
For Each refType In vRefTypes
Debug.Print vbTab + CStr(refType)
Next
End If
' Set the name of the active library feature configuration
swLibFeat.ConfigurationName = "Default"
' Select the face where to create the library feature
boolstatus = swModel.Extension.SelectByID2("", "FACE", -0.008955455851577, 0.01051592924882, 0.00400000000019, False, 0, Nothing, 0)
' Create the library feature
Set swFeat = swFeatMgr.CreateFeature(swLibFeat)
' Access the library feature to position it on the part
Set swLibFeat = Nothing
Set swLibFeat = swFeat.GetDefinition
boolstatus = swLibFeat.AccessSelections(swModel, Nothing)
' Select the point and plane where to position the library feature
boolstatus = swModel.Extension.SelectByID2("Point1@Location Point", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Plane1", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Dim selCount As Integer
selCount = selMgr.GetSelectedObjectCount2(-1)
selCount = selCount - 1
ReDim obj(selCount) As Object
Dim i As Integer
For i = 0 To selCount
Set obj(i) = selMgr.GetSelectedObject6(i + 1, -1)
Next
' Set the references for locating the library feature on the part
Dim vLibRefs As Variant
vLibRefs = obj
swLibFeat.SetReferences (vLibRefs)
' Update the definition of the library feature
boolstatus = swFeat.ModifyDefinition(swLibFeat, swModel, Nothing)
swModel.ClearSelection2 True
End Sub