# Synopsis

PDX_MSGT igeo_ApproxGetData(long approx_opt, void *approx_data, int *approx_type)

# Purpose

Get the next set of approximation data

# Description

Extract the next set of approximation data requested from GDX approximation data. This function keeps extracting data until all data has been extracted (IGEO_DONE or error returned) and assumes that @a *approx_data = NULL at the start. The data that is extracted should not be overwritten in the approx_data structure since the data is reused in subsequent extractions. This function MUST be called until IGEO_DONE or an error is returned to insure that all the data allocated for approx_data is freed. The point approximation data structure IGEO_POINT_APPROX_DATA is returned when the approximation type flag is IGEO_POINT_APPROX. The format of the data structure is:

.TS center box tab (/); l l l . Data Type /Field /Description _ long /point_count; /Count of points MTH_3DPNT /(*point_list); /List of 3D points long /seg_count; /Count of segments long /*points_in_seg; /Count of points/segment int /attr_count; /Count of attributes long /*seg_per_attr; /Segments per attribute GDX_ATTRIBUTE_TYPE /*attr_types; /Attribute types void /**attributes; /Attributes .TE

The points_in_seg list indicates how many of the points in point_list form a multpoint linear(polyline)segment. By default, the first segment starts at point index 0 and ends at point index points_in_seg[0] - 1. The next segment starts at 0 + points_in_seg[0] and ends at 0 + points_in_seg[0] + points_in_seg[1] - 1, etc. for seg_per_attr[0]. The attr_count indicates the count of different attributes that need to applied to the segments. In the case where the option has been set to not apply attributes, the seg_per_attr list is NULL and the seg_count value indicates the total number of segments. The attributes list contains the list of IGES_ATTR (See iges_intro for a description of the IGES_ATTR definition) attributes to apply to the approximation data. The attr_types list indicates the type of attribute application. The attribute type for point approximation data is:

.IP IGEO_IGES_ATTR 19 The IGES_ATTR attribute applied to points, lines, or polyline data. .LP

The facet approximation data structure IGEO_FACET_APPROX_DATA is returned when the approximation type flag is IGEO_FACET_APPROX. The format of the data structure is:

.TS center box tab (/); l l l . Data Type /Field /Description _ long /point_count; /Count of points MTH_3DPNT /(*point_list); /List of points long /edge_count; /Count of edges long /(*facet_edges)[2]; /Facet edge list long /seg_count; /Count of segments long /*facet_edges_in_seg; /Count of facet edges/seg. int /attr_count; /Count of attributes long /*seg_per_attr; /Segments per attribute GDX_ATTRIBUTE_TYPE /*attr_types; /Attribute types void /**attributes; /Attributes .TE

The facet_edges_in_seg list indicates how many of the facet_edges form a segment. The first segement starts at edge index 0 and ends at edge index facet_edges_in_seg[0] - 1. A facet is formed from edge pairs where facet_edges is a pair of point indexs that indicate the point geometry in point_list that form a facet edge. The first facet would be created from: facet_edges[0][0], facet_edges[0][1], facet_edges[1][1], facet_edges[1][0]. The number of facets in a segment is equivalent to polgon_edges_in_seg - 1 since there is always one more edge than there are facets. An exception is made when an IGES planar closed area entity is approximated as a polygon. In this case the edge_count is one, and the point_list for point_count form the polygon edges. The attr_count indicates the count of different attributes that need to applied to the segments. In the case where the option has been set to not apply attributes, the seg_per_attr list is NULL and the seg_count value indicates the total number of segments. The attributes list contains the list of IGES_ATTR (See iges_intro for a description of the IGES_ATTR definition) attributes to apply to the approximation data. The attr_types list indicates the type of attribute application. The attribute types for facet approximation data are:

.IP IGEO_IGES_ATTR 30 The IGES_ATTR attribute applied to closed area polygon data where the polygon is formed by the point_count points. .IP IGEO_IGES_RECT_SHELL_ATTR 30 The IGES_ATTR attribute applied to a rectangular shell of facets. The facet_edges_in_seg count is the same for all facet segments. (i.e. seg_count = the number of U facets and facet_eges_in_seg[0] - 1 = the number of V facets) .IP IGEO_IGES_NON_RECT_SHELL_ATTR 30 The IGES_ATTR attribute applied to a non-rectangular shell of facets. The facet_edges_in_seg count may vary from one facet segment to the next. .LP

# Input

## approx_opt

### IGEO_ONESEGATTR

One segment per attribute.

### IGEO_ALLSEGATTR

All segments for a given attribute.

### IGEO_ALLDATA

All attributes and segments.

### IGEO_PLANARFACETS

For facet data, make all facets planar to COPLANAR_TOL tolerance.

## approx_data

The pointer to the approximation data pointer.

# Output

## approx_data

The current set of approximation data. The set can be a list of points (IGEO_POINT_APPROX_DATA*) or a surface polygon mesh (IGEO_FACET_APPROX_DATA*). The data returned is a pointer to a READ ONLY data structure. The address of the structure MUST be initialized to NULL for the first call to this function.

## approx_type

### IGEO_POINT_APPROX

Linear point segment data

### IGEO_FACET_APPROX

Linear facet segments and point segment data

# Tolerances

COPLANAR_TOL

# Return

          IGEO_NOTDONE - Not done getting approximation data
          IGEO_DONE    - Done getting approximation data
          IGEO_NOMEMORY
          IGEO_INVALIDOPTION
          .fi