Professional Documents
Culture Documents
1f MS40Apps
1f MS40Apps
Appendix A
Error Codes
Overview
MultiSurf handles two principal classes of errors during its operation:
(1) Model File Errors: while reading a MultiSurf model file from disk.
(2) Geometry Errors: while evaluating the model geometry.
These kinds of errors do not threaten the functioning of the program — you fix the
error(s), then continue right on with your work. MultiSurf lets you know what is
wrong by opening the View/ Errors window and displaying a diagnostic error code
(number) and a brief notation of what the code means. In this appendix, we:
• explain how MultiSurf handles the two classes of errors
• list the error codes, in numerical order, along with some explanatory notes
outside the program, for example in a word processor. In these cases, they are very
likely caused by your failure to adhere to the correct format for a model file.
102. The entity is not recognized by this program version
A line begins with a word (an entity keyword) which is not the name of a valid
MultiSurf entity. Check the spelling of the entity keyword in the reference card
“MultiSurf Entity Specifications Summary”. Entity keywords are not case sensitive.
A given version of MultiSurf may not support all the entities listed on the reference
card, in Appendix F, or in the “Entity Descriptions”.
103. The object name is already in use
The second item in an object description is its name. Object names have to be unique.
Apparently you are trying to assign to a second object a name you already used.
104. Unexpected semicolon encountered; object data was
incomplete
The semicolon ; is used to end each object in a model file. Apparently a semicolon
was encountered before all the data for an object was read in. Most likely you have
left out one or more data items. This error will also occur if you omit the closing
brace } in an entity which uses braces { }.
105. Expected semicolon not found; object has excess data
The semicolon ; is used to end each object in a model file. Apparently all the data
for an object was complete, but the next thing in the file was not a semicolon. Check
the entity description. Most likely, you are supplying too much information or you
have omitted the ; needed to terminate an object.
106. At least one entry is required in these braces {...}
Braces { } are used in the model file to surround lists of variable length, e.g., the list
of control points for a BCurve. There is no situation where the list can be empty.
107. An expected open brace { was not found
Braces { } are used in the model file to surround lists of variable length, e.g., the list
of control points for a BCurve. At the point where the program expects such a list to
occur, something other than the opening brace was found. Check for extra numbers
in the series (typically color, visibility, divisions, type, etc.) that precedes the {.
108. Invalid use of the default name ‘*’
‘*’ can serve in place of an object name for reference to some entity classes, such as
point, curve, knotlist, or relabel. Defaults do not exist for all entity classes, however;
for example, ‘*’ is an invalid reference for a bead, a line, or a surface.
109. One or more of this object's supports were left undefined
(or misspelled)
Every object used as support for another object must be defined somewhere in the
model file. Check the spelling (including capitalization) of the support names; object
names are case sensitive.
110. An object is the wrong class of entity to serve as a
support
There are specific rules about which MultiSurf entities can serve in various roles in
creating an object (check the entity description). For example, a line can serve as a
curve, but a curve can’t serve as a line, for very logical reasons.
111. The specified type index is invalid for this entity
Many entities have a type as part of their makeup — an index selecting spline order,
a foil section, etc. Each entity has its own range of valid types, which are checked
during read-in. Check the entity description for valid type numbers.
snakes is 4, the resulting SubSurf is the region bounded by the four snakes
(effectively a “BlendSubSurf”).
245. BlendSurf, BlendCtr: Wrong number of boundary curves (4
required)
The only valid number of boundary curves for a blended surface is four. To make a
BlendSurf with 3 sides, use a point for one boundary curve.
246. DevSurf: Minimum of 16 for u-divisions x u-subdivisions
For a DevSurf, the product of u-divisions x u-subdivisions must be at least 16.
247. XLoftSurf: Crossed master curves, between u=0 and u=1
For at least one u-value being evaluated on the real portion of the surface, the lofting
X-spline has improper sequence of control points. Revise the master curves so they
don’t cross. (See also Error 209.)
248. XLoftSurf: Crossed master curves, for u<0 or u>1
For at least one u-value being evaluated beyond the real portion of the surface, the
lofting X-spline has improper sequence of control points. Revise the master curves so
they don’t cross. (See also Error 209.)
249. Blister: Snakes on different surfaces
The snakes delineating a Blister must be on the same surface.
250. Control magnets for snake are on different surfaces
All the magnets defining a snake must be on the same surface.
251. RelSnake: magnet1 on different surface from basis snake
Both magnets must be on the same surface as the basis snake.
252. RelSnake: magnet2 on different surface from basis snake
Both magnets must be on the same surface as the basis snake.
253. PolySnake: component snakes are on different surfaces
All of the snakes composing a polysnake must be on the same surface. (You can
make a PolyCurve from snakes on different surfaces.)
254. PolySnake labeling error; transition t values must be
strictly increasing
The t parameter values t1, t2 ... tN at the ends of the component curves must be a
strictly increasing sequence with values between 0 and 1.
256. SweepSurf: SweepSurf using default guide: path is too
highly curved
Try making the path less highly curved, or create a guide curve and use it rather
than the default guide.
257. SweepSurf: bead is at a zero-velocity point on path
A SweepSurf is being evaluated at a zero-velocity point on “path” (the curve
designated by bead). This will occur, for example, if “path” is a point object.
Relabeling of “path” can also produce a zero-velocity point: a zero-velocity point is a
place where the relabel graph has zero slope.
258. SweepSurf: guide point lies on tangent to path
A SweepSurf is being evaluated at a u parameter value where the point taken from
“guide” (curve2) lies on the tangent to “path” (the curve designated by bead), or
possibly it coincides with the point taken from “path”. In this situation, MultiSurf
does not have enough information to orient a copy of “shape” (curve1).
259. SweepSurf: Frame is indeterminate
This error should not occur; it should be trapped as error 257 or 258.
number of knots is: number of knots = number of control points - type + 1 (note the
minus sign before type).
323. ArcLenBead, Ring: Attempt to differentiate arc length at a
zero-velocity point
The search for arc-length position failed trying to cross a zero-velocity locations on
the host curve. A zero-velocity point is a place on the host curve where a small
change in the t parameter does not cause any movement along the curve. This can be
the result of a strong relabel; for example, {0, 0, 1} causes a zero velocity at t = 0.
Similarly, duplicated control points on a BCurve will cause zero velocity.
324. ArcLenBead, Ring: Search for arc length failed to converge
The search for an arc-length position satisfying the specifications failed to converge.
This might result from (1) A zero-velocity location on the curve; (2) Host curve too
coarsely subdivided; (3) Discontinuity in the host curve.
327. TrimSurf: A boundary loop is oriented backwards
(This error should not occur)
328. TrimSurf: A boundary loop crosses itself
No TrimSurf boundary loop is allowed to intersect itself, e.g a figure-8. Revise the
configuration of the boundary snakes.
329. TrimSurf: Two or more boundary loops cross each other
TrimSurf boundary loops are not permitted to cross. Revise the configuration of the
boundary snakes.
330. TrimSurf: None of the boundary loops has CCW orientation
in u,v-plane
The outer boundary of a TrimSurf must be a counter-clockwise loop. Reorient the
snakes that mark the outer boundary.
331. TrimSurf: More than one boundary loop has CCW orientation
in u,v-plane
The outer boundary of a TrimSurf must be a counter-clockwise loop. Only one
boundary loop can be the outer boundary. Reorient the snakes of inner boundaries
so they are clockwise in the u,v-plane.
332. TrimSurf: One trimming loop is an exact duplicate of
another
Either the outer or an inner boundary loop is duplicated. Remove the duplicate loop
from the list of trimming snakes.
333. TrimSurf: One CW trimming loop is inside another CW
trimming loop
Clockwise trimming loops represent inner boundaries. Extra boundaries not in
contact with the keeper region are not permitted. Remove the extra loops from the
list of boundary snakes.
334. TrimSurf: A CW trimming loop is outside the CCW trimming
loop
All inner trimming boundaries, signified by clockwise orientation in the u,v-plane,
must be enclosed within the outer trimming loop. Revise the configuration of the
boundary snakes.
335. TrimSurf: The CCW trimming loop is inside a CW trimming
loop
The outermost trimming boundary must be the outer boundary, a counterclockwise
loop in the u,v-plane. Revise the configuration of the boundary snakes.
Appendix B
Utility Programs
Overview
This appendix contains the documentation for a number of utilities that can make
your life a little easier. Most of them are file conversion programs that allow you to
import files from various other hull design programs and to export files to CAD
programs. There are also a few miscellaneous utilities specific to MultiSurf. Here’s
the line-up:
File import utilities
FL2MSF — converts FAIRLINE/2 and AutoYACHT .REP files to MultiSurf .MSF
files
FY2MSF — converts FastYacht .NRB files to MultiSurf .MSF files
MAC2MSF — converts MacSurf .CTR files to MultiSurf .MSF files
DXF2MSF — converts AutoCAD DXF files to MultiSurf .MSF files
IGES2MSF (IGES2NBS + NBS2MSF) — converts IGES geometry to MultiSurf objects
File export utilities
2DD2DXF — converts AeroHydro .2DD files to .DXF files
3DA2DXF — converts AeroHydro .3DA files to .DXF files
PAT2DXF — converts AeroHydro .PAT files to .DXF files
NBS2IGES — converts AeroHydro .NBS (NURBS) files to IGES .IGS files
Miscellaneous MultiSurf utilities
FOILFIT — fits B-spline curves to arbitrary airfoil and hydrofoil sections
ENTSERCH — searches files for specific strings of text
OFTBL — generates conventional offset tables from .3DA files
2DDLINK — plots AeroHydro .2DD files to selected plotters (documentation
available on request)
To run a utility program, copy its .EXE file from the \MSURFWIN\UTILITY
directory into the directory where your data files (the files you want to convert,
etc.) are located. Note: for 2DDLINK and IGES2MSF, you must copy additional
files (see the documentation instructions).
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
FL2MSF
Utility for Converting FAIRLINE/2 Reps to MultiSurf Model Files
Overview
FL2MS2 is a stand-alone utility for converting FAIRLINE/2 Reps to MultiSurf model
files. The utility reads in a FAIRLINE/2 .REP file and outputs an .MSF file. It is also
intended to convert AutoYACHT and AutoSHIP .REP files (and to that end, FL2MSF
will accept up to 20 master curves), but since we do not have control over the
contents and format of Coastdesign files, we are less sure that all the bases are
covered.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
Loading a file
To load a .REP file for conversion, use the Rep Entry Menu option “2. Read Rep from
Disk”. You will be prompted for a filename. If your .REP file is not in your MultiSurf
directory (or whatever directory you are storing FL2MSF.EXE in), be sure to include
the path. For instance, if your file FL2000.REP is in the subdirectory \ahi\fl2 rather
than your MultiSurf directory, you would respond
\ahi\fl2\fl2000
There is also a menu option to load the FL/2B “default hull”. This is just a
convenience for exercising FL2MSF without having to dig up a .REP file for an
example.
master curves with explicit splines or X-splines, identical to the longitudinal splines of
the FAIRLINE surface. The number and location of master curves will be identical to
those in FAIRLINE.
If the input Rep is from AutoYACHT and uses one or more type-2 vertices, then two
or more separate XLoftSurfs are created, representing the two or more longitudinal
“strips” between type-2 vertices.
If the Rep qualifies for vertex lines, an option will be given to include them in the
output file. Vertex lines are often useful fairing tools.
Note: Outside the range from first to last Master Curve, FL/2B and AutoYACHT
longitudinal splines become straight lines — the so-called “straight line runout”. X-
splines do not follow this rule; instead they extend the same cubic spline as in the
last interval between master curves. If your FAIRLINE/2 Rep actually uses the
straight line runout and you want to reproduce that extension of the surface, you can
attach another XLoftSurf with just two Master Curves, one identical to the end
master curve. If, as is most common, your hull does not use any portion of the
FAIRLINE/2 surface beyond the end master curves, you can ignore the runout.
2. CLoftSurf with B-spline master curves
This is a close approximation to the original FAIRLINE surface, and the one we
prefer for most round-bottom hulls. To compensate for loss of the FAIRLINE end
conditions, the MultiSurf model will have two additional master curves: one halfway
from MC1 to MC2, and one halfway between the last two master curves. The shape
control exerted by these next-to-end master curves is very similar to direct control of
end moment or slope.
3. Vertex Lines as XCurves
4. Vertex Lines as CCurves
5. Vertex Lines as BCurves
These alternatives are offered only when you have the same number of vertices on
each FAIRLINE master curve. The MultiSurf model doesn’t include any surfaces, just
the vertex lines. This is our preferred conversion for chine hulls; the vertex lines are
the chines. In MultiSurf, you can make ruled or developable surfaces between the
chines, or a single type-1 BLoftSurf for the whole boat, using the chines as master
curves. For round-bottom hulls, a type-2 or type-3 BLoftSurf using the vertex lines as
master curves will be a close approximation to your original FAIRLINE hull (exact in
some cases).
XCurves (explicit splines) are identical to the FAIRLINE longitudinal splines, so the
XCurve conversion is exact. The number of data points on each XCurve will be the
same as the number of master curves.
CCurves (type-3) are also cubic splines through the data points, but use somewhat
different mathematics and so do not exactly duplicate the FAIRLINE longitudinal
splines. To compensate for the lack of slope or moment end conditions, each CCurve
will have two added data points near the ends.
BCurves (type-3) are also cubic splines. The control points which are output to the
file are calculated to make the B-splines pass through the FAIRLINE vertices. If you
are going to reshape the chines in MultiSurf, you may prefer to work with BCurves
rather than CCurves.
Additional inputs
(1) You are prompted for an output filename. The .MSF extension will be supplied
automatically.
(2) You are prompted for an optional prefix. This will be added to the beginning of
every object name created. By using different prefixes, you can convert separate
Reps for multiple surfaces — bottom, topside, and deck, perhaps — and have
distinct object names in the various resulting .MSF files, so they can be merged
without any object name conflicts.
(3) You are prompted for “first station on the second side”. FL2MSF outputs two
XContour objects making stations for the bow and stern separately. This prompt
specifies where the division will take place. The default is based on position of
the widest point on the sheerline (t = 0).
FY2MSF
Utility for Converting FastYacht .NRB Files to MultiSurf .MSF Files
Overview
FY2MSF is a utility for converting a FastYacht USNA NURBS file (.NRB) to an
AeroHydro MultiSurf model file (.MSF). You run FY2MSF from the DOS prompt.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
• When providing names for B-spline (BCurve) master curves, FY2MSF gives each
curve a four character name. The first two characters are the letters MC (for
master curve). The other two characters make a number from 00 to 99 which
indicates the index of the curve.
• In order to allow some customization of point and curve names and to prevent
the possibility of conflicts in these names, FY2MSF allows you to enter a prefix
which is added to the beginning of each name. Without prefixes, name conflicts
would occur if you converted two separate FastYacht files and then merged the
two resulting MultiSurf .MSF files into a single MultiSurf model.
Program Operation
To start FY2MSF, go to the directory where FY2MSF.EXE and your data files are
located; at the DOS prompt type:
fy2msf <Enter>
The program will start and present a menu of all the .NRB files in the current
directory. To select the file you want to convert, first highlight it by pressing the
arrow keys or clicking on it with the mouse, then press <Enter> or click on the
filename again.
FY2MSF will prompt you for:
• The type of MultiSurf surface to convert to — If the control points of a FastYacht
surface all have a uniform weight, you can choose to convert to either a
MultiSurf B-spline Surface (BSurf), a B-Lofted Surface (BLoftSurf), or a NURB
Surface (NURBSurf). If the weights are not all equal, then FY2MSF automatically
converts the surface to a MultiSurf NURB Surface (NURBSurf).
• The name for the surface
• A prefix for control point names (optional)
If you elected a MultiSurf B-Lofted Surface (BLoftSurf) as the type of surface to
convert to, FY2MSF will also prompt you for:
• Whether to have longitudinal or transverse B-spline (BCurve) master curves
• A prefix for the BCurve master curves (optional)
When finished, FY2MSF will prompt you for a filename for the MultiSurf .MSF file.
The name of the .NRB file will be given as a default. Accept it by pressing <Enter> or
type in a new filename and then press <Enter>. FY2MSF will append (and enforce)
the .MSF extension, and it will also give you the option to overwrite or not if the
filename you specify already exists in the current directory.
When the conversion is completed, FY2MSF reports the total number of objects
contained in the .MSF file.
MAC2MSF
Utility for Converting MacSurf Control Point Files to MultiSurf .MSF Files
Overview
MAC2MSF is a utility for converting a MaxSurf control point file to an AeroHydro
MultiSurf model file (.MSF). You run MAC2MSF from the DOS prompt.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
Program Operation
To start MAC2MSF, go to the directory where MAC2MSF and your data files are
stored; then at the DOS prompt type:
mac2msf <Enter>
The program will start and present a menu of all the .CTR files in the current
directory. To select the file you want to convert, first highlight it by pressing the
arrow keys or clicking on it with the mouse, then press <Enter> or click on the
filename again.
For each surface in the file, MAC2MSF will prompt you for:
• The type of MultiSurf surface to convert to — If the control points of a MacSurf
surface all have a uniform weight, you can choose to convert to either a
MultiSurf B-spline Surface (BSurf), a B-Lofted Surface (BLoftSurf), or a NURB
Surface (NURBSurf). If the weights are not all equal, then MAC2MSF
automatically converts the surface to a MultiSurf NURB (NURBSurf) surface.
• The name for the surface
• A prefix for control point names (optional)
• The longitudinal flexibility (order) as it was specified in MacSurf
• The transverse flexibility (order) as it was specified in MacSurf
Note that MultiSurf’s spline type is one less than the MacSurf flexibility (or order).
If you elected a MultiSurf B-Lofted Surface (BLoftSurf) as the type of surface to
convert to, MAC2MSF will also prompt you for:
• Whether to have longitudinal or transverse B-spline (BCurve) master curves
• A prefix for the BCurve master curves (optional)
After finishing with all the surfaces in the file, MAC2MSF will prompt you for a
filename for the MultiSurf .MSF file. The name of the .CTR file will be given as a
default. Accept it by pressing <Enter> or type in a new filename and then press
<Enter>. MAC2MSF will append (and enforce) the .MSF extension, and it will also
give you the option to overwrite or not if the filename you specify already exists in
the current directory.
When the conversion is completed, MAC2MSF reports the total number of objects
contained in the .MSF file.
DXF2MSF
Utility for Converting AutoCAD DXF Files to MultiSurf .MSF Files
Overview
DXF2MSF is a utility for converting AutoCAD DXF files to AeroHydro MultiSurf
model (.MSF) files. DXF2MSF converts the following DXF entities: POINT, LINE,
CIRCLE, ARC, and some types of POLYLINE. This is a subset of DXF entities.
DXF2MSF does not convert 3DFACE, ATTDEF, ATTRIB, DIMENSION, INSERT,
SHAPE, SOLID, TEXT, TRACE, or VIEWPORT entities. Also, DXF2MSF does not
“extrude” any DXF objects when it converts them.
MultiSurf files use CGA/EGA color numbers for objects. DXF files use AutoCAD
color numbers for objects. DXF2MSF converts from AutoCAD color numbers to
CGA/EGA color numbers according to the table at the end of the “2DD2DXF,
3DA2DXF, PAT2DXF” section of this appendix.
DXF2MSF provides two alternatives for converting simple 3D meshes (“Desmooth”
as opposed to “Smooth” or splined in the terminology of the PEDIT command). In
the default alternative, DXF2MSF creates a TabSurf supported by a patch in a .PAT
file. With the other alternative, invoked with the ‘-s’ (s for surface) option, DXF2MSF
translates a simple 3D mesh to a type-1 BLoftSurf supported by type-1 BCurves.
Likewise, DXF2MSF provides two alternatives for converting simple 3D polylines
(“Decurve” as opposed to “Spline” in the terminology of the PEDIT command). In
the default alternative, DXF2MSF creates a TabCurve supported by a polyline in a
.3DA file. With the other alternative, invoked with the ‘-c’ (c for curve) option,
DXF2MSF translates a simple 3D polyline to a type-1 BCurve.
If your DXF file contains dense polylines and meshes which represent smooth curves
or surfaces, you will probably want to use the default alternative. Using the -c or -s
options will create too many points. On the other hand, your DXF file may contain
coarse polylines or meshes. If you want access to their vertices you should use the -c
and/or the -s option.
When DXF2MSF finishes converting a file it prints a message indicating the number
of MultiSurf objects in the output file.
Program Operation
DXF2MSF is a stand-alone, batch program. To use DXF2MSF, copy the
DXF2MSF.EXE from the \MSURFWIN\UTILITY directory into the directory where
the files you want to convert are located.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
To run the program, go to the directory where DXF2MSF and your data files are
stored; then type the program name, DXF2MSF, on the DOS command line, followed
by one or more command line arguments, in the following format:
“in.dxf” The first filename is the name of the input DXF file. If typed without
an extension, .DXF is assumed. As mentioned above, this filename is
required.
“out.msf” The second filename is the name of the output .MSF file. If typed
without an extension, .MSF is added. The second filename is not
required. If it is not present the input filename is used with the
extension .MSF.
“out.pat” The third filename is the name of the output .PAT file. DXF2MSF
translates any simple 3D meshes to patches in this .PAT file if the -s
option is not used. The third filename is optional. If it is not present
the input filename is used with the extension .PAT. If the third
filename is entered, the second filename must also be entered.
“out.3da” The fourth filename is the name of the output .3DA file. DXF2MSF
translates any simple 3D polylines to polylines in this .3DA file if the -
c option is not used. The fourth filename is optional. If it is not present
the input filename is used with the extension .3DA. If the fourth
filename is present, the second and third filenames must also be
present.
DXF2MSF recognizes the following options:
-s If present, convert 3D meshes to type-1 BLoftSurfs supported by type-1 BCurves.
(If absent, convert 3D meshes to TabSurfs supported by patches in the .PAT file.)
-c If present, convert 3D polylines to type-1 BCurves. (If absent, convert 3D
polylines to TabCurves supported by polylines in the .3DA file.)
For example, the following command line starts DXF2MSF and tells it to convert
SKYKING.DXF to SKYKING1.MSF, translating any 3D meshes to patches in the file
SKYKING1.PAT and translating any 3D polylines to polylines in the file
SKYKING1.3DA:
dxf2msf skyking skyking1 skyking1 <Enter>
This second example starts DXF2MSF and tells it to convert RAMBLE.DXF (by
default, the program will give the output .MSF file the name RAMBLE.MSF),
translating 3D meshes into type-1 BLoftSurfs and polylines into type-1 BCurves:
dxf2msf -s -c ramble <Enter>
Examples
The AutoCAD DXF format is a rich representation which contains many entities that
cannot be modeled in MultiSurf. As we’ve shown, DXF2MSF converts only a subset
of DXF entities. The following notes are intended to provide some guidance along
with specific examples of conversion.
Not mentioned above is what to do about block inserts, which DXF2MSF does not
convert. It’s a pretty simple fix — before you try to convert, first use the AutoCAD
EXPLODE command to turn any block inserts into their underlying primitive
AutoCAD entities, then write out the DXF file from AutoCAD. You can use the
AutoCAD LIST command to determine if an AutoCAD entity is a block insert.
The following examples demonstrate some of the techniques you can use to convert
an AutoCAD model to a MultiSurf model.
HOUSE.DWG
This is a simple drawing distributed with AutoCAD Release 11. It consists only of
lines. After exporting from AutoCAD with DXFOUT, DXF2MSF was able to
completely convert the drawing to an MSF file.
AIRPLANE.DWG
AIRPLANE.DWG is distributed with AutoCAD Release 11. It consists of a number of
3D meshes collected into a block representing one side of the airplane. This block is
inserted twice, once with a negative X scale factor, in order to represent the two sides
of the plane. The EXPLODE command works only on uniformly scaled blocks, so
only half the plane can be exploded into its underlying 3D meshes. When DXF2MSF
converts the resulting DXF file, it ignores the unexploded block insert. The resulting
.MSF file has only half the plane. In MultiSurf, though, these surfaces can easily be
reflected using MirrSurf entities with a plane as a mirror.
CHAIR-3D.DWG
This is a 3D drawing of an office chair distributed with AutoCAD Release 11. It has
an external reference (XREF) to a drawing template (ADESK_B.DWG). The drawing
contains four views of the single office chair which demonstrate the paper space
feature of AutoCAD. In order to export the drawing from AutoCAD for conversion
to MultiSurf, we first used the MSPACE command to switch from paper space to
model space. Then we used the Entity option of the DXFOUT command to select
only the chair from one view to output to the DXF. The chair is made up of a
combination of lines, 3D polylines, 3D meshes, and 3D faces. DXF2MSF does not
convert the 3D faces.
ASBOAT.DWG
This is a simple three master curve boat created with AutoSurf R2. AutoSurf surfaces
are normally represented as 3D polylines gathered together into a block insert. The
block must first be exploded. The resulting 3D polylines become TabCurves (rather
than TabSurfs) in the converted .MSF file.
Overview
MultiSurf includes a limited capability to import IGES geometry files into MultiSurf.
This is accomplished through two command-line utilities: IGES2NBS and NBS2MSF.
When these two programs operate in sequence on a valid IGES file, each Rational B-
Spline surface entity (entity 128) is translated into a set of MultiSurf objects
(currently an array of AbsPoints, 2 KnotLists, and 1 NURBSurf) in .MSF model file
format. The resulting surface in MultiSurf is an exact rendition of the original
NURBS surface.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
Program Operation
IGES2MSF
IGES2MSF is the batch file that allows single-command generation of an .MSF file
from type 128 surface entities in an .IGS file. IGES2MSF.BAT, IGES2NBS.EXE, and
NBS2MSF.EXE must all be present and in the same directory with your data
files.
You run the batch file from the DOS command line (in the directory where the utility
programs and your data files are stored), by typing a command in the following
format:
iges2msf infile <Enter>
where infile is the filename (do not include the extension) of the .IGS input file. Note
that the input file must have the extension .IGS (e.g. STARSHIP.IGS), but you must
NOT type that extension on the DOS command line when you run the batch file.
Example:
iges2msf starship <Enter>
will convert the type 128 surfaces in STARSHIP.IGS and output the file
STARSHIP.MSF.
IGES2NBS
IGES2NBS.EXE generates an .NBS output file from type 128 surface entities in an
.IGS file. You run the utility from the DOS command line (in the directory where the
utility programs and your data files are stored) using the following format:
iges2nbs infile [ outfile ] <Enter>
infile = filename for input; if no extension, .IGS is assumed.
outfile = optional filename for output; if absent, outfile name is same as infile name;
if no extension, .NBS is assumed.
Examples:
iges2nbs oldgoose <Enter>
iges2nbs oldgoose newgoose <Enter>
The first example starts the program and tells it to convert the type 128 surfaces in
OLDGOOSE.IGS and name the output file with the default OLDGOOSE.NBS. The
second example tells IGES2NBS to convert the same surfaces, but to name the output
file NEWGOOSE.NBS.
NBS2MSF
NBS2MSF.EXE converts an AeroHydro .NBS NURBS file to a MultiSurf .MSF file.
You run the utility from the DOS command line (in the directory where the utility
programs and your data files are stored) using the following format:
nbs2msf infile [ outfile ] <Enter>
infile = filename for input; if no extension, .NBS is assumed.
outfile = optional filename for output; if absent, outfile name is same as infile name;
if no extension, .MSF is assumed.
(small value) will generate a NURBS surface which closely matches the target
mesh, with a relatively large number of control points. A loose tolerance (large
value) allows the mesh to be approximated with a smaller number of control
points, and the resulting NURBS surface will smooth out irregularities and noise
in the input mesh.
(4) Process the .NBS file through NBS2MSF. In MultiSurf, you will get a NURBSurf
that is the smoothed approximation of the original mesh, as a surface object
which can then be further manipulated and built upon.
Overview
2DD2DXF, 3DA2DXF, and PAT2DXF are utility programs for converting .2DD,
.3DA, and .PAT files into .DXF files. This allows 2D and 3D images to be transferred
from AeroHydro’s FAIRLINE® system programs to a wide variety of CAD systems
including AutoCAD®. We group the three AeroHydro utilities here for discussion
because they share many similarities.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
3DA
The .3DA file format represents three-dimensional wireframes and is output by
MultiSurf and OFE/4. 3DA files are ASCII files.
There are two types of .3DA representation:
• plain .3DA
• panel .3DA
A plain .3DA file represents a model as a series of polylines. The file consists of a list
of 3D points. Each point is represented by an integer pen value and floating point x,
y, and z coordinates. A 0 pen signifies “pen-up”, i.e. move to this point without
drawing. A non-zero pen indicates the color of the line from the previous point to the
current point. The sequence of line segments starting with a zero pen and proceeding
to the point before the next zero pen (or to the end of the file) represents a polyline.
The panel .3DA file is a variation of the plain .3DA file. As its title implies, it allows
for the representation of panels as well as polylines. Any polyline which starts and
ends on the same point is a panel. Panels can be mixed with polylines.
3DA2DXF writes three entity types into a .DXF file: Points, 3D Polylines, and 3D
Faces.
PAT
A .PAT file represents a model as one or more three-dimensional surface patches and
is output by MultiSurf. The .PAT file is a variation of the .3DA format, and as such it
is an ASCII file. Each surface patch is represented in the file by two or more
polylines. All the polylines which make up a single surface patch must have the
same number of points. Different patches within a file are separated by a single point
with pen, x, y, and z values all of zero. In a PAT file, regular .3DA points, polylines,
and panels cannot be combined with surface patches.
PAT2DXF converts each surface patch in a .PAT file into a 3D Mesh entity in a .DXF
file.
3DA2DXF converts a .PAT file into a series of polylines. The separator points are
converted to Point entities.
DXF
The .DXF file format is AutoDesk’s Data Exchange Format. A .DXF file can represent
many different types of entities. AutoCAD and many other CAD systems can read a
.DXF file. DXF files can be either ASCII or binary. The MultiSurf output conversion
utilities all write ASCII .DXF files.
Program Operation
2DD2DXF, 3DA2DXF, and PAT2DXF are stand-alone, batch programs. To run any
of these utility programs, copy their .EXE file from the \MSURFWIN\UTILITY
directory into the directory where the files you want to convert are located.
You run each of them by going to the directory where the utility .EXE and your data
files are located, then typing the program name on the DOS command line, followed
by one or two command line arguments. The first argument is the name of the input
file. If typed without an extension, the appropriate .2DD, .3DA, or .PAT default is
assumed. The second argument is optional — it is the name of the output file. If
typed without an extension, the appropriate .DXF or .SRF default is assumed. If the
second argument is omitted, the program uses the input filename with the default
extension.
Examples
The following four command lines all use 2DD2DXF to convert the file BOAT.2DD to
BOAT.DXF:
C:\>2DD2DXF BOAT
C:\>2DD2DXF BOAT.2DD
This command line uses 2DD2DXF to convert BOAT.2DD and give it the new
filename CADBOAT.DXF:
C:\>2DD2DXF BOAT CADBOAT
3DA2DXF and PAT2DXF work similarly:
C:\>3DA2DXF BOAT
etc.
C:\>PAT2DXF BOAT
etc.
3DA2DXF can be used to convert a .PAT file into a .DXF file composed of polylines
(rather than the 3D Meshes derived from PAT2DXF conversion), for example
BOATSURF.PAT to BOATSURF.DXF:
C:\>3DA2DXF BOATSURF.PAT
Technical Notes
Point and polyline conversion — 3DA2DXF
3DA2DXF converts all polylines with four or five points that end on the starting
point into three or four vertex 3D Face entities in the DXF file. All other polylines are
converted to 3D Polyline entities. Single points in the 3DA file are converted to Point
entities in the DXF file.
Temporary files
3DA2DXF writes and then deletes a temporary file named ~3DTMP.TMP. If this file
exists when 3DA2DXF is run it will be overwritten and then deleted.
NBS2IGES
Utility for Converting MultiSurf .NBS Files to IGES .IGS Files
Overview
NBS2IGES is a utility program for converting surfaces in MultiSurf NURBS files
(.NBS) to the IGES American National Standard file format (.IGS) to permit data
sharing with other CAD or CAM systems. (For more information about IGES, see
IGES International Graphics Exchange Specification, US PRO/IPO-100, IGES 5.2; U.S.
Product Data Association, 2722 Merrilee Drive, Suite 200, Fairfax, VA 22031-4499.)
Program Operation
To run the NBS2IGES conversion program you need two files:
• an .NBS data file (containing the surfaces to be converted); created by MultiSurf
• a configuration file NBS2IGES.CFG (containing other conversion information;
see specification below); distributed with NBS2IGES; to be edited by user
Be sure these two files and NBS2IGES.EXE are located in the same directory —
we generally recommend copying utility files (in this case the .CFG and .EXE)
from \MSURFWIN\UTILITY into the directory where your data files are located.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
You start the utility by typing the program name, NBS2IGES, on the DOS command
line (in the directory where the utility programs and your data files are located),
followed by one or two command line arguments, in the following format:
nbs2iges infile.nbs [ outfile.igs ] <Enter>
where infile is the name of the .NBS input file and outfile (optional) is your choice of
output filename for the .IGS file — the default output filename is the infile filename
with the .IGS extension. Example:
nbs2iges gore <Enter>
nbs2iges gore octopus <Enter>
The first example starts the program and tells it to convert the surfaces in GORE.NBS
and name the output file with the default GORE.IGS. The second example tells
NBS2IGES to convert the same surfaces, but to name the output file OCTOPUS.IGS.
okay. The keyword directly followed by an = sign is required in each line present;
keywords are case insensitive.
For example:
comment=Comment text lines can contain any information you
wish.
comment=If you want to use more than one comment line, go right
ahead.
author=Gillian
company=SmoothTech
comment= There can be any number of comment lines. The first 70 characters of
each comment line will be transferred to the output file. Spaces are okay.
author= The first 60 characters will be transferred to the output file. No spaces
allowed, but hyphens and underline characters are okay.
company= The first 60 characters will be transferred to the output file. No spaces
allowed, but hyphens and underline characters are okay.
FOILFIT
Utility for Fitting B-spline Curves to Foil Sections
Overview
FOILFIT is a utility for fitting B-spline parametric curves to arbitrary airfoil and
hydrofoil sections. It reads an input data file containing thickness and camber offsets
and writes an output file containing B-spline control points. The output file is in the
format required for a user-defined foil section in MultiSurf.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
To run FOILFIT, copy the .EXE file from the \MSURFWIN\UTILITY directory into
the directory where the .DAT files you want to fit are located.
To run FOILFIT, go to the directory in which the .EXE and your .DAT file(s) are
located; then at the DOS prompt by type:
foilfit filename /n <Enter>
where:
filename is the name of a foil data file — the .DAT extension is assumed (and
enforced)
/n is an optional modifier setting the number of control points (default = 8)
Input file
The input file is an ASCII text file in three sections:
(1) The first line is an identifying message for the file.
(2) The second line is an integer telling how many lines follow.
(3) The balance of file is data lines.
Each data line needs four numbers, separated by spaces, free format; all four
values expressed as % of chord (see example below):
X-position
thickness function ordinate
thickness function delta
camber function
The thickness function delta is an optional correction to the thickness; if there is
no correction to make, use zero in this column. In the following example, the .100
trailing edge thickness is removed by using deltas of .100 (x/c)4.
When fitting a symmetric section (no camber), the camber column can be all
zeroes. However, the resulting section will have no camber when used as a
5-point foil in MultiSurf, even if its 2nd and 4th control points are
unsymmetrically located.
Program Operation
FOILFIT uses least-squares fitting with B-spline basis functions. The number of
control points is user-controlled (default 8). The B-spline order (4 = cubic), and the
control point abscissas are hard-wired. The abscissa control point values are chosen
to produce a parabolic (approximately half-cosine) distribution of X vs. t.
Separate root-mean-square error values for thickness and camber fits are displayed
as a fraction of chord. For the five built-in foil families, using 8 control points, these
ranged from .00001 to .00032, average about .00015. Be sure to examine the screen
tabulation of fit - data differences to identify bad data points.
In general, the closeness of fit should improve with increasing number of control
points. Fairness, on the other hand, often is compromised by larger numbers of
control points. We always prefer to use a small number for fairness, and would
increase the number of control points beyond 8 only if we judged the fit to be
insufficiently close.
Output file
Like the input file, the output file is in three sections (see example below):
(1) The first line is a verbatim copy of the identifying message.
(2) The second line is two integers:
the number of control points
the B-spline order (e.g., 4 = cubic)
(3) The balance of file is data lines, each with 3 numbers:
abscissa
ordinate for thickness function
ordinate for camber function
All three values are normalized to the range 0 to 1.
The fitted thickness is a B-spline using (x, yt) as control points. The fitted camber
is a B-spline using (x, yc) as control points. (Both B-splines use uniform knots.)
The output file takes the name of the input file, with .FOI extension. The output file
will generally have to be renamed to be recognized by MultiSurf, e.g. TYPE101.FOI,
etc. — we renamed the example file below TYPE165.FOI.
Example output file (made from the above example input)
data for 0010-65 foil p. 319 w/ 64 mean line p. 385
8 4
0.00000 0.00000 0.00000 (Note: this line is required.)
0.00000 0.19834 0.00370
0.02667 0.50750 0.13320
0.14667 0.77953 0.65787
0.34667 0.97395 1.08315
0.62667 1.06479 0.93092
0.86667 0.62715 0.45153
1.00000 0.00000 0.00000
ENTSERCH
Utility for Searching Model Files for Specific Strings of Text
Overview
ENTSERCH is a utility that searches a specified group of model files in the current
directory for lines containing user-specified strings. It can be used to search for all
occurrences of a specific object name, for all MultiSurf objects of a particular entity
type, etc. ENTSERCH displays results on the screen, as well as writing them to a file,
ENTSERCH.OUT (which you can copy to another filename.ext for future reference).
Matching lines, if any, are shown for each file searched. ENTSERCH also creates a
file, DIRFILE, containing a summary list of all files searched in the current directory.
Program Operation
To use ENTSERCH, copy the .EXE file from the \MSURFWIN\UTILITY directory
into the directory where the .MS2 files you want to search are located.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
To start the program, go to the directory where the .EXE and the .MS2 files are
located; then on the MS-DOS command line, type a command in the following
format:
entserch [ filespec ] <Enter>
filespec is an optional MS-DOS file specification which can include wildcards * and ?.
The default is *.MS2.
ENTSERCH displays a start up banner, then prompts for a search string. Type in a
string of text to search for, then press <Enter>. For example:
Search string sheerline <Enter>
This tells ENTSERCH to search all specified files in the current directory for objects
named ‘sheerline’.
ENTSERCH will continue to prompt for search strings (up to a maximum of ten),
until you terminate the dialog by pressing <Enter> on a line by itself with no search
string.
During the search process, you can press <Esc> or <Ctrl>+<C> to escape. An
ENTSERCH.OUT file will be created, containing the search results up to that point.
Search strings
ENTSERCH does support embedded blanks in search strings. For example,
AbsMagnet mag3 is a valid search string. However, note that entity types and
object names in the model files we have created are generally separated by two or
three spaces, just for ease of reading. And you, of course, can create your own
conventions, if you so desire. In any case, when you use ENTSERCH you must
include the correct number of spaces in the search string to get a successful match.
Also be aware that ENTSERCH searches are case sensitive. That is, if you are
searching for CLoftSurfs, the search string CLOFTSURF will not produce a match.
You must enter the search string CLoftSurf, exactly as it appears in the model file.
We recommend that you look at a sample model file or the entity description in the
Reference section of this manual to confirm your choice of search string before using
ENTSERCH.
Sample output
ENTSERCH search 04-12-1995 12:51:03 filespec= *.MS2
Search strings:
bulkhead
DevSurf
BULKHD1.MS2----------------------------------------------------
// Tutorial 1 - moving the bulkhead
DEVSURF1.MS2---------------------------------------------------
DevSurf panel1 11 1 40x1 1x1 0 / sheer chine ;
DevSurf panel2 11 1 40x1 1x1 0 / chine keel ;
DEVSURF2.MS2---------------------------------------------------
DevSurf panel1 11 1 40x1 1x1 0 / sheer chine ;
RCSH0.MS2------------------------------------------------------
DevSurf bottom 11 3 16x2 1x1 0 / chine2 profile ;
DevSurf topside 11 1 16x2 1x1 0 / sheer chine1 ;
XPLANE.MS2-----------------------------------------------------
XPlane bulkhead2 13 1 / 16.071 ;
XPlane bulkhead3 14 1 / 24.000 ;
ProjPoint top2 11 1 / top_corner bulkhead2 ;
ProjPoint bottom2 11 1 / bottom_corner bulkhead2 ;
OFTBL
Utility for Generating Offset Tables from .3DA Files
Overview
OFTBL is a utility for creating a conventional “Offset Table” of heights and half-
breadths from a hull model created in MultiSurf.
To operate OFTBL you must create two files, besides the MultiSurf model file:
(1) a special .3DA wireframe file containing the necessary geometric information
and
(2) a .DAT text file of instructions to OFTBL
The output from OFTBL is a text file which can be printed or loaded into a word
processor.
Note: The MultiSurf DOS utilities do NOT work with long filenames (that is, filename
character limit is 8; .ext character limit is 3), so name your files accordingly.
###, applies only to the “feet” portion of the output. Here’s an example of a Line
3 specifying feet-inches-eighths output:
ft-in-8ths ###
Line 4. Station numbering. This line has two entries, separated by one or
more spaces:
X0 = the X-position of Station 0
Xint = the X-interval between stations
This assumes that you use a station numbering scheme in which there is a linear
relation between X-position (X) and station number (n), as follows:
X = X0 + n * Xint
X0 and Xint have the same units as used in the model file.
Line 5. Multiplier
This line allows all X, Y, and Z coordinates to be multiplied by a constant factor
during printing of the table. The primary purpose is to allow conversion of units. For
example, to print offsets in meters for a vessel whose model file is in feet, use the
multiplier 0.3048. The multiplier can also be used to create a scale model or uniform
stretching of the original hull. (An alternative, of course, is to stretch the model file
before saving it and the .3DA file; then the multiplier would be 1.)
If you do not want to convert units or stretch the model, the multiplier must be 1.
Line 6. Identifying message. The information on this line will be printed
verbatim at the top of each page in the output file.
Line 7. (optional) List the object names of any curves, snakes,
or single Contour objects you want tabulated in the offset
table, separated by one or more spaces. These names must appear exactly as they
do in the MultiSurf model file, i.e. observe capitalization. General Contour objects
may be selected here (e.g., diagonals), but each such Contour object should generate
only one cut, i.e., first index = last index.
Running OFTBL
To use OFTBL, copy the .EXE file from the \MSURFWIN\UTILITY directory into
the directory where your input data files (.MS2, .DAT, .3DA) are located.
To start the program, go to the directory where the .EXE and the 3 input files are
stored; then on the MS-DOS command line, type a command in the following format
(be sure to put a space between each element in the command):
oftbl infile.ext [outfile.ext] <Enter>
where:
infile.ext is the filename.ext of your OFTBL input file; you must include the
extension
outfile.ext is an optional filename.ext for the output
If outfile is not specified, OFTBL will name the output file OFTBL.OUT .
Operation
OFTBL first reads and stores data from the input file, then from the MultiSurf model
file. Then it opens the .3DA file, translates it into a binary file %TEMP.BIN, and scans
this file for the specified contours and curves. Linear interpolation is performed
along stations to locate buttocks and waterlines (intersection of station polylines with
vertical and horizontal planes), and linear interpolation is performed along curves
and general contours to locate intersections with transverse station planes.
OFTBL may find and display 0, 1, or 2 intersections with each plane. (For example,
on a hull with tumblehome, some outboard buttocks may intersect some stations
twice.) If additional intersections beyond 2 are present, OFTBL ignores them.
Error conditions
OFTBL has a limited ability to diagnose errors occurring during its operation and
will provide the following error messages:
1. Input file not found.
The file specified by infile was not found in the current directory. Check the spelling
and location of the file on the command line.
(6) Increase the divisions of Master Curves ‘MC1’, ‘MC2’, and ‘MC3’ to 40.
(7) Increase the divisions of surface ‘hull’ to 10x4 by 20x2.
We saved the model as DEMO_OFS.MS2.
Input .3DA file
Then with only the following objects shown,
'cove' (yellow)
'sheer' (green)
'buttocks' (magenta)
X
'profile' (cyan)
'diag_A' (white)
Appendix C
Output File Specifications
Overview
This appendix details the file specification for most of MultiSurf’s output files: .2DD,
.3DA, .PAT, .OFE, .RUL, and .NBS.
snake class.
3rd line: n k t-divisions t-subdivisions color
blank line
n + k knots
blank line
n lines, consisting of:
w u v
A snake is embedded in the last surface that precedes it in the file.
surface class.
3rd line: nu ku nv kv u-divisions u-subdivisions v-divisions v-subdivisions
orientation color
blank line
nu + ku knots for the u-direction
blank line
nv + kv knots for the v-direction
nv groups of nu + 1 lines, consisting of:
blank line
nu vertices: w, x, y, z coordinates
Notes:
orientation has same meaning as in MultiSurf: positive normal orientation.
color is 0 to 255
plane class. There is only one additional line:
color X Y Z UN(1) UN(2) UN(3)
The plane is specified by a point and the unit normal vector. (A plane does not have
parameters, so does not qualify as a surface.)
Appendix D
Program Limits
MultiSurf stores its data in highly-flexible dynamic structures, so there are few hard
limits on anything. But there are a few ...
Object name: maximum 16 characters.
Object comment (user data): maximum 40 characters
Line length in model file: maximum 8192 characters+spaces (but we don’t
recommend even coming close to this limit!)
color range = 0-255
t-divisions range = 1-255
t-subdivisions range = 1-255
u-divisions range = 1-255
u-subdivisions range = 1-255
v-divisions range = 1-255
v-subdivisions range = 1-255
Total surface divisions:
u-divisions x u-subdivisions x v-divisions x v-subdivisions = 160,000. (An easy-
to-see example: 20x20 x 20x20.)
Divisions multiplier (Settings/ Model) = 1 - 10
In general, the divisions limits are FAR in excess of what is needed for adequate
screen images, and even for actual building patterns. We feel the program
default divisions (8x4 for curves and 8x4 8x4 for surfaces) are sufficient for
viewing most curves and surfaces, at least initially.
Appendix E
Annotated List of Sample Files
Distributed with MultiSurf
.MC2
CLFTHULL.MC2 — component hull skin used in Tutorial 7 sailboat
DECK1.MC2 — component deck used in Tutorial 7 sailboat
KEEL1.MC2 — component keel used in Tutorial 7 sailboat
PAINT1.MC2 — component paint job used in Tutorial 7 sailboat
THWART1.MC2 — component thwart used in Tutorial 2 rowboat
TRANSOM1.MC2 — component transom used in Tutorial 7 sailboat
.MS2
2CABINS.MS2 — entity description Example 1 for EdgeSnake; Tutorial 5 example
“Superstructures”; Tutorial 7 source model for experimental cabin component
(wrong orientation)
2PLANE1.MS2 — entity description example for Plane2
3MCS.MS2 — beginning model for Tutorial 7: Components
3PLANE0.MS2 — entity description Example 1 for Plane3
3PLANE1.MS2 — entity description Example 2 for Plane3
ABSBEAD.MS2 — entity description example for AbsBead
ABSMAG1.MS2 — entity description example for AbsMagnet
ABSPT1.MS2 — entity description example for AbsPoint
AIRPLANE.MS2 — an example for your perusal
ARC1.MS2 — entity description Example 1 for Arc (type-1); also Tutorial 4 example
“Arcs”
ARC2.MS2 — entity description Example 2 for Arc (type-2); also Tutorial 4 example
“Arcs”
ARC3.MS2 — entity description Example 3 for Arc (type-3); also Tutorial 4 example
“Arcs”
ARCS4-5.MS2 — entity description Example 4 for Arc (types 4 and 5)
ARC5PERP.MS2 — entity description Example 5 for Arc (arc ending perpendicular
to plane)
ARC6.MS2 — entity description Example 6 for Arc (type-6)
ARCLENBD.MS2 — entity description example for ArcLenBead
ARCLENRG.MS2 — entity description example for ArcLenRing
ARCLOFT4.MS2 — entity description Example 2 for ALoftSurf (type-4)
ARCSNAKE.MS2 — entity description example for ArcSnake; also Tutorial 4
example “Arc Snakes”
BKRY0.MS2 —Tutorial 5 example “Sailing Yacht Keels”
BFITCV1.MS2 — entity description example for BFitCurve
BFITSRF1.MS2 — entity description example for BFitSurf
BLEND.MS2 — Tutorial 5 example “Blended-Surface Hulls” (BlendSurf solution is
slack-bilged)
BLEND1.MS2 — Tutorial 5 example “Blended-Surface Hulls” (BlendCtr solution is
stiff-bilged)
BLEND2.MS2 — entity description Example 1 for BlendSurf
BLENDC1X.MS2 — entity description Example 1 for BlendCtr (type-1)
BLENDPT2.MS2 — entity description Example 1 for BlendPoint
BLENDPT3.MS2 — entity description Example 2 for BlendPoint
BLENDSF2.MS2 — entity description Example 2 for BlendSurf
BLFT5X4.MS2 — entity description Example 1 for BLoftSurf (type-3; used for
complete hull definition); Tutorial 4 example “B-Lofted Surface”; Tutorial 5
example “Round Sterns”
BLISTER0.MS2 — entity description Example 1 for Blister (using point objects for
snake2 and curve); Tutorial 5 example “Blister Appendages” (canopy on a
fuselage)
BLOFT1.MS2 — entity description Example 2 for BLoftSurf (type-2; used for bow-
rounding)
BLOFTSOLID1.MS2 — entity description example for BLoftSolid
BOOTTOP.MS2 — entity description example for IntSnake
BOWROUND.MS2 — Tutorial 5 example “Bow Rounding” (alternative file)
BSNAK1-3.MS2 — Tutorial 4 example “B-Spline Snake” (types 1-3)
BSNAKE.MS2 — entity description example for BSnake
BSPL1-3.MS2 — Tutorial 4 example “BCurve” (types 1-3)
BSPLINE2.MS2 — entity description example for BCurve
BSUBCV0.MS2 — entity description Example 1 for BSubCurve
BSUBCV1.MS2 — entity description Example 2 for BSubCurve
BSUBSNAKE1.MS2 — entity description example for BSubSnake
BSURF.MS2 — entity description example for BSurf; also Tutorial 4 example “BSurf”
BUDVASE.MS2 — an example for your perusal
BULKHD1.MS2 — Tutorial 1 example “Moving a bulkhead”; Tutorial 5 example “A
Movable Bulkhead”
BUSTLE0.MS2 — entity description Example 2 for Blister (using a snake for snake2
and a curve for curve); Tutorial 5 example “Blister Appendages” (skeg/bustle
appendage)
CATENARY.MS2 — entity description example for Conic (type-4: catenary)
FILLET2.MS2 — entity description Example 1 for Fillet (rounding off sharp common
edge of 2 surfaces)
FLOFT1.MS2 — entity description example for FLoftSurf (half-section; keel)
FLOFT2.MS2 — entity description Example 2 for FLoftSurf (full-section; cambered
elliptic wing)
FOIL1.MS2 — entity description Example 1 for FCurve (half-section)
FOIL2.MS2 — entity description Example 2 for FCurve (full-section; no camber)
FOIL3.MS2 — entity description Example 3 for FCurve (full-section; cambered;
bottom fig. showing effect (none) of changing fore-and-aft positions of point2 and
point4)
FOIL7.MS2 — entity description Example 4 for FCurve (user-defined foil; uses
TYTPE165.FOI)
FRAME0.MS2 — entity description Example 1 for Frame3, FrameAbsPt, and
FrameRelPt
FRAME1.MS2 — entity description Example 2 for Frame3, FrameAbsPt, and
FrameRelPt
FRAME2.MS2 — entity description example for EulerFrame
FSNAKE2.MS2 — entity description example for FSnake (root of keel)
GUARD.MS2 — entity description examples for OffsetCurv and SweepSurf (Ex. 3)
GUARD1.MS2 — entity description Example 4 for SweepSurf (tapered sweep
surface); Tutorial 7 source model for rub rail component
HELIX1.MS2 — entity description example for Helix; also Tutorial 4 example
“Helix”
HELIX2.MS2 — entity description example for Helix2
HULLDECK.MS2 — Tutorial 5 example “Decks” (cambered deck as C-lofted surface
with B-spline Master Curves); Tutorial 5 example “Offsets and Hydrostatics”
INLET.MS2 — entity description Example 2 for OffsetCurv (lip)
INTERIOR-GRID.MS2 — interior gridding example for “Using Solids”
INTMAG2.MS2 — entity description example for IntMagnet
INTRING.MS2 — entity description example for IntRing
INTRING2.MS2 — entity description Example 1 for IntRing2
INTRING3.MS2 — entity description Example 2 for IntRing2
JET.MS2 — an example for your perusal
JIB.MS2 — entity description Example 2 for BlendCtr (with one side = single point)
KNOTLST0.MS2 — entity description Example 1 for KnotList ( & = default knot
distribution = uniform)
KNOTLST1.MS2 — entity description Example 2 for KnotList (non-uniform knot
distribution)
KNOTLST2.MS2 — entity description Example for KnotList2
LINESTEM.MS2 — entity description example for Line
LOBSTER1-8.MS2 — distribution comparison files for Tutorial 6: Creating a Hull
from a Sketch (lobsterboat)
LSNAKE.MS2 — entity description Example 1 for LineSnake (cove stripe)
LSNAKE3.MS2 — entity description Example 2 for LineSnake (raised deck edge)
MEGYACHT.MS2 — an example for your perusal
MIRRCAT.MS2 — entity description example for MirrSurf (catamaran hull); also
Tutorial 4 example “Mirror Surfaces”
MIRRCRV.MS2 — entity description example for MirrCurve; also Tutorial 4 example
“Mirror Curves”
MIRRPT.MS2 — entity description example for MirrPoint
MONTIOR.MS2 — an example for your perusal
MOUSE1.MS2 — an example for your perusal
NURBCRV1.MS2 — entity description example for NURBCurve
Appendix F
Entity Specification Syntax for
Model File Text
Overview
This appendix is intended for those of you who will be editing model files directly as text
(rather than interactively on the screen) and, therefore, need to know the correct specification
syntax for the MultiSurf entities. We’ve listed the entities here by class (points, curves,
snakes, surfaces, miscellaneous), in alphabetical order within each class. We first give the
entity specification, then give one or more examples as fragments of model file text (the
examples are the same as the ones in the “Entity Descriptions”). You may want to Edit/
Show/ Points or Edit/ Show/ All to see complete models on the screen (for many of the
example models, in order to put the focus on the particular entity and its direct supports,
we’ve hidden some of the other objects). See also the Reference chapter “The MultiSurf Model
File.”
Note: these examples do not include optional object information such as layers and weights
(tagged data), and object comments (user data). The “...” before the slash (/) in each entity
specification represents where these data items would be listed in an object definition. For
examples that show these usages, see Reference chapter “The MultiSurf Model File - (5) List of
Objects - Optional tagged data/Optional user data.”
Points
AbsBead name color visibility ... / curve t ;
Example: absbead.ms2
...
BCurve railing 13 1 10x1 / * 2 { p1 p2 p3 } ;
AbsBead stanchion1 11 1 / railing 0.33330 ;
AbsBead stanchion2 11 1 / railing 0.66670 ;
AbsBead stanchion3 11 1 / railing 1.0 ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-77
Appendix F: Entity Specification Syntax for Model File Text
5-78 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-79
Appendix F: Entity Specification Syntax for Model File Text
5-80 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-81
Appendix F: Entity Specification Syntax for Model File Text
5-82 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Curves
Arc name color visibility divisions ... / relabel type point1 point2 point3 ;
Example 1: arc1.ms2 (type-1)
...
AbsPoint top 14 1 / 0.000 0.000 10.000 ;
AbsPoint side 14 1 / 0.000 10.000 0.000 ;
AbsPoint bottom 14 1 / 0.000 0.000 -10.000 ;
Arc midsection 10 1 36x1 / * 1 top side bottom ;
Example 2: arc2.ms2 (type-2)
...
AbsPoint center 14 1 / 2.000 2.000 2.000 ;
RelPoint start 14 1 / center -5.000 0.000 0.000 ;
RelPoint end_guide 14 1 / center 6.000 0.000 2.000 ;
Line edge 7 1 1x1 / * center end_guide ;
Arc arc_to_edge 13 1 20x1 / * 2 start center end_guide ;
Example 3: arc3.ms2 (type-3)
...
AbsPoint center 14 1 / 3.000 3.000 3.000 ;
RelPoint start 14 1 / center -5.000 0.000 0.000 ;
RelPoint plane_guide 14 1 / center 6.000 0.000 2.000 ;
Arc full_circle 11 1 36x1 / * 3 start center plane_guide ;
Example 4: arcs4-5.ms2 (type-4 and type-5)
...
AbsPoint p1 14 1 / 0.000 0.000 0.000 ;
AbsPoint p2 14 1 / 11.122 0.000 4.774 ;
AbsPoint p3 14 1 / 10.000 0.000 9.000 ;
Arc arc4 10 5 32x1 / * 4 p1 p2 p3 ;
Arc arc5 11 5 32x1 / * 5 p1 p2 p3 ;
Example 5: arc5perp.ms2 (arc ending perpendicular to plane)
...
AbsPoint p3 14 1 / 10.000 0.000 9.000 ;
XPlane x=0 14 1 / 0.000 ;
RelPoint p4 14 1 / p3 0.000 0.000 1.500 ;
ProjPoint p5 10 1 / p4 x=0 ;
Arc arch 13 5 32x1 / * 5 p3 p4 p5 ;
Example 6: arc6.ms2 (type-6)
...
AbsPoint center 14 1 / 3.000 3.000 3.000 ;
RelPoint start 14 1 / center -5.000 0.000 0.000 ;
RelPoint plane_guide 14 1 / center 6.000 0.000 2.000 ;
Arc semi_circle 11 1 36x1 / * 6 start center plane_guide ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-83
Appendix F: Entity Specification Syntax for Model File Text
BCurve name color visibility divisions ... / relabel type { point1 point2 .... pointN } ;
Example: bspline2.ms2 (type-2)
...
AbsPoint P11 14 1 / 0.000 0.000 3.600 ;
AbsPoint P12 14 1 / 1.367 0.000 0.602 ;
AbsPoint P13 14 1 / 2.324 0.000 -0.800 ;
AbsPoint P14 14 1 / 3.000 0.000 -0.900 ;
BCurve MC1 12 5 10x1 / * 2
{ P11 P12 P13 P14 } ;
BFitCurve name color visibility divisions ... / relabel type nc log-tolerance curve ;
Example: bfitcv1.ms2
...
Conic c0 11 1 8x8 / * 1 p0 px pz 0.000 90.000 ;
BFitCurve fit 9 5 8x4 / * 3 0 -4.0 c0 ;
BSubCurve name color visibility divisions ... / relabel type { bead1 bead2 .... beadN } ;
Example 1: bsubcv0.ms2
...
BCurve basis 9 1 32x1 / * 2
{ p1 p2 p3 p4 p5 } ;
AbsBead e0 12 1 / basis 0.23400 ;
AbsBead e1 12 1 / basis 0.46000 ;
BSubCurve bsub 11 3 32x1 / * 2
{ e0 e1 *1 } ;
Example 2: bsubcv1.ms2
...
BCurve MC2 9 1 10x1 / * 2
{ P21 P22 P23 P24 } ;
AbsBead e21 10 1 / MC2 0.25800 ;
AbsBead e22 10 1 / MC2 0.75000 ;
BSubCurve mc2 15 1 8x4 / * 2
{ *0 e21 e22 *1 } ;
CCurve name color visibility divisions ... / relabel type { point1 point2 .... pointN } ;
Example: cspline1.ms2 (type-3)
...
AbsPoint P11 14 1 / 0.000 0.000 3.600 ;
AbsPoint P21 14 1 / 8.000 3.118 2.953 ;
AbsPoint P31 14 1 / 15.000 4.540 2.640 ;
AbsPoint P41 14 1 / 22.500 4.721 2.564 ;
AbsPoint P51 14 1 / 30.000 3.500 2.760 ;
CCurve sheer 10 1 40x1 / * 3
{ P11 P21 P31 P41 P51 } ;
Conic name color visibility divisions ... / relabel type center point2 point3 s0 s1 ;
Example 1: conics.ms2 (types 1-3)
...
AbsPoint center 14 1 / 5.000 0.000 0.000 ;
AbsPoint major 14 1 / 10.000 0.000 0.000 ;
AbsPoint minor 14 1 / 0.000 0.000 10.000 ;
Conic ellipse 10 1 20x1 / * 1 center major minor
-90.000 90.000 ;
Conic hyperbola_pos 11 1 20x1 / * 2 center major minor
-90.000 90.000 ;
Conic hyperbola_neg 12 1 20x1 / * 3 center major minor
-90.000 90.000 ;
5-84 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-85
Appendix F: Entity Specification Syntax for Model File Text
5-86 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Example 2: inlet.ms2
...
BGraph h1 / 2
{ 0.0 1.0 1.0 0.0 } ;
AbsPoint p1 14 -1 / 0.000 0.000 0.000 ;
AbsPoint p2 14 -1 / 30.000 0.000 0.000 ;
Line axis 12 -1 1x1 / * p1 p2 ;
AbsPoint q2 14 -1 / 10.000 0.000 1.500 ;
AbsPoint q3 14 -1 / 20.000 0.000 2.000 ;
AbsPoint q4 14 -1 / 30.000 0.000 1.500 ;
CCurve meridian 11 1 32x1 / * 3
{ p1 q2 q3 q4 } ;
RevSurf fuselage 3 3 4x4 4x3 0 / * meridian axis
0.000 -180.000 ;
AbsMagnet m1 12 1 / fuselage 0.46570 0.40000 ;
RelMagnet m3 12 1 / m1 0.20000 0.20000 ;
RelMagnet m2 12 1 / m1 0.0 0.40000 ;
CSnake n2 13 1 32x1 / * 3 { m1 m3 m2 } ;
LineSnake n1 13 1 32x1 / * m1 m2 ;
OffsetCurv lip 11 1 32x1 / * n1 0.000 1.000 h1 ;
Blister cowl 2 3 4x3 6x2 0 / * 3 n2 n1 lip ;
PolyCurve name color visibility divisions ... / relabel
{ curve1 t1 curve2 t2 .... curveN 1 } ;
Example: polycrv1.ms2
...
AbsPoint keel 14 1 / 0.000 0.000 0.000 ;
AbsPoint p1 14 1 / 0.000 40.000 0.000 ;
AbsPoint p2 14 1 / 0.000 40.000 10.000 ;
AbsPoint p3 14 1 / 0.000 50.000 10.000 ;
AbsPoint deck 14 1 / 0.000 50.000 60.000 ;
Line bottom 14 1 10x1 / * keel p1 ;
Arc bilge 12 1 10x1 / * 2 p1 p2 p3 ;
Line side 10 1 10x1 / * p3 deck ;
PolyCurve midsection 13 1 50x1 / *
{ bottom 0.40000 bilge 0.60000 side 1.0 } ;
PolyCurve2 name color visibility divisions ... / relabel { curve1 .... curveN } ;
Example 1: radiusarc3-polycurve2.ms2
...
PolyCurve2 chine 11 1 8x4 / * { l1 radiusarc l3 } ;
Example 2: defsweep-polycurve2.ms2
...
PolyCurve2 path 9 1 8x8 A:__Nick("path") / * { l0 c0 l1 c3 l3 } ;
ProcCurve name color visibility divisions ... / relabel point
{ bead/ring/graph1 bead/ring/graph2 .... bead/ring/graphN } ;
Example: proc-cv2.ms2
...
Conic c0 11 1 8x8 / * 1 p0 p1 p2 0.000 360.000 ;
AbsBead e0 10 1 / c0 0.10000 ;
TanPoint p3 12 1 / e0 1.500 ;
RelPoint rp 14 -1 / e0 0.000 1.000 0.000 ;
Line axis 6 1 1x1 / * e0 rp ;
RotatPoint moving_point 14 1 / p3 axis -90.000 ;
ProcCurve rim 10 1 8x8 / * moving_point
{ e0 } ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-87
Appendix F: Entity Specification Syntax for Model File Text
5-88 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Snakes
ArcSnake name color visibility divisions ... / relabel type magnet1 magnet2 magnet3 ;
Example: arcsnake.ms2
...
BlendSurf patch 10 3 5x2 5x2 1 / * *
{ AB BC CD DA } ;
AbsMagnet center 11 1 / patch 0.50000 0.50000 ;
AbsMagnet m1 11 1 / patch 0.20000 0.20000 ;
AbsMagnet m2 11 1 / patch 0.80000 0.20000 ;
ArcSnake garter 12 1 50x1 / * 3 m1 center m2 ;
BSnake name color visibility divisions ... / relabel type { magnet1 magnet2 .... magnetN };
Example: bsnake.ms2
...
CLoftSurf hull 10 8 10x1 20x1 0 / 3
{ MC1 MC2 MC3 MC4 MC5 } ;
AbsMagnet wale_fwd 11 1 / hull 0.08000 0.0 ;
AbsMagnet wale_mid 11 1 / hull 0.12000 0.50000 ;
AbsMagnet wale_aft 11 1 / hull 0.06000 1.0 ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-89
Appendix F: Entity Specification Syntax for Model File Text
5-90 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
GeoSnake name color visibility divisions ... / relabel curvature graph log-tolerance
{ magnet1 magnet2 .... magnetN } ;
Example:
...
CLoftSurf hull 10 9 10x1 20x1 0 W:3.700 / * 2
{ MC1 MC2 MC3 } ;
AbsMagnet m0 12 1 / hull 0.10500 0.0 ;
RelMagnet m1 12 1 / m0 0.0 1.0 ;
GeoSnake n0 13 1 8x4 / * 0.000 * -3.0
{ m0 m1 } ;
IntSnake name color visibility divisions ... / relabel magnet mirror/surface point ;
Example: boottop.ms2
...
AbsPoint P34 14 1 / 30.000 0.000 0.120 ;
BCurve MC3 11 1 10x1 / * 2
{ P31 P32 P33 P34 } ;
CLoftSurf hull 10 1 10x1 20x1 0 / 2
{ MC1 MC2 MC3 } ;
ZPlane z=0 14 1 / 0.000 ;
AbsMagnet m1 12 1 / hull 0.35000 0.02000 ;
IntSnake wl0 13 1 32x1 / * m1 z=0 * ;
IntSnake wl1 13 1 32x1 / * m1 z=0 P34 ;
AbsRing r00 9 1 / wl0 0.0 ;
AbsRing r01 9 1 / wl0 1.0 ;
AbsRing r10 9 1 / wl1 0.0 ;
AbsRing r11 9 1 / wl1 1.0 ;
LineSnake n0 14 1 3x1 / * r10 r00 ;
LineSnake n1 14 1 3x1 / * r11 r01 ;
SubSurf stripe 15 3 8x4 3x1 0 /
{ wl1 n1 wl0 n0 } ;
LineSnake name color visibility divisions ... / relabel magnet1 magnet2 ;
Example 1: lsnake.ms2
...
CLoftSurf hull 10 8 10x1 20x1 0 / 3 { MC1 MC2 MC3 MC4 MC5 } ;
AbsMagnet cove_fwd 13 1 / hull 0.05000 0.04000 ;
AbsMagnet cove_aft 13 1 / hull 0.05000 0.96000 ;
LineSnake cove 13 1 20x1 / * cove_fwd cove_aft ;
Example 2: lsnake3.ms2
...
CLoftSurf hull 10 8 10x1 20x1 0 / 3 { MC1 MC2 MC3 MC4 MC5 } ;
AbsMagnet m1 13 1 / hull 0.0 0.0 ;
AbsMagnet m2 13 1 / hull 0.0 0.66670 ;
LineSnake sheerline 13 1 20x1 / * m1 m2 ;
NURBSnake name color visibility divisions ... / relabel type knotlist
{ magnet1 wt1 magnet2 wt2 .... magnetN wtN } ;
Example: nurbsnk1.ms2
...
CLoftSurf cabin_side 10 1 10x1 1x1 0 / 1 { cs_top cs_deck };
AbsMagnet csm1 13 1 / cabin_side 0.90000 0.50000;
...
AbsMagnet csm7 13 1 / cabin_side 0.90000 0.20000;
NURBSnake portlight 15 1 40x1 / * 2 *
{ csm1 1.0 csm2 1.0 csm3 1.0 csm4 1.0 csm5 1.0 csm6 1.0
csm7 1.0 csm1 1.0 } ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-91
Appendix F: Entity Specification Syntax for Model File Text
5-92 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
RelSnake name color visibility divisions ... / relabel snake magnet1 magnet2 graph ;
Example: relsnk1.ms2
...
TranSurf patch 10 3 6x1 4x1 0 / long_edge short_edge ;
CSnake csnake 11 1 40x1 / * 3 { CM1 CM2 CM3 CM4 CM5 } ;
RelMagnet mag1 13 1 / CM1 0.20000 0.10000 ;
RelMagnet mag2 13 1 / CM5 -0.05000 0.05000 ;
RelMagnet mag3 12 1 / CM1 -0.05000 0.05000 ;
RelSnake relsnake1 13 1 40x1 / * csnake mag1 mag2 * ;
RelSnake relsnake2 12 1 40x1 / * csnake mag3 mag2 * ;
SubSnake name color visibility divisions ... / relabel bead/ring1 bead/ring2 ;
Example 1: subsnk1.ms2
...
BSnake bsnake 14 1 20x1 / * 2 { M1 M2 M3 } ;
AbsRing end1 11 1 / bsnake 0.30000 ;
AbsRing end2 11 1 / bsnake 0.70000 ;
SubSnake segment 11 1 12x1 / * end1 end2 ;
Example 2: subsnk2.ms2
...
BSnake bsnake 14 1 20x1 / * 2
{ M1 M2 M3 } ;
AbsRing end1 11 1 / bsnake 1.0 ;
AbsRing end2 11 1 / bsnake 0.0 ;
SubSnake t_reversed 11 1 20x1 / * end1 end2 ;
UVSnake name color visibility divisions ... / relabel type magnet ;
Example: uvsnk1.ms2
...
RuledSurf top 2 3 4x3 5x1 0 / rim back_corner ;
AbsMagnet top_mag 15 1 / top 0.50000 0.30000 ;
UVSnake top_boundary 14 1 16x1 / * 2 top_mag ;
TranSurf front 10 3 4x3 5x1 0 / rim vline ;
AbsMagnet front_mag 15 1 / front 0.50000 0.30000 ;
UVSnake front_boundary 11 1 16x1 / * 2 front_mag ;
Surfaces
ALoftSurf name color visibility divisions orientation ... / relabel type
curve1 curve2 curve3 ;
Example 1: pipes.ms2 (type-3)
...
PolyCurve axis 11 1 30x1 / *
{ axis1 0.33333 axis2 0.66667 axis3 1.0 } ;
PolyCurve seam 13 1 30x1 / *
{ seam1 0.33333 seam2 0.66667 seam3 1.0 } ;
RelCurve guide 14 1 30x1 / * axis r1 r4 * ;
ALoftSurf pipe 9 3 10x2 8x4 0 / * 3 seam axis guide ;
Example 2: arcloft4.ms2 (type-4)
...
CLoftSurf hull 10 8 10x1 20x1 0 / * 3
{ MC1 MC2 MC3 MC4 } ;
YPlane centerplane 14 1 / 0.000 ;
CCurve sheer 11 1 20x1 / * 3
{ P11 P21 P31 P41 } ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-93
Appendix F: Entity Specification Syntax for Model File Text
5-94 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Example 2: blendsf2.ms2
...
Line l1 6 1 1x1 / * p1 p2 ;
Arc c1 11 1 32x1 / * 1 p2 p3 p4 ;
Line l2 6 1 1x1 / * p4 p5 ;
Line l3 6 1 1x1 / * p5 p1 ;
BGraph h1 / 2
{ 0.0 0.0 1.0 } ;
BGraph h2 / 2
{ 0.0 1.0 1.0 } ;
BGraph h3 / 2
{ 0.0 1.0 1.0 1.0 1.0 } ;
BlendSurf s0 15 3 4x6 6x2 0 / * *
{ l1 c1 l2 l3 } ;
BlendSurf s1 11 3 4x6 6x2 0 / h1 *
{ l1 c1 l2 l3 } ;
BlendSurf s2 12 3 4x6 6x2 0 / h2 *
{ l1 c1 l2 l3 } ;
BlendSurf s3 10 3 4x6 6x2 0 / h3 *
{ l1 c1 l2 l3 } ;
BlendSurf2 name color visibility divisions orientation ... / edge tangency bulge graph1 graph2
{ curve1 curve2 curve3 curve4 } ;
Example: tanblendsurf.ms2
...
BlendSurf2 surface1 9 3 8x8 8x8 0 L:1 / 14 0.000 * *
{ edge Bspline apex arc } ;
Blister name color visibility divisions orientation ... / relabel type snake1 snake2 curve;
Example 1: blister0.ms2
...
RevSurf fuselage 2 3 4x3 4x3 0 / * meridian axis
0.000 -180.000 ;
BSnake outline 13 1 20x1 / * 2
{ mag1 mag2 mag4 mag3 } ;
RelMagnet center 12 1 / mag1 0.10000 0.0 ;
RelPoint apex 14 1 / center -0.163 0.000 0.927 ;
Blister canopy 11 3 5x4 4x3 0 / * 3 outline center apex ;
Example 2: bustle0.ms2
...
CLoftSurf hull 2 8 10x1 20x1 0 / * 2
{ MC1 MC2 MC3 } ;
BSnake contact 11 1 16x1 / * 2
{ hm1 hm2 hm3 hm4 } ;
LineSnake ctr_snake 13 1 16x1 / * hm1 hma ;
CCurve bottom 15 1 16x1 / * 3
{ hm1 btm1 btm2 } ;
Blister bustle 10 8 4x3 3x3 0 / * 4
contact ctr_snake bottom ;
BLoftSurf name color visibility divisions orientation ... / relabel type
{ curve1 curve2 .... curveN } ;
Example 1: blft5x4.ms2
...
BCurve MC1 13 1 20x1 / * 2 { P11 P12 P13 P14 } ;
...
BCurve MC5 9 1 20x1 / * 2 { P51 P52 P53 P54 } ;
BLoftSurf hull_b 10 1 10x3 20x1 0 / * 3 { MC1 MC2 MC3 MC4 MC5 } ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-95
Appendix F: Entity Specification Syntax for Model File Text
Example 2: bloft1.ms2
...
BCurve MC1 12 1 10x1 / * 2
{ P11 P12 P13 P14 } ;
BSnake tangent_line 11 1 10x1 / * 2
{ HM1 HM2 HM3 HM4 } ;
YPlane centerplane 14 1 / 0.000 ;
ProjCurve stem 13 1 10x1 / * MC1 centerplane ;
BLoftSurf bowround 14 1 10x1 10x1 0 / * 2
{ stem MC1 tangent_line } ;
BSurf name color visibility divisions orientation ... / utype vtype ncu
{ point11 point21 point31 point41 ....
point12 ....
point13 .... pointMN } ;
Example: bsurf.ms2
...
AbsPoint P11 14 1 / 0.000 0.000 3.600 ;
AbsPoint P12 14 1 / 1.367 0.000 0.602 ;
AbsPoint P13 14 1 / 2.324 0.000 -0.800 ;
AbsPoint P14 14 1 / 3.000 0.000 -0.900 ;
AbsPoint P21 14 1 / 8.000 3.118 2.953 ;
AbsPoint P22 14 1 / 8.000 3.009 0.419 ;
AbsPoint P23 14 1 / 8.000 1.972 -1.072 ;
...
AbsPoint P54 14 1 / 30.000 0.000 0.120 ;
BSurf hull 10 19 20x1 10x1 0 / 3 2 5
{P11 P21 P31 P41 P51
P12 P22 P32 P42 P52
P13 P23 P33 P43 P53
P14 P24 P34 P44 P54} ;
CLoftSurf name color visibility divisions orientation ... / relabel type
{ curve1 curve2 .... curveN } ;
Example: clft5x4.ms2
...
BCurve MC1 13 1 20x1 / * 2
{ P11 P12 P13 P14 } ;
BCurve MC2 12 1 20x1 / * 2
{ P21 P22 P23 P24 } ;
BCurve MC3 14 1 20x1 / * 2
{ P31 P32 P33 P34 } ;
BCurve MC4 11 1 20x1 / * 2
{ P41 P42 P43 P44 } ;
BCurve MC5 9 1 20x1 / * 2
{ P51 P52 P53 P54 } ;
CLoftSurf hull_c 10 1 10x3 20x1 0 / * 3
{ MC1 MC2 MC3 MC4 MC5 } ;
DevSurf name color visibility divisions orientation ... / curve1 curve2 ;
Example 1: devsurf1.ms2
...
CCurve sheer 12 1 20x1 / * 2 { P11 P31 P41 } ;
CCurve chine 12 1 20x1 / * 2 { P12 P32 P42 } ;
DevSurf panel1 11 1 40x1 1x1 0 / sheer chine ;
CCurve keel 12 1 20x1 / * 2 { P12 P33 P43 } ;
DevSurf panel2 11 1 40x1 1x1 0 / chine keel ;
5-96 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Example 2: devsurf2.ms2
...
BCurve sheer 14 1 20x1 / * 2
{ P11 P31 P41 } ;
BCurve chine 14 1 20x1 / * 3
{ P12 P22 P32 P42 P52 } ;
DevSurf panel1 11 1 40x1 1x1 0 / sheer chine ;
Fillet name color visibility divisions orientation ... / relabel type
snake1 snake2 snake3 snake4 ;
Example 1: fillet2.ms2
...
BCurve rim 10 -1 16x1 / * 2
{ p1 p2 origin p4 p5 } ;
RuledSurf top 2 3 4x3 5x1 0 / rim back_corner ;
EdgeSnake top_edge 13 1 16x1 / * 1 top ;
AbsMagnet top_mag 15 1 / top 0.50000 0.30000 ;
UVSnake top_boundary 14 1 16x1 / * 2 top_mag ;
TranSurf front 10 3 4x3 5x1 0 / rim vline ;
EdgeSnake front_edge 12 1 16x1 / * 1 front ;
AbsMagnet front_mag 15 1 / front 0.50000 0.30000 ;
UVSnake front_boundary 11 1 16x1 / * 2 front_mag ;
Fillet roundoff 9 3 12x1 6x2 0 / * 1
front_boundary front_edge top_edge top_boundary ;
Example 2: wingroot.ms2
...
RevSurf body 10 3 4x3 3x3 0 / meridian axis 0.000 90.000 ;
FSnake snake1 11 1 16x1 / * 1
{ te_rm mid_rm le_rm } ;
FSnake root 12 1 16x1 / * 1
{ te_mag mid_mag le_mag } ;
RuledSurf wing 10 1 6x2 4x1 0 / root tip ;
LineSnake snake4 15 1 16x1 / * wm2 wm3 ;
EdgeSnake wing_inb 13 1 16x1 / * 1 wing ;
Fillet fillet 9 3 6x2 4x3 0 / * 1
snake1 root wing_inb snake4 ;
Example 3: wingtip2.ms2
...
FCurve tip_profile 14 -1 16x1 / * 1
{ te_tip mid_tip le_tip } ;
Line tip_chord 6 -1 16x1 / * te_tip le_tip ;
AbsBead tip0 15 1 / tip_chord 0.20000 ;
AbsBead tip1 15 1 / tip_chord 0.80000 ;
Relabel label / 2
{ 0.0 1.0 1.0 } ;
SubCurve tip_line 14 -1 16x1 / label tip0 tip1 ;
RuledSurf tip_surf 10 9 6x2 1x1 0 / * tip_line tip_profile ;
EdgeSnake snake_2 12 1 16x1 / * 3 tip_surf ;
EdgeSnake snake_1 11 1 16x1 / * 1 tip_surf ;
AbsPoint mid_pt 14 -1 / 0.908 2.603 -1.353 ;
AbsPoint te_pt 14 -1 / 9.250 2.075 0.000 ;
AbsPoint le_pt 14 -1 / -3.875 2.856 0.000 ;
FCurve root_profile 12 -1 16x1 / * 1
{ te_pt mid_pt le_pt } ;
RuledSurf wing 2 3 6x2 4x1 0 / * root_profile tip_profile ;
EdgeSnake snake_3 13 1 16x1 / * 3 wing ;
EdgeSnake trailing_edge 9 -1 16x1 / * 4 wing ;
EdgeSnake leading_edge 5 -1 16x1 / * 2 wing ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-97
Appendix F: Entity Specification Syntax for Model File Text
5-98 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
...
AbsPoint P47 14 1 / 30.500 0.000 0.100 ;
NURBSurf hull 10 3 10x1 20x1 0 / 2 3 * * 4
{ P11 1.0 P21 1.0 P31 1.0 P41 1.0
P12 1.0 P22 1.0 P32 1.0 P42 1.0
P13 1.0 P23 1.0 P33 1.0 P43 1.0
P14 1.0 P24 1.0 P34 1.0 P44 1.0
P15 1.0 P25 1.0 P35 1.0 P45 1.0
P16 1.0 P26 1.0 P36 1.0 P46 1.0
P17 1.0 P27 1.0 P37 1.0 P47 1.0 } ;
OffsetSurf name color visibility divisions orientation ... / surface
{ offset1 offset2 offset3 (offset4) } ;
Example: offset1.ms2
...
TranSurf patch 9 3 6x3 5x2 0 / long_edge short_edge ;
OffsetSurf offset 13 3 5x3 4x2 0 / patch
{ 2.000 0.500 1.000 1.000 } ;
PolySurf name color visibility divisions orientation ... /
{ surface1 t1 surface2 t2 ... surfaceN 1 } ;
Example: wingpoly.ms2
...
Fillet thetip 9 3 6x2 4x3 0 / * 1 transnak
tip_edge tip_edge1 tipsnk ;
SubSurf wing_sub 13 3 4x3 6x2 0 /
{ snake4 l_e_snake transnak t_e_snake } ;
Fillet wingroot 14 3 6x2 4x3 0 / * 1
snake1 root wing_inb snake4 ;
PolySurf polysurf 10 3 4x3 6x2 0 /
{ wingroot 0.33333 wing_sub 0.66667 thetip 1.0 } ;
ProcCvSurf name color visibility divisons orientation ... / curve
{ bead/ring/graph1 bead/ring/graph2 .... bead/ring/graphN } ;
Example: proccsf2.ms2
...
CCurve chine 11 1 8x4 / * 3
{ ch0 ch1 ch2 ch3 } ;
BCurve profile 11 1 8x4 / * 2
{ ch0 pr1 pr2 pr3 pr4 pr5 pr6 } ;
AbsBead e0 10 1 / chine 0.50000 ;
XPlane a0 14 1 / 0.000 ;
AbsBead e1 10 1 / profile 0.50000 ;
IntBead e2 9 1 / e1 a0 e0 ;
Line moving_curve0 15 1 1x1 / * e0 e2 ;
ProcCvSurf bottom 2 3 8x4 4x2 0 / moving_curve0
{ e0 e1 } ;
ProcPtSurf name color visibility divisions orientation ... / point
{ magnet1 magnet2 .... magnetN } ;
Example: procpsrf1.ms2
...
CLoftSurf hull1 10 1 10x1 20x1 0 L:1 / * 2 { MC1 MC2 MC3 } ;
PolySurf hull2 10 3 10x4 10x4 0 L:2 /
{ topside 0.40000 flat 0.50000 bottom 1.0 } ;
AbsMagnet mag1 12 1 L:1 / hull1 0.25000 0.25000 ;
AbsMagnet mag2 12 1 L:2 / hull2 0.25000 0.25000 ;
BlendPoint moving_point 11 1 / 1
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-99
Appendix F: Entity Specification Syntax for Model File Text
5-100 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-101
Appendix F: Entity Specification Syntax for Model File Text
SweepSurf name color visibility divisions orientation ... / bead curve1 curve2
graph1 graph2 graph3 ;
Example 1: sweep1.ms2
...
ZPlane z=0 3 1 / 0.000 ;
YPlane y=0 2 1 / 0.000 ;
AbsPoint p1 14 1 / 5.000 4.000 0.000 ;
MirrPoint p6 14 1 / p1 y=0 ;
AbsPoint p2 14 1 / 2.000 4.000 0.000 ;
MirrPoint p5 14 1 / p2 y=0 ;
AbsPoint p3 14 1 / -4.000 4.000 0.000 ;
MirrPoint p4 14 1 / p3 y=0 ;
BCurve path 11 1 64x1 / * 2
{ p1 p2 p3 p4 p5 p6 } ;
RelPoint q1 14 1 / p1 0.000 0.000 1.000 ;
MirrPoint q6 14 1 / q1 y=0 ;
RelCurve guide 4 1 64x1 / * path q1 q6 * ;
AbsBead e1 10 1 / path 0.50000 ;
RelPoint rp2 14 1 / e1 -0.200 0.000 0.400 ;
MirrPoint rp3 14 1 / rp2 z=0 ;
RelPoint rp1 14 1 / e1 0.200 0.000 0.400 ;
MirrPoint rp4 14 1 / rp1 z=0 ;
BCurve shape 14 1 4x1 / * 1
{ rp1 rp2 rp3 rp4 rp1 } ;
SweepSurf sweep 10 3 32x2 4x1 0 / e1 shape guide * * * ;
Example 2: sweep3.ms2
...
BCurve path 11 1 32x1 / * 3
{ p1 p2 p3 p4 p5 p6 } ;
AbsBead path_bead 11 1 / path 0.0 ;
BCurve guide 12 1 32x1 / * 3
{ q1 q2 q3 q4 q5 q6 } ;
RelPoint p7 14 1 / p1 0.000 -1.500 0.000 ;
MirrPoint p8 14 1 / p7 p1 ;
Arc shape 13 1 32x1 / * 1 p7 q1 p8 ;
SweepSurf slide 10 3 32x1 6x2 0 /
path_bead shape guide * * * ;
Example 3: guard.ms2
...
CLoftSurf hull 10 1 10x1 20x1 0 / 2
{ MC1 MC2 MC3 } ;
AbsMagnet m2 12 1 / hull 0.10000 0.90000 ;
AbsMagnet m1 12 1 / hull 0.10000 0.10000 ;
OffsetPt p2 14 1 / m1 -0.400 ;
LineSnake cove 13 1 32x1 / * m1 m2 ;
AbsBead cove_bead 15 1 / cove 0.0 ;
OffsetCurv guide 9 1 32x1 / * cove 0.500 0.500 * ;
RelMagnet m3 12 1 / m1 -0.04000 0.00600 ;
MirrPoint p1 14 1 / m3 m1 ;
Arc shape 11 1 16x1 / * 1 m3 p2 p1 ;
SweepSurf guard 10 3 32x1 4x2 0 /
cove_bead shape guide * * * ;
5-102 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-103
Appendix F: Entity Specification Syntax for Model File Text
{ m4 m0 m1 m2 m3 m4 } ;
CopySnake n1 15 1 8x4 / * n0 s0 1.0 180.000 ;
TrimSurf ts1 10 3 4x5 4x5 0 / 200 m1
{ n0 n1 n4 n5 n2 n3 } ;
EdgeSnake n2 13 1 8x4 / * 1 s0 ;
EdgeSnake n3 13 1 8x4 / * 2 s0 ;
EdgeSnake n4 13 1 8x4 / * -3 s0 ;
EdgeSnake n5 13 1 8x4 / * -4 s0 ;
XLoftSurf name color visibility divisions orientation ... / relabel type ecc
graph1 graph2 graph3 graph4 { curve1 curve2 .... curveN } ;
Example: defaultx.ms2
...
// Converted by FL2MSF 10-04-1993 13:29:06 XLoftSurf with B-spline
MCs
AbsPoint xA1 14 1 / 0.000 0.000 3.600 ;
AbsPoint xA2 14 1 / 2.000 0.000 -0.780 ;
AbsPoint xA3 14 1 / 3.000 0.000 -0.900 ;
BCurve xMCA 11 1 16x1 / * 2
{ xA1 xA2 xA3 } ;
AbsPoint xB1 14 1 / 15.000 4.540 2.640 ;
AbsPoint xB2 14 1 / 15.000 5.000 -0.960 ;
AbsPoint xB3 14 1 / 15.000 0.000 -1.440 ;
BCurve xMCB 11 1 16x1 / * 2
{ xB1 xB2 xB3 } ;
AbsPoint xC1 14 1 / 30.000 3.500 2.760 ;
AbsPoint xC2 14 1 / 30.000 3.500 1.320 ;
AbsPoint xC3 14 1 / 30.000 2.500 0.120 ;
AbsPoint xC4 14 1 / 30.000 0.000 0.120 ;
BCurve xMCC 11 1 16x1 / * 2
{ xC1 xC2 xC3 xC4 } ;
BGraph xY0 / 2
{ -0.02500 -0.01000 0.0 } ;
BGraph xZ0 / 2
{ 0.00600 0.00600 0.00600 } ;
BGraph xY1 / 2
{ -0.02500 -0.01000 0.0 0.0 } ;
BGraph xZ1 / 2
{ 0.00600 0.00600 0.00600 0.00600 } ;
XLoftSurf xsurf 10 1 8x2 10x4 0 / * 1 0 xY0 xZ0 xY1 xZ1
{ xMCA xMCB xMCC } ;
Solids
BLoftSolid name color visibility divisions ... / relabel type { surface1 surface2 .... surfaceN } ;
Example: bloftsolid1.ms2
...
BLoftSolid bloftsolid 12 7 4x4 4x4 2x4 0 / * 2
{ bsurfbottom bsurfmiddle blendctrsurf } ;
RuledSolid name color visibility divisions ... / relabel surface1 surface2 ;
Example 1: ruledsolidballast1.ms2
...
RuledSolid ballast 12 7 4x8 4x8 1x2 0 W: 695.000 / *
ballast_outer ballast_center ;
5-104 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
Example 2: ruledsolidballast2.ms2
...
RuledSolid bulb_solid 14 7 4x8 4x6 1x2 1 W: 695.000
A:__Nick("bulb_solid") / * bulb bulb_ctr ;
RuledSolid subtr_solid 9 1 4x4 4x4 1x2 0 W: -695.000
A:__Nick("subtr_solid") / * subtract subtr_ctr ;
RuledSolid keel_solid 13 1 16x2 3x1 1x2 0 W: 485.000
A:__Nick("keel_solid") / * keel keel_ctr ;
Miscellaneous
BGraph name ... / type { value1 value2 .... valueN } ;
Example 1: blendsf2.ms2
...
BGraph h1 / 2
{ 0.0 0.0 1.0 } ;
BGraph h2 / 2
{ 0.0 1.0 1.0 } ;
BGraph h3 / 2
{ 0.0 1.0 1.0 1.0 1.0 } ;
BlendSurf s0 15 3 4x6 6x2 0 / * *
{ l1 c1 l2 l3 } ;
BlendSurf s1 11 3 4x6 6x2 0 / h1 *
{ l1 c1 l2 l3 } ;
BlendSurf s2 12 3 4x6 6x2 0 / h2 *
{ l1 c1 l2 l3 } ;
BlendSurf s3 10 3 4x6 6x2 0 / h3 *
{ l1 c1 l2 l3 } ;
Example 2: defaultx.ms2
...
BCurve xMCA 11 1 16x1 / * 2
{ xA1 xA2 xA3 } ;
BCurve xMCB 11 1 16x1 / * 2
{ xB1 xB2 xB3 } ;
BCurve xMCC 11 1 16x1 / * 2
{ xC1 xC2 xC3 xC4 } ;
BGraph xY0 / 2
{ -0.02500 -0.01000 0.0 } ;
BGraph xZ0 / 2
{ 0.00600 0.00600 0.00600 } ;
BGraph xY1 / 2
{ -0.02500 -0.01000 0.0 0.0 } ;
BGraph xZ1 / 2
{ 0.00600 0.00600 0.00600 0.00600 } ;
XLoftSurf xsurf 10 1 8x2 10x4 0 / * 1 0 xY0 xZ0 xY1 xZ1
{ xMCA xMCB xMCC } ;
Contours name color visibility ... / mirror first index last index q0 qint { surfaces } ;
Example 1: contour1.ms2
...
CLoftSurf hull 10 8 20x1 20x1 0 / 2
{ MC1 MC2 MC3 } ;
AbsPoint origin 15 1 / 0.000 0.000 0.000 ;
AbsPoint normal 15 1 / 0.000 0.250 5.000 ;
Plane2 cutplane 15 1 / origin normal ;
Contours boottop 15 1 / cutplane 0 0 0.400 0.000
{ hull } ;
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-105
Appendix F: Entity Specification Syntax for Model File Text
Example 2: contourg.ms2
...
CLoftSurf starboard_side 10 8 10x1 20x1 0 / 2
{ MC1 MC2 MC3 } ;
YPlane centerplane 3 1 / 0.000 ;
MirrSurf port_side 10 8 10x1 20x1 0 /
starboard_side centerplane ;
AbsPoint origin 15 1 / 0.000 0.000 0.000 ;
RelPoint normal 15 1 / origin 0.000 0.268 1.000 ;
Plane2 plane_15 14 1 / origin normal ;
Contours waterplanes_15 15 1 / plane_15 0 -5 0.000 0.250
{ starboard_side port_side } ;
Example 3: contourc.ms2
...
CLoftSurf hull 10 1 10x1 20x1 0 / 2
{ MC1 MC2 MC3 } ;
AbsPoint px 14 1 / 22.000 0.000 0.000 ;
RelPoint py 14 1 / px 1.000 0.000 3.000 ;
Line axis 14 1 1x1 / * px py ;
Contours transom 15 1 / axis 0 0 7.500 1.000
{ hull } ;
CvContours name color visibility ... / curve first index last index t0 tint { surfaces } ;
Example: cv-cont1.ms2
...
CLoftSurf hull 10 1 10x1 20x1 0 / * 2
{ MC1 MC2 MC3 } ;
AbsMagnet m0 12 1 / hull 0.49720 0.02080 ;
ZPlane z=0 3 1 / 0.000 ;
IntSnake n0 13 1 8x4 / * m0 z=0 * ;
AbsRing r0 9 1 / n0 0.0 ;
AbsRing r1 9 1 / n0 1.0 ;
YPlane y=0 14 1 / 0.000 ;
ProjPoint r1p 11 1 / r1 y=0 ;
ProjPoint r0p 11 1 / r0 y=0 ;
Line l0 15 1 1x1 / * r0p r1p ;
CvContours stas 12 1 / l0 -1 11 0.000 0.100
{ hull } ;
EulerFrame name color visibility ... / point frame angle1 angle2 angle3 ;
Example: frame2.ms2
...
EulerFrame F0 15 1 / * * 0.000 0.000 0.000 ;
AbsPoint p1 14 1 / 1.000 0.000 0.000 ;
EulerFrame F1 10 1 / p1 F0 15.000 0.000 0.000 ;
AbsPoint p2 14 1 / 2.000 0.000 0.000 ;
EulerFrame F2 11 1 / p2 F1 0.000 30.000 0.000 ;
AbsPoint p3 14 1 / 3.000 0.000 0.000 ;
EulerFrame F3 12 1 / p3 F2 0.000 0.000 45.000 ;
AbsPoint p4 14 1 / 4.000 0.000 0.000 ;
EulerFrame F4 13 1 / p4 * 15.000 30.000 45.000 ;
5-106 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-107
Appendix F: Entity Specification Syntax for Model File Text
5-108 • Entity Specification Syntax for Model File Text December 1998
Appendix F: Entity Specification Syntax for Model File Text
MultiSurf 4.0 Entity Specification Syntax for Model File Text • 5-109