using System;
using cadex.Collections;
namespace mesh_generation
{
internal class Program
{
class FirstFaceGetter : ModelElementVoidVisitor
{
public override void Apply(Part thePart)
{
if (myFace == null)
{
ExploreBRep(thePart.Bodies());
}
}
public Face FirstFace()
{
return myFace;
}
private void ExploreBRep(BodyList theBodies)
{
foreach (var aBody in theBodies)
{
ShapeIterator aFaceIt = new ShapeIterator(aBody, ShapeType.Face);
if (aFaceIt.HasNext())
{
var aFirstShape = aFaceIt.Next();
var aFirstFace = Face.Cast(aFirstShape);
myFace = aFirstFace;
break;
}
}
}
Face myFace;
};
static void PrintFaceTriangulationInfo(Face theFace)
{
IndexedTriangleSet anITS = theFace.Triangulation();
Console.WriteLine("Face triangulation contains " + anITS.NumberOfTriangles() + " triangles.");
uint aNumberOfTrianglesToPrint = Math.Min(4, anITS.NumberOfTriangles());
for (uint i = 0; i < aNumberOfTrianglesToPrint; ++i)
{
Console.WriteLine("Triangle index " + i + " with vertices: ");
for (uint j = 0; j < 3; ++j)
{
var aVertexIndex = anITS.TriangleVertexIndex(i, j);
Console.Write(" Vertex index " + aVertexIndex + " with coords (");
var aPoint = anITS.TriangleVertex(i, j);
Console.Write("X: " + aPoint.X() + ", ");
Console.Write("Y: " + aPoint.Y() + ", ");
Console.WriteLine("Z: " + aPoint.Z() + ")");
}
}
}
static int Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: " + System.Reflection.Assembly.GetExecutingAssembly().Location + " <input_file>, where:");
Console.WriteLine(" <input_file> is a name of the file to be read");
return 1;
}
string aKey = MTKLicenseKey.Value();
if (!LicenseHelper.SetupRuntimeKey())
{
return 1;
}
try
{
LicenseManager.Activate(aKey);
}
catch (LicenseError theException)
{
LicenseManager.Deactivate();
Console.WriteLine("Failed to activate Manufacturing Toolkit license: " + theException.what());
return 1;
}
UTF16String aSource = new UTF16String(args[0]);
Model aModel = new Model();
ModelReader aReader = new ModelReader();
if (!aReader.Read(aSource, aModel))
{
LicenseManager.Deactivate();
Console.WriteLine("Failed to read the file " + aSource);
return 1;
}
MeshGeneratorParameters aParam = new MeshGeneratorParameters();
aParam.SetAngularDeflection(Math.PI * 10 / 180);
aParam.SetChordalDeflection(0.003);
MeshGenerator aMesher = new MeshGenerator(aParam);
aMesher.Generate(aModel);
FirstFaceGetter aVisitor = new FirstFaceGetter();
aModel.Accept(aVisitor);
Face aFace = aVisitor.FirstFace();
PrintFaceTriangulationInfo(aFace);
LicenseManager.Deactivate();
return 0;
}
}
}
Contains classes and functions related to model processing.
Defines classes, types, enums, and functions related to topological entities and scene graph elements...
The mtk namespace is intended to become the primary namespace for MTK and replace direct use of the c...
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.