Difference between revisions of "IGES file Specification"
(Created page with "== What is IGES == The [https://en.wikipedia.org/wiki/IGES Initial Graphics Exchange Specification] (IGES) outlines a file format for the transfer of geometry data and CAD mo...") 
(→Entities) 

Line 166:  Line 166:  
}  }  
==== Conic Arc (Type 104) ====  ==== Conic Arc (Type 104) ====  
+  
+  Arc defined by the equation: Axt^2 + Bxtyt + Cyt^2 + Dxt + Eyt + F = 0, with a Transformation Matrix (Entity 124). Can define an ellipse, parabola, or hyperbola.  
+  
+  The definitions of the terms ellipse, parabola, and hyperbola are given in terms of the quantities  
+  Q1,Q2, andQ3. These quantities are:  
+  
+   A B/2 D/2   A B/2   
+  Q1=  B/2 C E/2  Q2 =  B/2 C  Q3 = A + C  
+   D/2 E/2 F   
+  
+  A parent conic curve is:  
+  
+  *An ellipse if Q2 > 0 and Q1Q3 < 0.  
+  *A hyperbola if Q2 < 0 and Q1 != 0.  
+  *A parabola if Q2 = 0 and Q1 != 0.  
+  
+  { class="wikitable"  
+    
+  !Index in list  
+  !Type of data  
+  !Name  
+  !Description  
+    
+  1REALAcoefficient of xt^2  
+    
+  2REALBcoefficient of xtyt  
+    
+  3REALCcoefficient of yt^2  
+    
+  4REALDcoefficient of xt  
+    
+  5REALEcoefficient of yt  
+    
+  6REALFscalar coefficient  
+    
+  7REALX1x coordinate of start point  
+    
+  8REALY1y coordinate of start point  
+    
+  9REALZ1z coordinate of start point  
+    
+  10REALX2x coordinate of end point  
+    
+  11REALY2y coordinate of end point  
+    
+  12REALZ2z coordinate of end point  
+  }  
==== Copious Data (Type 106) ====  ==== Copious Data (Type 106) ====  
+  The Copious Data entity defines a set of points.  
+  There are three different interpretations, depending on first parameter. It is an INT, and is either 1,2, or 3. 1 Indicates that the points are couples(x,y), 2 indicates the points are triples (x,y,z), and 3 indicates the points are sextuplets(x,y,z,i,j,k). If the format is 1, then the first parameter after gives the common Z value for the ordered xy pairs.  
+  
+  { class="wikitable"  
+    
+  !Index in list  
+  !Type of data  
+  !Name  
+  !Description  
+    
+  1INTTypeEither 1,2, or 3  
+    
+  2REALZ / XP1 If 1 is above, common z <br> if 2 or 3, first value  
+    
+  .<br>..<br>..<br>.  
+    
+  NREALYPN / ZPN / KPN Last value for last point  
+  }  
+  
==== Plane (Type 108) ====  ==== Plane (Type 108) ====  
+  Defines a plane by Ax + By +Cz = D, and a curve pointer that gives the plane its bounds. Also gives a display symbol at a specified vertex and with a specified size.  
+  
+  { class="wikitable"  
+    
+  !Index in list  
+  !Type of data  
+  !Name  
+  !Description  
+    
+  1REALAcoefficient of x  
+    
+  2REALBcoefficient of y  
+    
+  3REALCcoefficient of z  
+    
+  4REALDscalar coefficient  
+    
+  5PointerBoundsPointer to bounding curve  
+    
+  6REALXx coordinate of display symbol  
+    
+  7REALYy coordinate of display symbol  
+    
+  8REALZz coordinate of display symbol  
+    
+  11REALSizesize of display symbol  
+  }  
==== Line (Type 110) ====  ==== Line (Type 110) ====  
+  Defines a line using an end point and a start point  
+  
+  { class="wikitable"  
+    
+  !Index in list  
+  !Type of data  
+  !Name  
+  !Description  
+    
+  1REALX1x coordinate of start point  
+    
+  2REALY1y coordinate of start point  
+    
+  3REALZ1z coordinate of start point  
+    
+  4REALX2x coordinate of end point  
+    
+  5REALY2y coordinate of end point  
+    
+  6REALZ2z coordinate of end point  
+  }  
+  
==== Parametric Spline Curve (Type 112) ====  ==== Parametric Spline Curve (Type 112) ====  
+  
==== Parametric Spline Surface (Type 114) ====  ==== Parametric Spline Surface (Type 114) ====  
==== Point (Type 116) ====  ==== Point (Type 116) ==== 
Revision as of 12:53, 16 June 2016
Contents
 1 What is IGES
 2 File Format
 2.1 File Header (Start and Global Sections
 2.2 File Data (DE and PD Sections)
 2.3 Entities
 2.3.1 Circular Arc (Type 100)
 2.3.2 Composite Curve (Type 102)
 2.3.3 Conic Arc (Type 104)
 2.3.4 Copious Data (Type 106)
 2.3.5 Plane (Type 108)
 2.3.6 Line (Type 110)
 2.3.7 Parametric Spline Curve (Type 112)
 2.3.8 Parametric Spline Surface (Type 114)
 2.3.9 Point (Type 116)
 2.3.10 Ruled Surface (Type 118)
 2.3.11 Surface of Revolution (Type 120)
 2.3.12 Tabulated Cylinder (Type 122)
 2.3.13 Direction (Type 123)
 2.3.14 Transformation Matrix (Type 124)
 2.3.15 Rational BSpline Curve (Type 126)
 2.3.16 Rational BSpline Surface (Type 128)
 2.3.17 Offset Curve (Type 130)
 2.3.18 Offset Surface (Type 140)
 2.3.19 Boundary (Type 141)
 2.3.20 Curve on a Parametric Surface (Type 142)
 2.3.21 Bounded Surface (Type 143)
 2.3.22 Trimmed Surface (Type 144)
 2.3.23 Block (Type 150)
 2.3.24 Right Angular Wedge (Type 152)
 2.3.25 Right Circular Cylinder (Type 154)
 2.3.26 Right Circular Cone (Type 156)
 2.3.27 Sphere (Type 158)
 2.3.28 Torus (Type 160)
 2.3.29 Manifold Solid BRep Object (Type 186)
 2.3.30 Plane Surface (Type 190)
 2.3.31 Right Circular Cylindrical Surface (Type 192)
 2.3.32 Right Circular Conical Surface (Type 194)
 2.3.33 Toroidal Surface (Type 198)
 2.3.34 Subfigure Definition (Type 308)
 2.3.35 Singular Subfigure Instance (Type 408)
 2.3.36 Vertex List (Type 502)
 2.3.37 Edge List (Type 504)
 2.3.38 Loop (Type 508)
 2.3.39 Face (Type 510)
 2.3.40 Shell (Type 514)
What is IGES
The Initial Graphics Exchange Specification (IGES) outlines a file format for the transfer of geometry data and CAD models. It is an older specification, and was most recently published as version 6 here. It can be used to represent both BoundaryRepresentation (BRep) and Constructive Solid Geometry (CSG) geometries, as well as two dimensional CAD diagrams.
File Format
The file is an ASCII text based format, having each line be exactly 80 characters long. As explained in the Wikipedia article on IGES, the file is split into five sections, denoted by the specific upper case letter in the 73rd column. Those sections are Start (S), Global (G), Data Entry (D), Parameter Data (P), and Terminate (T) sections. The Data Entry and Parameter Data sections are commonly abbreviated DE and PD, respectively.
File Header (Start and Global Sections
The Start and Global sections contain basic information about the name of the file and its source, the delimiters for the Parameter Data section, the author of the file, and other general information. The start field contains human readable descriptions of the file, and my have any characters in columns 172, with the line ending with the section header and section line number. There must be at least 1 line of the Start section. The global section contains preprocessor data. It also must be present in the file and end with the G000000# format. For example, here is the Start and Global sections from the example document on Wikipedia:
S 1 1H,,1H;,4HSLOT,37H$1$DUA2:[IGESLIB.BDRAFT.B2I]SLOT.IGS;, G 1 17HBravo3 BravoDRAFT,31HBravo3>IGES V3.002 (02Oct87),32,38,6,38,15, G 2 4HSLOT,1.,1,4HINCH,8,0.08,13H871006.192927,1.E06,6., G 3 31HD. A. Harrod, Tel. 313/9956333,24HAPPLICON  Ann Arbor, MI,4,0; G 4
Note that the strings are expressed in Hollerith format, meaning that every string has the number of characters it contains followed by an H directly preceding it. For example, the string IGES would be 4HIGES.
File Data (DE and PD Sections)
The Data Entry and Parameter Data sections contain the information on the basic data of the IGES file format: it’s entities. There are around 150 different defined entities in IGES (including differing ‘forms’ of some entity types). We will focus on the more common and geometry centered entities. An entity is described in the Data Entry section as shown here:
116 1 0 1 0 0 0 0 1D 1 116 1 5 1 0 0D 2
First, the file lists all of the entities it contains in the Data entry section. This section is specified by a D in the 73rd column and lists properties about the entity it describes. Each line in this section is split into 10 8 character fields, and each entity is given two lines of the section. This indicates that every entity has 20 fields in the Data Entry section, which are usually right justified. These fields map to the following properties:
Col 18  Col 916  Col 1724  Col 2532  Col 3340  Col 4148  Col 4956  Col 5764  Col 6572  Col 7380 

Entity Type  PD pointer  Structure  Line Font Pattern  Level  View  Transformation matrix pointer  Label Display Associativity  Status Number  Section Code and Sequence Number 
Entity Type  Line Weight Number  Color Number  Parameter Line Count  Form Number  Reserved  Reserved  Entity Label  Entity Subscript Number  Section Code and Sequence Number 
These fields indicate the following properties about the entity being declared:
 Entity Type This is the type of entity being described. For example, 116 describes a Point entity.
 PD pointer This gives the location for this entities data in the Parameter Data section. This location is simply the line number inside the PD section that has the first line of this entity data.
 Structure Zero or pointer to definition entity. Not applicable for most entities
 Line Font Pattern Number or pointer to line font pattern entity. Number signifies:
 0 No pattern specified (default)
 1 Solid
 2 Dashed
 3 Phantom
 4 Centerline
 5 Dotted
 Level Specifies levels to be associated with this entity. Allows entity to appear on more than one level
 View Specifies viewing options. These are:
0 Indicates equal visibility and characteristics in all views. Default Pointer to the View entity (Type 410) that it can be viewed from Reference a View Visible Associativity entity (Type 402, Form 3)
 Transformation Matrix pointer References a transformation matrix entity (Type 124) or is zero by default (no transformation)
 Label Display Associativity’’’ References a Label Display Associativity (Type 402, Form 5) which defines how the entity label appears.
 Status Number Contains four sections of two numbers. 12: Blank status. Either 00 for normal or 01 for blanked. 34: Subordinate entity switch: is 00 for independent, 01 for physically dependent, 02 for logically dependent, and 03 for both. 56: Entity Use flag: is either 00 for Geometry, 01 for annotation, 02 for definition, 03 for Other, 04 for Logical, 05 for 2D parametric, and 06 for Construction geometry. Finally, 78 is the hierarchy, where 00 indicates global top down (use this entity’s characteristics), 01 is global defer(do not use this entity’s characteristics), and 02 is use hierarchy property(use Hierarchy Entity (Type 406, Form 10)to determine characteristics of hierarchical grouping).
 Sequence Number Specified by D#, where # is the line number for this section (not from the top of the file). This is also used to point to this Data Entry entity.
 Entity Type See above it is specified twice per entity listing
 Line Weight Number Specifies thickness when displaying entity. Smallest is 1, 0 is default
 Color Number Specifies the entity color. Allowed integer values are:
 0 No color (default)
 1 Black
 2 Red
 3 Green
 4 Blue
 5 Yellow
 6 Magenta
 7 Cyan
 8 White
 Parameter Line Count Number Specifies the number of lines this entity takes up in the Parameter Data Section
 Form Number Indicates the form, or the representation of this entity. Changes how the parameter data is interpreted. Default is 0
 Reserved Field Not used
 Reserved Field Not used
 Entity Label Application specified identifier right justified
 Subscript Number Numeric qualifier for the entity label. Both together form a unique identifier for the entity
 Sequence Number See above. This will be D#+1, as each entity is specified on two lines.
The Parameter Data section comes right after the Data Entries, and lists the data for each respective entry. A typical entry looks something like this:
126,1,1,1,0,1,0,5.,5.,5.,5.,1.,1.,10.,0.,0.,10.,10.,0.,5.,5., 3P 3 0.,0.,1.; 3P 4
Note the corresponding Data Entry:
126 3 0 0 0 0 0 000010501D 3 126 0 0 2 0 0 0 0D 4
The parameter data section uses the delimiters specified in the Global section to list parameters for the entity. These delimiters are usually commas to separate parameters and a semicolon to end the listing. The parameter data section listing starts with the entity type followed by parameter data in columns 464. Columns 65 to 72 contain the Data Entry pointer number, which gives the index of the data entry listing for this entity (must be an odd number, as the even numbers contain the other half of the Data Entry). The last columns, 7380, contain the Sequence Number, being P#, similar to the Data Entry section.
Entities
Circular Arc (Type 100)
Simple circular arc of constant radius. Usually defined with a Transformation Matrix Entity (Type 124).
Index in list  Type of data  Name  Description 

1  REAL  Z  z displacement on XT,YT plane 
2  REAL  X  x coordinate of center 
3  REAL  Y  y coordinate of center 
4  REAL  X1  x coordinate of start 
5  REAL  Y1  y coordinate of start 
6  REAL  X2  x coordinate of end 
7  REAL  Y2  y coordinate of end 
Composite Curve (Type 102)
Groups other curves to form a composite. Can use Ordered List, Point, Connected Point, and Parameterized Curve entities.
Index in list  Type of data  Name  Description 

1  REAL  N  Number of curves comprising this entity 
2  Pointer  DE(1)  Pointer to first curve 
. . 
. . 
. . 

1+N  Pointer  DE(N)  Pointer to last curve 
Conic Arc (Type 104)
Arc defined by the equation: Axt^2 + Bxtyt + Cyt^2 + Dxt + Eyt + F = 0, with a Transformation Matrix (Entity 124). Can define an ellipse, parabola, or hyperbola.
The definitions of the terms ellipse, parabola, and hyperbola are given in terms of the quantities Q1,Q2, andQ3. These quantities are:
 A B/2 D/2   A B/2  Q1=  B/2 C E/2  Q2 =  B/2 C  Q3 = A + C  D/2 E/2 F 
A parent conic curve is:
 An ellipse if Q2 > 0 and Q1Q3 < 0.
 A hyperbola if Q2 < 0 and Q1 != 0.
 A parabola if Q2 = 0 and Q1 != 0.
Index in list  Type of data  Name  Description 

1  REAL  A  coefficient of xt^2 
2  REAL  B  coefficient of xtyt 
3  REAL  C  coefficient of yt^2 
4  REAL  D  coefficient of xt 
5  REAL  E  coefficient of yt 
6  REAL  F  scalar coefficient 
7  REAL  X1  x coordinate of start point 
8  REAL  Y1  y coordinate of start point 
9  REAL  Z1  z coordinate of start point 
10  REAL  X2  x coordinate of end point 
11  REAL  Y2  y coordinate of end point 
12  REAL  Z2  z coordinate of end point 
Copious Data (Type 106)
The Copious Data entity defines a set of points. There are three different interpretations, depending on first parameter. It is an INT, and is either 1,2, or 3. 1 Indicates that the points are couples(x,y), 2 indicates the points are triples (x,y,z), and 3 indicates the points are sextuplets(x,y,z,i,j,k). If the format is 1, then the first parameter after gives the common Z value for the ordered xy pairs.
Index in list  Type of data  Name  Description 

1  INT  Type  Either 1,2, or 3 
2  REAL  Z / XP1  If 1 is above, common z if 2 or 3, first value 
. . 
. . 
. . 

N  REAL  YPN / ZPN / KPN  Last value for last point 
Plane (Type 108)
Defines a plane by Ax + By +Cz = D, and a curve pointer that gives the plane its bounds. Also gives a display symbol at a specified vertex and with a specified size.
Index in list  Type of data  Name  Description 

1  REAL  A  coefficient of x 
2  REAL  B  coefficient of y 
3  REAL  C  coefficient of z 
4  REAL  D  scalar coefficient 
5  Pointer  Bounds  Pointer to bounding curve 
6  REAL  X  x coordinate of display symbol 
7  REAL  Y  y coordinate of display symbol 
8  REAL  Z  z coordinate of display symbol 
11  REAL  Size  size of display symbol 
Line (Type 110)
Defines a line using an end point and a start point
Index in list  Type of data  Name  Description 

1  REAL  X1  x coordinate of start point 
2  REAL  Y1  y coordinate of start point 
3  REAL  Z1  z coordinate of start point 
4  REAL  X2  x coordinate of end point 
5  REAL  Y2  y coordinate of end point 
6  REAL  Z2  z coordinate of end point 