Get Features of Multibody Sheet Metal Part Example (C#)
This example shows how to get the number and names of the features in a multibody sheet metal part.
//--------------------------------------------------------------------------
// Preconditions: A multibody sheet metal part is open.
//
// Postconditions: Compare the results printed to the
// Immediate window with the bodies and
// features in the sheet metal solid bodies folder.
//--------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace GetFeaturesBody2CSharp.csproj
{
public
partial class SolidWorksMacro
{
public
void Main()
{
ModelDoc2
swModel = default(ModelDoc2);
FeatureManager
swFeatMgr = default(FeatureManager);
Feature
swFeat = default(Feature);
BodyFolder
swBodyFolder = default(BodyFolder);
Body2
swBody = default(Body2);
object[]
Bodies = null;
string
FeatType = null;
string
FeatTypeName = null;
object[]
Features = null;
Feature
SolidBodyFeature = null;
int
i = 0;
int
j = 0;
swModel
= (ModelDoc2)swApp.ActiveDoc;
swFeatMgr
= (FeatureManager)swModel.FeatureManager;
swFeat
= (Feature)swModel.FirstFeature();
while
((swFeat != null))
{
FeatType
= swFeat.Name;
FeatTypeName
= swFeat.GetTypeName2();
Debug.Print("
" + FeatType + " [" + FeatTypeName + "]");
if
(FeatTypeName == "SolidBodyFolder")
{
swBodyFolder
= (BodyFolder)swFeat.GetSpecificFeature2();
Debug.Print("
Number of bodies: " + swBodyFolder.GetBodyCount());
Bodies
= (object[])swBodyFolder.GetBodies();
for
(i = 0; i <= (swBodyFolder.GetBodyCount()
- 1); i++)
{
swBody
= (Body2)Bodies[i];
Features
= (object[])swBody.GetFeatures();
Debug.Print("
Number
of features in body #" + (int)(i + 1) + ": " + (int)swBody.GetFeatureCount());
for
(j = 0; j <= (swBody.GetFeatureCount()
- 1); j++)
{
SolidBodyFeature
= (Feature)Features[j];
Debug.Print("
Name
of feature: " + (string)SolidBodyFeature.GetTypeName2());
}
}
}
swFeat
= (Feature)swFeat.GetNextFeature();
}
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
}
}