Get Features of Multibody Sheet Metal Part Example (C#)
This example shows how to get the number and names of the features in a
cut-list folder in a multibody sheet metal part.
//--------------------------------------------------------------------------
// Preconditions:
// 1. Open a multibody sheet metal part.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Gets the number and names of the features in the cut-list folder
// in a multibody sheet metal part.
// 2. Examine the Immediate window.
//--------------------------------------------------------------------------
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 == "CutListFolder")
{
swBodyFolder
= (BodyFolder)swFeat.GetSpecificFeature2();
swBodyFolder.SetAutomaticCutList(true);
swBodyFolder.SetAutomaticUpdate(true);
Debug.Print("
Number of bodies: " + swBodyFolder.GetBodyCount());
Debug.Print("
Cut list type: " + swBodyFolder.GetCutListType());
Debug.Print(" Generate cut list automatically? " + swBodyFolder.GetAutomaticCutList());
Debug.Print(" Automatically update cut list? " + swBodyFolder.GetAutomaticUpdate());
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;
}
}