using shape_processor;
using System;
namespace 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 < 1 || args.Length > 2)
{
Console.WriteLine("Usage: " +
$"{System.Reflection.Assembly.GetExecutingAssembly().Location} <input_file> <input_resolution>, where:");
Console.WriteLine($" <input_file> is a name of the file to be read");
Console.WriteLine($" <input_resolution> is an optional argument that determine accuracy of wall thickness calculation." +
$" The larger the value, the higher the accuracy of the calculations," +
$" but greatly increase computation time and memory usage. Should be at least 100.");
return 1;
}
string aSource = args[0];
uint aResolution = 1000;
if (args.Length == 2)
{
aResolution = uint.Parse(args[1]);
}
if (aResolution < 100)
{
Console.WriteLine($"WARNING: Input resolution \"{aResolution}\" < 100. Will be used default resolution.\n");
aResolution = 1000;
}
Model aModel = new Model();
var aReader = new ModelReader();
if (!aReader.Read(new UTF16String(aSource), aModel)) {
Console.WriteLine($"Failed to read the file {aSource}");
return 1;
}
Console.WriteLine($"Model: {aModel.Name()}\n");
var aPartProcessor = new PartProcessor();
aPartProcessor.Resolution = aResolution;
var aVisitor = new ModelElementUniqueVisitor(aPartProcessor);
aModel.Accept(aVisitor);
return 0;
}
class PartProcessor : SolidProcessor
{
public PartProcessor()
{
myAnalyzer = new WallThickness_Analyzer();
}
public override void ProcessSolid(Solid theSolid)
{
var aWTData = myAnalyzer.Perform(theSolid, Resolution);
PrintWTData(aWTData);
}
void PrintWTData(WallThickness_Data theData)
{
if (!theData.IsEmpty())
{
Console.WriteLine($" Min thickness = {theData.MinThickness()} mm");
Console.WriteLine($" Max thickness = {theData.MaxThickness()} mm");
}
else
{
Console.WriteLine(" Failed to analyze the wall thickness of this entity.");
}
}
public uint Resolution { get; set; } = 1000;
private WallThickness_Analyzer myAnalyzer;
}
}
}
Defines classes, types, enums, and functions related to topological entities and scene graph elements...
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.