PK_ASSEMBLY_check_o_t   

struct PK_ASSEMBLY_check_o_s
    {
    int                       o_t_version; --- version number of option
                                           --- structure
    int                       max_faults;  --- limit on fault numbers
                                           --- (10)
    PK_check_geom_t           geom;        --- bad geometry
                                           --- (PK_check_geom_yes_c)
    PK_check_mesh_t           mesh;        --- bad meshes
                                           --- (PK_check_mesh_yes_c)
    PK_check_corrupt_t        corrupt;     --- corrupt data or identifiers
                                           --- (PK_check_corrupt_yes_c)
    PK_check_attribs_t        attribs;     --- check for validity of system
                                           --- attributes
                                           --- (PK_check_attribs_no_c)
    };

typedef struct PK_ASSEMBLY_check_o_s PK_ASSEMBLY_check_o_t;



This structure holds optional controls for checking an assembly.

Used in:

PK_ASSEMBLY_check


The option structure allows the caller to control which checks are performed;
if no options are supplied, all checks appropriate to the assembly will be made


max_faults
----------
The caller may set an upper limit on the number of faults found, in
the option 'max_faults'; if 'max_faults' is zero, the first fault found
is returned as a PK error: PK_ERROR_check_error, with the entity at fault
returned in the PK_ERROR_sf_t structure.


geom
----
This can be set to one of:

PK_check_geom_no_c     don't do any construction geometry validity checks
PK_check_geom_basic_c  check for invalid or degenerate construction geometry
PK_check_geom_lazy_c   check for invalid, self-intersecting or
                       degenerate construction geometry
PK_check_geom_full_c   check for invalid, self-intersecting or
                       degenerate construction geometry, ignore results of
                       pre-V5 checks
PK_check_geom_yes_c    check for invalid, self-intersecting or
                       degenerate construction geometry, ignore previous checks

Geometry checks only apply to construction geometry attached to the assembly,
and not to the geometry of constituent bodies.

Geometry which passes these tests is marked so that the cost of these
tests need only be incurred once. Geometry which fails is also marked for
the same reason.

The option PK_check_geom_full_c behaves just like PK_check_geom_lazy_c,
except that it forces a re-check of geometry marked as valid by
pre-V5 versions of Parasolid.

The option PK_check_geom_yes_c behaves just like PK_check_geom_lazy_c,
except that it always forces a full check of the geometry,
overriding the interface parameter, even if the geometry has
been marked as valid by a previous check.

The check faults associated with these checks are as follows

'state'                         | 'entity_1'    | 'entity_2' | 'position'
-------------------------------------------------------------------------------
PK_BCURVE_state_close_knots_c   | bcurve        | geom       | the x coordinate
                                |               |            | is the parameter
                                |               |            | where knots are
                                |               |            | too close
                                |               |            |
PK_BSURF_state_close_u_knots_c  | geom          | geom       | the x coordinate
                                |               |            | is the u
                                |               |            | parameter where
                                |               |            | knots are too
                                |               |            | close
                                |               |            |
PK_BSURF_state_close_v_knots_c  | geom          | geom       | the x coordinate
                                |               |            | is the v
                                |               |            | parameter where
                                |               |            | knots are too
                                |               |            | close
                                |               |            |
PK_ENTITY_state_invalid_c       | entity        |            |
                                |               |            |
PK_GEOM_state_bad_geom_owner_c  | geom          |owning geom |
                                |               |            |
PK_GEOM_state_degenerate_c      | geom          |            | point in
                                |               |            | degenerate
                                |               |            | region
                                |               |            |
PK_GEOM_state_outside_box_c     | geom          |            | vertex point
                                |               |            | outside the
                                |               |            | size box
                                |               |            |
PK_GEOM_state_self_int_c        | geom          |            | point on self-
                                |               |            | intersection
                                |               |            |
PK_LATTICE_state_bad_graph_c    | lattice       |            |
                                |               |            |
PK_LATTICE_state_bad_lball_c    | lattice       |            | (n,0,0) where
                                |               |            | n is the
                                |               |            | identifier of
                                |               |            | the PK_LBALL_t
                                |               |            |
PK_LATTICE_state_bad_lrod_c     | lattice       |            | (n,0,0) where
                                |               |            | n is the
                                |               |            | identifier of
                                |               |            | the PK_LROD_t
                                |               |            |
PK_LATTICE_state_corrupt_c      | lattice       |            |
                                |               |            |
PK_LATTICE_state_disjoint_c     | lattice       |            | (m,n,0) where
                                |               |            | m and n are
                                |               |            | identifiers of
                                |               |            | PK_LBALL_t in
                                |               |            | in two separate
                                |               |            | components
                                |               |            |
PK_LATTICE_state_dup_lrod_c     | lattice       |            | (m,n,0) where
                                |               |            | m and n are
                                |               |            | identifiers
                                |               |            | of PK_LROD_t
                                |               |            | that are
                                |               |            | duplicated
                                |               |            |
PK_LATTICE_state_isolated_c     | lattice       |            | (n,0,0) where
                                |               |            | n is the
                                |               |            | identifier of
                                |               |            | the isolated
                                |               |            | PK_LBALL_t
                                |               |            |
PK_LATTICE_state_lrod_end_c     | lattice       |            | (m,n,0) where m
                                |               |            | is the
                                |               |            | identifier of
                                |               |            | the PK_LROD_t
                                |               |            | and n is the
                                |               |            | identifier of
                                |               |            | the adjoining
                                |               |            | PK_LBALL_t
                                |               |            |
PK_LATTICE_state_no_lballs_c    | lattice       |            |
                                |               |            |
PK_LATTICE_state_no_lrods_c     | lattice       |            |
                                |               |            |
PK_LATTICE_state_self_int_c     | lattice       |            | (m,n,0) where m
                                |               |            | and n are
                                |               |            | identifiers of
                                |               |            | the PK_LTOPOL_t
                                |               |            | that clash
                                |               |            |
PK_LATTICE_state_short_lrod_c   | lattice       |            | (n,0,0) where n
                                |               |            | is the
                                |               |            | identifier of
                                |               |            | the PK_LROD_t
                                |               |            |

mesh 
-----
This can be set to one of:

PK_check_mesh_no_c      don't do any construction geometry mesh validity checks
PK_check_mesh_basic_c   check for invalid mesh topology or geometry for
                        construction geometry
PK_check_mesh_yes_c     as basic check but also checking construction geometry
                        mesh for self-intersection

Mesh checks only apply to construction geometry attached to the assembly, and
not to the geometry of constituent bodies.


Special checks on Meshes

There are special checks performed on meshes.

The restrictions on meshes are:


    i)  A mesh cannot be non-manifold.

   ii)  A mesh cannot have an mfacet with a zero length mfin
        (degenerate mfacet).

  iii)  A mesh cannot have an mfacet of zero area (flat mfacet).

   iv)  A mesh cannot have slits, that is laminar mfins that occupy the
        same position.

    v)  A mesh cannot self-intersect.

   vi)  A mesh cannot have an mvertex normal that is opposed to all adjacent
        mfacet normals.


The check_faults associated with this check are as follows

'state'                        |  'entity_1'  |      'position'
-------------------------------------------------------------------------------
PK_MESH_state_bad_mvx_normal_c |     mesh     |  (u, v, 0) where u,v are
                               |              |  the parameters of the mvertex
PK_MESH_state_corrupt_c        |     mesh     |  (u, v, 0) where u,v are
                               |              |  the parameters of the
                               |              |  corruption if available
PK_MESH_state_degen_mfacet_c   |     mesh     |  (u, v, 0) where u,v are
                               |              |  the parameters in the mfacet
PK_MESH_state_flat_mfacet_c    |     mesh     |  (u, v, 0) where u,v are
                               |              |  the parameters in the mfacet
PK_MESH_state_non_manifold_c   |     mesh     |  (u, v, 0) where u,v are
                               |              |  the parameters in the
                               |              |  non manifold region
PK_MESH_state_self_int_c       |     mesh     |  position on the
                               |              |  self intersection
PK_MESH_state_slit_c           |     mesh     |  position on the slit


corrupt
-------
This can be set to one of:

PK_check_corrupt_no_c     don't do data structure checks
PK_check_corrupt_yes_c    check for corrupt data structure and check
                          identifiers

The check faults associated with this check are as follows

'state'                           | 'entity_1'  | 'entity_2'  | 'position'
-------------------------------------------------------------------------------
PK_ASSEMBLY_state_corrupt_c       | assembly    | null        | null
                                  |             |             |
PK_ASSEMBLY_state_cyclic_ref_c    | assembly    | instance    | null
                                  |             |             |
PK_ASSEMBLY_state_invalid_id_c    | assembly    | null        | null
                                  |             |             |
PK_ENTITY_state_bad_owner_c       | transform   | instance    | null
                                  |             |             |
PK_ENTITY_state_has_att_group_c   | entity      | group       | null
                                  |             |             |
PK_ENTITY_state_in_group_c        | entity      | group       | null
                                  |             |             |
PK_ENTITY_state_shared_c          | entity      | assembly    | null
                                  |             |             |
PK_GEOM_state_bad_dep_type_c      | geometry    | dependent   | null
                                  |             |             |
PK_GEOM_state_bad_geom_owner_c    | geometry    | owner       | null
                                  |             |             |
PK_GEOM_state_bad_owner_c         | geometry    | owner       | null
                                  |             |             |
PK_GEOM_state_dup_geom_owner_c    | geometry    | owner       | null
                                  |             |             |
PK_GEOM_state_not_owners_dep_c    | geometry    | owner       | null
                                  |             |             |
PK_GEOM_state_not_owning_dep_c    | geometry    | dependent   | null
                                  |             |             |
PK_GROUP_state_bad_c              | group       | null        | null
                                  |             |             |
PK_INSTANCE_state_bad_transf_c    | instance    | transform   | null
                                  |             |             |
PK_INSTANCE_state_bad_type_c      | instance    | null        | null
                                  |             |             |
PK_PART_state_bad_attrib_c        | assembly    | attribute   | null
                                  |             |             |
PK_PART_state_bad_attrib_list_c   | assembly    | attrib list | null
                                  |             |             |
PK_PART_state_bad_state_c         | assembly    | null        | null
                                  |             |             |
PK_PART_state_corrupt_c           | assembly    | null        | null
                                  |             |             |
PK_PART_state_has_key_c           | assembly    | null        | null
                                  |             |             |
PK_PART_state_no_key_c            | assembly    | null        | null
                                  |             |             |

attribs
-------
This can be set to one of:

PK_check_attribs_no_c     Do not perform validity checks on attached system
                          attributes.
PK_check_attribs_yes_c    Perform system attribute validity checks.

The only check fault associated with this check is the following:

'state'                        | 'entity_1'  | 'entity_2'    | 'position'
-------------------------------------------------------------------------------
PK_ATTRIB_state_invalid_att_c  |  attribute  |  attrib owner |   null

If any faults are found with the system attributes present, the user is
encouraged to use PK_ENTITY_check_attribs to discover more information on
the faulty attribute(s).