Refer to the B-Rep Geometry Exploration Example.
base_explorer.cs
using System;
namespace brep_geometry
{
class BaseExplorer
{
public static void PrintElementary(
Conic theGeometry)
{
PrintDomain(theGeometry);
PrintParameter("Location", aLoc);
PrintParameter("Axis", anAxis);
PrintParameter("X Direction", aXDir);
PrintParameter("Y Direction", aYDir);
}
{
PrintDomain(theGeometry);
PrintParameter("Location", aLoc);
PrintParameter("Axis", anAxis);
PrintParameter("X Direction", aXDir);
PrintParameter("Y Direction", aYDir);
}
public static void PrintElementary2d(
Conic2d theGeometry)
{
PrintDomain(theGeometry);
Point2d aLoc = aPosition.
Location();
PrintParameter("Location", aLoc);
PrintParameter("X Direction", aXDir);
PrintParameter("Y Direction", aYDir);
}
public static void PrintRange(string aName, double aFirstParameter, double aLastParameter)
{
Console.Write("{0} = [{1}, {2}]; ", aName, aFirstParameter, aLastParameter);
}
public static void PrintDomain(
Curve theCurve)
{
PrintRange(
"Domain", theCurve.
UMin(), theCurve.
UMax());
}
public static void PrintDomain(
Curve2d theCurve)
{
PrintRange(
"Domain", theCurve.
UMin(), theCurve.
UMax());
}
public static void PrintDomain(
Surface theSurface)
{
PrintRange(
"Domain U", theSurface.
UMin(), theSurface.
UMax());
PrintRange(
"V", theSurface.
VMin(), theSurface.
VMax());
}
public static void PrintParameter(
Point theValue)
{
Console.Write(
"({0}, {1}); ", theValue.
X(), theValue.
Y());
}
public static void PrintParameter(
Direction theValue)
{
Console.Write(
"({0}, {1}, {2}); ", theValue.
X(), theValue.
Y(), theValue.
Z());
}
public static void PrintParameter(
Point2d theValue)
{
Console.Write(
"({0}, {1}); ", theValue.
X(), theValue.
Y());
}
public static void PrintParameter(
Direction2d theValue)
{
Console.Write(
"({0}, {1}); ", theValue.
X(), theValue.
Y());
}
public static void PrintParameter(double theValue)
{
Console.Write("{0}; ", theValue);
}
public static void PrintParameter(
string theName,
Point theValue)
{
Console.Write("{0} = ", theName);
PrintParameter(theValue);
}
public static void PrintParameter(
string theName,
Direction theValue)
{
Console.Write("{0} = ", theName);
PrintParameter(theValue);
}
public static void PrintParameter(string theName, double theValue)
{
Console.Write("{0} = ", theName);
PrintParameter(theValue);
}
public static void PrintParameter(
string theName,
Point2d theValue)
{
Console.Write("{0} = ", theName);
PrintParameter(theValue);
}
public static void PrintParameter(
string theName,
Direction2d theValue)
{
Console.Write("{0} = ", theName);
PrintParameter(theValue);
}
public static void PrintName(string theName)
{
Console.Write("{0}: ", theName);
}
public delegate void myPrint1dElement(int i);
public static void PrintCollection(string theName,
int theFinalIndex,
myPrint1dElement thePrintElement)
{
if (theName != null)
{
Console.Write("{0} = ", theName);
}
Console.Write("[");
for (int i = 1; i <= theFinalIndex; ++i)
{
if (i > 3)
{
Console.Write("...");
break;
}
thePrintElement(i);
}
Console.Write("]; ");
}
public delegate void myPrint2dElement(int i, int j);
public static void PrintCollection(string theName,
int theFinalIndex1,
int theFinalIndex2,
myPrint2dElement thePrintElement)
{
PrintCollection(theName, theFinalIndex1, (int i) =>
{
PrintCollection(null, theFinalIndex2, (int j) => { thePrintElement(i, j); });
});
}
{
Console.Write("Orientation = ");
switch (theOrientation)
{
default: Console.Write("Undefined"); break;
}
Console.Write("; ");
}
public void PrintTabulation()
{
for (uint i = 0; i < myNestingLevel; ++i)
{
Console.Write("--- ");
}
}
public uint myNestingLevel = 0;
}
}
Defines a right-hand or left-hand axis in 2D.
Definition Axis2d.hxx:35
Defines a right-handed or left-handed axis in 3D.
Definition Axis3d.hxx:34
const Direction & XDirection() const
Returns a X-direction of the axis.
Definition Axis3d.cxx:117
const Point & Location() const
Returns an origin point.
Definition Axis3d.cxx:102
const Direction & YDirection() const
Returns a Y-direction of the axis placement.
Definition Axis3d.cxx:125
const Direction & Axis() const
Returns a Z-direction of the axis.
Definition Axis3d.cxx:110
Base class for 2D conic curves.
Definition Conic2d.hxx:31
Axis2d Position() const
Returns an axis.
Definition Conic2d.cxx:59
Base class for 3D conic curves.
Definition Conic.hxx:31
Axis3d Position() const
Returns an axis.
Definition Conic.cxx:58
Base class for 2D curves.
Definition Curve2d.hxx:40
double UMin() const
Returns a minimum parameter of a definition domain.
Definition Curve2d.cxx:269
double UMax() const
Returns a maximum parameter of a definition domain.
Definition Curve2d.cxx:277
Base class for 3D curves.
Definition Curve.hxx:39
double UMax() const
Returns a maximum parameter of a definition domain.
Definition Curve.cxx:456
double UMin() const
Returns a minimum parameter of a definition domain.
Definition Curve.cxx:448
Defines a 2D Direction.
Definition Direction2d.hxx:32
Defines a 3D Direction.
Definition Direction.hxx:34
Base class for elementary surfaces.
Definition ElementarySurface.hxx:34
Geom::Axis3d Position() const
Returns a surface axis.
Definition ElementarySurface.cxx:55
Defines a 3D point.
Definition Point2d.hxx:34
Defines a 3D point.
Definition Point.hxx:35
Base class for geometrical surfaces.
Definition Surface.hxx:40
double VMax() const
Returns a maximum parameter of a definition domain in V direction.
Definition Surface.cxx:537
double UMax() const
Returns a maximum parameter of a definition domain in U direction.
Definition Surface.cxx:523
double UMin() const
Returns a minimum parameter of a definition domain in U direction.
Definition Surface.cxx:516
double VMin() const
Returns a minimum parameter of a definition domain in V direction.
Definition Surface.cxx:530
Contains classes, types, enums, and functions related to geometric entities.
Defines classes, types, enums, and functions related to topological entities and scene graph elements...
ShapeOrientation
Defines shape orientation.
Definition ShapeOrientation.hxx:27
curve_explorer.cs
using System;
namespace brep_geometry
{
class CurveExplorer : BaseExplorer
{
public static void PrintCurveInfo(
Curve theCurve)
{
{
PrintLine(
Line.Cast(theCurve));
break;
PrintCircle(
Circle.Cast(theCurve));
break;
PrintEllipse(
Ellipse.Cast(theCurve));
break;
break;
break;
break;
break;
break;
default:
break;
}
}
public static void PrintLine(
Line theLine)
{
PrintName("Line");
PrintDomain(theLine);
PrintParameter("Location", aLoc);
PrintParameter("Direction", aDir);
}
public static void PrintCircle(
Circle theCircle)
{
PrintName("Circle");
double aRadius = theCircle.
Radius();
PrintElementary(theCircle);
PrintParameter("Radius", aRadius);
}
public static void PrintEllipse(
Ellipse theEllipse)
{
PrintName("Ellipse");
PrintElementary(theEllipse);
PrintParameter("Major Radius", aMajorRadius);
PrintParameter("Minor Radius", aMinorRadius);
}
public static void PrintHyperbola(
Hyperbola theHyperbola)
{
PrintName("Hyperbola");
PrintElementary(theHyperbola);
PrintParameter("Major Radius", aMajorRadius);
PrintParameter("Minor Radius", aMinorRadius);
}
public static void PrintParabola(
Parabola theParabola)
{
PrintName("Parabola");
double aFocal = theParabola.
Focal();
PrintElementary(theParabola);
PrintParameter("Focal", aFocal);
}
public static void PrintBezierCurve(
BezierCurve theBezier)
{
PrintName("Bezier Curve");
int aDegree = theBezier.
Degree();
PrintDomain(theBezier);
PrintParameter("Degree", aDegree);
PrintParameter("Number Of Poles", aNumberOfPoles);
PrintCollection("Poles", aNumberOfPoles, (int i) =>
{
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfPoles, (int i) =>
{
double aWeight = theBezier.
Weight(i);
PrintParameter(aWeight);
});
}
public static void PrintBSplineCurve(
BSplineCurve theBSpline)
{
PrintName("BSpline Curve");
int aDegree = theBSpline.
Degree();
PrintDomain(theBSpline);
PrintParameter("Degree", aDegree);
PrintParameter("Number Of Knots", aNumberOfKnots);
PrintParameter("Number Of Poles", aNumberOfPoles);
PrintCollection("Knots", aNumberOfKnots, (int i) =>
{
double aKnot = theBSpline.
Knot(i);
PrintParameter(aKnot);
});
PrintCollection("Multiplicities", aNumberOfKnots, (int i) =>
{
PrintParameter(aMultiplicity);
});
PrintCollection("Poles", aNumberOfPoles, (int i) =>
{
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfPoles, (int i) =>
{
double aWeight = theBSpline.
Weight(i);
PrintParameter(aWeight);
});
}
public static void PrintOffsetCurve(
OffsetCurve theOffset)
{
PrintName("Offset Curve");
double anOffset = theOffset.
Offset();
PrintDomain(theOffset);
PrintParameter("Direction", aDir);
PrintParameter("Offset", anOffset);
Console.Write("Basis Curve = ");
}
}
}
Defines 3D B-Spline curve.
Definition BSplineCurve.hxx:31
int NumberOfKnots() const
Returns number of unique knots.
Definition BSplineCurve.cxx:230
double Knot(int theIndex) const
Returns a knot value.
Definition BSplineCurve.cxx:248
Point Pole(int theIndex) const
Returns a pole value.
Definition BSplineCurve.cxx:292
int NumberOfPoles() const
Returns number of poles.
Definition BSplineCurve.cxx:238
int Multiplicity(int theIndex) const
Returns a knot multiplicity.
Definition BSplineCurve.cxx:270
int Degree() const
Returns degree.
Definition BSplineCurve.cxx:222
double Weight(int theIndex) const
Returns a weight value.
Definition BSplineCurve.cxx:316
Defines 3D Bezier curve.
Definition BezierCurve.hxx:31
Point Pole(int theIndex) const
Returns a pole value.
Definition BezierCurve.cxx:156
int NumberOfPoles() const
Returns number of poles.
Definition BezierCurve.cxx:146
int Degree() const
Returns degree.
Definition BezierCurve.cxx:138
double Weight(int theIndex) const
Returns a weight value.
Definition BezierCurve.cxx:182
Defines 3D circle.
Definition Circle.hxx:29
double Radius() const
Returns radius.
Definition Circle.cxx:87
CurveType Type() const
Definition Curve.cxx:434
Defines 3D ellipse.
Definition Ellipse.hxx:29
double MinorRadius() const
Returns a minor radius.
Definition Ellipse.cxx:107
double MajorRadius() const
Returns a major radius.
Definition Ellipse.cxx:99
Defines 3D hyperbola.
Definition Hyperbola.hxx:31
double MinorRadius() const
Returns a minor radius.
Definition Hyperbola.cxx:104
double MajorRadius() const
Returns a major radius.
Definition Hyperbola.cxx:96
Defines 3D line.
Definition Line.hxx:31
Geom::Point Location() const
Returns an origin point.
Definition Line.cxx:109
Geom::Direction Direction() const
Returns a direction.
Definition Line.cxx:117
Defines 3D offset curve.
Definition OffsetCurve.hxx:29
double Offset() const
Returns offset value.
Definition OffsetCurve.cxx:114
Curve BasisCurve() const
Returns basis curve.
Definition OffsetCurve.cxx:106
Geom::Direction Direction() const
Returns reference direction.
Definition OffsetCurve.cxx:122
Defines 3D parabola.
Definition Parabola.hxx:29
double Focal() const
Returns a focal.
Definition Parabola.cxx:90
CurveType
Defines curve type.
Definition CurveType.hxx:27
pcurve_explorer.cs
using System;
namespace brep_geometry
{
class PCurveExplorer : BaseExplorer
{
public static void PrintPCurveInfo(
Curve2d theCurve)
{
{
PrintLine(
Line2d.Cast(theCurve));
break;
break;
break;
break;
break;
break;
break;
break;
default:
break;
}
}
public static void PrintLine(
Line2d theLine)
{
PrintName("Line 2d");
PrintDomain(theLine);
PrintParameter("Location", aLoc);
PrintParameter("Direction", aDir);
}
public static void PrintCircle(
Circle2d theCircle)
{
PrintName("Circle 2d");
double aRadius = theCircle.
Radius();
PrintElementary2d(theCircle);
PrintParameter("Radius", aRadius);
}
public static void PrintEllipse(
Ellipse2d theEllipse)
{
PrintName("Ellipse 2d");
PrintElementary2d(theEllipse);
PrintParameter("Major Radius", aMajorRadius);
PrintParameter("Minor Radius", aMinorRadius);
}
public static void PrintHyperbola(
Hyperbola2d theHyperbola)
{
PrintName("Hyperbola 2d");
PrintElementary2d(theHyperbola);
PrintParameter("Major Radius", aMajorRadius);
PrintParameter("Minor Radius", aMinorRadius);
}
public static void PrintParabola(
Parabola2d theParabola)
{
PrintName("Parabola 2d");
double aFocal = theParabola.
Focal();
PrintElementary2d(theParabola);
PrintParameter("Focal", aFocal);
}
{
PrintName("Bezier Curve 2d");
int aDegree = theBezier.
Degree();
PrintDomain(theBezier);
PrintParameter("Degree", aDegree);
PrintParameter("Number Of Poles", aNumberOfPoles);
PrintCollection("Poles", aNumberOfPoles, (int i) => {
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfPoles, (int i) => {
double aWeight = theBezier.
Weight(i);
PrintParameter(aWeight);
});
}
{
PrintName("BSpline Curve 2d");
int aDegree = theBSpline.
Degree();
PrintDomain(theBSpline);
PrintParameter("Degree", aDegree);
PrintParameter("Number Of Knots", aNumberOfKnots);
PrintParameter("Number Of Poles", aNumberOfPoles);
PrintCollection("Knots", aNumberOfKnots, (int i) =>
{
double aKnot = theBSpline.
Knot(i);
PrintParameter(aKnot);
});
PrintCollection("Multiplicities", aNumberOfKnots, (int i) => {
PrintParameter(aMultiplicity);
});
PrintCollection("Poles", aNumberOfPoles, (int i) => {
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfPoles, (int i) => {
double aWeight = theBSpline.
Weight(i);
PrintParameter(aWeight);
});
}
{
PrintName("Offset Curve 2d");
double anOffset = theOffset.
Offset();
PrintDomain(theOffset);
PrintParameter("Offset", anOffset);
Console.Write("Basis Curve = ");
}
}
}
Defines 2D B-Spline curve.
Definition BSplineCurve2d.hxx:31
double Weight(int theIndex) const
Returns a weight value.
Definition BSplineCurve2d.cxx:299
int NumberOfKnots() const
Returns number of unique knots.
Definition BSplineCurve2d.cxx:213
int Multiplicity(int theIndex) const
Returns a knot multiplicity.
Definition BSplineCurve2d.cxx:253
int NumberOfPoles() const
Returns number of poles.
Definition BSplineCurve2d.cxx:221
double Knot(int theIndex) const
Returns a knot value.
Definition BSplineCurve2d.cxx:231
int Degree() const
Returns degree.
Definition BSplineCurve2d.cxx:205
Point2d Pole(int theIndex) const
Returns a pole value.
Definition BSplineCurve2d.cxx:275
Defines 2D Bezier curve.
Definition BezierCurve2d.hxx:31
int NumberOfPoles() const
Returns number of poles.
Definition BezierCurve2d.cxx:131
double Weight(int theIndex) const
Returns a weight value.
Definition BezierCurve2d.cxx:165
Point2d Pole(int theIndex) const
Returns a pole value.
Definition BezierCurve2d.cxx:141
int Degree() const
Returns degree.
Definition BezierCurve2d.cxx:124
Defines 2D circle.
Definition Circle2d.hxx:31
double Radius() const
Returns radius.
Definition Circle2d.cxx:80
CurveType Type() const
Returns a curve type.
Definition Curve2d.cxx:261
Defines 2D ellipse.
Definition Ellipse2d.hxx:31
double MinorRadius() const
Returns a minor radius.
Definition Ellipse2d.cxx:95
double MajorRadius() const
Returns a major radius.
Definition Ellipse2d.cxx:87
Defines 2D hyperbola.
Definition Hyperbola2d.hxx:31
double MinorRadius() const
Returns a minor radius.
Definition Hyperbola2d.cxx:94
double MajorRadius() const
Returns a major radius.
Definition Hyperbola2d.cxx:86
Defines 2D line.
Definition Line2d.hxx:32
Point2d Location() const
Returns an origin point.
Definition Line2d.cxx:91
Direction2d Direction() const
Returns a direction.
Definition Line2d.cxx:99
Defines 2D offset curve.
Definition OffsetCurve2d.hxx:31
double Offset() const
Returns offset value.
Definition OffsetCurve2d.cxx:81
Curve2d BasisCurve() const
Returns basis curve.
Definition OffsetCurve2d.cxx:73
Defines 2D parabola.
Definition Parabola2d.hxx:31
double Focal() const
Returns a focal.
Definition Parabola2d.cxx:82
shape_explorer.cs
using cadex.Collections;
using System;
namespace brep_geometry
{
{
public override void Apply(
Part thePart)
{
Console.WriteLine(
"Part = \"{0}\"", thePart.
Name());
var aBodies = thePart.
Bodies();
if (!aBodies.IsEmpty)
{
ExploreBRep(aBodies);
}
}
private void ExploreBRep(BodyList theBodies)
{
for (int i = 0; i < theBodies.Count; ++i)
{
var aBody = theBodies[i];
Console.WriteLine("Body {0}: -type {1}", i, BodyType(aBody));
{
var aShape = j.Next();
ExploreShape(aShape);
}
}
}
private void ExploreShape(
Shape theShape)
{
{
}
++myBase.myNestingLevel;
while (aShapeIt.HasNext())
{
Shape aShape = aShapeIt.
Next();
PrintShape(aShape);
ExploreShape(aShape);
}
{
myCurrentFace = null;
}
--myBase.myNestingLevel;
}
private string BodyType(
Body theBody)
{
{
return "Sheet";
}
{
return "Solid";
}
{
return "Wireframe";
}
return "Undefined";
}
private void PrintShape(
Shape theShape)
{
myBase.PrintTabulation();
{
Console.Write("Solid");
break;
PrintShell(
Shell.
Cast(theShape));
break;
PrintWire(
Wire.
Cast(theShape));
break;
break;
break;
PrintVertex(
Vertex.
Cast(theShape));
break;
default: Console.Write("Undefined"); break;
}
Console.WriteLine();
}
private void PrintShell(
Shell theWire)
{
BaseExplorer.PrintName("Shell");
++myBase.myNestingLevel;
--myBase.myNestingLevel;
}
private void PrintWire(
Wire theWire)
{
BaseExplorer.PrintName("Wire");
++myBase.myNestingLevel;
--myBase.myNestingLevel;
}
private void PrintFace(
Face theFace)
{
BaseExplorer.PrintName("Face");
++myBase.myNestingLevel;
Console.WriteLine();
myBase.PrintTabulation();
BaseExplorer.PrintName("Surface");
SurfaceExplorer.PrintSurface(aSurface);
--myBase.myNestingLevel;
}
private void PrintEdge(
Edge theEdge)
{
BaseExplorer.PrintName("Edge");
++myBase.myNestingLevel;
{
Console.Write("Degenerated: ");
}
BaseExplorer.PrintParameter(
"Tolerance", theEdge.
Tolerance());
{
double aFirstParameter = 0, aLastParameter = 0;
Curve aCurve = theEdge.
Curve(out aFirstParameter, out aLastParameter);
Console.WriteLine();
myBase.PrintTabulation();
BaseExplorer.PrintName("Curve");
BaseExplorer.PrintRange("Edge Range", aFirstParameter, aLastParameter);
CurveExplorer.PrintCurveInfo(aCurve);
}
if (myCurrentFace != null)
{
double aFirstParameter2d = 0, aLastParameter2d = 0;
Curve2d aPCurve = theEdge.
PCurve(myCurrentFace, out aFirstParameter2d, out aLastParameter2d);
Console.WriteLine();
myBase.PrintTabulation();
BaseExplorer.PrintName("PCurve");
BaseExplorer.PrintRange("Edge Range", aFirstParameter2d, aLastParameter2d);
PCurveExplorer.PrintPCurveInfo(aPCurve);
}
--myBase.myNestingLevel;
}
private void PrintVertex(
Vertex theVertex)
{
BaseExplorer.PrintName("Vertex");
BaseExplorer.PrintOrientation(theVertex.
Orientation());
BaseExplorer.PrintParameter("Tolerance", aTolerance);
BaseExplorer.PrintParameter("Location", aLoc);
}
private BaseExplorer myBase = new BaseExplorer();
private Face myCurrentFace =
null;
}
}
Provides a base body class.
Definition Body.hxx:30
Defines an edge.
Definition Edge.hxx:33
Geom::Curve Curve(double &theFirstParameter, double &theLastParameter) const
Returns edge 3D curve and its limits.
Definition Edge.cxx:408
double Tolerance() const
Returns edge tolerance.
Definition Edge.cxx:682
Geom::Curve2d PCurve(const Face &theFace, double &theFirstParameter, double &theLastParameter) const
Returns edge p-curve on a face and its limits.
Definition Edge.cxx:642
bool IsDegenerated() const
Returns true if the edge is degenerated.
Definition Edge.cxx:689
static const Edge & Cast(const Shape &theShape)
Casts a base class object to Edge.
Definition Edge.cxx:714
Defines a topological face.
Definition Face.hxx:33
Geom::Surface Surface() const
Returns underlying surface.
Definition Face.cxx:324
static const Face & Cast(const Shape &theShape)
Cast operator.
Definition Face.cxx:355
UTF16String Name() const
Returns a name.
Definition ModelElement.cxx:55
Element visitor with empty implementation.
Definition ModelElementVisitor.hxx:64
Defines a leaf node in the scene graph hiearchy.
Definition Part.hxx:34
Base class of topological shapes.
Definition Shape.hxx:38
ShapeOrientation Orientation() const
Returns orientation flag.
Definition Shape.cxx:271
ShapeType Type() const
Returns a shape type. For a null object returns Undefined.
Definition Shape.cxx:259
Iterates over subshapes in a shape.
Definition ShapeIterator.hxx:32
Provides a sheet body composed of faces and shells.
Definition SheetBody.hxx:34
Defines a connected set of faces.
Definition Shell.hxx:32
Provides a solid body composed of solids.
Definition SolidBody.hxx:30
Defines topological vertex.
Definition Vertex.hxx:30
Geom::Point Point() const
Returns a 3D point this vertex resides at.
Definition Vertex.cxx:97
double Tolerance() const
Returns vertex tolerance.
Definition Vertex.cxx:117
Defines a connected set of edges.
Definition Wire.hxx:32
Provides a wireframe body composed of edges and wires.
Definition WireframeBody.hxx:34
ShapeType
Defines shape type.
Definition ShapeType.hxx:27
surface_explorer.cs
using System;
namespace brep_geometry
{
class SurfaceExplorer : BaseExplorer
{
public static void PrintSurface(
Surface theSurface)
{
switch (theSurface.
Type())
{
PrintPlane(
Plane.Cast(theSurface));
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
default:
break;
}
}
public static void PrintPlane(
Plane thePlane)
{
PrintName("Plane");
PrintElementary(thePlane);
}
{
PrintName("Cylinder");
double aRadius = theCylinder.
Radius();
PrintElementary(theCylinder);
PrintParameter("Radius", aRadius);
}
{
PrintName("Cone");
double aRadius = theCone.
Radius();
PrintElementary(theCone);
PrintParameter("Radius", aRadius);
PrintParameter("Semi-Angle", aSemiAngle);
}
{
PrintName("Sphere");
double aRadius = theSphere.
Radius();
PrintElementary(theSphere);
PrintParameter("Radius", aRadius);
}
{
PrintName("Torus");
PrintElementary(theTorus);
PrintParameter("Major Radius", aMajorRadius);
PrintParameter("Minor Radius", aMinorRadius);
}
{
PrintName("Linear Extrusion Surface");
Direction aDir = theLinearExtrusion.
Direction();
PrintDomain(theLinearExtrusion);
PrintParameter("Direction", aDir);
Console.Write("Basis Curve = ");
CurveExplorer.PrintCurveInfo(theLinearExtrusion.
BasisCurve());
}
{
PrintName("Revolution Surface");
PrintDomain(theRevolution);
PrintParameter("Location", aLoc);
PrintParameter("Direction", aDir);
Console.Write("Basis Curve = ");
CurveExplorer.PrintCurveInfo(theRevolution.BasisCurve());
}
{
PrintName("Bezier Surface");
int aUDegree = theBezier.
UDegree();
int aVDegree = theBezier.
VDegree();
PrintDomain(theBezier);
PrintParameter("U Degree", aUDegree);
PrintParameter("V Degree", aVDegree);
PrintParameter("Number Of U Poles", aNumberOfUPoles);
PrintParameter("Number Of V Poles", aNumberOfVPoles);
PrintCollection("Poles", aNumberOfUPoles, aNumberOfVPoles, (int i, int j) => {
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfUPoles, aNumberOfVPoles, (int i, int j) => {
double aWeight = theBezier.
Weight(i, j);
PrintParameter(aWeight);
});
}
{
PrintName("BSpline Surface");
int aUDegree = theBSpline.
UDegree();
int aVDegree = theBSpline.
VDegree();
PrintDomain(theBSpline);
PrintParameter("U Degree", aUDegree);
PrintParameter("V Degree", aVDegree);
PrintParameter("Number Of U Knots", aNumberOfUKnots);
PrintParameter("Number Of V Knots", aNumberOfVKnots);
PrintParameter("Number Of U Poles", aNumberOfUPoles);
PrintParameter("Number Of V Poles", aNumberOfVPoles);
PrintCollection("U Knots", aNumberOfUKnots, (int i) => {
double aKnot = theBSpline.
UKnot(i);
PrintParameter(aKnot);
});
PrintCollection("V Knots", aNumberOfVKnots, (int i) => {
double aKnot = theBSpline.
VKnot(i);
PrintParameter(aKnot);
});
PrintCollection("U Multiplicities", aNumberOfUKnots, (int i) => {
PrintParameter(aUMultiplicity);
});
PrintCollection("V Multiplicities", aNumberOfVKnots, (int i) => {
PrintParameter(aVMultiplicity);
});
PrintCollection("Poles", aNumberOfUPoles, aNumberOfVPoles, (int i, int j) => {
PrintParameter(aPole);
});
PrintCollection("Weights", aNumberOfUPoles, aNumberOfVPoles, (int i, int j) => {
double aWeight = theBSpline.
Weight(i, j);
PrintParameter(aWeight);
});
}
{
PrintName("Offset Surface");
double anOffset = theOffset.
Offset();
PrintDomain(theOffset);
PrintParameter("Offset", anOffset);
Console.Write("Basis Surface = ");
}
}
}
Defines a B-Spline surface.
Definition BSplineSurface.hxx:33
int NumberOfUKnots() const
Returns number of unique U-knots.
Definition BSplineSurface.cxx:434
int UMultiplicity(int theUIndex) const
Returns a U knot multiplicity.
Definition BSplineSurface.cxx:546
int UDegree() const
Returns U-degree.
Definition BSplineSurface.cxx:402
int VDegree() const
Returns V-degree.
Definition BSplineSurface.cxx:410
int NumberOfVPoles() const
Returns number of V-poles.
Definition BSplineSurface.cxx:426
double VKnot(int theVIndex) const
Returns a V-knot value.
Definition BSplineSurface.cxx:512
int VMultiplicity(int theVIndex) const
Returns a V knot multiplicity.
Definition BSplineSurface.cxx:556
double UKnot(int theUIndex) const
Returns a U-knot value.
Definition BSplineSurface.cxx:502
double Weight(int theUIndex, int theVIndex) const
Returns a weight value.
Definition BSplineSurface.cxx:477
int NumberOfUPoles() const
Returns number of U-poles.
Definition BSplineSurface.cxx:418
Point Pole(int theUIndex, int theVIndex) const
Returns a pole value.
Definition BSplineSurface.cxx:452
int NumberOfVKnots() const
Returns number of unique V-knots.
Definition BSplineSurface.cxx:442
Defines a Bezier surface.
Definition BezierSurface.hxx:32
int NumberOfUPoles() const
Returns number of U-poles.
Definition BezierSurface.cxx:214
double Weight(int theUIndex, int theVIndex) const
Returns a weight value.
Definition BezierSurface.cxx:256
Point Pole(int theUIndex, int theVIndex) const
Returns a pole value.
Definition BezierSurface.cxx:231
int UDegree() const
Returns degree.
Definition BezierSurface.cxx:200
int VDegree() const
Returns degree.
Definition BezierSurface.cxx:207
int NumberOfVPoles() const
Returns number of V-poles.
Definition BezierSurface.cxx:221
Defines a conical surface.
Definition ConicalSurface.hxx:29
double Radius() const
Returns reference radius.
Definition ConicalSurface.cxx:142
double SemiAngle() const
Returns semi-angle.
Definition ConicalSurface.cxx:134
Defines a cylindrical surface.
Definition CylindricalSurface.hxx:31
double Radius() const
Returns radius.
Definition CylindricalSurface.cxx:113
Defines an offset surface.
Definition OffsetSurface.hxx:29
Surface BasisSurface() const
Returns basis surface.
Definition OffsetSurface.cxx:88
double Offset() const
Returns offset value.
Definition OffsetSurface.cxx:96
Defines a plane.
Definition Plane.hxx:33
Defines a spherical surface.
Definition SphericalSurface.hxx:31
double Radius() const
Returns radius.
Definition SphericalSurface.cxx:117
SurfaceType Type() const
Returns a surface type.
Definition Surface.cxx:495
Defines a surface of linear extrusion.
Definition SurfaceOfLinearExtrusion.hxx:29
Defines a surface of revolution.
Definition SurfaceOfRevolution.hxx:31
Geom::Point Location() const
Returns an origin point of a rotation axis.
Definition SurfaceOfRevolution.cxx:119
Defines a toroidal surface.
Definition ToroidalSurface.hxx:31
double MajorRadius() const
Returns major radius.
Definition ToroidalSurface.cxx:124
double MinorRadius() const
Returns minor radius.
Definition ToroidalSurface.cxx:131
SurfaceType
Defines surface type.
Definition SurfaceType.hxx:27
Program.cs
using System;
namespace brep_geometry
{
class Program
{
static int Main(string[] args)
{
string aKey = MTKLicenseKey.Value();
if (!LicenseManager.Activate(aKey))
{
Console.WriteLine("Failed to activate CAD Exchanger 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 XML file to be read");
return 1;
}
string aSource = args[0];
{
Console.WriteLine("Failed to read the file " + aSource);
return 1;
}
ShapeExplorer aVisitor = new ShapeExplorer();
return 0;
}
}
}
Provides MTK data model.
Definition Model.hxx:40
void Accept(ModelElementVisitor &theVisitor) const
Accepts a visitor.
Definition Model.cxx:274
Reads STEP and native format.
Definition ModelReader.hxx:33
Defines a Unicode (UTF-16) string wrapping a standard string.
Definition UTF16String.hxx:30
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.
Definition LicenseManager_LicenseError.hxx:30