Get Part's Feature Statistics Example (C#)
This example shows how to get the statistics of all of the features
in a part document.
//----------------------------------------------------------------------------
// Preconditions: Part document with features is
// open.
//
// Postconditions: None
//-------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace GetFeatureStatisticsForPart_CSharp.csproj
{
partial
class SolidWorksMacro
{
public
void Main()
{
FeatureStatistics
swFeatStat = default(FeatureStatistics);
FeatureManager
swFeatMgr = default(FeatureManager);
ModelDoc2
swModel = default(ModelDoc2);
String[]
featnames = null;
Int32[]
feattypes = null;
Object[]
features = null;
Double[]
featureUpdateTimes = null;
Double[]
featureUpdatePercentTimes = null;
int
iter = 0;
swModel
= (ModelDoc2)swApp.ActiveDoc;
swFeatMgr
= swModel.FeatureManager;
swFeatStat
= swFeatMgr.FeatureStatistics;
swFeatStat.Refresh();
Debug.Print("Model
name: " + swFeatStat.PartName);
Debug.Print("
Number of features: " + swFeatStat.FeatureCount);
Debug.Print("
Number of solid bodies: " + swFeatStat.SolidBodiesCount);
Debug.Print("
Number of surface bodies: " + swFeatStat.SurfaceBodiesCount);
Debug.Print("
Total rebuild time: " + swFeatStat.TotalRebuildTime);
Debug.Print("");
features
= (Object[])swFeatStat.Features;
featnames
= (String[])swFeatStat.FeatureNames;
feattypes
= (Int32[])swFeatStat.FeatureTypes;
featureUpdateTimes
= (Double[])swFeatStat.FeatureUpdateTimes;
featureUpdatePercentTimes
= (Double[])swFeatStat.FeatureUpdatePercentageTimes;
if
((featnames != null))
{
for
(iter = 0; iter <= featnames.GetUpperBound(0); iter++)
{
Debug.Print("
Feature name: " + featnames[iter]);
Debug.Print("
Feature created: " + ((Feature)features[iter]).DateCreated);
Debug.Print("
Feature type as defined in sw_SelectType_e: " + feattypes[iter]);
Debug.Print("
Update time: " + featureUpdateTimes[iter]);
Debug.Print("
Update % time: " + featureUpdatePercentTimes[iter]);
Debug.Print("");
}
}
}
public
SldWorks swApp;
}
}