Get Library Feature Data Example (VB.NET)
This example shows how to get information about library features in model
documents.
'----------------------------------------------------------------------------
' Preconditions: Model document is open and contains at least one library
feature.
'
' Postconditions: None
'-----------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
System
Imports
System.Diagnostics
Partial
Class
SolidWorksMacro
Dim
boolstatus As
Boolean
Dim
ModelDoc2 As
ModelDoc2
Dim
Feature As
Feature
Dim
NextFeature As
Feature
Dim
LibraryFeatureData As
LibraryFeatureData
Dim
placementPlaneType As
Long
Dim
placementPlane As
Object
Dim
ConfigurationName As
String
Dim
vConfigs As
Object
Dim
vConfigName As
Object
Dim
x As
Long
Dim
LinkToLibraryPart As
Boolean
Dim
LocatingDimensionsCount As
Long
Dim
vLocDimName As
Object
Dim
vLocDimVal As
Object
Dim
i As
Long
Dim
bOverrideDimVal As
Boolean
Dim
SizeDimensionsCount As
Long
Dim
vSizDimName As
Object
Dim
vSizDimVal As
Object
Dim
ReferencesCount As
Long
Dim
vRefType As
Object
Dim
vRefs As
Object
Sub
main()
ModelDoc2 = swApp.ActiveDoc
' Traverse the FeatureManager
design tree searching for library features
Feature = ModelDoc2.FirstFeature
While
Not
Feature Is
Nothing
Debug.Print(Feature.Name,
Feature.GetTypeName)
' If feature is library
feature then get its data, else
'
move onto the next feature in the FeatureManager design tree
If
Feature.GetTypeName = "LibraryFeature"
Then
Debug.Print(Feature.Name,
Feature.GetTypeName)
LibraryFeatureData = Feature.GetDefinition
boolstatus = LibraryFeatureData.AccessSelections(ModelDoc2,
Nothing)
' Access the selections of
the library feature that define it
Debug.Print("LibraryFeatureData.AccessSelections
= " + boolstatus.ToString())
' Get its placement type
placementPlane =
LibraryFeatureData.GetPlacementPlane2(swLibFeatureData_e.swLibFeatureData_PartRespect, placementPlaneType)
Debug.Print("PlacementPlaneType
= " + placementPlaneType.ToString())
placementPlane.Select(False)
' Get the name of the
active library feature configuration
ConfigurationName =
LibraryFeatureData.ConfigurationName
Debug.Print("ConfigurationName
= " + ConfigurationName)
' Determine if the library
feature is linked to
'
the library feature part
LinkToLibraryPart =
LibraryFeatureData.LinkToLibraryPart
Debug.Print("LinkToLibraryPart
= " + LinkToLibraryPart.ToString())
' If the library feature
part document is open or
'
if the library feature is linked to the library feature
'
part document, then get the names of all of the
'
library feature configurations; if it's not open,
'
then only the name of the active library configuration
'
is returned
vConfigs =
LibraryFeatureData.GetAllConfigurationNames
Debug.Print("Configuration
names :")
If
Not
IsNothing(vConfigs) Then
For
x = LBound(vConfigs) To
UBound(vConfigs)
Debug.Print(" "
+ vConfigs(x))
Next
x
End
If
'
Get the number of locating dimensions
LocatingDimensionsCount =
LibraryFeatureData.GetDimensionsCount(0)
Debug.Print("LocatingDimensionsCount
= " + LocatingDimensionsCount.ToString())
' Get the locating
dimensions
vLocDimVal =
LibraryFeatureData.GetDimensions(0, vLocDimName)
Debug.Print("Locating
dimensions :")
If
Not
IsNothing(vLocDimName) Then
For
i = LBound(vLocDimName) To
UBound(vLocDimName)
Debug.Print(" "
+ vLocDimName(i), vLocDimVal(i))
Next
i
End
If
'
Determine if existing dimension values of the library
'
feature can be overridden
bOverrideDimVal =
LibraryFeatureData.OverrideDimension
Debug.Print("OverrideDimension
= " + bOverrideDimVal.ToString())
' Get the number of
feature dimensions
SizeDimensionsCount =
LibraryFeatureData.GetDimensionsCount(1)
Debug.Print("SizeDimensionsCount
= " + SizeDimensionsCount.ToString())
' Get the feature
dimensions
vSizDimVal =
LibraryFeatureData.GetDimensions(1, vSizDimName)
Debug.Print("Size
dimensions :")
If
Not
IsNothing(vSizDimName) Then
For
i = LBound(vSizDimName) To
UBound(vSizDimName)
Debug.Print(" "
+ vSizDimName(i), vSizDimVal(i))
Next
i
End
If
'
Get the number of references
ReferencesCount =
LibraryFeatureData.GetReferencesCount
Debug.Print("GetReferencesCount
= " + ReferencesCount.ToString())
' Get the references
vRefs =
LibraryFeatureData.GetReferences2(swLibFeatureData_e.swLibFeatureData_PartRespect, vRefType)
If
Not
IsNothing(vRefType) Then
Debug.Print("Reference
types: ")
For
i = LBound(vRefType) To
UBound(vRefType)
Debug.Print(" "
+ vRefType(i).ToString())
vRefs(i).Select(False)
Next
i
End
If
'Release
the selections that define the library feature
LibraryFeatureData =
Feature.GetDefinition
boolstatus = LibraryFeatureData.AccessSelections(ModelDoc2,
Nothing)
Debug.Print("LibraryFeatureData.AccessSelections
= " + boolstatus.ToString())
LibraryFeatureData.ReleaseSelectionAccess()
End
If
'
Get the next feature until there are no more
NextFeature =
Feature.GetNextFeature
Feature = Nothing
Feature = NextFeature
NextFeature = Nothing
End
While
End
Sub
Public
swApp As
SldWorks
End
Class