compiled by Reinhard Siegel
To move in a model a part of the geometry relative to the overall geometry all its control points must be related to its own frame of reference. If the position of this coordinate system is changed in space, all its dependent objects will change with it. The model canting_keel.ms2 shows an example.
F0 is a Roll-Pitch-Yaw Frame (RPY Frame). Its origin is determined by Point ip_keel, the value for the property Roll defines the rotation about its X-axis.
All control points of the keel-fin surface and the keel-bulb surface are based on this frame F0. If the value for Roll is changed, the inclination of the keel will change too.
The model is not symmetrical to the centerplane (XZ-plane of the global coordinate system) at model level. That is why the hull surface and rudder surface are reflected with regard to the centerplane by Mirrored Surfaces. Also the port side of the fin surface is a Mirrored Surface, but here the mirror plane is the 2 Pt Plane a0. It is perpendicular to the Y-axis of the RPY Frame F0. The ballast bulb is a Revolution Surface, the meridian curve is the Foil Curve c11; the angle of rotation is 360°, so port and starboard side are in one.
Model sheer_clamp.ms2 explains how to construct the sheer clamp of a wooden boat. The cross-section of the clamp should be rectangular and it should be fastened to the hull area in such a manner, that at any section the upper corner point lies on the sheer edge, while the lower corner touches the hull surface.
The EdgeSnake ue_hull runs along the top edge of the hull. On this snake the Ring ring1 is located. Depending on the ring is the Tangent Point pt1, its offset value determines the height of the clamp´s cross section (here 6 cm). Also child of ring1 is the Offset Point pt2. Between pt1 and pt2 the Line line1 is set up.
Now pt1 is rotated around this line by 90 degrees - result is the Rotated Point pt3.
Since, in general, the hull surface is curved in transverse direction, pt3 will not rest exactly on the hull surface. That is why pt3 is to be projected onto the hull surface, which results in the Projected Magnet m1.
With Ring ring1, Projected Magnet m1 and the Tangent Point pt1 the 3-point Frame frame1 is produced.
Based on this frame, the Point pt4 is created - its dz value is the thickness of the clamp (here 2 cm). The point pt5 is a Copy Point, which makes safe that the points ring1, m1, pt4 and pt5 are at right angles to each other and lie in a common plane. The B-spline Curve curve1 (degree = 1) is connecting these points.
Thus, the cross section of the clamp at the location of ring1 is now determined. Finally its construction is repeated for all positions of ring1 by the the Procedural Surface sheer_clamp. Its moving curve is curve1, the driving point is Ring ring1.
MultiSurf offers as secondary coordinate systems the entities 3-point Frame and RPYFrame. Apart from its function as arbitrarily positionable frame of reference, a Frame can also be used where an entity definition requires to specify a Mirror/Surface object. Examples are Contours, Intersection Beads/ Rings/ Snakes or Mirrored Points/ Curves/ Surfaces. The plane spanned between X- and Y-axis of the frame then serves as mirror object.
Model frame_as_mirror.ms2 shows this additional function of the Frame entities.
In the example, the 3-point Frame F0, determined by the points pt1, pt2 and pt3, is specified in the definition of the Contour dwl_0. Likewise for the Mirrored Point pt5.
Quotation from MultiSurf Help:
All of the curves you can form in MultiSurf are defined by reference to a “parameter” t, which takes the value 0 at one end of the curve (the “start”) and 1 at the other end (the “end”). The rule that defines the curve from its data points is written, mathematically or in computer code, in terms of the variation of t. You can think of each point of a curve as being labeled by a specific value of t (Fig. 1). In many situations t is roughly the arc length from the start of the curve to a given point, divided by the total arc length between the curve ends.
It is quite accurate and appropriate to think of the generation of a parametric curve as being a continuous mapping or correspondence between the real numbers from 0 to 1 and points in 3-dimensional space (Fig. 2). You can also think of the curve as being the path of a moving point and t as being time.
Why this preface? Its purpose is to better understand what labeling and relabeling is all about. And how one can make the labeling of a curve similar to another curve. Let us consider this topic in the following example model relabel-1.ms2.
The model includes the topside surface of a workboat, the bowround and a bulwark. The bulwark is a Ruled Surface, spanned between the B-spline Curve c2 and the PolyCurve c1, a combination of the top edge of the bowround surface and a portion of the sheerline.
A Ruled Surface is created from two curves by connecting points on each parent curve having equal t parameter values with straight lines (the “rulings”).
The station contours of the bulwark are hollow at the end of the bow. The reason for this is the strongly inclined run of the rulings. On curve c1 the ruling endpoints lie farther aft than the corresponding end points on the bulwark top edge (curve c2).
If the bulwark stations are to be straight, the rulings must run vertically. In order to achieve this, the the t-parameter distribution of either of the two parent curves of the Ruled Surface has to be changed (relabled).
There are several entity options for this:
As a result of their mathematical definition curves, snakes and surfaces own an inherent "natural" distribution of the t-parameter, the default labeling. This is in effect when the default "*" is used for the Relabel property. If instead a Relabel entity is specified, then this one will determine the parameter distribution.
For further details of the Relabel entity please refer to the user documentation or the program Help.
A clear method and intuitively to use is the control of the parameter distribution offered by the curve type SubCurve. Usually two beads are used to define a section of a curve, one at the beginning, one at the end of the section. But if some more beads are placed between these two, the parameter distribution can be manipulated visually.
Model relabel-2.ms2 illustrates this approach for our example.
Three beads, e1, e2 and e3, are based on the B-spline Curve c2 (bulwark top edge). With these and the system beads *0 (t = 0) and *1 (t = 1) the SubCurve c3 is defined. Parent of bulwark surface is now c3 instead of c2. Moving the beads will change the distribution of the t-parameter along curve c3, thus the run of the rulings of the Ruled Surface changes what finally effects the cross section shape of the bulwark.
With the help of a calculation formula one can also create a procedural curve whose labeling is similar to another curve. Model similar_label.ms2 shows the principle.
The model holds the B-spline Curve c1 and the curve c2 (here a Line entity). The tickmarks (curve point at t = 0.1, 0.2, 0.3, etc.) clearly show the different labeling of both curves. The task is now to relabel curve c2 so that on both curves for the same t-parameter the ratio of arc-length distance (length measured along the curve from its start to the curve point) to total curve length is equal. Of course, the shape of the curve c2 must remain unchanged by the relabeling.
For this purpose, the bead e1 is set on curve c1. The arc-length distance from t = 0 to e1 can be calculate by the formula
arcdist_c1 = ARCLEN (c1, 0, TPOS (e1))
The total length of c1 is:
length_c1 = ARCLEN (c1, 0, 1)
The ratio of both lengths is x:
arcdist_c1 / length_c1 = x
Now the arc-length distance on curve c2 is looked for, which results in the same ratio.
The total length of c2 is:
length_c2 = ARCLEN (c2, 0, 1)
Let arcdist_c2 be the wanted arc-length distance. Then it applies:
arcdist_c2 / length_c2 = x
arcdist_c2 / length_2 = arcdist_c1 / length_1
arcdist_c2 = arcdist_c1 * (length_2 / length_1)
Finally, with the formulas stated above:
arcdist_c2 = ARCLEN (c1, 0, TPOS (e1)) * (ARCLEN (c2, 0, 1) / ARCLEN (c1, 0, 1))
That is, for point e1 on curve c1 a corresponding point on curve c2 is looked for, which is located the arc-length distance equal to the value arcdist_c2 measured along c2 from t = 0. This is the Arc length Bead e2 with arc dist = arcdist_c2.
To repeat this construction of e2 for all possible positions of e1 on curve c1, the Procedural Curve c3 is created. Its moving point is e2, the driving point is e1. Each point on curve c1 with the parameter value t now corresponds to a point on curve c3 with the same parameter value t, and for both curves the ratio of arc-length distance to total length is the same. Thus, curve c3 has the same labeling as curve c1.
In the model relabel-3.ms2 this method is used to relabel the upper parent curve of the bulwark.
Suppose we want to calculate the hydrostatics of a ship hull. There is a linesplan on paper and even a DXF file of cross sections. Those are B-spline Curves degree = 1 and their number would be sufficient for the required accuracy, so fitting a surface to the lines can be saved.
How can we make an OFE file for Hydro from the DXF file?
1 Import DXF
First import the DXF file via File/ Import/ DXF into MultiSurf. This is the model import-1.ms2.
2 OFE file specification
As can be seen, the imported stations are not closed and their orientation is downwards from the deck side.
3 Change orientation
To change orientation, select a curve for display in the Properties manager, then click in the right part of the property "Control points", which causes the Selection Set to list all is parent points. In the Selection Set now click the command button "Reverse order of set" - the order is changed. Finally, confirm with "Ok" in the Properties manager.
Repeat these steps for all stations. This is model import-2.ms2.
4 Close stations
The stations in an OFE file must be closed, that is, each curve must start and end on the centerplane. Although the stations in our the example all begin on the centerplane, but they end up on the side of the hull.
Further, if a station is made up by several portions, as it is the case here at the bulbous bow and at the stern, it must be combined into a single curve.
In order to extend the stations to the centerplane, all the first points on the side of the hull are projected onto the centerplane as Projected Points. The function "Create Copies" is very useful here (main menu/ Insert/ Copies or key "c"). First choose the entity to be copied, here the first Projected Point, then all the remaining points that should also be projected. Click on "Ok" and all Projected Points are on the screen.
Then select each station curve for edit: add the corresponding point on centerplane to its list of control points.
In our example, the first two stations at the bow and the second but last station at the stern are defined in two parts. As for an OFE file a continuous curve required, they must be assembled. A PolyCurve can not be used for this. The control points of one piece must be added to the control points of the other one. This is model import-2.ms2.
5 Save OFE file – command WriteOFE
After this preliminary work to ensure that the data is in the proper format the OFE file is saved using the command "WriteOFE". Commands are entered in the dialog box “Command Window” which is accessed via main menu/ Tools/ Command Window.
However, first the storage location must be specified. This is done by the Command "SetPath". In the example here the file path is to be: D:\Temp.
The easiest way to choose all stations for export is to drag a selection window from top left to bottom right. Then main menu/ Tools/ Command Window (or key "w") to open the dialog box. In the command line, enter "WriteOFE" and the file name.
6 Check – import OFE file
To check whether everything was done properly one can import the saved OFE file with the command "ImportOFE". Just open a new model and enter in the command line: ImportOFE test99.
The commands WriteOFE and ImportOFE add to MultiSurf the functionality of an offset file editor.
By the way, all commands available via the Command Window are listed using the command "Help".