07-03-2012 01:07 PM
It seems the information about if a point of a SEQUENTIAL_MESH is on the edge of a FACE is available in ACIS.
I found the api function api_get_facet_edge_points, which returns the positions of the edge points.
for (ENTITY* edge = 0; edge = edges.next(); )
int nepts = 0;
SPAposition* epts = 0;
// find Ids of positions
However, this forces me to identify the positions from the face SEQUENTIAL_MESH, since I would like to have the indices of the edge points.
Are there any high or level functions, which can tell me if a point in a SEQUENTIAL_MESH is on the face interior or edge (or start/end point of edge)?
07-03-2012 01:23 PM
I am one of the developers who maintains the faceter (among other things). Unfortunately, the information you want is avialable inside the faceting algorithm, but there is not a clean easy way to get the information out.
There is a way to get the information though, without doing a brute force search through the points. It involves writing a custom mesh manager. If you are not familar with MESH_MANAGERS, I can summarize roughly what they do. The MESH_MANAGER class is an interface for determining the format for facets. There are two virtual methods
virtual void announce_edge_indices( ENTITY* coedge, void*, ....) // e.g., if you derive from INDEXED_MESH_MANAGER, the void*'s here are pointers to polygon_vertex
which allow you to get the edge data for indexed-type mesh managers. If you are using a global mesh manager, the information is accessible in a different way. Unfortunately, it requires some expertise to figure out how to write a correct mesh manager.
I think it would be a good enhancement to put into acis to provide an easy to use interface for getting this information. I would be happy to help with this, but it requires a more prolonged discussion than I can put in a blog post. If you like, I can ask the blog administrator for you email and correspond directly on the matter.