﻿ ACIS© Library Reference - Spatial Corp.

Collaboration diagram for Partial Booleans:
Declared at <boolapi.hxx>, SPAbool. More...

## Functions

outcome api_bool_make_intersection_graph (BODY *tool, BODY *blank, BODY *&graph, BOOL_TYPE type, const glue_options *glue_opts, BoolOptions *bool_opts, AcisOptions *ao=NULL)
This is a partial Boolean operation to compute and build the intersection graph between two bodies.
outcome api_bool_make_intersection_graph (BODY *tool, BODY *blank, BODY *&graph, BOOL_TYPE type=UNION, const glue_options *glue_opts=NULL, AcisOptions *ao=NULL)
This is a partial Boolean operation for computing and building the intersection graph between two bodies.
outcome api_bool_make_intersection_graph_wo_bool_end (BODY *tool, BODY *blank, BODY *&graph, BOOL_TYPE type, const glue_options *glue_opts, BoolOptions *bool_opts, AcisOptions *ao=NULL)
Returns a premature intersection graph between two bodies.
outcome api_bool_make_intersection_graph_wo_bool_end (BODY *tool, BODY *blank, BODY *&graph, BOOL_TYPE type=UNION, const glue_options *glue_opts=NULL, AcisOptions *ao=NULL)
Returns a premature intersection graph between two bodies.
outcome api_boolean_chop_complete (logical nonreg, BODY *&outside, BODY *&leftovers, NDBOOL_KEEP ndbool_keep, BODY *&result_body, BoolOptions *bool_opts, AcisOptions *ao=NULL)
This is a partial Boolean API function that completes a chop operation.
outcome api_boolean_chop_complete (logical nonreg, BODY *&outside, BODY *&leftovers=*(BODY **) NULL_REF, NDBOOL_KEEP ndbool_keep=NDBOOL_KEEP_NEITHER, BODY *&result_body=*(BODY **) NULL_REF, AcisOptions *ao=NULL)
This is a partial Boolean API function that completes a chop operation.
outcome api_boolean_complete (BOOL_TYPE op, NDBOOL_KEEP ndbool_keep, BODY *&result_body, BoolOptions *bool_opts, AcisOptions *opts)
This is a partial Boolean API function to finish a Boolean operation.
outcome api_boolean_complete (BOOL_TYPE op, NDBOOL_KEEP ndbool_keep=NDBOOL_KEEP_NEITHER, BODY *&result_body=*(BODY **) NULL_REF, AcisOptions *opts=NULL)
This is a partial Boolean API function to finish a Boolean operation.
outcome api_boolean_start (BODY *tool, BODY *blank, AcisOptions *ao=NULL)
This is a partial Boolean API function that initializes a Boolean operation.
outcome api_complete_intersection_graph (BODY *tbody, BODY *blank, BODY *&graph, AcisOptions *ao=NULL)
This is a partial Boolean operation to build the intersection graph between two bodies.
outcome api_fixup_intersection (int edge_knt, EDGE **edge_array, FACE **tfaces, AcisOptions *ao=NULL)
Fixes intersection records created by api_update_intersection.
outcome api_imprint_complete (BODY *tool, BODY *blank, AcisOptions *ao=NULL)
This is a partial Boolean API function to complete an imprint operation.
outcome api_imprint_stitch_complete (BODY *b1, BODY *b2, AcisOptions *ao=NULL)
This is a partial Boolean API function to imprint two bodies and stitch them along their face-face intersection curves.
outcome api_selectively_imprint (BODY *tool, ENTITY_LIST &tool_faces, BODY *blank, ENTITY_LIST &blank_faces, logical split_checking, ENTITY_LIST &intgraph_edges, BoolOptions *bool_opts, AcisOptions *ao=NULL)
Performs an imprint operation using a subset of faces from the tool body and a subset of faces from the blank body.
outcome api_selectively_imprint (BODY *tool, ENTITY_LIST &tool_faces, BODY *blank, ENTITY_LIST &blank_faces, logical split_checking=TRUE, ENTITY_LIST &intgraph_edges=*(ENTITY_LIST *) NULL_REF, AcisOptions *ao=NULL)
Performs an imprint operation using a subset of faces from the tool body and a subset of faces from the blank body.
outcome api_selectively_intersect (const int number_faces, FACE *tool_faces[], FACE *blank_faces[], BoolOptions *bool_opts, AcisOptions *ao=NULL)
This is a partial Boolean API function to intersect an array of faces of one body with an array of faces of another body.
outcome api_selectively_intersect (const int number_faces, FACE *tool_faces[], FACE *blank_faces[], AcisOptions *ao=NULL)
This is a partial Boolean API function to intersect an array of faces of one body with an array of faces of another body.
outcome api_slice_complete (BODY *tool, BODY *blank, SPAunit_vector const &normal, BODY *&graph, AcisOptions *ao=NULL)
This is a partial Boolean API function to complete a slice operation.
outcome api_update_intersection (FACE *tool_face, const SPAtransf &ttrans, FACE *blank_face, const SPAtransf &btrans, const int number_edges, EDGE *ssi_edges[], logical check_rels=TRUE, AcisOptions *ao=NULL)
This is a partial Boolean API function to create a surf_surf_int intersection structure to be used in place of an actual intersection.

## Detailed Description

Declared at <boolapi.hxx>, SPAbool.

## Function Documentation

 outcome api_bool_make_intersection_graph ( BODY * tool, BODY * blank, BODY *& graph, BOOL_TYPE type, const glue_options * glue_opts, BoolOptions * bool_opts, AcisOptions * ao = `NULL` )

This is a partial Boolean operation to compute and build the intersection graph between two bodies.

Role: This API function computes all intersections and builds a specialized wire body with Boolean attributes, representing the intersection graph between two bodies.

Notes:

• Do not remove the Boolean attributes attached to the entities. This API function is intended for use in conjunction with other partial Boolean API functions. Note that calling api_imprint_complete, api_boolean_complete, or api_boolean_chop_complete after this API function will delete the intersection graph, otherwise the caller is responsible for deleting it, as normal.
• The intersection graph is not designed to be used as a general wire body. To generate a wire body suitable for subsequent general use, the APIs api_slice and api_clean_wire are recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool or slicing body. blank (in) Blank body to be sliced. graph (out) Returned intersection graph. type (in) Type of Boolean operation (for glue only). Valid values are `UNION` and `SUBTRACTION`. glue_opts (in) Glue info and options. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning or journaling.

include <boolapi.hxx>

 outcome api_bool_make_intersection_graph ( BODY * tool, BODY * blank, BODY *& graph, BOOL_TYPE type = `UNION`, const glue_options * glue_opts = `NULL`, AcisOptions * ao = `NULL` )

This is a partial Boolean operation for computing and building the intersection graph between two bodies.

Role: This API function computes all intersections and builds a specialized wire body with Boolean attributes, representing the intersection graph between two bodies.

Notes:

• Do not remove the Boolean attributes attached to the entities. This API function is intended for use in conjunction with other partial Boolean API functions. Note that calling api_imprint_complete, api_boolean_complete, or api_boolean_chop_complete after this API function will delete the intersection graph; otherwise, the caller is responsible for deleting it, as normal.
• The intersection graph is not designed to be used as a general wire body. To generate a wire body suitable for subsequent general use, the APIs api_slice and api_clean_wire are recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool or slicing body. blank (in) Blank body to be sliced. graph (out) Returned intersection graph. type (in) Type of Boolean operation (for glue only). Valid values are `UNION` and `SUBTRACTION`. glue_opts (in) Glue info and options. ao (in) ACIS options such as versioning or journaling.

include <boolapi.hxx>

 outcome api_bool_make_intersection_graph_wo_bool_end ( BODY * tool, BODY * blank, BODY *& graph, BOOL_TYPE type, const glue_options * glue_opts, BoolOptions * bool_opts, AcisOptions * ao = `NULL` )

Returns a premature intersection graph between two bodies.

Role: This API function returns a premature version of the intersection graph returned by api_bool_make_intersection_graph. To complete the intersection graph a subsequent call to api_complete_intersection_graph is essential.

Note: Do not remove the Boolean attributes attached to the entities or other sub-state data. This function is not necessary in normal circumstances. Calling api_bool_make_intersection_graph is recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool or slicing body. blank (in) Blank body to be sliced. graph (out) Returned intersection graph. type (in) Type of Boolean operation (for glue only). Valid values are `UNION` and `SUBTRACTION`. glue_opts (in) Glue info and options. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning or journaling.

include <boolapi.hxx>

 outcome api_bool_make_intersection_graph_wo_bool_end ( BODY * tool, BODY * blank, BODY *& graph, BOOL_TYPE type = `UNION`, const glue_options * glue_opts = `NULL`, AcisOptions * ao = `NULL` )

Returns a premature intersection graph between two bodies.

Role: This API function returns a premature version of the intersection graph returned by api_bool_make_intersection_graph. To complete the intersection graph a subsequent call to api_complete_intersection_graph is essential.

Note: Do not remove the Boolean attributes attached to the entities or other sub-state data. This API function is not necessary in normal circumstances. Calling api_bool_make_intersection_graph is recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool or slicing body. blank (in) Blank body to be sliced. graph (out) Returned intersection graph. type (in) Type of Boolean operation (for glue only). Valid values are `UNION` and `SUBTRACTION`. glue_opts (in) Glue info and options. ao (in) ACIS options such as versioning or journaling.

include <boolapi.hxx>

 outcome api_boolean_chop_complete ( logical nonreg, BODY *& outside, BODY *& leftovers, NDBOOL_KEEP ndbool_keep, BODY *& result_body, BoolOptions * bool_opts, AcisOptions * ao = `NULL` )

This is a partial Boolean API function that completes a chop operation.

Role: This API function completes simultaneous Boolean intersect and subtract operations on two bodies (blank and tool). It is assumed that the intersection graph has already been computed using other partial Boolean APIs. The intersection result is returned via a modified blank body. A new body is created for the subtraction result and is returned via the pointer `outside`. The caller is responsible for passing in a `NULL` pointer through which the subtraction result will be returned.

If the tool body is an incomplete solid, any lumps of the blank which are not intersected by the faces of the tool, and which therefore cannot be classified as either inside or outside, will be returned in a newly created body via the pointer `leftovers`, if a `NULL` pointer is supplied. If `leftovers` is not supplied, any unclassified lumps will be deleted. The operation will fail if the tool body does not extend far enough to cut completely through any lump of the blank body with which its faces do intersect.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans. For additional information on chop operations refer to the Technical Article Basic Boolean Operations.

Effect: Changes model.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 nonreg (in) Set to `TRUE` when nonregularized results are required, `FALSE` otherwise. outside (out) Used to return the subtraction of the tool body from the blank body. leftovers (out) Used to return any unclassified lumps from the blank body, or `NULL` if none. ndbool_keep (in) Optional flag for non-destructive Booleans. Valid values are `NDBOOL_KEEP_NEITHER` (default), `NDBOOL_KEEP_BLANK`, `NDBOOL_KEEP_TOOL`, and `NDBOOL_KEEP_BOTH`. result_body (out) Used to return the intersection of the tool body with the blank body if performing a non-destructive Boolean. Default value is `*(BODY**)NULL_REF` if not required. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_boolean_chop_complete ( logical nonreg, BODY *& outside, BODY *& leftovers = `*(BODY **) NULL_REF`, NDBOOL_KEEP ndbool_keep = `NDBOOL_KEEP_NEITHER`, BODY *& result_body = `*(BODY **) NULL_REF`, AcisOptions * ao = `NULL` )

This is a partial Boolean API function that completes a chop operation.

Role: This API function completes simultaneous Boolean intersect and subtract operations on two bodies (blank and tool). It is assumed that the intersection graph has already been computed using other partial Boolean APIs. The intersection result is returned via a modified blank body. A new body is created for the subtraction result and is returned via the pointer `outside`. The caller is responsible for passing in a `NULL` pointer through which the subtraction result will be returned.

If the tool body is an incomplete solid, any lumps of the blank which are not intersected by the faces of the tool, and which therefore cannot be classified as either inside or outside, will be returned in a newly created body via the pointer `leftovers`, if a `NULL` pointer is supplied. If `leftovers` is not supplied, any unclassified lumps will be deleted. The operation will fail if the tool body does not extend far enough to cut completely through any lump of the blank body with which its faces do intersect.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans. For additional information on chop operations refer to the Technical Article Basic Boolean Operations.

Effect: Changes model.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 nonreg (in) Set to `TRUE` when nonregularized results are required, `FALSE` otherwise. outside (out) Used to return the subtraction of the tool body from the blank body. leftovers (out) Used to return any unclassified lumps from the blank body, or `NULL` if none. ndbool_keep (in) Optional flag for non-destructive Booleans. Valid values are `NDBOOL_KEEP_NEITHER` (default), `NDBOOL_KEEP_BLANK`, `NDBOOL_KEEP_TOOL`, and `NDBOOL_KEEP_BOTH`. result_body (out) Used to return the intersection of the tool body with the blank body if performing a non-destructive Boolean. Default value is `*(BODY**)NULL_REF` if not required. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_boolean_complete ( BOOL_TYPE op, NDBOOL_KEEP ndbool_keep, BODY *& result_body, BoolOptions * bool_opts, AcisOptions * opts )

This is a partial Boolean API function to finish a Boolean operation.

Role: This API function completes a Boolean operation using information from the current intersection graph. It is assumed that the intersection graph has already been computed using other partial Boolean API functions.

By default, the result is returned in a modified blank body and the tool body is deleted. However, the non-destructive Boolean argument `ndbool_keep`, allows the caller to preserve the blank body, tool body, or both bodies. If the blank body is to be preserved, a new body is created for the result and returned via the pointer `result_body`. The caller is responsible for passing in a NULL BODY pointer, through which the result body is returned.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Effect: Changes model.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 op (in) Type of Boolean operation. Valid values are `UNION`, `INTERSECTION`, `SUBTRACTION`, `NONREG_UNION`, `NONREG_INTERSECTION`, and `NONREG_SUBTRACTION`. ndbool_keep (in) Optional flag for non-destructive Booleans. Valid values are `NDBOOL_KEEP_NEITHER` (default), `NDBOOL_KEEP_BLANK`, `NDBOOL_KEEP_TOOL`, and `NDBOOL_KEEP_BOTH`. result_body (out) Used to return the result body if performing a non-destructive Boolean. Default value is `*(BODY**)NULL_REF` if not required. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_boolean_complete ( BOOL_TYPE op, NDBOOL_KEEP ndbool_keep = `NDBOOL_KEEP_NEITHER`, BODY *& result_body = `*(BODY **) NULL_REF`, AcisOptions * opts = `NULL` )

This is a partial Boolean API function to finish a Boolean operation.

Role: This API function completes a Boolean operation using information from the current intersection graph. It is assumed that the intersection graph has already been computed using other partial Boolean API functions.

By default, the result is returned in a modified blank body and the tool body is deleted. However, the non-destructive Boolean argument `ndbool_keep`, allows the caller to preserve the blank body, tool body, or both bodies. If the blank body is to be preserved, a new body is created for the result and returned via the pointer `result_body`. The caller is responsible for passing in a NULL BODY pointer, through which the result body is returned.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Effect: Changes model.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 op (in) Type of Boolean operation. Valid values are `UNION`, `INTERSECTION`, `SUBTRACTION`, `NONREG_UNION`, `NONREG_INTERSECTION`, and `NONREG_SUBTRACTION`. ndbool_keep (in) Optional flag for non-destructive Booleans. Valid values are `NDBOOL_KEEP_NEITHER` (default), `NDBOOL_KEEP_BLANK`, `NDBOOL_KEEP_TOOL`, and `NDBOOL_KEEP_BOTH`. result_body (out) Used to return the result body if performing a non-destructive Boolean. Default value is `*(BODY**)NULL_REF` if not required. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_boolean_start ( BODY * tool, BODY * blank, AcisOptions * ao = `NULL` )

This is a partial Boolean API function that initializes a Boolean operation.

Role: This API function performs the opening stage of a Boolean operation, initializing the operation to the point where face-face intersections can be performed to construct an intersection graph.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: System routine.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool body. blank (in) Blank body. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_complete_intersection_graph ( BODY * tbody, BODY * blank, BODY *& graph, AcisOptions * ao = `NULL` )

This is a partial Boolean operation to build the intersection graph between two bodies.

Role: This API function builds a specialized wire body containing extra coedges and Boolean attributes, representing the intersection graph between two bodies. It is assumed that the necessary intersections have already been performed using other partial Boolean API functions. To compute and build the intersection graph in one step, the API api_bool_make_intersection_graph is recommended.

Notes:

• Do not remove the Boolean attributes attached to the entities. This API function is intended for use in conjunction with other partial Boolean API functions. Note that calling api_imprint_complete, api_boolean_complete, or api_boolean_chop_complete after this API will delete the intersection graph, otherwise the caller is responsible for deleting it, as normal.
• The intersection graph is not designed to be used as a general wire body. To generate a wire body suitable for subsequent general use, the APIs api_slice_complete and api_clean_wire are recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tbody (in) Tool body. blank (in) Blank body. graph (out) Resulting intersection graph. ao ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_fixup_intersection ( int edge_knt, EDGE ** edge_array, FACE ** tfaces, AcisOptions * ao = `NULL` )

Fixes intersection records created by api_update_intersection.

Role: This API function should be called after calling api_update_intersection. This function is needed only when imprinting multiple edges on a face, and not during a typical Boolean operation.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tfaces[edge_knt]` is a NULL pointer or does not point to a FACE.

Effect: System routine.

Journal: Not Available
Product(s): 3D ACIS Modeler

Parameters:
 edge_knt (in) Array index of the relevant tool face. edge_array Obsolete argument. tfaces (in) Array of tool faces. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_imprint_complete ( BODY * tool, BODY * blank, AcisOptions * ao = `NULL` )

This is a partial Boolean API function to complete an imprint operation.

Role: This API function imprints the current intersection graph on both bodies. It is assumed that the intersection graph has already been computed using other partial Boolean API functions. Faces and edges may be split as a result.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer or does not point to a BODY.

Effect: Changes models.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in/out) Tool body. blank (in/out) Blank body. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_imprint_stitch_complete ( BODY * b1, BODY * b2, AcisOptions * ao = `NULL` )

This is a partial Boolean API function to imprint two bodies and stitch them along their face-face intersection curves.

Role: This API function imprints the current intersection graph on both bodies, and then combines the bodies, stitching them along the imprinted edges and vertices. It is assumed that the intersection graph has already been computed using other partial Boolean API functions. The result is returned in the body `b1` and the body `b2` is deleted.

Face normals and coedge senses must be compatible for stitching of sheet edges. Stitching of incompatible edges will be ignored. When vertices at the same location (within tolerance) are merged, they become non-manifold and contain all surrounding face groups.

This API function is designed to be faster than performing separate imprint and stitch operations because the imprinted edges are supplied directly to the stitch operation, thus avoiding the need to detect compatible edges. However, note that bodies that do not intersect or touch will be grouped into one body, whereas calling api_imprint_complete followed by api_stitch on such bodies would leave them separate.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors:
`b1` or `b2` is a NULL pointer or does not point to a BODY.
`b1` and `b2` are the same body.

Effect: Changes model.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 b1 (in/out) First body, modified by the operation. b2 (in) Second body, deleted by the operation. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_selectively_imprint ( BODY * tool, ENTITY_LIST & tool_faces, BODY * blank, ENTITY_LIST & blank_faces, logical split_checking, ENTITY_LIST & intgraph_edges, BoolOptions * bool_opts, AcisOptions * ao = `NULL` )

Performs an imprint operation using a subset of faces from the tool body and a subset of faces from the blank body.

Role: This API takes a list of faces from the tool body and a list of faces from the blank body. It intersects every face in `tool_faces` with every face in `blank_faces` and imprints the resulting intersection graph on both bodies.

If the argument `split_checking` is set to `TRUE`, checking will be performed to assure that all edges and vertices imprinted on the blank body contribute to the splitting of blank body faces. If they do not (e.g. there are dangling edges imprinted on the faces) then an exception will be thrown. If `split_checking` is set to `FALSE`, then all edges and vertices of the intersection graph will be imprinted, regardless of their contribution to face splitting.

Optionally, the API will return a list of the edges imprinted on the blank body via the argument `intgraph_edges`.

If annotations are turned on, `SPLIT_ANNOTATION`s and `IMPRINT_ANNOTATION`s will be added to the entities of the `blank` and `tool` bodies during the operation.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors:

• `NO_INTSCT`: No intersection edges were found between the specified subsets of faces.
• `IMPROPER_SPLIT`: Checking discovered that improper face splitting had occurred.

Effect: Changes models.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in/out) Tool body. tool_faces (in) Tool faces selected for imprinting. A NULL reference implies all faces should be used. blank (in/out) Blank body. blank_faces (in) Blank faces selected for imprinting and/or splitting. A NULL reference implies all faces should be used. split_checking (in) Set to `TRUE` to check if all edges and vertices created by the imprint contribute to the splitting of blank faces. intgraph_edges (out) Returned list of edges imprinted on the blank body. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_selectively_imprint ( BODY * tool, ENTITY_LIST & tool_faces, BODY * blank, ENTITY_LIST & blank_faces, logical split_checking = `TRUE`, ENTITY_LIST & intgraph_edges = `*(ENTITY_LIST *) NULL_REF`, AcisOptions * ao = `NULL` )

Performs an imprint operation using a subset of faces from the tool body and a subset of faces from the blank body.

Role: This API function takes a list of faces from the tool body and a list of faces from the blank body. It intersects every face in `tool_faces` with every face in `blank_faces` and imprints the resulting intersection graph on both bodies.

If the argument `split_checking` is set to `TRUE`, checking will be performed to assure that all edges and vertices imprinted on the blank body contribute to the splitting of blank body faces. If they do not (for example, there are dangling edges imprinted on the faces), then an exception will be thrown. If `split_checking` is set to `FALSE`, then all edges and vertices of the intersection graph will be imprinted, regardless of their contribution to face splitting.

Optionally, the API function will return a list of the edges imprinted on the blank body via the argument `intgraph_edges`.

If annotations are turned on, `SPLIT_ANNOTATION`s and `IMPRINT_ANNOTATION`s will be added to the entities of the `blank` and `tool` bodies during the operation.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors:

• `NO_INTSCT`: No intersection edges were found between the specified subsets of faces.
• `IMPROPER_SPLIT`: Checking discovered that improper face splitting had occurred.

Effect: Changes models.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in/out) Tool body. tool_faces (in) Tool faces selected for imprinting. A NULL reference implies all faces should be used. blank (in/out) Blank body. blank_faces (in) Blank faces selected for imprinting and/or splitting. A NULL reference implies all faces should be used. split_checking (in) Set to `TRUE` to check if all edges and vertices created by the imprint contribute to the splitting of blank faces. intgraph_edges (out) Returned list of edges imprinted on the blank body. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_selectively_intersect ( const int number_faces, FACE * tool_faces[], FACE * blank_faces[], BoolOptions * bool_opts, AcisOptions * ao = `NULL` )

This is a partial Boolean API function to intersect an array of faces of one body with an array of faces of another body.

Role: This API function intersects each face in array of faces from the tool body with the corresponding face in an array of faces from the blank body. Thus, both arrays must have the same length, equal to `number_faces`. The resulting intersections are appended to the current intersection graph.

Note: api_boolean_start must be called before using this APIfunction.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Effect: System routine.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 number_faces (in) Size of face arrays. tool_faces (in) Array of tool body faces. blank_faces (in) Array of blank body faces. bool_opts (in) Boolean options. Refer to BoolOptions for details. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_selectively_intersect ( const int number_faces, FACE * tool_faces[], FACE * blank_faces[], AcisOptions * ao = `NULL` )

This is a partial Boolean API function to intersect an array of faces of one body with an array of faces of another body.

Role: This API function intersects each face in array of faces from the tool body with the corresponding face in an array of faces from the blank body. Thus, both arrays must have the same length, equal to `number_faces`. The resulting intersections are appended to the current intersection graph.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Note: api_boolean_start must be called before using this API function.

Effect: System routine.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 number_faces (in) Size of face arrays. tool_faces (in) Array of tool body faces. blank_faces (in) Array of blank body faces. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_slice_complete ( BODY * tool, BODY * blank, SPAunit_vector const & normal, BODY *& graph, AcisOptions * ao = `NULL` )

This is a partial Boolean API function to complete a slice operation.

Role: This API function completes a slice operation. It is assumed that the necessary intersections have already been performed using other partial Boolean API functions. It returns a special wire body where each edge has two coedges. A normal vector can given in the special case when the tool body is a plane, causing this operation to sequence the resultant wires into non-overlapping loops of conventional sense. Generally, the normal vector should be set to `*(SPAunit_vector*)NULL_REF`.

Notes:

• The slice graph is not designed to be used as a general wire body. To generate a wire body suitable for subsequent general use, a call to api_clean_wire is necessary after calling this API.
• The slice graph is partially cleaned of its Boolean attributes. To obtain a full intersection graph, the API api_complete_intersection_graph is recommended.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: `tool` or `blank` is a NULL pointer.

Effect: Read-only on input. A new body is created.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool (in) Tool or slicing body. blank (in) Blank body to be sliced. normal (in) Normal about which wire edges at a vertex are to be ordered. graph (out) Returned slice graph. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>

 outcome api_update_intersection ( FACE * tool_face, const SPAtransf & ttrans, FACE * blank_face, const SPAtransf & btrans, const int number_edges, EDGE * ssi_edges[], logical check_rels = `TRUE`, AcisOptions * ao = `NULL` )

This is a partial Boolean API function to create a surf_surf_int intersection structure to be used in place of an actual intersection.

Role: This routine is passed a tool face and blank face together with an array of edges which represent the intersection of the two faces. A surf_surf_int structure is built using the geometry of these edges as the intersection of the two surfaces, thereby eliminating the need to intersect the faces themselves. To record this, an ATTRIB_FACEINT attribute is attached to the tool face and no intersection will be performed when these faces are to be intersected.

The logical argument `check_rels` specifies whether or not to check if the intersection edges really lie in the faces. This can be relatively expensive so may be avoided by passing `FALSE`, in which case the edge-face relationships are being guaranteed by the caller.

Coordinate Systems and Transformations: The intersection edges must be in the coordinate system of the blank body. For instance, if the blank body is in the world coordinate system (that is, the blank body does not have a transformation attached to it) then the intersection edges will also be specified in world coordinates. If the blank body does have a transformation attached to it, the intersection edges will be in the space of the untransformed blank body (that is, with respect to the world coordinate system the intersection edges will be transformed by the inverse of the transform on the blank body). The transformation associated with the tool face, `ttrans`, must be the transformation to convert from the coordinate system of the tool body into the coordinate system of the blank body. If Tt is the transformation on the tool body and Tb is the transformation on the blank body, then the transformation from tool coordinates to blank coordinates, is: Ttb = Tt * Tb-1. If both the tool and blank bodies are in the world coordinate system, then `ttrans` will be the identity transformation. The transformation associated with the blank face, `btrans`, must be the identity transformation.

Note: A call to this API function should be followed by a call to api_fixup_intersection when imprinting multiple edges on a face, but not during a typical Boolean operation.

For additional information on partial Boolean operations refer to the Technical Article Partial Booleans.

Errors: NULL pointer to tool or blank face.

Effect: System routine.

Journal: Available

Product(s): 3D ACIS Modeler

Parameters:
 tool_face (in) Tool face. ttrans (in) Tool body transform. blank_face (in) Blank face. btrans (in) Blank body transform. number_edges (in) Number of edges in `ssi_edges`. ssi_edges (in) Edges to make up the surf_surf_int structure. check_rels (in) Flag indicating whether or not to avoid checking the edge-face relationships. ao (in) ACIS options such as versioning and journaling.

include <boolapi.hxx>