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)
{
string aKey = MTKLicenseKey.Value();
if (!LicenseManager.Activate(aKey))
{
Console.WriteLine("Failed to activate Manufacturing Toolkit license.");
return 1;
}
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;
}
UTF16String aSource = new UTF16String(args[0]);
Model aModel = new Model();
ModelReader aReader = new ModelReader();
if (!aReader.Read(aSource, aModel))
{
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);
return 0;
}
}
}
Contains classes, and functions related to model processing.
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.