Converting
3D DXF files to MultiSurf model files
To import data from a 3D DXF file, try the
utility DXF2MSF which should be in your \MSurfWin\Utility folder. See
instructions in Appendix B of your manual. DXF2MSF can convert a variety
of AutoCAD entities to useful MultiSurf objects.
MultiSurf 4.7: File/ Import/ DXF
gives a much more convenient facility for DXF import. It also imports more
AutoCAD entities, and handles 2D as well as 3D DXF files.
Reconstructing
a 3D curve from 2D projections
Sometimes we receive 2D data representing two orthographic views of a 3D
curve, and we need to develop a 3D curve that matches this data. Usually
the source is either drafting, or 2D digitizing of a drawing, in a 2D CAD
program such as AutoCAD LT.
As an example, consider the sheer or chine lines of a boat hull. These are
3D curves, but are often represented by their 2D projections on the base
plane (plan view) and centerplane (profile view).
The example model CvFromYZ.MS2 (download
here) illustrates a neat solution using a ProcCurve.
The starting data for the sheer line is two CCurves, 'SY' (light green) in
the 'Center_plane' and 'SZ' (light magenta) on the 'Base_plane'.
(1) We create an AbsBead 'Sbead' (light green) anywhere along 'SY'; we
chose t = .15.
(2) We make an IntBead 'Sib' on 'SZ' using '*X=0' for the mirror, and 'Sbead'
for the point. Thus when 'Sbead' moves, 'Sib' stays in the same
transverse plane as 'Sbead'.
(3) We make a ProjPoint 'Spp' (light cyan) by projecting 'Sbead' down to
the 'Base_Plane'.
(4) We make a BlendPoint 'Sbp' from 'Sbead', 'Spp' and 'Sib', with weights
of 1, -1, 1 respectively. As shown in sample file BlendPt2.ms2, this
choice of weights locates the BlendPoint at the 4th corner of a
parallelogram (a rectangle, in this case).
Now if you move 'Sbead' to any position along 'SY', 'Sbp' is a point on
the sheer in 3D. (We added the Lines 'Sl0' and 'Sl1' just to show the
relationship of 'Sbp' to the two beads; they don't play any part in the
construction.)
(5) We make the ProcCurve 'Sheer' with 'Sbp' as the moving point, and
'Sbead' as the single bead/ring/graph support.
By taking the <z> and <y> views, you can confirm that 'Sheer'
has the correct projections.
CvFromYZ.MS2 also contains projections of the chine, 'CY' and 'CZ'.
Can you reconstruct the 3D chine in a similar fashion?
Import3DA
command
The 3DA file is an AeroHydro standard file format for communicating a 3D
wireframe (see Appendix C in MultiSurf manual). It is a simple text
format, so it is easy to create a 3DA file by typing coordinate data into
Notepad or another editor or word processor. (Just be sure to save as
"Text only".)
A 3DA file can be opened for viewing in MultiSurf by creating a WireFrame
object. You can fit the individual "wires" with BCurves using
Tools/ Special/ BCurve Fit. The Import3DA command is another option for
getting the 3DA data in, in a usable form for building curves and
surfaces.
The command is entered in the Window/ Command dialog box. The command
syntax is:
Import3DA filename[.ext] [ kind ]. The filename should include the
complete path, unless you have
previously used a SetPath command to point to the folder where the 3DA
file resides. kind is an optional parameter (default 0) that determines
what kind of objects MultiSurf will create:
kind = 0: only the points, as AbsPoints
kind = 1: AbsPoints and type-1 BCurves
kind = 2: AbsPoints and type-3 CCurves
Animation with
MultiSurf
MultiSurf 3.1 has a cool Animate
feature available through the Command window. You can download
a self-extracting zip file (28KB) which contains a Word document
describing the feature as well as several .ms2 sample files. Enjoy!
Solving
geometry problems in MultiSurf and SurfaceWorks
In the Solve command, MultiSurf has a powerful general capability to solve
a wide variety of geometry problems involving varying numbers of equality
constraints and/or optimizations; for example:
- construct a line that passes through a
given point and is tangent to a given circle;
- construct a line that is simultaneously tangent to two circles;
- construct an arc that is simultaneously tangent to two curves;
- find the maximum-beam point on a boat hull;
- find the curve on a hull where the normal vector has no x-component
(this is the place to cut and insert a parallel midbody that will have
C1 continuity.)
Download a self-extracting zip file
Solve.exe that documents this capability and gives several examples of its
use.
Guidelines
for Command-line utilities
To run Command-line utilities such as
2DDLINK.EXE, it is helpful to follow these guidelines:
- Limit filenames to 8 characters,
extensions to 3. (Most of these utilities were developed under earlier
DOS versions, which had these limits.)
- Don't use spaces in your filenames.
- It's often simplest to put the input
files in the same folder as the utility.
- In Explorer, you can often drag the
input file and drop it on the utility .exe file. However, this does
not allow you to use any command parameters.
- To run a utility with command
parameters, open a DOS window (Start/ Programs/ Command prompt).
Typing the utility's filename causes it to display usage information.
- If you use a utility often, you can
install it as a macro and put it on your Tools menu.
Slow objects -
StatusBarNames command
Do you have a MultiSurf model that's slow
to open and update? Want to find out which object or objects are causing
the slow performance?
Open the command window (Window/Command)
and type the command "StatusBarNames" (no quotes; click Okay).
After the command, the status bar will show the name of each object as it
is being computed and displayed. The names that stay up for a long time
are the slow objects.
Some entities require a lot of computation
and are, therefore, likely to make slow objects. These include: IntSnakes
using a surface as the cutting object; BFitCurve or BFitSurf with tight
tolerances; Procedural Curves, Snakes and Surfaces, especially ones
involving intersections. Any surface with an excessive number of divisions
x subdivisions will be slow. Also, a high divisions multiplier will slow
down the whole model.
"Freezing"
BFit objects (MultiSurf 4.0)
BFitCurve and BFitSurf provide very flexible tools for approximating
curves and surfaces with NURBS. They allow the user to specify either the
number of control points to use, or the fitting tolerance. The quality of
fit (i.e, the tolerance achieved) is available through Tools/Clearance.
BFit objects can be exported through NBS and IGES without further
approximation. This is often the key to achieving exact joins between
exported NURBS objects.
Sometimes we want to take the NURBS approximation achieved in a BFit
object and turn it into a self-standing curve or surface. For example, we
may have imported a very "heavy" (lots of control points) NURBS
surface via IGES, have fitted it within a satisfactory tolerance with a
much smaller number of control points, and now we want to use this
simplified B-spline surface in place of the original NURBSurf. This is the
function of the BFreeze command.
The syntax for freezing a BFitCurve is very simple: select the BFitCurve
object, open Window/ Command, type in "BFreeze" (no quotes) and
hit OK.
MultiSurf will create a BCurve and all its AbsPoint control points. The
resulting BCurve will be identical to the BFitCurve, but it has no
dependency beyond its own control points. The BFitCurve and its supports
then can be removed from the model.
For freezing a BFitSurf, there are more options. Give the command
"help bfreeze" (no quotes) to see the command syntax. You can
choose the result to be either a BSurf, or a BLoftSurf with BCurve master
curves running in either the u or v direction.
MultiSurf 4.7: BFreeze is now on the
menu under Tools/ Special/ FreezeFit. It functions with the new NUBFit
entities as well as BFitCurve, BfitSnake, and BFitSurf.
Host and
Guests commands (MultiSurf 4.0)
MultiSurf makes a lot of use of embedded points (beads, magnets, and
rings) and embedded curves (snakes). Each embedded object has a unique
host object, the higher-dimensional object it's embedded in. You can
identify an object's host by selecting the object, then Window/ Command
and give the command "host" (no quotes). For example, select a
magnet, type the command "host", click <Ok> and MultiSurf
will display the name of the surface that is host to the magnet. If the
selected object is a ring, you will learn both its host snake and its host
surface.
The converse relationship to "host" is "guests". To
find what objects are embedded in a given surface, select the surface and
give the command "guests"; same for a curve or snake.
Help command
Window/ Command provides a number of useful functions that are not yet
available through the menus and dialog boxes. The commands are invoked by
keywords such as "BFreeze" or "Spin". Some commands
have parameters that control their effects, for example "Animate 4 4
".
"Help" is a new command in MultiSurf 4.0 which makes the other
commands much more accessible. "Help" by itself presents a list
of all the available command keywords. "Help" followed by a
command keyword provides information for the command. For example,
"Help Animate"
provides a short description of the Animate command and the syntax for its
parameters.
SetPath command
Several commands operate by reading or
writing files, having a filename.ext as one of their parameters. In most
cases, it is very useful to precede use of one of these commands by the
SetPath command, which chooses a folder to be used by subsequent file
commands. For
example, SetPath c:\msurfwin\samples
Following this, any other commands using files will use the same folder.
For example,
File.Open wingroot will then find the file WingRoot.ms2 in c:\msurfwin\samples
Note that spaces in file or folder names aren't handled by SetPath or
other file commands. (The command interpreter uses spaces to separate
parameters.) Future versions will allow pathnames and filenames with
spaces to be enclosed in double quotes; for example: SetPath
"c:\projects\ proj 197"
MultiSurf 4.7: Spaces in filenames
are now handled transparently by Window/ Command.
Why does my
SubSurf (or BlendSurf) look like a spiderweb?
The problem usually lies with the order and
t-orientations of the boundary curves or snakes. The only vital
t-orientation is that of snake1. Think of snake1 as the
beginning of your SubSurf (or BlendSurf or TrimSurf) definition: its t=0
end will be at the u=0, v=0 corner of the SubSurf (or BlendSurf or
TrimSurf) AND its t=1 end must connect to snake2 -- i.e. snake1
"points" to snake2. As an aid in your selection
process, you might Tools/ Orientation for snake1 and "follow
the arrow". The t-orientation of snakes 2, 3, and 4 is immaterial --
the important point is that they are selected in the correct order.
If your IntSnake, ProjSnake,
IntMagnet or ProjMagnet fails to converge
Notice that you have a choice of specifying
either the host surface, or a magnet on the host surface. Use a magnet
(usually an AbsMagnet), located reasonably close to the t=0 end of the
snake, or the place you expect the IntMagnet or ProjMagnet to end up. This
magnet support gives MultiSurf an important clue as to where to start
looking for the desired intersection. If you just specify a surface, it
starts at u=0.5, v=0.5.
Isolating an
error with Select/ Supports and Select/ Invert
When a "Math error" occurs in a complex model, it is sometimes a
challenge to figure out what's wrong. The presence of many other objects
makes wireframe and selection set views confusing. Further, there may be
many other objects in the model that are descendants of the object that's
in error, so the Error View keeps popping up with large numbers of error
284's (Object is in error because one of its supports is in error).
You can isolate the problem from the extraneous objects and descendants
by the following steps:
1. Save As with a new name, maybe
Temp.ms2
2. In Settings/ Layers, Set All
3. Select the object that is in error (The one whose error code is
NOT 284)
4. Select/ Supports/ All Generations
5. Select/ Invert Selection Set
6. Delete
This will delete all objects that are not
directly involved as ancestors of the problem object. In the uncluttered
model that usually results, it is relatively easy to spot the problem and
fix it. Then you can reopen your actual model and make the same fix.
Identifying
objects that are slowing down your model (MultiSurf 4.0)
There are several situations that can cause a MultiSurf model to be slow
to open, evaluate and respond to edits. Of course, as any model becomes
complex, there can be deep chains of dependency and altogether a lot of
objects to evaluate. But certain entities are inherently slow, because
they involve a lot of calculation. And there are choices you make in
creating surfaces and solids that strongly affect the time to evaluate.
Some performance guidelines: Surface-surface intersections are very
"compute-intensive"; avoid them if possible. Procedural entities
(ProcCurve, ProcSnake, ProcCvSurf) are relatively slow, especially if
their constructions involve intersections. Unnecessarily large
subdivisions on curves, snakes and especially surfaces and solids will
slow things down proportionally. NURBS surfaces imported from other
systems via IGES often have huge numbers of control points, and are slow
to evaluate and edit.
The "StatusBarNames" command helps diagnose such problems. In
Window/ Command, type this command and click OK. (Notice it's all one
word, no spaces.) Then when you open a model (or Edit Model File and OK),
the name of each object is shown on the status bar while it is being
evaluated. Thus you can see exactly which objects are causing the
slowdown.
|