PK_TOPOL_clash_o_t   


struct PK_TOPOL_clash_o_s
    {
    int          o_t_version;   --- Version of this PK option structure
    int          n_op_ex;       --- Number of entity pairs that may be ignored
                                --- [NF]
    PK_TOPOL_t  *op_ex1;        --- First half of pairs that may be ignored
                                --- [NF]
    PK_TOPOL_t  *op_ex2;        --- Second half of pairs that may be ignored
                                --- Defaults: 0, NULL, NULL (no ignores) [NF]
    PK_LOGICAL_t find_all;      --- Find all clashes, not just the first
    PK_LOGICAL_t find_intersect;--- Examine clashes for true interference
                                --- Defaults: False, False (simplest check)
    PK_LOGICAL_t mul_target_tf; --- There is one transform in tf1 for each
                                --- target entity. Otherwise, the first
                                --- transform is used for all targets.
    PK_LOGICAL_t mul_tool_tf;   --- One transform in tf2 for each tool, as
                                --- per target transforms (above).
                                --- Defaults: False, False (i.e., only one
                                --- transform in each list).
    PK_TOPOL_t   target_owner;  --- Owning topology of target entities
    PK_TOPOL_t   tool_owner;    --- Owning topology of tool entities
                                --- Defaults: Null, Null.
    };

typedef struct PK_TOPOL_clash_o_s PK_TOPOL_clash_o_t;



This option structure holds optional controls for PK_TOPOL_clash.

Used in:

PK_TOPOL_clash


'n_op_ex', 'op_ex1' and 'op_ex2' describe a list of entity pairs. 'n_op_ex'
is the number of pairs, 'op_ex1' and 'op_ex2' hold lists of first and second
elements of pairs respectively.

For each pair (e.g. op_ex1[i]' and op_ex2[i]), PK_TOPOL_clash has the option of
using the pair to minimise its task; it is at liberty to ignore any clashes
that it finds between these two entities. If it ignores these clashes, it
won't report them, otherwise it will.

If 'find_all' has the value PK_LOGICAL_false, then the function will return
only a single clash (or none, if none exist). It returns the first one that it
finds. If 'find_all' has the value PK_LOGICAL_true, it will find and return all
the valid clashes that exist.

If 'find_intersect' has the value PK_LOGICAL_true, then for each clash
returned, 'clash_type' gives its classification. This allows interference to be
distinguished from abutment.

If 'mul_target_tf' has the value PK_LOGICAL_true, then PK_TOPOL_clash assumes
that one transform entity has been provided in 'tf1' for each entity in
'targets'. Otherwise, 'tf1' holds only a single transform, which will be
applied to all the entities in 'targets'. 'mul_tool_tf' has exactly the same
effect with respect to 'tools' and 'tf2'.

In the case of two clashing faces, if 'target_owner' and 'tool_owner' are
chosen to be the owning bodies of the respective target and tool faces, then
the clash classifications of any clashes will be based on the
interaction of the owning bodies, rather than the chosen faces.