struct PK_SURF_trim_data_s { int n_spcurves; --- number of spcurves PK_SPCURVE_t *spcurves; --- spcurves PK_INTERVAL_t *intervals; --- spcurve intervals int *trim_loop; --- which trim loop int *trim_set; --- which trim set }; typedef struct PK_SURF_trim_data_s PK_SURF_trim_data_t; This structure records surface trimming data Trim data for a surface consists of zero or more trim loops making up zero or more trim sets. Each trim set represents a connected piece of trimmed surface. Each trim loop is made up of trimmed SP-curves. Each trimmed SP-curve is represented by an SP-curve and a parametric interval. spcurves consists of an array of SP-curves which describe the boundary loops of the trimmed surface. More information on spcurves is provided in the documentation of PK_FACE_output_surf_trimmed and PK_SURF_make_sheet_trimmed. intervals is an array of each SP-curve's bounding interval. Trim sets and trim loops are identified by integers. When a PK_SURF_trim_data_t is returned from PK_FACE_output_surf_trimmed, then trim sets and trim loops will each be allocated identifiers commencing from 0 and increasing by one. When a PK_SURF_trim_data_t is input to PK_SURF_make_sheet_trimmed, there are no limitations on trim loop identifiers. As an example, if there are two trim_sets and the first has 2 trim_loops, then the fields may be as follows: spcurves trim_loop trim_set 1 0 0 2 0 0 3 0 0 4 0 0 5 1 0 6 1 0 7 1 0 8 2 1 9 2 1 10 2 1 11 2 1 trim_set 0 has trim_loops 0 and 1. trim_loop 0 has spcurves 1 to 4 and trim_loop 1 has spcurves 5 to 7. trim_set 1 has trim_loop 2 which has spcurves 8 to 11.