The increased use of mobile devices in engineering processes has the interesting side effect of requiring the engineering applications to share data with other systems. An Internet search for open systems and interoperability returns a common quote that, “Interoperability is the glue that holds open systems together.” This interoperability may be simply for visualization, but as usage grows more sophisticated, a much richer data set is required. For example, an engineering mash-up sourcing data from several systems may need to access geometric data accurately while preserving design intent.
The process of good 3D data translation is more complex than simply converting from one format’s syntax to a second. Like translating a sentence from one language to another, it is not enough that the syntax is correct; the semantics behind the data must be right, too. In 3D modeling, understanding the semantics or the rules of the target system is of paramount importance if that model is to be useful for more than just display. High-quality geometry output is essential to preserve the data’s robustness and quality for use in modeling operations.
Without this, 3D models for components may have gaps between the edges or other irregularities due to differences in how modeling programs define edges, faces, and shapes. These irregularities can lead to an unusable model from which specifications for final products cannot be produced. High quality can be assured through convergence of numerical algorithms, for example by using the Newton-Raphson method, which finds successively better approximations to the roots (or zeroes) of a real-valued function. 3D InterOp provides access to a powerful set of functions and routines that can handle these tough modeling problems of stitching, geometry simplification, and gap tightening.
The Demands on Translation
Typically, 3D modelers are based on boundary representations, where the model is described by the boundary between its inside and outside. This boundary has both a topological definition(such as faces and edges) and a geometric definition (the shapes underlying the topology). While major modelers share this trait, their differences become apparent when looking at the details of these data structures. For example, do the surfaces have to intersect at the edges or can they have gaps, and if so, how large can that gap be? How close do two points have to be for the modeler to consider them coincident? What geometric continuity is required for a surface to be valid? For example, some modelers demand that surfaces intersect at edges, while others allow for gaps, and among those which allow for gaps, the sizes of those gaps can vary.
Different modelers have different tolerances for how close two points must be before considering them coincident, so data in one modeler that results in a continuous surface can result in a form filled with gaps and irregularities in another modeler. Geometric continuity determines whether a surface is considered valid by the modeler, but because of the differing standards, models which are valid in one modeler may not be valid in all modelers. This fact is why it is crucial that these kinds of rules are fully understood by the translator if the output model is to be of any use.
Even standards-based formats, which provide a very detailed description of the data, do not comprehend the rules of the target modeling system. The translator still has to do work to ensure that the model is valid. The process of modifying the data so that it conforms to the rules of the target system is called healing. This book explores some of the issues that arise during healing, the approach 3D InterOp takes to address them, and the user options available to control the process to achieve the desired output.
Units and Tolerances
One aspect of model translation that may appear trivial, but can have a large impact on the results is units. Although most geometric modelers are designed as being unitless, a CAD document usually interprets the data as having a specific model length unit that specifies the meaning of the dimensions of the geometric objects within that container. In other words, it is the document that dictates the actual lengths being represented by the unitless values used by the modeler. This value is, in turn, used to interpret tolerances of the model. The healing functions within 3D InterOp comprehend these differences and properly interprets the meaning of unit during model translation and healing.
Removing Tiny Features and Self-Intersections
Another issue that can arise during model translation is a geometry that is too small for the target system. These features need to be removed before healing and translation can begin.
A sliver face is defined as a feature whose distance between long edges is smaller than the specified tolerance, which have at least one short edge and, at most, three long edges.Specialized functions within 3D InterOp detect sliver faces and, optionally, replace them with tolerant edges. First, any short edges detected in the given entity are replaced with tolerant vertices. Then sliver faces are replaced by tolerant edges. The resulting tolerant edges are then considered for merging, with any remaining tolerant edges returned to the list of sliver faces to be worked.
Healing and Model Translation
The input file for a 3D model might contain bad data, which can result in corrupted information in the resulting translation. Specifically, due to the differences in modeling kernels, valid data created in one system may not be considered valid when imported into another kernel. In addition, the geometrical or topological errors might occur during the translation process due to differing interpretations of the data. To ensure precise and valid translation, 3D InterOp provides this option for repairing and healing the translated files. Repairing involves checking the translated file for corrupted data and fixing the invalid data. During translation, 3D InterOp’s healing corrects the differences in precision of source and target entities. 3D InterOp performs automatic healing in three areas with the goal of creating a model with high enough quality to be correctly interpreted by the modeling kernel and retain fidelity to the intent of the original model:
Modification of the topology of a body by removing duplicate and overlapping vertices, and splitting edges having large discontinuities in their curves so that their continuities follow the rules of the modeling kernel.
Modification of the geometry which involves reconstruction of self-intersecting and irregular curve geometry of edges, co-edges, and surface geometry of faces, as well as the trimming 6 and sub-setting of underlying surfaces of faces to conform to the rules of the target modeling kernel. 3D InterOp healing does not modify the geometry, ensuring that output conforms to the shape of the original.
Fixing of other invalid data in the body such as loop errors. The goal of the automatic healing with 3D InterOp is to create a model with sufficient quality to be correctly interpreted by the target modeling kernel while retaining the fidelity of geometric shapes in that data so they are as close as possible to the designer’s original intent.
The Healing Process
After the model is translated, users have the option of employing a healing workflow to further improve the quality of the model. Within the 3D ACIS Modeler, this healing process consists of three phases: stitching, geometry simplification, and gap tightening.
The first phase of healing is stitching or sewing separate faces of an entity together to create a sheet or solid body that is topologically complete. Stitching essentially involves replacing groups of coincident edges with a single edge, and groups of coincident vertices with a single vertex.
Imported models often contain surfaces that appear analytic when displayed on a screen, but are actually represented as splines. In the geometry simplification phase, such spline surfaces are converted to corresponding analytic forms wherever possible. Geometry simplification results in a reduction of data size and speed improvements in subsequent modeling operations.
This phase (also called geometry building) tightens the gaps (inaccuracies) in the input models by building geometry as necessary. In this phase, a series of geometric operations is performed to improve the precision of face, edge, and vertex data. Geometry building essentially removes the gaps between adjacent surfaces by recomputing intersections. How the gap is closed depends on the type of surface intersection. Gaps in geometry are filled by extending the adjoining surfaces and recomputing the surface-to-surface intersection.
For tangential intersections of analytic surfaces, the surfaces are snapped to each other using linear transformations, determined through a graph-based solver that is capable of handling cyclic tangencies. The nodes of the graph are the faces, and the arcs of the graph represent the tangent edges. Cycles in the graph are broken by giving preference to surfaces with higher curvature (for example, cylinders are snapped to planes rather than planes snapped to cylinders).
Lastly, tangential intersections of spline surfaces in which the intersection curves are along isoparametric lines of the surfaces are corrected via control point modification.
Accessing Healing Functions
While healing occurs automatically during translation, its scope is limited to improving the quality of the model sufficiently for an effective translation to occur. However, additional healing routines can be called by the OEM application to perform custom flows and routines, such as splitting edges and periodics, or constructing non-manifold topologies. These healing routines are accessible as a set of API functions delivered as a part of the 3D ACIS Modeler.
Healing impacts the performance of translation, increasing the overall time needed and is greatly influenced by the incoming quality of the model. One way to combat the performance hit is through multi-process part translation. With an assembly, 3D InterOp can translate and auto heal the constituent parts in parallel.
3D InterOp supports various formats, some of which introduce third-party dependencies which may not all be thread-safe. Therefore, a multi-process approach is required over multi-threaded part translation. Generally, the overhead incurred by using multi-processing over multi-threading is mostly in inter-process communication. Because 3D InterOp has little need for inter-process communication to translate parts, this overhead is low. The combination of these factors make 3D InterOp well suited to a multi-process implementation, thus greatly increasing translating and healing performance.
Sharing 3D models between different applications in open engineering processes means that the geometry is now the specification for many complex systems; therefore, accurate translation from one system to another becomes essential. But even if a model is accurately read,the output model has to conform to the rules of the target system. Key to obtaining such a conforming model is healing. Spatial provides a robust set of API functions that can heal the incoming model data so that it conforms to the rules of the target system, while adhering to the intent of the source.