Synopsis
PDX_MSGT lpir_ProcessBody(long option, BODY *body_ent, int lint_model, MDA_PTR *lint_body_ptr, LPIR_ENT_FUNC *func)
Purpose
Process an ACIS BODY to a MDA ACIS_BODY
Description
This module will first do the following:
Copy the ACIS BODY, if the LPIR_COPY_BODY is set. The new ACIS BODY will then be processed.
Call the function: api_flatten_body. This will get rid of the subshells in the body.
Call the function: api_split_periodic_faces. This will split face that cross parametric seams of surfaces.
If the option: LPIR_APPLY_TRANS this function will apply the ACIS TRANSFORM to the ACIS BODY.
If the option: LPIR_CONV_SPL is set this function will do the following: .RS 3 .IP Call the function: api_convert_to_spline. This will convert all analytical faces to spline faces. .IP Call the function: trim_body_faces. This will trim the spline faces. .IP If the option: LPIR_CHECK_BODY is set the function will then call: api_check_entity. This will perform a ACIS check on the current body. .LP .RE
If the option: LPIR_CONV_SPL is not set this function will do the following: .RS 3 .IP If the option: LPIR_CHECK_BODY is set the function will then call: api_check_entity. This will perform a ACIS check on the current body. .LP .RE
This routine will then cycle the ACIS LUMP and or ACIS WIRE in the ACIS BODY and call lpir__ProcessLumpList or lpir__ProcessWireList accordingly. It will assemble a MDA ACIS_BODY in the ACIS MDA.
Input
option
LPIR_COPY_BODY
Copies the ACIS BODY to a new ACIS BODY. Use this option if you don't want the ACIS BODY to change. This option will cause the new ACIS BODY to be deleted.
LPIR_CONV_SPL
Convert ACIS surfaces to splines before processing.
LPIR_CHECK_BODY
Check body after call to api_split_periodic_faces, and api_convert_to_splines if the above option was also set.
LPIR_TRIM_NURB_SURF
Trim the nurb surface created when analyticals can not be handled by GDX. Only valid when LPIR_CONV_SPL is not set.
LPIR_NO_WIRE
Do not process wire bodies.
LPIR_APPLY_TRANS
Apply the transform to the ACIS BODY.
LPIR_NO_PCURVES
Do not map any pcurve from ACIS.
LPIR_NO_SPLIT_PERIODICS
Do not split the ACIS faces at periodics.
body_ent
Pointer to an ACIS BODY
lint_model
The ACIS MDA model to create the ACIS_BODY into.
func
Function to be called with each ACIS ENTITY type after it is read (or NULL if no function is to be called). If specified, this function must have declared as:
PDX_MSGT foo (MDA_PTR db_ptr, void *entity, ENTITY *acis_entity)
When called, the entity with database pointer db_ptr will be locked at the address specified by entity. Any changes made to the entity will be permanent. The function should return a value of MDA_NOERR.
Output
lint_body_ptr
Pointer to a MDA_PTR to store the new MDA ACIS_BODY
Return
LPIR_NOERR
Low level error return
.fi