📄 isff.txt
字号:
Line string, shape, curve, and B-spline pole elements are represented
similarly in the design file. The header information is followed by the
number of vertices and then the coordinates of each vertex. A maximum of
101 vertices can be in an element of these types. In a shape, the
coordinates of the last vertex must be the same as the first vertex. For
curves, two extra points at the beginning and end of the vertex list
establish the curvature at the ends. Thus, a curve can have just 97
user-defined points.
2D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
short numverts ; /* number of vertices */
Point2d vertice[1] ; /* points */
} Line_String_2d ;
3D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
short numverts ; /* number of vertices */
Point3d vertice[1] ; /* points */
} Line_String_3d ;
Offset Offset
line_string3d.numverts
line_string3d.vertice[0]
line_string3d.vertice[n-1]
Linkage
Linkage
The curve (type 11) element is a 2D or 3D parametric spline curve
completely defined by a set of n points. The first two and last two points
define endpoint derivatives and do not display. The interpolated curve
passes through all other points.
A curve with n points defines n-1 line segments; interpolation occurs over
the middle n-5 segments. Each segment has its own parametric cubic
interpolation polynomial for the x and y (and z in 3D) dimensions. The
parameter for each of these polynomials is the length along the line
segment. Thus, for a segment k, the interpolated points P are expressed as
a function of the distance d along the segment as follows:
Pk(d) = {Fk,x(d), Fk,y(d), Fk,z(d)} with 0 <= d <= Dk
Fk,x, Fk,y, and Fk,z are cubic polynomials and Dk is the length of segment
k. In addition, the polynomial coefficients are functions of the segment
length and the endpoint derivatives of Fk,x, Fk,y, and Fk,z. The subscript
k is merely a reminder that these functions depend on the segment.
The cubic polynomials are defined as follows:
Fk,x = axd3 + bxd2 + cxd + Xk
cx = tk
bx = [3(Xk+1-Xk)/Dk - 2tk,x - tk+1,x] / Dk
ax = [tk,x + tk+1,x - 2(xk+1-xk)/Dk] / Dk2
The m variable is analogous to the slope of the segment.
If (|mk+1,x-mk,x| + |mk-1,x-mk-2,x|) <> 0, then:
tk,x = (mk-1,x|mk+1,x-mk,x| + mk,x|mk-1,x-mk-2,x|)/(|mk+1,x-mk,x| +
|mk-1,x-mk-2,x|)
else:
tk,x = (mk+1,x+mk,x) / 2
mk,x = (Xk+1 - Xk) / Dk
Fk,y(d) and Fk,z(d) are defined analogously.
Text Node Header (Type 7)
-------------------------
Text node header elements are complex headers for groups of text elements,
specifying the number of text strings, the line spacing between text
strings, the origin of the text node, the node number, and the maximum
number of characters in each text string.
2D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
unsigned short totwords ; /* total words following */
short numstrngs ; /* # of text strings */
short nodenumber ; /* text node number */
byte maxlngth ; /* maximum length allowed */
byte maxused ; /* maximum length used */
byte font ; /* text font used */
byte just ; /* justification type */
long linespc ; /* line spacing */
long lngthmult ; /* length multiplier */
long hghtmult ; /* height multiplier */
long rotation ; /* rotation angle */
Point2d origin ; /* origin */
} Text_node_2d ;
3D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
unsigned short totwords ; /* total words following */
short numstrngs ; /* # of text strings */
short nodenumber ; /* text node number */
byte maxlngth ; /* maximum length allowed */
byte maxused ; /* maximum length used */
byte font ; /* text font used */
byte just ; /* justification type */
long linespc ; /* line spacing */
long lngthmult ; /* length multiplier */
long hghtmult ; /* height multiplier */
long quat[4] ; /* quaternion rotations */
Point3d origin ; /* origin */
} Text_node_3d ;
Text node number
Line length
Justification and origin
Line spacing
Text node number
----------------
Each text node is assigned a unique number (nodenumber). This number is
displayed at the node origin when node display is on. Applications can use
it to uniquely identify the node.
Line length
-----------
The user specifies the maximum number of characters (maxlngth) in a line of
text when the node is created. The maximum used (maxused) line length
indicates the number of characters currently in the longest text line.
Justification and origin
------------------------
The justification defines the position of text strings relative to the
origin. The origin retained in the design file is the true, user-defined
origin. The following justifications are possible
Left/Top (0) Center/Top (6) Right margin/Top (9)
Left/Center (1) Center/Center (7) Right margin/Center (10)
Left/Bottom (2) Center/Bottom (8) Right margin/Bottom (11)
Left margin/Top (3) Right/Top (12)
Left margin/Center (4) Right/Center (13)
Left margin/Bottom (5) Right/Bottom (14)
Line spacing
------------
This long integer indicates the number of UORs from the bottom of a text
string to the top of the next string.
Offset Offset
text_node3d.totwords
Description Description
text_node3d.numstrings
Strings Strings
text_node3d.nodenumber
Number Number
text_node3d.maxlngth
text_node3d.font
text_node3d.linespc
Spacing Spacing
text_node3d.lngthmult
Multiplier Multiplier
text_node3d.hghtmult
Multiplier Multiplier
text_node3d.quat
Angle Quaternion
Linkage
text_node3d.origin
Linkage
Complex Chain Headers (Type 12) and Complex Shape Headers (Type 14)
-------------------------------------------------------------------
Complex chains (open) and complex shapes (closed) are complex elements
formed from a series of elements (lines, line strings, arcs, curves, and
open B-Spline curves). A complex chain or complex shape consists of a
header followed by its component elements. These structure of the header
is identical for both complex chains and complex shapes in 2D and 3D
files. The element is a complex shape if the endpoints of the first and
last component elements are the same.
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
unsigned short totlength ; /* total length of surface */
unsigned short numelems ; /* # of elements in surface */
short attributes[4] ; /* to reach min. element size */
} Complex_string ;
Four words of attribute data are included in complex chains and shapes to
ensure that they are at least 24 words long, which is the minimum element
length required for some Intergraph file processors.
Word
Offset
0-17 Header
18 Words in Description complex_string.totlngth
19 Number of Elements complex_string.numelems
20 Four Byte complex_string.attributes
21
22
23
24 A
Linkage
Ellipse Elements (Type 15)
--------------------------
Ellipse elements are specified with a center, rotation angle, and major and
minor axes. A circle is an ellipse with the major and minor axes equal.
The ellipse element is defined in C as follows
2D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
double primary ; /* primary axis */
double secondary ; /* secondary axis */
long rotation ; /* rotation angle */
Dpoint2d origin ; /* origin */
} Ellipse_2d ;
3D:
typedef struct
{
Elm_hdr ehdr ; /* element header */
Disp_hdr dhdr ; /* display header */
double primary ; /* primary axis */
double secondary ; /* secondary axis */
long quat[4] ; /* quaternion rotations */
Dpoint3d origin ; /* origin */
} Ellipse_3d ;
Primary and secondary axes
Orientation
Origin
Primary and secondary axes
--------------------------
Ellipse axes are defined by two double-precision floating point values that
specify the lengths in UORs of the semi-major and semi-minor axes. The
primary axis is not necessarily the longest (semi-major) axis, but rather
is the axis whose orientation is specified by the rotation angle or
quaternion.
Orientation
-----------
The rotation angle or quaternion defines the orientation of the primary
axis with respect to the design file coordinate system.
Origin
------
The origin (center) of the ellipse is expressed as double-precision
floating point coordinates.
Offset Offset
ellipse_3d.primary
ellipse_3d.secondary
ellipse_3d.quat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -