|
Classes | |
| class | check_bad_fitol_details |
| A class for returning details of a check status error. More... | |
| class | check_high_curvature_details |
| More... | |
| class | check_self_intersection_details |
| A class for returning details of a check status error. More... | |
| class | check_status_details |
| A class for returning details of a check status error. More... | |
| class | check_status_list |
| Implements the list of return codes for status checking. More... | |
| class | ERROR_ENTITY |
| Stores information about improper intersections in an ENTITY. More... | |
| class | insanity_data |
| This class holds information about problems (insanities) found when checking an ACIS model. More... | |
| class | insanity_list |
| Implements a linked list of problems (insanities) that are found when checking a model. More... | |
| class | insanity_sub_category |
| This class allows the representation of different sub-categories of entity insanity. More... | |
Typedefs | |
| typedef int(* | primary_fail_fn )(ENTITY *ent, const SPAtransf *trans, insanity_list *list) |
| Insanity data primary fail function. | |
| typedef insanity_list *(* | subsequent_fail_fn )(ENTITY *ent) |
| Insanity data secondary fail function. | |
Enumerations | |
| enum | check_details_type |
| Enumeration of the different check details types. More... | |
| enum | check_status |
| Curve and surface check codes. More... | |
Functions | |
| outcome | api_check_cur_smoothness (EDGE *given_edge, curve_irregularities *&cirr, int &no_pts, AcisOptions *ao=NULL) |
Analyzes a curve for C1 or G1 discontinuities. | |
| outcome | api_check_edge (EDGE *edge, insanity_list *&ilist, AcisOptions *ao=NULL) |
| Checks an edge's underlying curve for various conditions that could cause errors in other ACIS operations. | |
| outcome | api_check_edge (EDGE *edge, check_status_list *&list, AcisOptions *ao=NULL) |
| Checks edge geometry for various conditions that could cause errors in other ACIS operations. | |
| outcome | api_check_entity (const ENTITY *given_entity, insanity_list *&list, AcisOptions *ao=NULL) |
| Calls the ACIS Checker. | |
| outcome | api_check_face (FACE *face, insanity_list *&ilist, AcisOptions *ao=NULL) |
| Checks a face's underlying surface for various conditions that could cause errors in other ACIS operations. | |
| outcome | api_check_face (FACE *face, check_status_list *&list, AcisOptions *ao=NULL) |
| Checks face geometry for various conditions that could cause errors in other ACIS operations. | |
| outcome | api_check_face_loops (FACE *in_face, int ai_info[5]=NULL, AcisOptions *ao=NULL) |
| Checks a face to see that it contains valid loops. | |
| outcome | api_check_wire_self_inters (BODY *body, AcisOptions *ao=NULL) |
| Evaluates a wire BODY for self intersections. | |
| outcome | api_check_wire_self_inters (WIRE *wire, AcisOptions *ao=NULL) |
| Evaluates a WIRE for self intersections. | |
| outcome | api_fix_check_problems (const insanity_list *problems_to_fix, insanity_list *&problems_fixed, insanity_list *&problems_not_fixed, AcisOptions *ao=NULL) |
| Attempts to fix some check problems in model data. | |
| void | convert_insanity_list_into_error_info_list (const insanity_list *ilist, error_info_list &target_list) |
Adds all the insanity_data objects from the insanity_list *ilist into the given error_info_list &target_list object. | |
Declared at <intrapi.hxx>, SPAintr.
Declared at <insanity_tbl.hxx>, SPAintr.
Declared at <insanity_list.hxx>, SPAintr.
| typedef int(* primary_fail_fn)(ENTITY *ent, const SPAtransf *trans, insanity_list *list) |
Insanity data primary fail function.
| ent | entity to check. | |
| trans | transform. | |
| list | insanity list. |
include <insanity_list.hxx>
| typedef insanity_list*(* subsequent_fail_fn)(ENTITY *ent) |
| enum check_details_type |
Enumeration of the different check details types.
| high_curvature_details | Details of a point or region of high curvature. | |
| bad_fitol_details | Details of a fit tolerance found to be smaller than the maximum gap between an object and its approximation. | |
| self_intersection_details | Details of a point of self intersection. |
include <chk_stat.hxx>
| enum check_status |
Curve and surface check codes.
| check_irregular | Curve/surface is very scrunched up/twisted. (Subdivision fails.) | |
| check_undefined | A vital part of the data is missing. | |
| check_inconsistent | Data is conflicting. | |
| check_self_intersects | Curve/surface self intersects. | |
| check_bad_closure | The curve/surface is marked as closed and in reality is open, or viceversa. | |
| check_bs3_null | Curve/surface does not contain a bs3_curve/surface | |
| check_bs3_coi_verts | Either adjacent control vertices are coincident or, for degenerate surfaces, the control vertices that should be coincident are not. | |
| check_bad_degeneracies | The degenerate edges on a surface make it untreatable. | |
| check_untreatable_singularity. | This code is not returned for curves.A singularity on the surface is beyond the scope of the singularity currently processing. This code is not returned for curves. | |
| check_non_G0 | Curve/surface is not G0 continuous. | |
| check_non_G1 | Curve/surface is not G1 continuous. Surfaces are still G0. | |
| check_non_G2 | Curve/surface is not G2 continuous, though it is G0 and G1. | |
| check_non_C1 | Curve/surface is not C1 continous, though is G1. | |
| check_bad_vertex_blend | The boundaries of a vertex blend are illegal. | |
| check_null_curve | The curve underlying the COEDGE's EDGE is NULL. | |
| check_long_enough | The pcurve is not long enough to describe the EDGE. | |
| check_within_face_range | Part or all of the pcurve lies outside of the FACE range on the surface. | |
| check_knots_on_curve | Some of the pcurve knots do not lie on the true curve to within SPAresabs. | |
| check_tangents_at_knots | The pcurve tangent vectors at the knots are not within SPAresnor of the curve tangents. | |
| check_hull_angles | The hull turns sharply, possibly due to kinks. | |
| check_not_on_surfs | Curve does not lie on one or more of its defining surfaces to within SPAresabs. | |
| check_bad_approximation | The surface approximation is not within tolerance of the surface. | |
| check_evaluation_failure | A curve evaluation failed. | |
| check_subset_range | Subset range is inconsistent. | |
| check_missing_disc_info | Some discontinuities are not marked. | |
| check_missing_g1_disc_info | Some G1 discontinuities are not marked. | |
| check_missing_g2_disc_info | Some G2 discontinuities are not marked. | |
| check_bad_rb_blend | A rolling-ball blend is illegal. | |
| check_overclamped | The approximation has knots with multiplicity greater than its degree. | |
| check_bad_fitol | The fit tolerance of the curve or surface is too small. | |
| check_unknown | Status is unknown. |
include <chk_stat.hxx>
| outcome api_check_cur_smoothness | ( | EDGE * | given_edge, | |
| curve_irregularities *& | cirr, | |||
| int & | no_pts, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Analyzes a curve for C1 or G1 discontinuities.
Role: Given an edge, this function examines the underlying curve and returns a list of parametric space points where there are C1/G1 discontinuities. The points are returned in a class called curve_irregularities.
The discontinuities can be of the following types:
NULL or does not point to an EDGE. intcurves because other curves are always continuous. | given_edge | edge to examine. | |
| cirr | pointer to list of irregularities returned. | |
| no_pts | number of irregularities returned. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_edge | ( | EDGE * | edge, | |
| insanity_list *& | ilist, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Checks an edge's underlying curve for various conditions that could cause errors in other ACIS operations.
Role: This API checks the curve underlying the given edge for validitiy. No checking of the edge's coedges or vertices is performed - for full checking of an EDGE entity, use api_check_entity .
This API is expected always to succeed - it should never return an error outcome. A new insanity_list instance is created by the API, and a reference to this instance is returned in the ilist parameter. If no problems are found with the edge's curve, then the insanity_list instance will contain no errors, but it will still be created. Destruction of the returned insanity_list is the caller's responsibility.
In most cases, the insanity ids returned by api_check_edge have the same meaning as when they are returned by api_check_entity . In the case of continuity problems (non-G1, non-G2 etc.), however, the meanings are subtly different, because api_check_edge checks an edge's curve in isolation from the edge itself. It may be that the curve underlying the edge is (say) non-G1, but all of the discontinuities lie outside of the range of the edge. In this case, the edge is G1 continuous, and api_check_entity will not report a non-G1 warning, but the edge's curve is not G1 continuous, so api_check_edge will report a non-G1 warning.
Effect: Read-only
Journal: Not Available
| edge | The edge for which the curve geometry is to be checked. | |
| ilist | Output: list of problems with edge's curve. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_edge | ( | EDGE * | edge, | |
| check_status_list *& | list, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Checks edge geometry for various conditions that could cause errors in other ACIS operations.
Role: This API checks whether a edge defined by a bs3_curve is self-intersecting, is twisted, has too much oscillation, has degenerate edges, or is not G0, G1, or G2 continuous. The function list->status can be checked for the results. If no errors are found, the NULL list is returned. For example:
while(list != NULL){
switch(list->status()){
case check_irregular:
sys_error(CURVE_IRREGULAR);
break;
case check_self_intersects:
sys_error(CURVE_SELF_INTER);
break;
case check_bad_closure:
sys_error(CURVE_BAD_CLOSURE);
break;
case check_bs3_null:
sys_error(BS3_CURVE_NULL);
break;
case check_bs3_coi_verts:
sys_error(BS3_COI_VERTS);
break;
case check_bad_degeneracies:
// This case never returned for curves
break;
case check_untreatable_singularity:
// This case never returned for curves
break;
case check_non_G0:
sys_error(CURVE_NON_G0);
break;
case check_non_G1:
sys_error(CURVE_NON_G1);
break;
case check_non_G2:
sys_error(CURVE_NON_G2);
break;
case check_non_C1;
sys_error(CURVE_NON_C1);
break;
case check_inconsistent;
printf("Data mismatch in the given edge");
break;
case check_unknown:
;
}
list = list->next();
} Effect: Read-only | edge | edge defined by a bs3_curve. | |
| list | linked list of errors in edge returned (NULL if edge is OK). | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_entity | ( | const ENTITY * | given_entity, | |
| insanity_list *& | list, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Calls the ACIS Checker.
Checks an entity's geometry, topology, and data structure for bad data or invalidities.
Role: This API traverses the given entity's topological tree structure, checking for bad data or invalidities along the way. Any problems found are added to an insanity_list and returned to the caller via the given pointer. A NULL insanity_list indicates that no errors have been found.
Each object in the insanity_list represents a single problem with the input entity identified by the Checker, specifying the severity of the problem, the particular problem identified, and the entity exhibiting the problem. Note that as most entities own other sub-entities, the entities returned in the list are typically not the input entity. For information on how to access the information from an insanity_list , please refer to the documentation for insanity_list and insanity_data .
Each problem returned by api_check_entity is classified as being of one of four different severities: ERROR, WARNING, NOTE, and INFO. Refer to "Table 1" and "Table 2" in the ACIS Checker section for information on the checks performed.
The option check_level controls the level of computational effort performed by the Checker. The range of effective check levels is any integer multiple of 10, between 10 and 70 inclusive; the default value is 20. Any other value is invalid, and the behavior of the Checker may be unpredictable with an invalid check level.
Each check in the Checker is allocated a check level at which it becomes effective, although some checks may be forced at a lower level with the use of an option. The Checker performs all checks allocated to levels less than or equal to the set check_level. Therefore, level 10 is the fastest and least thorough, and level 70 is the slowest and most thorough. It is not the case that higher-level check errors are less serious than lower-level check errors. Please refer to the section ACIS Checker for more information.
The option show_warning_msg controls whether or not WARNING-severity checks are performed. By default, this option is set to FALSE in release builds and TRUE in debug builds.
The option get_aux_msg controls whether or not auxiliary information should be included for selected Checker problems. By default, this option is set to TRUE. Generally, when available, auxiliary information contains parametric or position data specifically relating to the problem. This information is available in string form only, via the insanity_data::print_message method.
The option check_abort controls whether or not the Checker aborts after the first problem is found. By default, this option is set to FALSE.
The option check_fix controls whether or not the Checker should attempt to repair selected problems. By default, this option is set to FALSE. If the check_fix option is switched on and a repairable problem is detected, the repair is made and the problem is not reported. Extreme caution is advised when using this option.
An example of the usage of this API, including the displaying of reported Checker problems, can be found in scm/scmext/intr/chk_scm.cpp. Customers are advised against including the ACIS checking functionality as part of their modelling workflow. Instead, the models should be checked on read-in, and repaired before modelling commences. Please refer to the section ACIS Checker for more information.
Each check problem has a unique integer ID, obtainable via the insanity_data::get_insane_id method . An internal description of the problem, in the form of a string, is obtainable via the insanity_data::get_message method. It is not recommended that applications make use of the message strings, particularly for determining workflow. Instead, the unique integer IDs should be used. For ease of migration to future versions of ACIS, it is recommended that applications use the corresponding ID macros, which can be found in insanity.err.
Certain check problems may have further subclassification information, available via the insanity_data::get_sub_category and insanity_data::get_par_pos methods. Currently, the only check problem that supports such information is IRREG_SURF ("surface irregular"). For further information, please refer to the documentation for insanity_sub_category .
Tables of all checks performed, and the associated problems that may be reported, can be found in the Technical Article on the ACIS Checker.
Errors: given_entity is a NULL pointer.
Effect: In normal use, does not change model, but derived data may be computed and cached. If fixing options have been activated, model will be modified, if and when fixes are applied.
Journal: Available
| given_entity | (in) Entity to be checked. | |
| list | (out) List of problem entities with info. | |
| ao | (in) ACIS options such as version and journal. |
include <intrapi.hxx>
| outcome api_check_face | ( | FACE * | face, | |
| insanity_list *& | ilist, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Checks a face's underlying surface for various conditions that could cause errors in other ACIS operations.
Role: This API checks the surface underlying the given face for validity. No checking of the face's edges, coedges or loops is performed - for full checking of a FACE entity, use api_check_entity .
This API is expected always to succeed - it should never return an error outcome. A new insanity_list instance is created by the API, and a reference to this instance is returned in the ilist parameter. If no problems are found with the face's surface, then the insanity_list instance will contain no errors, but it will still be created. Destruction of the returned insanity_list is the caller's responsibility.
In most cases, the insanity ids returned by api_check_face have the same meaning as when they are returned by api_check_entity . In the case of continuity problems (non-G1, non-G2 etc.) however, the meanings are subtly different, because api_check_face checks a face's surface in isolation from the face itself. It may be that the surface underlying the face is (say) non-G1, but all of the discontinuities lie outside the face's boundary. In this case, the face is G1 continuous, and api_check_entity will not report a non-G1 warning, but the face's surface is not G1 continuous, so api_check_face will report a non-G1 warning.
Journal: Not Available
| face | The face for which the surface geometry is to be checked. | |
| ilist | Output: list of problems with face's surface. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_face | ( | FACE * | face, | |
| check_status_list *& | list, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Checks face geometry for various conditions that could cause errors in other ACIS operations.
Role: This API checks whether a face defined by a bs3_surface is self-intersecting, is twisted, has too much oscillation, has degenerate edges, or is not G0, G1, or G2. The function list->status can be checked for the results. If no errors are found, the NULL list is returned. For example:
while(list != NULL){
switch(list->status()){
case check_irregular:
sys_error(FACE_IRREGULAR);
break;
case check_self_intersects:
sys_error(FACE_SELF_INTER);
break;
case check_bad_closure:
sys_error(SURF_BAD_CLOSURE);
break;
case check_bs3_null:
sys_error(BS3_SURF_NULL);
break;
case check_bs3_coi_verts:
sys_error(BS3_COI_VERTS);
break;
case check_bad_degeneracies:
sys_error(BAD_DEGENERACIES);
break;
case check_untreatable_singularity:
sys_error(UNTREAT_SING);
break;
case check_non_G0:
sys_error(SURF_NON_G0);
break;
case check_non_G1:
sys_error(SURF_NON_G1);
break;
case check_non_G2:
sys_error(SURF_NON_G2);
break;
case check_non_C1:
sys_error(SURF_NON_C1);
break;
case check_unknown:
;
}
list = list->next();
} Effect: Read-only | face | face defined by a bs3_surface. | |
| list | linked list of errors in face returned. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_face_loops | ( | FACE * | in_face, | |
| int | ai_info[5] = NULL, |
|||
| AcisOptions * | ao = NULL | |||
| ) |
Checks a face to see that it contains valid loops.
Role: This function checks that the direction of a FACE's LOOPs are correct. It eliminates the need to calculate the area of a face to determine the validity of the face. (If the area calculation for a FACE was negative, it was indicative of a problem usually in the direction of LOOPs.)
This API returns outcome to indicate if the input FACE contains invalid LOOPs. An error message is contained in the outcome.
ai_info[0]: number of periphery loops
ai_info[1]: number of holes
ai_info[2]: number of u separation loops
ai_info[3]: number of v separation loops
ai_info[4]: number of unknown loops
Effect: System routine
Journal: Not Available
| in_face | face to test. | |
| ai_info | where test results stored. | |
| ao | ACIS options. |
include <kernapi.hxx>
| outcome api_check_wire_self_inters | ( | BODY * | body, | |
| AcisOptions * | ao = NULL | |||
| ) |
Evaluates a wire BODY for self intersections.
Role: Given a wire, this API examines the edges of the wire for intersections. Each edge of the wire is examined for self-intersections and for intersections with any of the other edges in the wire. As soon as any intersection other than shared end points is found, the API exits with an error outcome. If no such intersections are found, the API returns a successful outcome.
This function is overloaded. Given a wire body, this API examines the edges of the underlying wire for intersections.
Effect: Read-only
Journal: Available
| body | wire body to check. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_check_wire_self_inters | ( | WIRE * | wire, | |
| AcisOptions * | ao = NULL | |||
| ) |
Evaluates a WIRE for self intersections.
Role: Given a wire, this API examines the edges of the wire for intersections. Each edge of the wire is examined for self-intersections and for intersections with any of the other edges in the wire. As soon as any intersection other than shared end points is found, the API exits with an error outcome. If no such intersections are found, the API returns a successful outcome.
This function is overloaded. Given a wire body, this API examines the edges of the underlying wire for intersections.
Effect: Read-only
Journal: Available
| wire | wire to check. | |
| ao | ACIS options. |
include <intrapi.hxx>
| outcome api_fix_check_problems | ( | const insanity_list * | problems_to_fix, | |
| insanity_list *& | problems_fixed, | |||
| insanity_list *& | problems_not_fixed, | |||
| AcisOptions * | ao = NULL | |||
| ) |
Attempts to fix some check problems in model data.
Role: Given a list of problems found by api_check_entity, api_check_face or api_check_edge, this function attempts to alter the problematic entities to correct the problems listed. Note that not all types of problem will be fixed; it is not possible to implement automatic repair for all problems.
The API returns two new insanity_list chains. Destruction of these insanity_list objects is the responsibility of the caller. The input insanity_list is unaltered. The "problems_fixed" list describes those problems that were successfully fixed by the API, and the "problems_not_fixed" list describes those problems which could not be fixed for one reason or another. A null pointer may be returned for either list, depending on the degree of success of the API:
| problems_fixed value | problems_not_fixed value | Interpretation |
| NULL | non-NULL | No input problems fixed by API |
| non-NULL | NULL | All input problems fixed by API |
| non-NULL | non-NULL | Some, but not all problems fixed by API |
| NULL | NULL | Special case: input problem list is NULL |
insanity_data IDs for which a fix will be attempted are: CRV_BAD_FITOL, SURF_BAD_FITOL, CURVE_APPROX_OVERCLAMPED, CURVE_MISSING_DISC_INFO, and SURF_MISSING_DISC_INFO. | problems_to_fix | list of problems for which fixing is to be attempted. | |
| problems_fixed | list of input problems that were successfully fixed. | |
| problems_not_fixed | list of input problems that were not successfully fixed. | |
| ao | ACIS options. |
include <intrapi.hxx>
| void convert_insanity_list_into_error_info_list | ( | const insanity_list * | ilist, | |
| error_info_list & | target_list | |||
| ) |
Adds all the insanity_data objects from the insanity_list *ilist into the given error_info_list &target_list object.
| ilist | insanity_list that has to converted to error_info_list | |
| target_list | error_info_list to hold the insanity_data objects from ilist |
include <insanity_list.hxx>