( SIF_DSG major_version minor_version header_list stock refplane_list )


TYPE:


FILE


PARAMETERS:


INT major_version, minor_version


HEADER header_list


BODY stock


REFPLANE refplane_list


DESCRIPTION:


This is a SIF_DSG file of the corresponding version number. The header_list has some global, default parameter declarations, and the stock is the boundary representation of a solid which the DSG features will be cut out of. The stock is represented as a SIF_SFF body. The refplanes specify a 2D reference coordinate system which is associated with fixturing the part in a certain way. Each refplane contains 2.5D DSG features such as holes and pockets which are specified in the local coordinate system of the refplane.


( units meters_per_unit )


TYPE:


HEADER


PARAMETERS:


VALUE meters_per_unit



DESCRIPTION:


The units header field describes the scaling factor which takes a
unit in the file and turns it into real world meters. For example,
(units (e 1
2)) means that a value of 1 in the file
is equal to 1cm == 0.01m.


( coord_precision error )


TYPE:


HEADER


PARAMETERS:


VALUE error



DESCRIPTION:


The coord_precision header field is the global error bound
for absolute error measurements throughout the file. This means that
any measurement given in the file can end up being + or  error
when it is actually manufactured. This quantity can be redefined on
more local structures like the lump and that redefinition will
shadow the global definition.


( corner_radius radius_max )


TYPE:


HEADER


PARAMETERS:


VALUE max_radius



DESCRIPTION:


The corner_radius header field is the global error bound
for the amount of rounding which is allowable for internal corners of
a pocket. This rounding is due to the fact manufacturers do not have
tools to make infinitely sharp corners.


( refplane transform_list feature_list )


TYPE:


REFPLANE


PARAMETERS:


TRANSFORM transform_list


FEATURE feature_list


DESCRIPTION:


A refplane sets up a 2D reference plane to define 2.5D DSG
operations on. The transform_list is a list of rigid
transforms which transform the XYplane to an arbitrary location in
3space outside of the stock (usually a face of the stock). Then
points used to define features can be measured from this plane's
origin. The feature_list includes holes and pockets with
islands all defined in this local coordinate system.


( translate x y z )
( tx x )
( ty y )
( tz z )


TYPE:


TRANSFORM


PARAMETERS:


VALUE x, y, z


DESCRIPTION:


A translate is a 4D homogeneous translation matrix. There
are short hand notations for translation along the principle
axes.


( rotate x y z theta )
( rx theta )
( ry theta )
( rz theta )


TYPE:


TRANSFORM


PARAMETERS:


VALUE x, y, z, theta


DESCRIPTION:


A rotate is a 4D homogeneous rotation matrix around an
arbitrary axis ( x, y, z ) by an angle
theta, which is measured in degrees. There are short hand
notations for rotations around the principle axes.


( hole depth radius vid feature_list )


TYPE:


FEATURE


PARAMETERS:


VALUE depth, radius


INT vid


FEATURE_LIST feature_list


DESCRIPTION:


A hole is a feature which can be made by a cylindrical drill. The hole has a
depth and a radius and is located with its center at the coordinates of vid
on the reference plane. The feature_list field is for nested subfeatures which
lie within the contour circle of the hole.


( pocket depth max_radius island_list loop feature_list )


TYPE:


FEATURE


PARAMETERS:


VALUE depth, max_radius


LOOP loop


ISLAND_LIST island_list


FEATURE_LIST feature_list


DESCRIPTION:


A pocket is a feature which is composed of empty space of a uniform depth
bordered on the outside by a contour loop and on inside by islands. The
max_radius field gives a bound on how much machinists can round sharp
corners. The feature_list field is for nested subfeatures which lie
within the contour loop of the pocket.


( island loop feature_list )


TYPE:


ISLAND


PARAMETERS:


INT vid0, vid1, vid2


INT_LIST vid_list


FEATURE_LIST feature_list


DESCRIPTION:


An island is a inner border of a pocket which tells machinists which portions
of material not to mill when creating a pocket feature. An island must lie
within its enclosing pocket. The feature_list field is for nested
subfeatures which lie within the contour loop of the pocket.


( loop segment_list )


TYPE:


LOOP


PARAMETERS:


SEGMENT_LIST segment_list


DESCRIPTION:


A loop is a closed, nonintersecting, planar contour which is
a composed of path segments.


... vid ...


TYPE:


SEGMENT


PARAMETERS:


INT vid


DESCRIPTION:


This is a simple edge segment.
Each vid is a vertex identifier, and there is an implicit vertex at
the end of each segment which comes from the next segment.


... vid ( arc angle ) ...


TYPE:


SEGMENT


PARAMETERS:


INT vid


VALUE angle


DESCRIPTION:


This is a circular arc segment. The arc connects the starting and ending
vertices with a circular arc of angle degrees. The angle should be
in the range <360, 360>. A positive angle is CCW while a negative angle
is CW.


... vid ( bezier vid_list ) ...


TYPE:


SEGMENT


PARAMETERS:


INT vid


INT_LIST vid_list


DESCRIPTION:


This is a Bezier spline segment of order lengthof(vid_list) + 2.
Each vid is a vertex identifier, and there is an implicit vertex at
the end of each segment which comes from the next segment.


( v id x y z )


TYPE:


VERTEX


PARAMETERS:


INT id


VALUE x


VALUE y


VALUE z


DESCRIPTION:


This is a vertex named id and located at (x, y, z)



TYPE:


VALUE


DESCRIPTION:


INT or EXP


( e value exponent )


TYPE:


EXP


PARAMETERS:


INT value


INT exponent


DESCRIPTION:


Floating point precision independent numerical format.
The meaning of which = value * (10 ^ exponent).


int


TYPE:


INT


PARAMETERS:


INT int


DESCRIPTION:


The integer value int

