using System;
using System.Collections.Generic;
namespace feature_group
{
class FeatureComparer : IComparer<MTKBase_Feature>
{
{
bool anALessThanB = aComparator.Apply(theA, theB);
if (anALessThanB)
{
return -1;
}
bool aBLessThanA = aComparator.Apply(theB, theA);
if (aBLessThanA)
{
return 1;
}
return 0;
}
}
public struct Pair
{
public Pair(double theFirst, double theSecond)
{
First = theFirst;
Second = theSecond;
}
public double First { get; }
public double Second { get; }
public override string ToString() => $"{First} x {Second}";
}
public struct Dimension
{
public Dimension(double theL, double theW, double theD)
{
L = theL;
W = theW;
D = theD;
}
public double L { get; }
public double W { get; }
public double D { get; }
public override string ToString() => $"{L} x {W} x {D}";
}
public struct Direction
{
public Direction(double theX, double theY, double theZ)
{
X = theX;
Y = theY;
Z = theZ;
}
public double X { get; }
public double Y { get; }
public double Z { get; }
public override string ToString() => $"({FormattedString(X)}, {FormattedString(Y)}, {FormattedString(Z)})";
private string FormattedString(double theValue)
{
System.Globalization.CultureInfo aCI = new System.Globalization.CultureInfo("en-US");
return string.Format(aCI, "{0:0.00}", theValue);
}
}
class FeatureGroupManager
{
public FeatureGroupManager()
{
myGroups = new List<FeatureGroup>();
}
private class FeatureGroup
{
public FeatureGroup(string theName, string theSubgroupName, bool theHasParameters)
{
myName = theName;
mySubgroupName = theSubgroupName;
myHasParameters = theHasParameters;
myFeatureSubgroups = new FeatureMapType(new FeatureComparer());
}
public uint FeatureCount()
{
uint aCount = 0;
foreach (var i in myFeatureSubgroups)
{
aCount += i.Value;
}
return aCount;
}
public string myName;
public string mySubgroupName;
public bool myHasParameters;
public FeatureMapType myFeatureSubgroups;
}
private class FeatureGroupComparer : IComparer<FeatureGroup>
{
public int Compare(FeatureGroup theA, FeatureGroup theB)
{
string anAName = theA.myName;
string aBName = theB.myName;
if (anAName == aBName)
{
return 0;
}
FeatureMapType anAFeatureSubgroups = theA.myFeatureSubgroups;
FeatureMapType aBFeatureSubgroups = theB.myFeatureSubgroups;
if (anAFeatureSubgroups.Count == 0 || aBFeatureSubgroups.Count == 0)
{
return anAName.CompareTo(aBName);
}
foreach (var i in anAFeatureSubgroups)
{
anAFeature = i.Key;
break;
}
foreach (var i in aBFeatureSubgroups)
{
aBFeature = i.Key;
break;
}
FeatureComparer aFeatureComparator = new FeatureComparer();
return aFeatureComparator.Compare(anAFeature, aBFeature);
}
}
private List<FeatureGroup> myGroups;
public void AddFeature(
string theGroupName,
string theSubgroupName,
bool theHasParameters,
MTKBase_Feature theFeature)
{
int aRes = myGroups.FindIndex(theGroup => theGroup.myName == theGroupName);
if (aRes == -1)
{
myGroups.Add(new FeatureGroup(theGroupName, theSubgroupName, theHasParameters));
aRes = myGroups.Count - 1;
}
FeatureGroup aGroup = myGroups[aRes];
FeatureMapType aSubgroups = aGroup.myFeatureSubgroups;
if (aSubgroups.ContainsKey(theFeature))
{
++aSubgroups[theFeature];
}
else
{
aSubgroups[theFeature] = 1;
}
}
public void Print(string theFeatureType, Action<MTKBase_Feature> thePrintFeatureParameters)
{
myGroups.Sort(new FeatureGroupComparer());
uint aTotalCount = 0;
foreach (var i in myGroups)
{
uint aFeatureCount = i.FeatureCount();
aTotalCount += aFeatureCount;
Console.WriteLine($" {i.myName}: {aFeatureCount}");
if (!i.myHasParameters)
{
continue;
}
string aSubgroupName = i.mySubgroupName;
foreach (var j in i.myFeatureSubgroups)
{
Console.WriteLine($" {j.Value} {aSubgroupName} with");
thePrintFeatureParameters(j.Key);
}
}
Console.WriteLine($"\n Total {theFeatureType}: {aTotalCount}\n");
}
public static void PrintFeatureParameter<T>(string theName, T theValue, string theUnits)
{
Console.WriteLine($" {theName}: {theValue} {theUnits}");
}
}
}
Compares features depending on their type and parameters.
Definition MTKBase_FeatureComparator.hxx:28
Describes a base class of MTK based features.
Definition MTKBase_Feature.hxx:32
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.
Definition LicenseManager_LicenseError.hxx:29
using feature_group;
using shape_processor;
using System;
using System.Collections.Generic;
namespace dfm_analyzer
{
class Program
{
static int Main(string[] args)
{
string aKey = MTKLicenseKey.Value();
if (!LicenseManager.Activate(aKey))
{
Console.WriteLine("Failed to activate Manufacturing Toolkit license.");
return 1;
}
if (args.Length != 2)
{
Console.WriteLine("Usage: " +
$"{System.Reflection.Assembly.GetExecutingAssembly().Location} <input_file> <operation>, where:");
Console.WriteLine($" <input_file> is a name of the file to be read");
Console.WriteLine($" <operation> is a name of desired machining operation");
Console.WriteLine($"");
PrintSupportedOperations();
return 1;
}
string aSource = args[0];
var aModel =
new Model();
{
Console.WriteLine($"Failed to read the file {aSource}");
return 1;
}
Console.WriteLine($"Model: {aModel.Name()}\n");
string anOperationStr = args[1];
{
Console.WriteLine($"Unsupported operation - {anOperationStr}");
Console.WriteLine($"Please use one of the following.");
PrintSupportedOperations();
return 1;
}
var aPartProcessor = new PartProcessor(anOperation);
aModel.Accept(aVisitor);
return 0;
}
class PartProcessor : SolidProcessor
{
{
myOperation = theOperation;
}
public override void ProcessSolid(
Solid theSolid)
{
aParam.SetOperation(myOperation);
aRecognizer.Perform(theSolid, aData);
var anIssueList = aDrillingAnalyzer.Perform(theSolid, aData);
var aMillingIssueList = aMillingAnalyzer.Perform(theSolid, aData);
CombineFeatureLists(anIssueList, aMillingIssueList);
{
aTurningIssueList = aTurningAnalyzer.Perform(theSolid, aData);
CombineFeatureLists(anIssueList, aTurningIssueList);
}
PrintIssues(anIssueList);
}
{
for (uint i = 0; i < theSecond.
Size(); ++i)
{
{
continue;
}
}
}
}
static void PrintSupportedOperations()
{
Console.WriteLine($"Supported operations:");
Console.WriteLine($" milling:\t CNC Machining Milling feature recognition");
Console.WriteLine($" turning:\t CNC Machining Lathe+Milling feature recognition");
}
{
var aProcessDictionary = new Dictionary<string, Machining_OperationType>()
{
};
bool aRes = aProcessDictionary.TryGetValue(theOperationStr, out aProcess);
if (aRes)
{
return aProcess;
}
}
{
FeatureGroupManager aManager = new FeatureGroupManager();
for (uint i = 0; i < theIssueList.
Size(); ++i)
{
{
aManager.AddFeature("Small Diameter Hole Issue(s)", "Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Deep Hole Issue(s)", "Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Non Standard Diameter Hole Issue(s)", "Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Non Standard Drill Point Angle Blind Hole Issue(s)", "Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Flat Bottom Hole Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Non Perpendicular Hole Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Intersecting Cavity Hole Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Partial Hole Issue(s)", "Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Non Standard Radius Milled Part Floor Fillet Issue(s)", "Floor Fillet(s)", true, anIssue);
}
{
aManager.AddFeature("Deep Pocket Issue(s)", "Pocket(s)", true, anIssue);
}
{
aManager.AddFeature("High Boss Issue(s)", "Boss(es)", true, anIssue);
}
{
aManager.AddFeature("Large Milled Part Issue(s)", "Part(s)", true, anIssue);
}
{
aManager.AddFeature("Small Radius Milled Part Internal Corner Issue(s)", "Internal Corner(s)", true, anIssue);
}
{
aManager.AddFeature("Non Perpendicular Milled Part Shape Issue(s)", "Shape(s)", true, anIssue);
}
{
aManager.AddFeature("Milled Part External Edge Fillet Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Inconsistent Radius Milled Part Floor Fillet Issue(s)", "Floor Fillet(s)", true, anIssue);
}
{
aManager.AddFeature("Narrow Region In Pocket Issue(s)", "Region(s)", true, anIssue);
}
{
aManager.AddFeature("Large Difference Regions Size In Pocket Issue(s)", "Region Size(s)", true, anIssue);
}
{
aManager.AddFeature("Small Wall Thickness Issue(s)", "Wall(s)", true, anIssue);
}
{
aManager.AddFeature("Small Distance Between Threaded Hole And Edge Issue(s)", "Threaded Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Undercut Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Irregular Turned Part Outer Diameter Profile Relief Issue(s)", "Outer Diameter Profile Relief(s)", true, anIssue);
}
{
aManager.AddFeature("Small Radius Turned Part Internal Corner Issue(s)", "Internal Corner(s)", true, anIssue);
}
{
aManager.AddFeature("Large Turned Part Issue(s)", "Part(s)", true, anIssue);
}
{
aManager.AddFeature("Long Slender Turned Part Issue(s)", "Part(s)", true, anIssue);
}
{
aManager.AddFeature("Small Depth Blind Bored Hole Relief Issue(s)", "Blind Bored Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Deep Bored Hole Issue(s)", "Bored Hole(s)", true, anIssue);
}
{
aManager.AddFeature("Square End Keyway Issue(s)", "", false, anIssue);
}
{
aManager.AddFeature("Non Symmetrical Axial Slot Issue(s)", "", false, anIssue);
}
}
Action<MTKBase_Feature> PrintFeatureParameters = theIssue =>
{
{
FeatureGroupManager.PrintFeatureParameter(
"expected min diameter", aSDHIssue.
ExpectedMinDiameter(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual diameter", aSDHIssue.
ActualDiameter(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max depth", aDHIssue.
ExpectedMaxDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual depth", aDHIssue.
ActualDepth(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"nearest standard diameter", aNSDHIssue.
NearestStandardDiameter(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual diameter", aNSDHIssue.
ActualDiameter(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"nearest standard angle", ToDegrees(aNSDPABHIssue.
NearestStandardAngle()),
"deg");
FeatureGroupManager.PrintFeatureParameter(
"actual angle", ToDegrees(aNSDPABHIssue.
ActualAngle()),
"deg");
}
{
}
{
}
{
}
{
FeatureGroupManager.PrintFeatureParameter(
"actual material percent", aPHIssue.
ActualMaterialPercent(),
"");
}
{
FeatureGroupManager.PrintFeatureParameter(
"nearest standard radius", aNSRMPFFIssue.
NearestStandardRadius(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual radius", aNSRMPFFIssue.
ActualRadius(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max depth", aDPIssue.
ExpectedMaxDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual depth", aDPIssue.
ActualDepth(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max height", aHBIssue.
ExpectedMaxHeight(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual height", aHBIssue.
ActualHeight(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max size (LxWxH)",
new Dimension(anExpectedSize.
Length(), anExpectedSize.
Width(), anExpectedSize.
Height()),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual size (LxWxH)",
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected min radius", aSRMPICIssue.
ExpectedMinRadius(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual radius", aSRMPICIssue.
ActualRadius(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"actual angle", ToDegrees(aNPMPSIssue.
ActualAngle()),
"deg");
}
{
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected radius", aIRMPFFIssue.
ExpectedRadius(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual radius", aIRMPFFIssue.
ActualRadius(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected minimum region size", aSMNRDIssue.
ExpectedMinRegionSize(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual region size", aSMNRDIssue.
ActualRegionSize(),
"mm");
}
{
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected min wall thickness", aSWTIssue.
ExpectedMinThickness(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual wall thickness", aSWTIssue.
ActualThickness(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter("expected min distance", anIssue.ExpectedMinDistance(), "mm");
FeatureGroupManager.PrintFeatureParameter("actual distance", anIssue.ActualDistance(), "mm");
}
{
}
{
FeatureGroupManager.PrintFeatureParameter(
FeatureGroupManager.PrintFeatureParameter(
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected min radius", aSRTPICIssue.
ExpectedMinRadius(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual radius", aSRTPICIssue.
ActualRadius(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max size (LxR)",
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual size (LxR)",
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected min length", aLSTPIssue.
ExpectedMaxLength(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual length", aLSTPIssue.
ActualLength(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual min diameter", aLSTPIssue.
ActualMinDiameter(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected min relief depth", aSDBBHRIssue.
ExpectedMinReliefDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual relief depth", aSDBBHRIssue.
ActualReliefDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual diameter", aSDBBHRIssue.
ActualDiameter(),
"mm");
}
{
FeatureGroupManager.PrintFeatureParameter(
"expected max depth", aDBHIssue.
ExpectedMaxDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual depth", aDBHIssue.
ActualDepth(),
"mm");
FeatureGroupManager.PrintFeatureParameter(
"actual diameter", aDBHIssue.
ActualDiameter(),
"mm");
}
{
}
{
}
};
aManager.Print("issues", PrintFeatureParameters);
}
static double ToDegrees(double theAngleRad)
{
return theAngleRad * 180 / Math.PI;
}
}
}
Provides an interface to run DFM Machining analysis.
Definition DFMMachining_Analyzer.hxx:42
Describes deep bored hole issue found during cnc machining turning design analysis.
Definition DFMMachining_DeepBoredHoleIssue.hxx:32
double ActualDiameter() const
Returns the actual diameter of the bored hole in mm .
Definition DFMMachining_DeepBoredHoleIssue.cxx:129
double ActualDepth() const
Returns the actual depth of the bored hole in mm .
Definition DFMMachining_DeepBoredHoleIssue.cxx:109
double ExpectedMaxDepth() const
Returns the expected maximum depth in mm .
Definition DFMMachining_DeepBoredHoleIssue.cxx:99
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM deep bored hole issue.
Definition DFMMachining_DeepBoredHoleIssue.cxx:164
Describes deep hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_DeepHoleIssue.hxx:28
double ExpectedMaxDepth() const
Returns the expected maximum hole depth in mm .
Definition DFMMachining_DeepHoleIssue.cxx:111
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining deep hole issue.
Definition DFMMachining_DeepHoleIssue.cxx:126
double ActualDepth() const
Returns the actual hole depth in mm .
Definition DFMMachining_DeepHoleIssue.cxx:120
Describes deep pocket issue found during cnc machining milling design analysis.
Definition DFMMachining_DeepPocketIssue.hxx:29
double ExpectedMaxDepth() const
Returns the expected maximum depth of the pocket in mm .
Definition DFMMachining_DeepPocketIssue.cxx:99
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM deep pocket issue.
Definition DFMMachining_DeepPocketIssue.cxx:141
double ActualDepth() const
Returns the actual depth of the pocket in mm .
Definition DFMMachining_DeepPocketIssue.cxx:108
Defines parameters used in cnc machining drilling design analysis.
Definition DFMMachining_DrillingAnalyzerParameters.hxx:30
Describes flat bottom hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_FlatBottomHoleIssue.hxx:28
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining flat bottom hole issue.
Definition DFMMachining_FlatBottomHoleIssue.cxx:66
Describes high boss issues found during cnc machining milling design analysis.
Definition DFMMachining_HighBossIssue.hxx:29
double ActualHeight() const
Return the high boss height.
Definition DFMMachining_HighBossIssue.cxx:115
double ExpectedMaxHeight() const
Return the expected maximum height of high boss.
Definition DFMMachining_HighBossIssue.cxx:103
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theIssue is a DFM high boss issue.
Definition DFMMachining_HighBossIssue.cxx:142
Describes inconsistent radius milled part floor fillet issue found during cnc machining milling desig...
Definition DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.hxx:32
double ActualRadius() const
Returns the actual floor fillet radius in mm .
Definition DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.cxx:79
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining inconsistent radius milled part floor fillet issue.
Definition DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.cxx:114
double ExpectedRadius() const
Returns the expected floor fillet radius in mm .
Definition DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.cxx:59
Describes intersecting cavity hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_IntersectingCavityHoleIssue.hxx:28
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining intersecting cavity hole issue.
Definition DFMMachining_IntersectingCavityHoleIssue.cxx:68
Describes irregular outer diameter profile relief found during cnc machining turning design analysis.
Definition DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.hxx:32
double ExpectedMaxFaceInclineAngle() const
Returns the expected maximum face incline angle in radians .
Definition DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.cxx:69
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM irregular outer diameter profile relief issue.
Definition DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.cxx:126
double ActualFaceInclineAngle() const
Returns the actual face incline angle in radians .
Definition DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.cxx:90
Described the Narrow Pocket maximum to minimum sizes ratio issue found during cnc machining milling d...
Definition DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.hxx:34
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM large difference regions size in pocket issue.
Definition DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.cxx:210
double ActualMaxRegionsMaxToMinSizeRatio() const
Returns the actual maximum to minimum size ratio.
Definition DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.cxx:128
double ExpectedMaxRegionsMaxToMinSizeRatio() const
Returns the expected maximum to minimum size ratio.
Definition DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.cxx:67
Describes large milled part issue found during cnc machining milling design analysis.
Definition DFMMachining_LargeMilledPartIssue.hxx:30
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining large milled part issue.
Definition DFMMachining_LargeMilledPartIssue.cxx:105
const DFMMachining_MilledPartSize & ExpectedMaxMilledPartSize() const
Returns the expected maximum milled part size.
Definition DFMMachining_LargeMilledPartIssue.cxx:71
const DFMMachining_MilledPartSize & ActualMilledPartSize() const
Returns the actual milled part size.
Definition DFMMachining_LargeMilledPartIssue.cxx:90
Describes large turned part issue found during cnc machining turning design analysis.
Definition DFMMachining_LargeTurnedPartIssue.hxx:30
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining large turned part issue.
Definition DFMMachining_LargeTurnedPartIssue.cxx:104
const DFMMachining_TurnedPartSize & ExpectedMaxTurnedPartSize() const
Returns the expected maximum turned part size.
Definition DFMMachining_LargeTurnedPartIssue.cxx:70
const DFMMachining_TurnedPartSize & ActualTurnedPartSize() const
Returns the actual turned part size.
Definition DFMMachining_LargeTurnedPartIssue.cxx:89
Describes long-slender turned part issue found during cnc machining turning design analysis.
Definition DFMMachining_LongSlenderTurnedPartIssue.hxx:28
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining long-slender turned part issue.
Definition DFMMachining_LongSlenderTurnedPartIssue.cxx:146
double ActualLength() const
Returns the actual length of a turned part in mm .
Definition DFMMachining_LongSlenderTurnedPartIssue.cxx:109
double ExpectedMaxLength() const
Returns the expected maximum length of a turned part in mm .
Definition DFMMachining_LongSlenderTurnedPartIssue.cxx:100
double ActualMinDiameter() const
Returns the actual minimum diameter of a turned part in mm .
Definition DFMMachining_LongSlenderTurnedPartIssue.cxx:129
Describes external edge fillet issue found during cnc machining milling design analysis.
Definition DFMMachining_MilledPartExternalEdgeFilletIssue.hxx:32
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM milled part external edge fillet issue.
Definition DFMMachining_MilledPartExternalEdgeFilletIssue.cxx:73
Describes milled part size used in cnc machining milling design analysis.
Definition DFMMachining_MilledPartSize.hxx:33
double Width() const
Returns width of milled part in mm .
Definition DFMMachining_MilledPartSize.cxx:58
double Length() const
Returns length of milled part in mm .
Definition DFMMachining_MilledPartSize.cxx:78
double Height() const
Returns height of milled part in mm .
Definition DFMMachining_MilledPartSize.cxx:98
Defines parameters used in cnc machining milling design analysis.
Definition DFMMachining_MillingAnalyzerParameters.hxx:35
Describes a base class for milling issues found during cnc machining milling design analysis.
Definition DFMMachining_MillingIssue.hxx:32
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theIssue is a DFM machining milling issue.
Definition DFMMachining_MillingIssue.cxx:37
Described the Narrow Pocket minimum size issue found during DFM analysis for Machining Milling operat...
Definition DFMMachining_NarrowRegionInPocketIssue.hxx:32
double ActualRegionSize() const
Returns the actual minimum size between features in a pocket.
Definition DFMMachining_NarrowRegionInPocketIssue.cxx:86
double ExpectedMinRegionSize() const
Returns the expected minimum distance between features in a pocket.
Definition DFMMachining_NarrowRegionInPocketIssue.cxx:66
static bool CompareType(const MTKBase_Feature &theFeature)
Returnstrue if theFeature is a DFM narrow regions distance issue.
Definition DFMMachining_NarrowRegionInPocketIssue.cxx:157
Describes non perpendicular hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_NonPerpendicularHoleIssue.hxx:28
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining non perpendicular hole issue.
Definition DFMMachining_NonPerpendicularHoleIssue.cxx:64
Describes non perpendicular milled part shape issue found during cnc machining milling design analysi...
Definition DFMMachining_NonPerpendicularMilledPartShapeIssue.hxx:32
double ActualAngle() const
Returns the actual milled part shape angle in radians .
Definition DFMMachining_NonPerpendicularMilledPartShapeIssue.cxx:57
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining non perpendicular milled part shape issue.
Definition DFMMachining_NonPerpendicularMilledPartShapeIssue.cxx:92
Describes non standard diameter hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_NonStandardDiameterHoleIssue.hxx:28
double NearestStandardDiameter() const
Returns the nearest standard diameter in mm .
Definition DFMMachining_NonStandardDiameterHoleIssue.cxx:72
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining non standard diameter hole issue.
Definition DFMMachining_NonStandardDiameterHoleIssue.cxx:98
double ActualDiameter() const
Returns the actual hole diameter in mm .
Definition DFMMachining_NonStandardDiameterHoleIssue.cxx:92
Describes non standard drill point angle blind hole issues found during cnc machining drilling design...
Definition DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.hxx:28
double NearestStandardAngle() const
Returns the nearest standard angle in radians .
Definition DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.cxx:72
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining non standard drill point angle blind hole issue.
Definition DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.cxx:109
double ActualAngle() const
Returns the actual angle in radians .
Definition DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.cxx:92
Describes non standard radius milled part floor fillet issue found during cnc machining milling desig...
Definition DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.hxx:32
double NearestStandardRadius() const
Returns the nearest standard milled part floor radius in mm .
Definition DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.cxx:59
double ActualRadius() const
Returns the actual milled part floor radius in mm .
Definition DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.cxx:79
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining non standard radius milled part floor fillet issue.
Definition DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.cxx:114
Describes asymmetric axial slot issue found during cnc machining turning design analysis.
Definition DFMMachining_NonSymmetricalAxialSlotIssue.hxx:28
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a non-symmetrical axial slot issue.
Definition DFMMachining_NonSymmetricalAxialSlotIssue.cxx:84
Describes partial hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_PartialHoleIssue.hxx:27
double ActualMaterialPercent() const
Returns the actual partial hole material percent (of the full hole).
Definition DFMMachining_PartialHoleIssue.cxx:99
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining partial hole issue.
Definition DFMMachining_PartialHoleIssue.cxx:116
double ExpectedMinMaterialPercent() const
Returns the expected material percent (of the full hole) for the partial hole.
Definition DFMMachining_PartialHoleIssue.cxx:78
Describes small depth blind bored hole relief found during cnc machining turning design analysis.
Definition DFMMachining_SmallDepthBlindBoredHoleReliefIssue.hxx:31
double ActualDiameter() const
Returns the actual diameter of the blind bored hole in mm .
Definition DFMMachining_SmallDepthBlindBoredHoleReliefIssue.cxx:135
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM small depth blind bored hole relief issue.
Definition DFMMachining_SmallDepthBlindBoredHoleReliefIssue.cxx:170
double ExpectedMinReliefDepth() const
Returns the expected minimum relief depth of the blind bored hole in mm .
Definition DFMMachining_SmallDepthBlindBoredHoleReliefIssue.cxx:105
double ActualReliefDepth() const
Returns the actual relief depth in mm .
Definition DFMMachining_SmallDepthBlindBoredHoleReliefIssue.cxx:115
Describes small diameter hole issues found during cnc machining drilling design analysis.
Definition DFMMachining_SmallDiameterHoleIssue.hxx:28
double ActualDiameter() const
Returns the actual hole diameter in mm .
Definition DFMMachining_SmallDiameterHoleIssue.cxx:99
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining small diameter hole issue.
Definition DFMMachining_SmallDiameterHoleIssue.cxx:105
double ExpectedMinDiameter() const
Returns the expected minimum diameter in mm .
Definition DFMMachining_SmallDiameterHoleIssue.cxx:79
Describes small distance between threaded hole and edge issue found during CNC Machining drilling des...
Definition DFMMachining_SmallDistanceBetweenThreadedHoleAndEdgeIssue.hxx:34
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining deep hole issue.
Definition DFMMachining_SmallDistanceBetweenThreadedHoleAndEdgeIssue.cxx:156
Describes internal corner radius issues found during cnc machining milling design analysis.
Definition DFMMachining_SmallRadiusMilledPartInternalCornerIssue.hxx:32
double ExpectedMinRadius() const
Returns the expected minimum internal corner radius in mm .
Definition DFMMachining_SmallRadiusMilledPartInternalCornerIssue.cxx:102
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theIssue is a DFM small radius milled part internal corner issue.
Definition DFMMachining_SmallRadiusMilledPartInternalCornerIssue.cxx:169
double ActualRadius() const
Returns the actual internal corner radius in mm .
Definition DFMMachining_SmallRadiusMilledPartInternalCornerIssue.cxx:112
Describes internal corner radius issues found during cnc machining turning design analysis.
Definition DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.hxx:32
double ActualRadius() const
Returns the actual internal corner radius of the turned part in mm .
Definition DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.cxx:87
double ExpectedMinRadius() const
Returns the expected minimum internal corner radius in mm .
Definition DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.cxx:67
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM small radius turned part internal corner issue.
Definition DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.cxx:124
Describes wall with small thickness issues found during cnc machining milling design analysis.
Definition DFMMachining_SmallWallThicknessIssue.hxx:32
double ActualThickness() const
Returns the actual thickness in mm .
Definition DFMMachining_SmallWallThicknessIssue.cxx:84
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM machining small wall thickness issue.
Definition DFMMachining_SmallWallThicknessIssue.cxx:122
double ExpectedMinThickness() const
Returns the expected minimum thickness in mm .
Definition DFMMachining_SmallWallThicknessIssue.cxx:64
Describes square form keyway issue found during cnc machining turning design analysis.
Definition DFMMachining_SquareEndKeywayIssue.hxx:29
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM square-end keyway issue.
Definition DFMMachining_SquareEndKeywayIssue.cxx:84
Describes turned part size used in cnc machining turning design analysis.
Definition DFMMachining_TurnedPartSize.hxx:32
double Radius() const
Returns radius of turned part in mm .
Definition DFMMachining_TurnedPartSize.cxx:61
double Length() const
Returns length of turned part in mm .
Definition DFMMachining_TurnedPartSize.cxx:81
Defines parameters used in cnc machining turning design analysis.
Definition DFMMachining_TurningAnalyzerParameters.hxx:34
Describes recessed or hidden areas inaccessible to standard end mills.
Definition DFMMachining_UndercutIssue.hxx:33
static bool CompareType(const MTKBase_Feature &theFeature)
Returns true if theFeature is a DFM undercut issue.
Definition DFMMachining_UndercutIssue.cxx:99
Defines a list of features.
Definition MTKBase_FeatureList.hxx:35
size_t Size() const
Returns the number of elements in the list.
Definition MTKBase_FeatureList.cxx:94
const MTKBase_Feature & Feature(size_t theIndex) const
Access specified element.
Definition MTKBase_FeatureList.cxx:75
void Append(const MTKBase_Feature &theFeature)
Adds a feature to the list.
Definition MTKBase_FeatureList.cxx:56
Defines data used in Machining analysis.
Definition Machining_Data.hxx:35
Provides an interface to recognizing machining features tool.
Definition Machining_FeatureRecognizer.hxx:44
Defines parameters used by Machining_FeatureRecognizer.
Definition Machining_FeatureRecognizerParameters.hxx:37
Defines a visitor that visits each unique element only once.
Definition ModelElementVisitor.hxx:90
Provides MTK data model.
Definition Model.hxx:39
Reads supported formats, see Import section.
Definition ModelReader.hxx:32
Machining_OperationType
Defines an operation type in machining.
Definition Machining_OperationType.hxx:27