|
Representing weights
You can represent weights of as-yet-undetailed items in Tools/Weight Schedule. Create
points with weight attributes to stand in for the missing items; for example, a point
named 'ballast' with a unit weight of 2400 kg to represent a 4800-kg ballast casting.
Place it where you expect the center of gravity of the ballast to be. It will be included
in the weight schedule and combined with other weights. Later, when you've created
geometry for the ballast and assigned it unit weights, you can delete the point, or change
its unit weight to 0.
(Why 2400 kg instead of 4800? We're assuming the model has Y symmetry as most boat models
do. In that case, every point has a mirror image with the same weight, even a point
located on centerplane. If the model has no symmetry, then use the whole estimated weight
of the item.)
Relational solids
MultiSurf and SurfaceWorks has a capability to represent relational solids, including
wireframe and rendered views, mass properties, weight schedule, and export of 3D meshes.
Applications for this include sailboat ballast, other castings, tank volumes and
centroids, and 3D volume meshes for computational fluid dynamics and finite element grids.
You can download a self-extracting zip file containing
a description of the solids functionality and two sample files from this website.
RuledSolid and BLoftSolid are on the menu (Create/Solid...) in MultiSurf 4.0
and SurfaceWorks, Advanced Modeling,
and fully integrated into Mass Properties, Weight Schedule, viewing and rendering, etc.
Making a copy of a curve in a different location
If the copy is a mirror image of the original, use a MirrCurve.
If the copy results from rotating the original about an axis, use a
RotatCurve.
If the copy is displaced parallel to the original, use a RelCurve with these point
supports:
point1 -- a point at the new location of the t=0 end.
point2 -- can be anywhere, actually (we usually take the t=1 end of the basis curve) and a
graph (this is important!) having only one value, namely 0.
See Sample file Relcurv2.ms2 for an example of this.
See also tip on CopyCurve)
MultiSurf and SurfaceWorks: CopyCurve is on the menu now. This
is much more versatile – the copy can have any position and location
relative to the original, and can be nonuniformly scaled in the process.
Tangent and normal planes
To make a plane normal to a curve at a particular location:
1. Position a bead at the desired location along the curve.
2. Make a TanPoint from the bead, with any nonzero offset.
3. Make a Plane2 from the bead and the TanPoint.
To make a plane tangent to a surface at a particular location:
1. Position a magnet at the desired location on the surface.
2. Make an OffsetPt from the magnet, with any nonzero offset.
3. Make a Plane2 from the magnet and the OffsetPt.
Intersections cut with planes, cylinders or spheres
Dr. John's First Rule of Intersections is "avoid them when possible". MultiSurf
provides many ways to create neat, accurate joins between surfaces without performing
intersections; this is usually simpler, more accurate, more efficient and more reliable
than constructing surfaces that are oversize, then intersecting them and trimming off the
excess.
CYLTRAN.MS2 and HULLDECK.MS2 are sample files that illustrate this.
The Second Rule of Intersections is "cut with a plane, line, or point mirror whenever
you can, rather than a surface". These IntSnake constructions are more efficient and
reliable than cutting with surfaces. A plane mirror makes a plane cut (BOOTTOP.MS2 is a
sample of this), a line mirror makes a cylindrical cut, and a point mirror makes a
spherical cut.
Sometimes a projection can substitute for an intersection. When the surface you are
cutting with is a general cylinder or cone, you can usually make a ProjSnake with a plane
or point mirror, then use the ProjSnake for one edge of the (automatically trimmed)
surface.
(THRUSTER.MS2 is an example of this.)
Using a BLoftSurf for a fillet
A Fillet Surface is a handy way to make a fillet, or a smooth transition between two
surfaces (see sample file WINGROOT.MS2). However, the Fillet Surface provides limited
control over the shape of the transition surface. MultiSurf's unique B-lofted Surface
provides another alternative. Make a BLoftSurf with five or more master curves, including:
two closely spaced snakes on surface 1
one or more intermediate master curves to shape the transition
two closely spaced snakes on surface 2.
Two snakes at a surface-surface intersection
In MultiSurf, you develop the intersection of two surfaces as an IntSnake. Although the
resulting snake actually lies in both surfaces, it only resides in the first surface --
the one identified by the "magnet/surface" support. If you need the intersection
as a snake in the second surface as well, you could make a second IntSnake. But there is a
much more efficient solution: use a ProjSnake instead.
For example, suppose you are working with a hull that extends on to a station beyond the
transom, and you have created a curved base surface for the transom; now you need to trim
both the transom and the hull. First, make an IntSnake 'n0' on the hull, cut by the
transom. Then, make a ProjSnake on the transom, by projecting 'n0' longitudinally -- use
*X=0 for the mirror. This ProjSnake will evaluate about 100 times faster than a second
IntSnake. The ProjSnake also has the advantage of being exactly the same 3D curve as the
IntSnake, whereas a second IntSnake would usually be longer (would extend to the upper
edge of the transom base surface) and therefore would need additional trimming.
(The projection distance is actually zero; that's why most people don't think of a
ProjSnake in this situation.)
Inserting a Master Curve into a Lofted Surface
When you have designed a C-Lofted or X-Lofted surface that has approximately the shape you
want, but you can't seem to get it exactly right, inserting another master curve is
usually the answer. If all your master curves are BCurves of the same type, and the same
number of control points, then we supply a nifty macro that streamlines the process. Just
create a plane that cuts through the surface where you want the new curve to be, invoke
the InsertMC macro, and in a few seconds it creates the necessary control points and
curve, and inserts it into the surface for you.
In case your surface doesn't conform to these rather narrow conditions, MultiSurf 4.0
provides something much more general, and nearly as convenient:
(1) Make a snake (any kind that serves) on the surface where you want the master curve to
be. For example, an IntSnake cut by a transverse plane is a common choice.
(2) With the snake selected, pick Tools/ Special/ BCurve Fit. Choose an appropriate
B-spline type and number of control points (usually guided by the nearby master curves).
(3) Select the surface, Edit/ Attributes, double click Master Curves, and Ctrl+select the
new BCurve.
(4) In Selection Set view (<F6>), move the new BCurve up to the right place in the
sequence of master curves, and Accept Supports.
FRAMES.MS2: Using components for internal structure
This model was made by John Letcher to demonstrate the capability of MultiSurf to model
complex internal framing members for a metal hull. You can see a picture in AeroHydro
Gallery, and download
here a zip file containing the model and its 3 component files, and a write-up that
explains how it works.
Basically, Dr. John started with an empty CLofted hull, created one typical midships frame
related to the hull and deck in such a way that it could be dragged fore and aft and it
would update its shape to adapt to the hull and deck contours at each location. This frame
consists of about 50 objects, ending with a TrimSurf for the web and a TranSurf for the
flange. All of these objects were saved as a Relational Component, FRAME1.MC2. This
component was then inserted into the empty hull 7 times. Then John developed a different
generic frame for the ends, saved it as FRAME2.MC2, and inserted it 9 times into the
model. The longitudinal stringers were also made by inserting the component STIFF1.MC2 8
times.
The model still has lots of parametric variability. Any of the frames can be dragged fore
and aft and will continuously adjust its shape to the hull and deck in its new position.
Each stringer can be repositioned by dragging one magnet. The depth of all floors can be
changed by moving one point.
"Freezing" a curve as a CCurve
There are times when we wish to detach a curve from its supports and let it stand on its
own. In analogy to spreadsheet terminology, we call this "freezing" the curve.
For example, a curve that results from a complex construction, such as an intersection of
surfaces or a ProcCurve, might
be a candidate for freezing -- to simplify and speed up a model. The BFreeze command (see "Freezing BFit
objects" tip) provides a way to freeze curves with a BCurve as the result.
Similarly, the CFreeze command allows us to freeze a curve as a CCurve.
To make a CCurve with 10 control points (the default), and automatic names:
1. select the curve you want to freeze;
2. pick Window/ Command and type in the command:
"CFreeze" (no quotes)
To make a CCurve with 8 control points, named 'sheer', the command is: "CFreeze sheer
8"
MultiSurf creates the specified number of AbsPoints, and the CCurve supported by them, to
best fit the original curve. (Since the natural labeling of a CCurve is
approximately in proportion to arc length, it is a good idea to precede the CFreeze
command with Tools/ Special/ ArcLength Relabel.)
CFreeze will also freeze a snake, resulting in a CSnake with AbsMagnet supports.
Modeling piping runs
MultiSurf 4.0 has several new features that are useful for planning piping runs. Sample
file DefSweep-PolyCurve2.ms2 illustrates these 3 features working together:
1. SweepSurf now doesnt need a guide. All you need is a path and a shape.
2. The RadiusArc entity allows you to insert elbows of any angle and specified radius.
3. The PolyCurve2 entity automatically labels a series of arcs (elbows) and lines
(straight runs) with uniform velocity.
As a result, all you have to do is make a series of points, connected by lines, that
traces the axis of your pipe. Put RadiusArcs at the elbows, a PolyCurve2 along the length,
a Helix at one end for the shape, and sweep your pipe. Of course, if necessary, you can
also include curved path portions other than arcs.
For locating a bulkhead penetration, include the pipe in the surfaces cut by an
XContour.
For checking interferences between 2 pipes, make Contours on one pipe, using the other
pipe as the mirror/surface; first = 0, last = 0, Q0= desired clearance., Qint = 1. Put
this Contours object on a layer by itself, and turn all other layers off. If the pipes
dont interfere, your wireframe view will be blank. (Thanks to Mark Siburg at
Argonaut Marine for this last idea.)
Nested
edits
In MultiSurf, you can only edit one object at a time, but you can
suspend editing one object while you edit (or create) its supports.
For example, suppose youve started to create a Line, but when picking supports
you realize you dont yet have a point for the second end. Dont cancel your
create; instead, double-click the Point2 support, and then proceed to create the point you
need. The Line can wait. When you click the final OK for creating the point, youll
find youre back in selecting Point2 for the Line, and the point you just made will
already be selected!
Nested edits are especially useful for creating and editing graphs and
relabels,
objects that have no visible graphic presence for selection in the wireframe view. Suppose
you have a BlendSurf that uses a u-graph, and you want to modify the surface by editing
the graph. Edit the BlendSurf, then double-click on "u-graph". Now you can
proceed to edit the u-graph. When you finish editing the graph, the BlendSurf and its
dependents will immediately update to reflect the change.
Nested edits offer another way to trace dependency. Suppose theres an IntSnake in
your model, and youre a little hazy as to which surface is its host. Select the
IntSnake and Edit/ Attributes; double-click on the "Magnet" support, Edit/
Attributes again, and double-click the "Surface" support. This will highlight
the supporting surface. Just press <Esc> as many times as needed to back out of such
an exploration without changing anything.
"Border points" in curve and surface
tables
MultiSurf stores a tabulation of each curve and surface object. This is used for
display and also for interpolating positions for dependent objects. Occasionally, it is
important to realize that the table is somewhat bigger than the nominal parameter range of
0 to 1. This knowledge can explain otherwise mysterious failures, and often can lead you
to a simple solution.
Consider a curve with 10x2 divisions. This will be tabulated at t = 0, .05, .10,...
1.0, and the resulting polyline is what you see displayed in a wireframe view. However,
the table for this curve actually goes from -.05 to 1.05. These two extra points off the
ends (which we call "border" points) are not needed for display, but are used
for various internal purposes such as calculating curvatures. Surface tables have border
points all the way around, one u or v subdivision off the edge.
The trouble arises when a construction fails at a border point. Perhaps its a
ProjSnake with 8x4 subdivisions, and the host surface has actually folded back or fails to
reach as far as t = -1/32 or t=1+1/32 on the basis curve. Then that border point fails to
converge, and the whole snake is deemed a failure and refuses to display. When procedural
curves or surfaces fail, its often at a border point. And if youre not aware
the border points are there, the failure can be mysterious.
The "simple solution" we promised above? Increase the subdivisions on the
object that fails. For example, if you have an 8x4 ProjSnake that fails to converge, try
8x8 or 8x16 divisions. This moves the border points closer to 0 and 1, and often allows
the construction to succeed.
Use bright white color for "handle points"
We often build models that have particular points that control certain parametric
variations; for example AbsRing 'r0' and RelRing 'r1' in the 2CABINS.MS2 model. We've
adopted the convention of using bright white (color 15) for these "handle"
points so they stand out (on a black screen) and so are easy to identify among the other
points. (It's also useful to give them names that identify their parametric functions,
like 'cabin_fwd' and 'cabin_length'.)
Euler Frame bug
Fixed. The RPY Frame is a superior replacement for the Euler Frame.
Auto Reversal of Master Curves
Although it seems to have escaped mention in the manual, ruled and lofted surfaces have a
new behavior in versions 4.0 to 4.5 that has surprised and puzzled some users. MultiSurf
examines the relative orientations of the master curves, and based on internal rules, can
use one or more master curves in reverse if it decides that's what the user intended.
For example, open Demo.MS2, select the middle master curve 'MC2', Edit/ Attributes, edit
the Control Points and select them in reverse: 'P24', 'P23', 'P22', 'P21'. (The
"Reverse Set" button in Selection Set View does this quickly.) Surprise! The
hull doesn't change, even though the middle master curve is now oriented backwards, in
relation to the other two. Explanation: MultiSurf figures out 'MC2' is backwards, and
automatically reverses it when it's used in the surface.
This change was intended as a convenience feature, but we've seen a few surfaces where the
effect is contrary to the designer's intent; furthermore, there's no way to achieve the
intended shape without inserting additional master curves.
Workaround: Version 4.5 has a command to optionally disable master curve reversal at the
model level. If you have a surface that is apparently being adversely affected, open
Window/ Command and type: MCReversal off. (This setting is not stored with the model, so
you have to issue it
again whenever you open the model that needs it.)
We recommend that you be conscious of the relative orientations of your master curves and
get them right -- don't rely on the automatic reversal. This "feature" has
caused enough trouble that it may well be removed from future versions.
Measuring bevel angles
In boat construction the bevel angle at a point on a surface (say, the hull)
is the angle between the normal direction to the surface and a transverse plane. This is
the angle at which you need to bevel a thick frame or bulkhead to match the hull surface
slope. Heres a cute trick for measuring and tabulating bevels. Try it with the Demo
model:
1. Rotate the boat 90 degrees about the Y axis (Edit/ Transform/ Rotate/ Y axis /
Complete model), so the bow is up and the stern is down.
2. Create an AbsMagnet m0 anywhere on the hull. Make an OffsetPt
p0 from m0, a moderate distance outside the hull (offset = -2 ft
in our case). Make a Line l0 from m0 to p0.
3. Move m0 to any location where you want to measure the bevel. Select
l0 and Tools/ Angle. The value displayed as latitude is the bevel
angle.
(Step 1 assumes that the hull comes out the same shape after rotation. This is true for
most ways of constructing a hull, not necessarily for all ways. For example, if your hull
is an XLoftSurf, you would have to change its type from 1 to 3, and also exchange some end
condition graphs.)
Breaking port-starboard mirror symmetry
Most boat designs have a majority of shapes and features that have mirror symmetry with
respect to the Y=0 plane. For example, the hull surface is almost always designed with
port-starboard symmetry. The Y-symmetry switch (Settings/ Model dialog) makes it easy to
make a symmetric model by shaping only one side. However, few boats have mirror symmetry
throughout. Even when the exterior is fully symmetric, the accommodation and outfit
usually have unsymmetric features.
YMirror.exe (download it here) is a Visual Basic
macro that addresses this problem. Open a model that has Y-symmetry, select the surfaces
and contours you want to mirror (usually, all surfaces and contours), and invoke
YMirror.
It turns Y-symmetry off, and for every surface in the original model it creates a MirrSurf
with the same color, visibility and divisions as the pre-existing surface. Then you can go
onwards, modeling the parts that are not symmetric.
Transom expansion with CopySnake
For flat expansion of most developable surfaces, we rely on MSDev, our developable-surface
plate expansion add-on. However, in many boat designs about the only developable surface
is a cylindrical transom. This can easily be expanded inside MultiSurf.
CYLTRAN.MS2 is a sample file with a cylindrical transom, drawn as 2 snakes 'transom_edge'
and 'transom_top' on the circular cylinder 'transom_cyl'. In Tools/ Mass Properties, we
can read off the arc lengths of the sides of 'transom_cyl' -- these are the lengths of
Line 'transom_cl' (3.25 ft), and Arc 'circle' (4.43 ft.) Make a flat rectangular surface
(see another tip on this) in a
convenient place -- we made a type-1 BSurf 's0' with corners at (0, 0, -3.25), (0,0,0),
(0, 4.43,-3.25), and (0, 4.43, 0). Then make a CopySnake 'n0' with 'transom_edge' and 's0'
as supports, and another CopySnake 'n1' from 'transom_top' and 's0'. The two snakes 'n0',
'n1' give the expanded transom outline.
BFitSnake entity
The BFitCurve and BFitSurf entities provide means to make controlled least-squares curve
and surface fits within MultiSurf, and the BFreeze command (see separate tip on this) is a facility for turning the
fitted surfaces into free-standing geometry, independent of the base surface supports. A
BFitCurve can be made from a snake, but the result is a curve rather than a snake; it
can't serve as a support for a TrimSurf or SubSurf, for example.
Enter BFitSnake. This entity exists in MultiSurf 4.5, it just isn't on the menu. You can
create it from the Command Window with the command "create BFitSnake" (no
quotes, correct capitalization required). This leads to the usual Edit/Create dialog. It
works very similarly to BFitCurve, but makes a snake.
BFreeze also works for a BFitSnake. The result is a BSnake supported by
AbsMagnets.
MultiSurf 4.7: BFitSnake is on the menu now; also
Tools/ Special/ Freeze Fit is a more convenient way to BFreeze.
CopyCurve, CopySurf entities
Sometimes you need to make an exact copy of a curve or surface in a different position
and/or orientation. Rel, Rotat and Mirr entities exist to do this under limited
conditions. MultiSurf 4.5 has two new "hidden" entities that provide copies in a
much more flexible way.
A CopyCurve is supported by a basis curve and two frames. It takes a "snapshot"
of the basis curve in the first frame, then makes a duplicate in the second frame. On the
way, the curve can be scaled by different multipliers in the x, y, z directions. And of
course, like any Multisurf curve, if the basis curve changes the CopyCurve updates to
reflect the changed shape. A CopySurf works just the same way, but has a basis surface
instead.
To create one of these objects, open the Command Window and type "create
CopyCurve" or "create CopySurf" (no quotes, correct capitalization
required). This leads to the usual Edit/Create dialog.
MultiSurf and SurfaceWorks: CopyCurve and CopySurf are on the
menu now.
Bow Rounding with a Fillet
A Fillet surface provides a bow rounding that sometimes works better than a
BLoftSurf.
Open Bowround.ms2 from the Examples folder and try this:
1. Select the blue bowround surface; <F10> (to zoom to selection)
2. Edit/ Show supports (to show 'MC1')
3. Edit/ Delete (removing the old 'bowround' surface)
4. Select 'hull', create EdgeSnake 'n0', take the defaults
5. Select 'MC1' and 'profile', create RuledSurf 's0', take the defaults
6. Select 's0', create EdgeSnake 'n1', take the defaults (type-1)
7. Select 's0', create EdgeSnake 'n2', type-3
8. Select 'tangent', 'n0', 'n1', 'n2', create Fillet 'bowround', take the defaults.
This produces a bowround surface that is truly tangent to the hull. (The BLoftSurf
rounding is only approximately tangent). Take the <z> view and <F5> to show
the portside image.
(Thanks to Bill Sill for this suggestion.)
Differences between models
Suppose you have two model files that you know are similar -- perhaps one is a
modification of the other -- and it becomes important to identify exactly what differences
exist between them.
View/ History is one important source of this information. Each version of the file will
have its own associated .HST file, which will help to establish which was derived from the
other, on what date, and what subsequent changes occurred in either model.
Microsoft Windows comes with a useful "File Compare" utility,
FC.EXE, that can
be used to find the exact differences between two files. Suppose the files you want to
compare are:
Dsgn125A.ms2 in C:\MSurfWin\Projects folder
Dsgn125B3.ms2 in C:\MyDocuments\Dsgn125 folder
From your Start\Programs menu, open an MS-DOS command window. At the MS-DOS prompt, type
the command:
FC C:\MSurfWin\Projects\Dsgn125A.ms2
C:\MyDocuments\Dsgn125\Dsgn125B3.ms2
and press <Enter>. Any differences between the files will be displayed on the
screen. If there's more than a screenful, add C:\fc.txt to the command. This will
pipe the results to a file named fc.txt in your root directory; double-click on it in
Explorer to open and read it with Notepad.
FC has many options. Type the command FC /? to get a help screen about FC.
Document your models
With all its possible relationships, a MultiSurf model is a complex object to understand.
If you think you understand how it works today, just wait 6 months and see how clear it is
then. Adding documentation to your model can make it much easier to work with, for you or
anyone else,
now or in the future.
There are at least 6 ways to add documentation to a model:
1. In Settings/ Model, add model-level comments. This box can have any quantity of
text; it scrolls.
2. Use meaningful object names and layer names; organize your model into layers.
3. Put comments in the "User data" field when editing an object. This can hold
up to 40 characters.
4. You can insert // comments in the model file in Edit/ Model File. (Be careful; editing
the model file is risky in general, but it's always safe to add a line that starts with
//.)
5. Add annotation to the History (HST) file (Edit/ Annotate History) (For example, why was
this change made?)
6. Write a separate document that explains how the model works -- the principal
relationships, the logic behind them.
For examples of 1, 2, 3, and 4, open the Demo.ms2 model.
Sketch planes in MultiSurf
In most solid modeling programs, curves are generated in so-called sketch
planes, which can be oriented as required, but always present a 2D environment for
curve creation. Sketch planes are sometimes handy for surface modeling, too, and can be
simulated in MultiSurf by the following steps:
(1) Create a flat rectangular sketch surface in the position and
orientation you need for your 2-D curve. This can safely have 1x1 divisions. (See separate
tip on flat rectangular surface.)
(2) Create magnets on your sketch surface. These points will automatically lie in the
plane of the sketch.
(3) Construct your sketch from Lines, Arcs, BCurves, etc. using the magnets as control
points. These entities will all lie in the sketch plane because all their control points
do.
(4) Your whole sketch can be stretched and resized proportionally just by dragging the
corner points of the sketch surface.
Representing thickness of bulkheads, frames and other flat
parts
A bulkhead or frame can be represented as a single plane cut through the hull and deck
surfaces, usually representing either the forward or after face of the actual part, and
you can conveniently make a whole set of these (uniformly spaced) with a single XContours
object. However, consider this alternative: Represent each individual bulkhead with its
own XContours object, having first index = 0, last index = 1, X0 = forward face, Xint =
thickness.
Advantages:
(1) This produces two cuts through all the selected surfaces, showing the contours for
both the forward and after faces.
(2) Each bulkhead can have its own color, which makes it easy to tell them apart, and can
be on its own layer if you want.
(3) In body plan view, in CAD, you probably will want to keep the inner of the two lines
and
erase the outer line, in order to make a bulkhead that fits all around.
(4) As you develop additional structural parts such as longitudinals and interior decks or
joinerwork, having both faces of the bulkhead in view will help prevent errors that arise
from forgetting which side of the plane the thickness is supposed to be on. (And of course
these other flat parts can be made the same way, indicating their thickness.)
Thanks to Steve Hudson for this neat idea. (Steve is a naval architect
in Southwest Harbor, Maine, who uses MultiSurf, MSDev and MicroStation to perform detailed
N/C preparation for metal yachts and workboats.)
Extending the hull surface
In the days of drafting hull lines, it was common to draw and fair the extension beyond
the transom as part of the lines definition. You can still do this with MultiSurf, and
trim the rest off with an IntSnake; however, we discourage use of intersections in
general, and advise making the transom edge neat, as in sample file DEMOTRC3.ms2.
However, the builder might ask you for one or two sections through or beyond the transom.
He may want them for fairing, or he might prefer to build the actual surface "out
by" and trim it off later, just as it used to be drawn. How can you make sections
back where there isn't any more boat?
Actually, it's easy. Try this on the COMPBT1.ms2 model (in Tuts directory):
(1) Put an AbsMagnet 'm0' on the 'hull' at u = 0.2, v = .95.
(2) Make a type-2 (transverse) UVSnake 'n0' from 'm0'.
(3) In <y> view, drag 'm0' aft, off the end of the boat, and you'll see the UVSnake
goes
with it, no complaint; so the 'hull' is still there. Drop the magnet at about X = 32.5.
To see the actual extended surface,
(4) create an EdgeSnake 'n1' (type-3, the transom edge), then
(5) make a SubSurf from 'n1' and 'n0'. This is the fair extension of the 'hull'. Cut
XContours on the SubSurf to make the extended sections the builder needs.
Trimming a DevSurf
DevSurfs, like any other parametric surface type, can be a basis for either a TrimSurf or
a SubSurf. However, even though the result of trimming a DevSurf in this fashion is in
principle a developable
surface, MultiSurf often won't let you export the TrimSurf or SubSurf in a RUL file for
expansion in MSDev. This is because of limitations in the complexity of data that can be
exported in a RUL file.
The simple answer to this: Just create the snakes that you would use for trimming the
DevSurf, and make sure they are visible when you export the RUL file of the
DevSurf. They
will show up on the flattened plate, and can be used to trim the plate outline in CAD
prior to nesting..
(This is usually simpler than making a TrimSurf anyway; you don't have to make the snakes
that go all the way around the trimming boundary.)
Offset, Mirror, etc. of TrimSurf
If youve worked with TrimSurfs, you may have discovered that they are disallowed as
supports of derived surfaces such as MirrSurf and OffsetSurf. There is a fairly simple
workaround for this. If you want to mirror a TrimSurf, make a MirrSurf from the base
surface, then a CopySnake from each of the trimming snakes. Create a
TrimSurf, selecting
the MirrSurf as base surface, then the CopySnakes (in correct sequence) as trimming
snakes.
Fair extension of a curve
Curves in MultiSurf are displayed over a parameter range from t = 0 to t = 1, but most curves actually extend (invisibly) an indefinite distance
beyond these visible ends. You can, for example, put a bead at t = -0.5 or +1.5, and it will lie on the fair extension of the visible curve. You
can only drag these beads as far as t = -1 and t = +2, but you can position them farther out by typing in the t parameter (<F2>).
To make the extension visible, make a SubCurve -- for example, from '*0' to 'e1', where 'e1' is a bead at a negative t-position; or from
'*1' to 'e2', where 'e2' is a bead at a t position greater than 1.
Importing data from a 3DA file
The 3DA format, a very simple "connect-the-dots" ASCII format for 2D or 3D wireframe data, is often the key to importing data from
drawings or other sources. You can view a 3DA file by creating a WireFrame object, and you can fit curves to its "wires" as a group with
Tools/ Special/ BCurveFit. Or you can make TabCurves from individual wires within it.
Another more flexible option for utilizing 3DA files is the Import3DA command. This takes the filename of a 3DA (or PAT) file and a
'kind' parameter that controls the results:
kind = 0: imports the points only as AbsPoints
kind = 1: turns each wire into a type-1 BCurve
kind = 2: turns each wire into a type-3 CCurve.
You can also select an insert frame prior to executing the command. This allows rotation and repositioning of the data during import (similar to
the frame support used in a WireFrame object).
For example:
setpath c:\msurfwin\samples
import3da cube1 1 2
imports the 6 wires of cube1.3da, turning them into Type-1 BCurves on layer 2.
Be careful about types for XYZ entities
John Letcher says: The new XYZBead, XYZMagnet and XYZRing in version 4.7 are great; I’m using them all the time. But I find I often forget to set
the right type - 1, 2 or 3 - when I create one. I will have the right type in mind, but I simply forget to set it in the dialog, and
accidentally take the default (usually, the last type created). My tip is just to be careful about setting the type; make it a habit to do this
first. The usual result of an incorrect type is a “failure to converge” or “singular equations” error, or the point comes out in a totally
unexpected place. When any of these things happens, the first thing to check is the type.
If you create one of these points, and no error occurs, but the point doesn’t show up where you expect it, you can hit <F10> to bring it to
the center of the view. Seeing where it is actually located probably will help you understand why it isn’t where you meant for it to be.
A useful way to remember the 3 types for the XYZMagnet, especially when the offsets are both 0, is to think of it as being projected from the
basis point parallel to one axis:
type 1 is projected parallel to the x-axis
type-2 is projected parallel to the y-axis
type-3 is projected parallel to the z-axis
Use CopyBeads for Procedural Entities and Animation
A valuable application of the CopyBead and CopyRing (new in version 4.7) entities is to use only a single bead or ring to drive a complex
ProcCurve, ProcSnake, ProcCurveSurf (or Tools/Animate), as opposed to multiple beads.
If you replace all AbsBead/Ring supports beyond the first one with CopyBeads/Rings based on the first one, then you end up with a
construction that can be dragged (by dragging only that one
AbsBead/Ring) from end to end of the supporting curves. As you drag, you can visually verify how the moving point or curve is being constructed
at each location, and identify any place where the intended construction fails.
For example, in sample ProcCSf2.ms2, replace ‘e1’ with a CopyBead made from ‘e0’. ‘e0’ becomes the single driver, which you can position
anywhere on the ‘chine’, to verify the proper construction of ‘moving_curve0’.
In single-period animation, the advantage is that you can “debug” your animated model by “freeze-framing” it at any point in its evolution,
just by dragging one bead or ring. (Of course if your animation has multiple periods, this won’t work – you probably have to move the
individual beads in that case.)
Increase divisions for NUBS approximation and IGES
export
The new Non-Uniform B-Spline (NUBS) fitting in 4.7 has
made great improvements in the accuracy of IGES exports, but we’ve
encountered some cases where the fit "blows up" and produces
moderately to extremely wild results.
1. Always check your exported surfaces by importing the
IGES file back into an empty model.
2. If one or more of your surfaces shows waves, ripples,
or (sometimes) wild oscillations that extend far away from your original
model, open the original model, raise the Divisions Multiplier (in
Settings/ Model dialog) and repeat the IGES export. Most cases are fixed
with Divisions Multiplier of 2; one case we’ve seen needed 3.
3. We are testing an improved fitting algorithm that
should take care of this problem in a future release. Even so, it’s
probably going to continue to be advantageous to increase Divisions
Multiplier before any export. The export takes a little longer
(approximately in proportion), but the results are almost always more
accurate.
Angle bisection II (4.7)
The construction given in Angle
bisection I will fail if ‘p1’, ‘ctr’ and
‘p2’ lie on a line (i.e., the angle is 180 degrees, or 0). Here’s a
more robust alternative:
- Make lines ‘l1’ from ‘p1’ to ‘ctr’, and ‘l2’ from
‘ctr’ to ‘p2’.
- Put an AbsBead ‘e1’ on ‘l1’, anywhere but at the ‘ctr’
end.
- Make an IntBead ‘e2’ on ‘l2’, using ‘ctr’ as the mirror
and ‘e1’ as the point support.
- Make a CopyPoint ‘p3’ from ‘e2’, ‘e1’ and ‘ctr’ (in
that order).
- A Plane2 made from ‘ctr’ and ‘p3’ bisects the angle.
- A Frame3 ‘frame’ made from ‘ctr’, ‘p3’ and some other
uninvolved point will allow convenient constructions in the plane of
bisection. The y,z-plane of ‘frame’ is the bisecting plane.
Example model: bisector2.ms2
Projecting a curve on an oblique plane
The ProjCurve entity allows projection of a curve onto a plane - a
frequently useful construction - but the direction of projection of a
ProjCurve with a plane mirror is always normal to the plane.
To project a curve on a plane at another angle, construct a plane
surface ‘ps’ on the plane where the projection is needed (see separate
tip "Flat
rectangular surface"), then make a ProjSnake on ‘ps’.
Generally you’ll need to construct a plane mirror for the projection,
normal to the line of projection. If you have a line along this direction,
make a Plane2 from its two endpoints.
Example model: Collar1.ms2 . Here a
circle (Helix ‘c0’) is propagated along a series of line segments,
forming a jointed tube with circular cross section. At each joint we
construct a surface ‘bs1’, ‘bs2’ etc. that bisects the angle
between the lines (see separate tip, "Angle
bisection II"), and then make a ProjSnake on it from the previous
joint. The configuration of the collar can be freely adjusted by moving
the points ‘p1’, ‘p2’ etc. The radius can be changed by the Z
offset of RelPoint ‘radius’.
AutoCAD layer name restrictions
During 3D DXF exports, MultiSurf 4.7 has an option to put each object on a separate layer, using the object name as the layer name. This way
the identity of RG objects is maintained in the DXF file and inside AutoCAD.
However, it has come to light that AutoCAD has more restrictions on the character set used in layer names than we have for object names.
Consequently, it is relatively easy to create a DXF file that gets errors and is incomplete when opened in AutoCAD. Specifically, AutoCAD
layer names can use only letters, digits, underscore '_', hyphen '-' and dollar sign '$', with no embedded spaces.
We're working on an automatic fix for this; meantime, there is a simple workaround: For objects that are to be exported to AutoCAD, assign names
that contain only letters, digits, underscore and dollar sign. This is the set of characters that is legal for both programs.
Fastest
way to show a single object,
or a small group of objects:
Select the object(s)
Edit / Hide / All
Palette <S>, or Edit / Show /
Selection set
MultiSurf 4.7:
Select the object(s), and Edit/ Hide/ Unselected
Showing
and hiding dependents, supports and points
Did you hide that surface because it was in
the way of what you wanted to see? Here are two quick and easy ways to
show it again:
- In the drawing, select any one of its
supporting objects (e.g. master curves for a lofted surface); then
choose Edit/ Show Dependents.
- In the drawing, select any of its
visible dependents (e.g. contours); then choose Edit/ Show Supports.
Too many points in the picture? Use Edit/
Hide Points to hide them all (as a group); then use Edit/ Show Points when
you want to see them again.
Increasing
model accuracy by coordinating
divisions
Coordination of divisions generally
produces a more accurate stored model, and it is necessary for the display
of views such as Surface Curvature.
Here is an example: when creating a lofted
surface, use the same number of divisions on each of the master curves,
and also make sure that the master curve t-divisions x
t-subdivisions is the same as, or a multiple of, the surface u-divisions x
u-subdivisions. E.g. you might use: u-divisions = 8 x 4, and
t-divisions = 8 x 4 (surface and curve divisions are the same), or
u-divisions = 4 x 1, and t-divisions = 8 x 4 (curve divisions are a
multiple of surface divisions).
Number
of divisions
For speed, choose numbers of divisions
keeping in mind that you want enough to be accurate but not too many –
estimate low, then use the Divisions Multiplier (in Model Settings) if you
need to go higher.
For display and working drawings, look at
the DEMO hull as an excellent example of good divisions: 10x1, 20x1.
Occasionally, where there is tight curvature, we might go higher.
Then, for full-scale lofting and NC
cutting, we generally double (or triple; occasionally quadruple) the
divisions using the Divisions Multiplier (see "How
Much Accuracy Is Enough?").
Update
extents
Have you ever found that your model seems
to shrink to a tiny version of itself, or even a single dot near the edge
of the screen, and <F9> (View/Autozoom) won't get it back? The usual
cause is that you accidentally created a point far away from the model
(for example, you entered an X-coordinate of 1000 when you meant 1.000).
First, get rid of the stray point
(<F9> should bring it into view) -- either delete it, or move it
back to the vicinity of the model. Then, in the Model options dialog
(Settings/Model) press the <Update Extents> button.
Reliable window
zooming
When zooming in on a detail (using
alt-drag), switch to Ortho mode (there are three ways: View/Orthographic,
O-key and toolbar button). Zooming in perspective view is much less
reliable because of the complexities of perspective viewing
transformations.
Establishing
the center for camera rotations
To zoom in on one end of a long object like
a ship, start by taking <z> or <y> view; then <F9> to
zoom all; then window-zoom (alt+drag) on the area you want to see. This
sets the viewing center ("look point") in the vicinity of the
object you are examining, and it stays centered through subsequent view
rotations.
In MultiSurf 4.0 and SurfaceWorks, you can also select one or more objects
in the region of the model you want to examine, then View/Zoom to
Selection. If the selection is a single point, that point will become the
new center of rotation, and will be centered on the screen; if it's
curves, surfaces or other extended objects, the center of the space
occupied by the objects becomes the new center of rotation, and the view
is zoomed so they fill the screen.
Windows on a
cabin
To display realistic cabin windows, make
SubSurfs on the cabin side and color them black.
Rendering
bright metal
To render a metal boat with bright aluminum
surfaces, use color 7 (light gray) for the surface color. Then in the
Render Options dialog, you can vary the lighting direction to make glints
and highlights appear where you want them.
Porcupine
curvature display
The "Porcupine" command provides an alternative way to visualize
the curvature distribution of a curve or snake. To turn on Porcupine
display, select Window/ Command, type in "Porcupine" (without
the quotes) and click Ok. Now when you select a curve or snake in the
Wireframe view and select Tools/ Curvature Profile, besides the curvature
vs. arc length graph across the bottom of the window you will have a
porcupine display.
This is a set of lines ("quills") positioned normal to the
screen projection of the curve, with their lengths proportional to the
curvature in this projection at the point on the curve where the quill is
rooted. (The quills are drawn in color 7 (light gray), so if this happens
to be your background color, you won't be able to see them -- change to
another background.)
With two optional parameters in the "porcupine" command you can
control two aspects of the porcupine display (type the command "help
porcupine" to see the syntax):
1. A scale factor that multiplies the length of the quills -- to amplify
small variations.
2. The number of quills displayed (default is 100).
To turn off the porcupine display, give the command "porcupine
0".
MultiSurf 4.7:
The porcupine display is turned on and off with the "Porc."
button in the Curvature Profile window.
Keep Selection
Set and Render Views open
Often in training and support situations we see users open the Selection
Set View (<F6>), use it for a moment, then close the view. Similarly
with Render View: they check the appearance in Render View, but then to
get back to Wireframe View they close the Render window. It is much more
convenient and efficient to leave these views open. There are two
alternatives for doing this:
(1) Just click in the Wireframe window to bring it to the front. If you
don’t maximize any views, this leaves a bit of the Selection Set window
showing along the bottom of the screen. If you click in this area (aim for
an inactive part of the view, not a button), the Selection Set view will
pop to the front. Similarly, you can “park” the Render view in the
lower right corner (drag it there by grabbing its caption bar) and get it
back with one click in the colored background area.
(2) Minimize the Selection Set and/or Render Views. They turn into small
icons stacked along the bottom edge of your screen. One click can get
either of them back to the front of your desktop. Another click can
minimize it again.
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!
MultiSurf 4.7:
Animation is on the menu (Tools/ Special/ Animate)
Spin command
In a Wirefame view, the Spin command sets the viewing camera into circular
motion, so the wireframe model appears to be spinning.
All you have to do to start spinning is open the Window/ Command dialog,
type "spin" (no quotes), and click Ok. To stop spinning, click
the "Stop Spin" button that appears in the upper left corner of
the screen.
While spinning is underway, various view controls such as arrow keys and
<F5> still work. Try turning on symmetry images (<F5>). The
apparent motion makes it much easier to interpret a wireframe view with
symmetry as a 3-dimensional scene.
Camouflage or
mottled appearance in Render View
If one or more of your surfaces in a Render View comes out with irregular
splotches of color, it's likely that you have left a surface on that was
supposed to be hidden or deleted. For example, open
Demo.ms2, select the 3 master curves and create a second CLoftSurf with a
color different from 10 (say bright red, 12) and different divisions (say,
8x4, 8x4). Then render the result. The two surfaces are occupying nearly
the same space, but because of the differences in their tabulations,
triangles on the green surface are slightly closer in some regions and
triangles on the red surface are slightly closer in others. Rendering
draws the closest triangle along each line of sight; hence the
mottled appearance.
To fix it, just hide the surface you don't want to display; or if it's not
serving any function, delete it.
Viewing along a
particular direction
Sometimes you'd like to take a viewpoint along a specific direction in
relation to some modeled geometry. For example, imagine you've drawn a
window on a plane surface that is not aligned with any of the coordinate
axes; you'd like to get a picture of that flat panel, and the window's
position on it, viewing normal to the plane.
One way or another, select two points that are on a line normal to the
plane. Often these will already be present in the construction of your
surface. Otherwise, put a magnet somewhere on the plane surface, and an
OffsetPt some distance away from it. Or take some point not on the plane,
and make a ProjPoint or ProjMagnet from it. With these two points
selected, Tools/ Angle will give you the latitude-longitude orientation of
the line from one point to the other. Rotate the view to this latitude and
longitude; and set the view to Ortho. To confirm that you're now looking
in the right direction, check that your two points are drawn right on top
of each other. If you want to rotate the final picture, Open the View/ Set
View dialog and vary the Tilt angle.
MultiSurf 4.7:
Check out the new options View/ Set View/ Along and View/Set View/ Normal
To
Rendering without
symmetry images
The Render view automatically shows symmetry images when they are present
in your model. Sometimes, for example when you have built interior
structures or furniture, you'd like to make a rendered view without the
symmetry images. All you have to do is to switch off the Y-plane symmetry
checkbox in the Settings/ Model Options dialog.
Saving a 2D view
of offsets
In Offsets View, Export 2D has been on the file menu for a long time, and
maybe it worked at some time in the distant past, but since at least
version 3.1, you get a 2D view of the WireFrame rather than the Offsets
View -- even if no WireFrame View is open!
It’s definitely useful to be able to make a 2D view of the offsets, to
document the data that was used for hydrostatic calculations. A good
workaround is:
Bring the wireframe window to the front, and turn on symmetry images
(<F5>)
Select all the visible contours that you used to make the offsets,
Edit/ Hide/ Unselected
Select a good viewpoint
File/ Export2D/ 2DD or DXF
Animation and
Spin together (4.7)
Tools/ Animation allows you to create
moving models with continuous motions. The Spin command allows you to
"orbit" the viewpoint around your model. The combination is
sometimes especially neat: watching your animated model from a
continuously changing viewpoint.
While animation is underway, the Command
window is unavailable (too much mischief possible!), so you can’t start
Spin once animation is started. But, do it the other way around: Start
Spin (note you can specify an orbit period with the Spin command), and
while Spin is progressing, start the animation from Tools/ Animation.
Using an
ObjectList as a restorable selection set
To select all the objects in an ObjectList,
first select the ObjectList, then View/Dependency. Click the toolbar
button (or ctrl+L) to clear the selection set. Then click the
"Supports" button in the Dependency view.
More disk space
To recover disk space, check your Temp and
Windows/Temp folders: the files stored in those folders are
transient and safe to delete as long as no applications are open (open
applications may have created temp files they are counting on).
Layers
Use MultiSurf's 256 layers to organize your
model; they allow you to group related portions of a model together for
display and selection. The layers can be named to help keep track of and
aid the model construction process, particularly for large, complex
models.
Read more about using
layers in our July newsletter.
Cleaning up your
model
When you are getting near completion or
when you replace one or more objects in your model, get rid of the old
unused ones -- if they have no further function, they’ll just get in the
way and confuse you (or others). Here are steps you can follow:
Turn all layers on (Settings/ Layers/
<Set All>).
Display only the surfaces and contours
you want to keep.
Select/ Visible to set the visible only
filter.
Select/ All.
Select/ Supports/ All Generations.
Select/ Invert Selection Set.
View/ Selection Set to review the
contents (these are the proposed extraneous objects; edit the list if
need be).
Edit/ Delete Selection Set (if the
selection set includes any objects that have dependents, MultiSurf will
tell you and it will not perform the delete; to finish, you’ll
need to remove these objects from the selection set, recheck it,
then delete again).
Making
different layers visible in different views
The "SetViewLayers" command allows you to specify different sets
of layers to be visible in each Wireframe view. Without this command, the
same objects have to be shown in each view.
Suppose you want to have only layers 2 and 6 visible in one Wireframe
window. Bring this window to the front; in Window/ Command, type in "SetViewLayers
2 6" (no quotes; spaces between the layer numbers), and click OK.
To undo this command, bring the Wireframe window to the front and give the
command "SetViewLayers" with no layer numbers. Then this window
will again display whatever layers are turned on in the model.
MultiSurf 4.7:
SetViewLayers command now works in Render view as well as Wireframe.
Sorting a model
into top-down order (MultiSurf 4.0)
MultiSurf allows the objects in a model to be defined in any order, and
after extensive editing the order of objects can get quite tangled. (This
lack of order will generally not be noticeable unless you use Edit/ Model
File, or examine a printed-out copy of the model file.)
When studying a model created by someone else, or reopening an older model
of your own and trying to figure out "how it works" -- the
pattern of dependencies -- it is usually much easier to understand a model
that is in "top-down" or "topological" order, where
each object is defined
before it is used in the construction of other objects.
The "TopoSort" command puts a model into topological order. Open
the model, pick Window/ Command, type in the command "TopoSort"
(no quotes), and click OK.
|