- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Can I convert a mesh to ACIS ENTITYs?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
09-15-2009 08:26 AM
Every few months I receive the following question: "I have a mesh / set of facet data / triangle list and would like to bring this into my ACIS application. Can I make ACIS ENTITYs out of these triangles?"
The short answer is that ACIS has no functionality to convert a large set of mesh data into ENTITYs ACIS can use.
The long answer is that there are a couple possible workflows:
1) For small sets of data, the app can create one FACE per triangle, and then attempt to stitch these together. This is a very topologically-heavy approach.
2) For 2.5D apps (such as a fixed axis laser scanner), logic can be written to detect large areas of similar curvature and combine these triangles together. This approach can also then detect "hard" edges (over a certain threshold angle) and denote EDGEs. This approach requires considerably more time and effort, but could result in better data for the application.
One important note: Even with an advanced mesh processor, there is no guarantee that a mesh converted into ACIS ENTITYs will have the same topological information that the originating model had (eg: Take CAD model -> export mesh -> convert mesh back to CAD).
Hope this helps!
erik
Re: Can I convert a mesh to ACIS ENTITYs?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-08-2010 01:43 PM
We've had some luck with creating faces for each mesh polygon and then using stitching:
// List containing bodies output from api_stitch and api_stitch_nonmanifold.
// This is the complete set of bodies that belong to the caller.
// List will contain all the new bodies resulting from the API. This list will be a
// subset of ENTITY_LIST& output_bodies. This list is provided so that it is
// convenient to the caller to find out the new bodies that the caller will have to
// take ownership of (for example, the users may have to register new bodies in their
// application and/or do memory management for those bodies).
*/
if (result.ok()) {
ENTITY_LIST outputBodies, junk;
tolerant_stitch_options sopts;
STITCH_COIN_MODES mode = SPASTITCH_COIN_ERROR;
sopts.set_stch_coincident_face_handling_mode(mode)
PROCESS_ERROR_STRING(L"ConvertFacetsToEntity/api_s
if (outputBodies.count() != 1) pvOutEntity = NULL;
else pvOutEntity = outputBodies.first();
}
Seems to work but doesn't seem to scale well with # of polygons in the mesh.

