Overview

The RoseMeshOptions class holds parameters used by the mesher to control the tradeoff between the accuracy of the mesh and the cost of generating and storing it.

Each parameter has a get and a set function. Some are absolute values, while others are relative values given as the fraction of the estimated bounding box diagonal.

AngUnit

RoseUnit getAngUnit() const;
void setAngUnit(RoseUnit u);

The AngUnit() value gives the unit to be used when the mesher needs to evaluate an angle measure, such as the semi-angle of a conical surface or the flange angle of an I-beam profile. This is usually found in context information from the source CAD data. The default value is degrees.

LenUnit

RoseUnit getLenUnit() const;
void setLenUnit(RoseUnit u);

The LenUnit() value gives the length unit that describes coordinate values in the mesh. This is usually found in context information from the source CAD data. The default value is millimeters.

MinFaceAbsolute

double getMinFaceAbsolute() const;
void setMinFaceAbsolute(double v);

The MinFaceAbsolute value is a length that controls the minimal size of a face to facet. The default value is zero, which means no faces will be filtered out.

If this is set to a positive value, any face with a bounding box diameter smaller than this length will be ignored. This may result in faster results and less data for visualization, but will the resulting mesh will have gaps. Do not use this if you need a watertight shell for geometric analysis.

MinFaceFraction

double getMinFaceFraction() const;
void setMinFaceFraction(double v);

The getMinFaceFraction() function is a ratio value that controls the minimal size of a face to facet. The default value is zero, which means no faces will be filtered out.

If this is set to a positive value, the diagonal of the estimated bounding box of the shell will be multiplied by this value to produce a length. This length will be used to filter faces in the same way as MinFaceAbsolute.

This is ratio value between zero and one. If you specify a value greater than one, all faces will be filtered.

SaveFaceInfo

int getSaveFaceInfo() const;
void setSaveFaceInfo(int yn)

The SaveFaceInfo() value controls whether surface and the UV polygon information created by the faceter is saved after the mesh is complete. If true (non-zero), the structure returned by RoseMesh::getFaceInfo() will contain this information. If zero, it will be removed once mesh generation is complete. The default value is true.

SaveFaceSolver

int getSaveFaceSolver() const;
void setSaveFaceSolver(int yn);

The SaveFaceSolver() value controls whether the surface solver created by the faceter is saved. The solver can contain a large amount of data so it is treated separately than the SaveFaceInfo value.

The solver will be preserved if both this value and SaveFaceInfo are true. The default value is false.

ToleranceAbsolute

double getToleranceAbsolute() const;
void setToleranceAbsolute(double v);

The ToleranceAbsolute value is the maximum distance that a point in a facet or edge may deviate from the original CAD surface or curve. A small value results in more facets, while larger value will result in fewer facets and faster rendering. Setting the tolerance too large may result in faces that cannot be faceted at all.

The default value of this parameter is zero. If it is zero when mesh creation begins, a value will be computed and assigned using the estimated bounding box and ToleranceFraction. The value will never be smaller than the Uncertainty.

After creating a mesh from CAD data, this will always contain the actual tolerance value used, whether pre-assigned or computed.

ToleranceFraction

double getToleranceFraction() const;
void setToleranceFraction(double v);

The ToleranceFraction is a ratio value that describes the maximum distance that a point in a facet or edge may deviate from the original CAD surface or curve. This is given as a fraction of the estimated bounding box diagonal, so it will result in a consistent quality for each shape regardless of its size.

This is used if ToleranceAbsolute is not set. The default value is 1/500.

ToleranceAngle

double getToleranceAngle(
    RoseUnit unit=roseunit_rad) const;
void setToleranceAngle(
    double v,
    unit=roseunit_rad);

double getToleranceCos() const;
void setToleranceCos();

The ToleranceAngle is the minimum angle between two adjacent facets segments. This is used to insure that the mesh will not contain sharp corners in areas of high curvature. For example, if there is a small hole in a large block, the hole could be rendered as an octogon, or even a square if we only consider the linear tolerance. The value is intermally stored as the cosine of the angle, but there is a method to get and set the value as either degrees or radians.

Note that this value interpreted as the angle of change as we traverse the surface. This means that if we pass across boundary between coplanar facets, the angle is zero.

The default value is .995, which is about 5.7 degrees.

Uncertainty

double getUncertainty() const;
void setUncertainty(double v);

The Uncertainty() value is the maximum distance that two points can differ by and still be considered the same. This is usually found in context information from the source CAD data of manifold boundary-rep solids. The default value is ROSE_MESH_UNCERTAINTY, which is defined as 1 x 10-8.