Ok cuft is fixed now. Please svn up and test it on all your wildest GSD files. :-)
I should probably explain the text output a bit. For each line after the header and padding there are 6 columns. col 1: intrasection line code (most often it is like a line number) in hex col 2: section code in hex col 3: data type code in hex col 4: count in hex col 5: parsed data output col 6: annotation for what I believe the value signifies
The data type codes are as follows:
1: 1 byte signed int 2: 2 byte signed int 3: 4 byte signed int 4: 8 byte float 5: string
There are two places that don't fit this data type rule line 5 of section 11 and lines 10-15 inclusive of section 14.
Here is a python dictionary holding all of the line by line annotations I have so far. The keys of the outer dict are the sections and the inner dict holds line codes.
GSD_DICT = { '03':{ '01':'Number of Drawing Objects' }, '04':{ '00':'Drawing Object', '01':'Drawing Object Type', '0A':'2D Point', '0B':'Polyline Length', '0C':'Polyline Point', '14':'Sweep (radians)', '15':'Ecentricity?', '16':'(0=Open/1=Closed)', '40':'Bbox (Upper Left)', '41':'Bbox (Upper Right)', '42':'Bbox (Lower Right)', '43':'Bbox (Lower Left)', '44':'Rotation' }, '05':{ '21':'Group' }, '07':{ '02':'Number of Line Styles?' }, '0A':{ '00':'Page Style?' }, '0B':{ '00':'Line Style?' }, '0E':{ '00':'Registration Mark Settings', '01':'Use Marks', '0A':'Size', '0B':'Width', '0C':'Origin X', '0D':'Origin Y', '0E':'Distance (1-2)', '0F':'Distance (2-3)' }, '0F':{ '00':'Grid Settings', '01':'Show', '02':'Type', '03':'Spacing', '04':'Snap' } }
Aaron Spike