Home

Remove Faces
[Local Operations]

Collaboration diagram for Remove Faces:

Classes

class  rem_error_info
 Error entities from a remove face operation. More...

Functions

outcome api_initialize_face_removal ()
 Initializes the removal library.
outcome api_remove_faces (int const nface, FACE *face[], const SPAposition &box_low, const SPAposition &box_high, lop_options *pLopts, AcisOptions *ao=NULL)
 Removes an array of faces, growing the adjacent faces to fill the gap.
outcome api_remove_open_gap (EDGE *edge1, EDGE *edge2, const SPAposition &box_low, const SPAposition &box_high, lop_options *pLopts, AcisOptions *ao)
 Removes an open gap consisting of two open circuits, specified by the input edges, growing the adjacent faces to fill the gap.
outcome api_remove_open_gap (EDGE *edge, const SPAposition &box_low, const SPAposition &box_high, lop_options *pLopts, AcisOptions *ao)
 Removes an open gap, growing the adjacent faces to fill the gap.
outcome api_remove_wire_edges (int const nedge, EDGE **edge, const SPAposition &box_low, const SPAposition &box_high, lop_options *pLopts, AcisOptions *ao=NULL)
 Removes an array of EDGEs in a WIRE body by extending the adjacent EDGEs and intersecting to fill the gap.
outcome api_terminate_face_removal ()
 Terminates the removal library.

Function Documentation

outcome api_initialize_face_removal (  ) 

Initializes the removal library.



Effect: System routine

Journal: Not Available

include <rem_api.hxx>

outcome api_remove_faces ( int const   nface,
FACE face[],
const SPAposition box_low,
const SPAposition box_high,
lop_options pLopts,
AcisOptions ao = NULL 
)

Removes an array of faces, growing the adjacent faces to fill the gap.



Role: Curves and surfaces of edges and faces surrounding the removed faces, and which end in the user supplied box, are extended by a length approximately equal to twice the diagonal of the supplied box.

Similarly the intersections required to produce new edges and vertices, are limited by the size of the user supplied box.

Thus the user should supply a box likely to contain the changed faces. An overly large box will result in wasted computation. The default box is twice the body box of the original body.

Note that there may be no solution to the gap filling problem, or no solution using adjacent faces only. If the function detects these circumstances it issues an error and leaves the body unchanged.

Adjacent faces left infinite and with no loops will be deleted, example, the tops of cylindrical bosses having the cylindrical face removed.

If the faces to be removed are isolated from one another, they are removed in the order supplied.

The body shells and lumps are corrected at the end of the operation, should they have been split.

New shells of different solidity to the original shell are deleted, example, void shells made from a shell originally solid.

To have api_remove_faces heal gaps using adjacent and remote faces set option rem_use_rbi to TRUE, and api_remove_and_repair_body will be called.

Errors: Some of the following errors result in an ENTITY, which indicates where the error occurs, being highlighted.

The ENTITY type follows the error message below.

At least face must be supplied or error:
REM_NO_FACE "no faces supplied"

Non-duplicate valid faces must be supplied from the same shell or error:
REM_BAD_FACE "face(s) supplied invalid, duplicate or from different shells"

Body must be manifold and solid or errors:
REM_NON_MANIFOLD "non-manifold edge detected" or REM_FREE_EDGE "free edge detected"

All faces in a shell or lump may be removed, so long as another shell remains, or error:
REM_LAST_SHELL "only shell in body would be lost"

Box must be valid if supplied, or error:
REM_BAD_BOX "invalid box supplied"

Adjacent faces must be able to combine to fill the gap left by the removed faces or error:
REM_NO_SOLUTION "gap cannot be filled"

Internal Algorithmic problems produce the error:
REM_INTERNAL "internal error"


Limitations: Body must be manifold and solid.

Some growing faces may shrink if necessary, but not so far as their boundaries. The healing process must be entirely within the faces adjacent to those removed.

No checks are made to see if the faces grown intersect with other non growing faces in the model. Checks that the growing faces intersect with one another is not rigorously done between unconnected regions of growing faces.

If the geometry of the edges lateral to the face(s) being removed do not have a well-defined extension, this can cause the API to fail.

Effect: Changes model

Journal: Available

Parameters:
nface number of faces.
face faces being removed.
box_low start of intersection and extension box to be used.
box_high end of intersection and extension box to be used.
pLopts local operations options. NULL argument will set the default values.
ao ACIS options.

include <rem_api.hxx>

outcome api_remove_open_gap ( EDGE edge1,
EDGE edge2,
const SPAposition box_low,
const SPAposition box_high,
lop_options pLopts,
AcisOptions ao 
)

Removes an open gap consisting of two open circuits, specified by the input edges, growing the adjacent faces to fill the gap.



Role: Curves and surfaces of edges and faces surrounding the open gap, and which end in the user-supplied box, are extended by a length approximately equal to twice the diagonal of the supplied box.

Similarly the intersections required to produce new edges and vertices, are limited by the size of the user-supplied box.

Thus, the user should supply a box likely to contain the changed faces. An overly large box will result in wasted computation. The default box is twice the body box of the original body.

Note that there may be no solution to the gap filling problem, or no solution using adjacent faces only. If the function detects these circumstances, it issues an error and leaves the body unchanged.

Adjacent faces left infinite and with no loops will be deleted, for example, the tops of cylindrical bosses.

The body shells and lumps are corrected at the end of the operation, if they have been split.

New shells of different solidity to the original shell are deleted, for example, void shells made from a shell originally a solid.

Errors: Some of the following errors result in an ENTITY, which indicates where the error occurs:

The ENTITY type follows the error message below.

At least one edge must be supplied or error:
REM_NO_EDGE "no edges supplied"

Body must be manifold and moat around gap must exist or errors:
REM_NON_MANIFOLD "non-manifold edge detected" or REM_FREE_EDGE "free edge detected"

Box must be valid if supplied, or error:
REM_BAD_BOX "invalid box supplied"

Adjacent faces must be able to combine to fill the gap left by the removed faces or error:
REM_NO_SOLUTION "gap cannot be filled"

Internal Algorithmic problems produce the error:
REM_INTERNAL "internal error"


Limitations: Body must be manifold and a moat of faces around the gap must exist.

Some growing faces may shrink if necessary, but not so far as their boundaries. The healing process must be entirely within the faces adjacent to those removed.

No checks are made to see if the faces grown intersect with other non-growing faces in the model. Checks that the growing faces intersect with one another is not rigorously done between unconnected regions of growing faces.

If the geometry of the edges lateral to the gap being removed do not have a well-defined extension, this can cause the API to fail.

Effect: Changes model

Journal: Available

Parameters:
edge1 Specifies the edge which is part of the first open gap being removed.
edge2 Specifies the edge which is part of the second open gap being removed, can be NULL.
box_low Specifies the start of intersection and extension box to be used.
box_high Specifies the end of intersection and extension box to be used.
pLopts Specifies the local operations options. NULL argument will set the default values.
ao Specifies ACIS options such as versioning and journaling.

include <rem_api.hxx>

outcome api_remove_open_gap ( EDGE edge,
const SPAposition box_low,
const SPAposition box_high,
lop_options pLopts,
AcisOptions ao 
)

Removes an open gap, growing the adjacent faces to fill the gap.



Role: Curves and surfaces of edges and faces surrounding the open gap, and which end in the user-supplied box, are extended by a length approximately equal to twice the diagonal of the supplied box.

Similarly, the intersections required to produce new edges and vertices are limited by the size of the user-supplied box.

Thus, the user should supply a box likely to contain the changed faces. An overly large box will result in wasted computation. The default box is twice the body box of the original body.

Note that there may be no solution to the gap filling problem, or no solution using adjacent faces only. If the function detects these circumstances, it issues an error and leaves the body unchanged.

Adjacent faces left infinite and with no loops will be deleted.

The body shells and lumps are corrected at the end of the operation, if they have been split.

New shells of different solidity to the original shell are deleted, for example, void shells made from a shell originally a solid.

Errors: Some of the following errors result in an ENTITY, which indicates where the error occurs:

The ENTITY type follows the error message below.

At least one edge must be supplied or error:
REM_NO_EDGE "no edges supplied"

Body must be manifold and moat around gap must exist or errors:
REM_NON_MANIFOLD "non-manifold edge detected" or REM_FREE_EDGE "free edge detected"

Box must be valid if supplied, or error:
REM_BAD_BOX "invalid box supplied"

Adjacent faces must be able to combine to fill the gap left by the removed faces or error:
REM_NO_SOLUTION "gap cannot be filled"

Internal Algorithmic problems produce the error:
REM_INTERNAL "internal error"


Limitations:
Body must be manifold and a moat of faces around the gap must exist.

Some growing faces may shrink if necessary, but not so far as their boundaries. The healing process must be entirely within the faces adjacent to those removed.

No checks are made to see if the faces grown intersect with other non-growing faces in the model. Checks that the growing faces intersect with one another is not rigorously done between unconnected regions of growing faces.

If the geometry of the edges lateral to the gap being removed does not have a well-defined extension, this can cause the API to fail.

Effect: Changes model

Journal: Available

Parameters:
edge Specifies the edge which is part of the open gap that is being removed.
box_low Specifies the start of an intersection and extension box to be used.
box_high Specifies the end of an intersection and extension box to be used.
pLopts Specifies local operations options. NULL argument will set the default values.
ao Specifies ACIS options such as versioning and journaling.

include <rem_api.hxx>

outcome api_remove_wire_edges ( int const   nedge,
EDGE **  edge,
const SPAposition box_low,
const SPAposition box_high,
lop_options pLopts,
AcisOptions ao = NULL 
)

Removes an array of EDGEs in a WIRE body by extending the adjacent EDGEs and intersecting to fill the gap.



Role: The array of EDGEs supplied to the API must all belong to the same WIRE body but do not have to connect. The functionality of the API will remove the EDGEs from the WIRE body and extend the neighboring EDGEs (naturally) and intersect to close the gap. If no intersection exists, then the API will return "gap cannot be filled". The API, additionally, takes a bounding box as input. If an EDGE/EDGE intersection falls outside of the bounding box, then the API will, again, fail. If the API detects either of these circumstances it leaves the body unchanged. If the intersection involves two identical curves such as straights, then a VERTEX is placed between the two EDGEs based on an average distance.

The API works on both open and closed WIRES. If an open WIRE is given and the EDGE to be removed is either of the EDGEs making up the ends of the WIRE, the EDGE will simply be removed from the WIRE body. If the WIRE body contains only one EDGE and that EDGE is asked to be removed, the WIRE body will be deleted.

Errors: Some of the following errors result in EDGE(s) being highlighted, which indicates where the error occurs.

The ENTITY type follows the error message below.

At least one EDGE must be supplied:
REM_NO_EDGE "no EDGEs supplied"

WIRE body must be manifold:
REM_NO_SOLUTION "non-manifold edge detected"

Box must be valid if supplied:
REM_BAD_BOX "invalid box supplied"

Adjacent edges must be able to fill the gap left by the removed edges:
REM_NO_SOLUTION "gap cannot be filled"

Internal Algorithmic problems:
REM_INTERNAL "internal error"


Limitations: WIRE body must be manifold.

If the geometry of the EDGEs adjacent to the EDGE(s) being removed does not have a well-defined extension, this can cause the API to fail.

Effect: Changes model

Journal: Available

Parameters:
nedge number of edges.
edge edges being removed.
box_low start of intersection and extension box to be used.
box_high end of intersection and extension box to be used.
pLopts local operations options. NULL argument will set the default values.
ao ACIS options.

include <rem_api.hxx>

outcome api_terminate_face_removal (  ) 

Terminates the removal library.



Effect: System routine

Journal: Not Available

include <rem_api.hxx>