Example: Fitting a surface to a boundary curve and developing (flattening) the surface into a 2D pattern.
1. Start the Pilot3D program.
2. Pick the ‘x’ boxes on three of the four views to get ready to load an existing file. I personally don’t like the 4 views on the screen at the same time. You can maximize one window at a time, but I like to use just one window. (The program can be changed to start up with just one window by changing to the Set4View=n setting in the INI file.) With one window left, maximize it to fill the entire screen.
3. Pick File-Data File Input-DXF Input. We will read some geometry from a standard DXF geometry file. This file will contain the boundary information of a surface where the boundary is defined as a series of connected points – a polyline. When you select this command, a dialog box with DXF input options appears.
4. If you are not exactly sure what is in the DXF file, don’t change any of the DXF input options and just pick the OK button. The program will read the DXF file and tell you how many entities of each type are found. The program also creates a text (TXT) file that gives you full details.
5. Display the boundary curve in the Top View. It should look like this:
I need to provide a little background discussion. You can’t develop or layout a curve from 3D to 2D. There are an infinite number of possibilities. You first have to define a surface inside of the boundary curve. The best bet would be to have some cross-section curves between the two long sides that describe the inside shape. Without this information, the best guess is to assume that the shape of the surface in one of the two directions is straight or flat. For this “wireframe” model, the assumption is that the surface is straight going between (perpendicular to) the two long edge curves.
Now that I have made this observation, I need to know how to fit or create a surface in this area. There are many ways to create surfaces in Pilot3D, but the most convenient way to do this is to fit, skin, or loft a surface (membrane) across or through two or more curves. I will use the Create 3D-Skin/Loft command to pick two or more curves to fit with a surface. These curves that are fit will form a series of cross-sections of the model. For this boundary curve, the simplest approach is to fit a surface between the two long edges of the boundary or fit a surface between the two short edges of the boundary. If only two opposing edge curves are used, then one would want to use the two long edges because the surface between them is flat – at least that is our guess/approximation.
Now, let’s go back to the details. The curve that is drawn turns out to be one entity – a polyline. (In a CAD program, an entity is one of the lowest types of geometry that can be created and edited as one unit.) I know that it is one entity by using the Highlight Entity command.
6. Select the View-Highlight Entity command and pick anywhere on the boundary curve. Since the whole curve changes color (temporarily), then that indicates that it is a single entity or unit of geometry. When you use the View-Redraw View, the entity will be redrawn with its original color. We now want to find the start/end points on the polyline entity so that we can break the single boundary polyline into four separate side polylines.
7. Looking at the full view of the boundary curve, it’s not clear where the start/stop point is located. Select the Zoom command (the magnifying glass icon on the toolbar) and pick/drag a rectangular box close to the curve at some point. Then, use the scroll bars to traverse the single boundary curve to find the start/stop point. That is the place where there is a gap and the two ends don’t meet up exactly. (Note: when you are digitizing the object, put in one extra point that is not on the boundary so that it is easy to see where you stopped digitizing. I found the gap in the middle of the upper boundary edge, as shown below.
What you want to do is to break the single polyline boundary entity at the four corners and then join the top two boundary edge pieces at this start/stop point. You want a separate polyline entity for each side of the boundary.
8. Select the Curve-Break curve command and pick one of the points in each of the four corners. It is not overly critical which point you pick because you will need to fix up the corners later.
This is a snapshot of the upper left corner in the Top View. I drew (for show only) a circle at the point I used to break the long boundary polyline. You do not have to put a circle here to use this command. (If you are curious, I used the Create 2D-Circle-Center+Radius command.)
Note that when you select almost any command in this program, it stays on or current (see the box in the lower right of the screen). This means that when you pick each of the four corners to break the polyline entity, you don’t have to select the command each time. One of the exceptions to this rule is the Zoom command (the magnifying glass on the toolbar), which only works one time and the previous command stays current. This allows you to select the Curve-Break command and zoom in on each corner without having to reselect the Curve-Break command.
This is the point I “broke” at the upper right corner.
This is the lower left corner I broke in the Top View.
This is the lower right corner point I broke in the Top View.
Now, all four corners have been broken, but we have five entities because the top boundary curve is still broken in two pieces. You have to join the two pieces together. This is done in two steps. First, you have to merge or match up the end of one dangling polyline with the end of the other polyline. Second, you have to use the Curve-Join command to actually convert the two separate entities into one.
9. Zoom in on the point where the original start/stop point is located.
This shows the start/stop point on the top boundary edge that has to be joined together.
10. Select the Edit-Match Point-3D Match command. Pick (left mouse button) the dangling point (start or stop) of one curve and then pick the other dangling end. The program will move the first point to be exactly equal to the second point.
11. Select the Curve-Join command and pick the now matched up points. The program will then convert the matched up, but two polyline entities into one, single polyline entity.
OK, Now you are finished with the initial set-up phase. To make it clearer that you are working with four separate polyline entities on the four edges, you should change the color of two opposite sides of the boundary. (or, you can give each edge a different color.)
12. To change the color of any entity, position the cursor on the entity and pick the right mouse button. Be careful not to pick too close to an edit (+) point because the program will think that you want to know the position of that point. For a curve, you want to pick a point in-between two edit points. If the program pops up a dialog box giving you the [X,Y,Z] coordinates of the point, then you picked too close to a point. You may have to zoom in and then pick the curve. If done correctly, the program will pop up an attribute box for the entity where you will see a button that will change the color of the entity. Pick the color button and change the color to red. Do this for the upper and lower boundary edge curves. When you are done, you will see something like this:
13. To get a better idea of the shape, you can display it in the 3D view (see the button on the toolbar) and use the other buttons to rotate the model about the Z-axis or rotate the model up or down. This is one particular view.
3D View of the four boundary edge polylines.
We are going to use the Create 3D-Skin/Loft Surface command to fit a surface to these curves. This can be done in either direction, using the two opposing long edges or the two opposing short edges. Fitting a surface directly (straight) between the two short (green) edge curves doesn’t make sense because it will ignore the shape of the two long (red) edge curves. The better bet is to fit a surface between the two red long edge curves (Oops, sometimes I use curve when I really mean polyline.) This will work, but it won’t follow the shape of the two short (green) edge curves. Remember that the skin/loft command will fit a surface straight between the two red edge curves and will not know anything about the two green edge curves. This isn’t too bad because you can always fix-up (edit) the surface after it has been created to match the shape of the green end curves.
However, we can do better without too much effort. What if we create some straight lines that cross between the two long, red edge curves. Then we can skin a surface from one short, green, edge curve, through the intermediate cross lines or curves, all the way to the opposite short, green edge curve. This would give us a good fit of all edges of the digitize boundary. To do this, we are going to add polylines and snap them to opposing points along the two long, red boundary curves.
14. Select the Curve-Add Polyline command. (Keep in mind that for Pilot3D, lines, polylines, and curves are all variations of the same type of entity – a curve.) The normal way that this command works is by using the left mouse button to pick positions on the screen where you want to add the next point of the polyline. When you are done, you pick the right mouse button. For our case, however, we want to “snap” each end point of a line (a polyline with just two points) to two opposing points along the long, red boundary edge curves. This is done using the ‘p’ key on the keyboard rather than the left mouse button.
OK, the first cross-surface line we will insert will be in the middle of the two long, red edges. (We are going to add in a bunch of these cross-lines, so we will start in the middle and then keep subdividing the distances in half.) Position the cursor at (about) the middle point of the top curve and press the ’p’ key on the keyboard. Next, position the cursor in about the same location of the opposite long, red boundary curve and press the ‘p’ key. To terminate the input of the polyline, pick the right mouse button. You have just defined a line in the middle between the two long edges. This should look like this below.
If you want, you can display and rotate this shape in the 3D view just to make sure that the line was really snapped to the two points.
As I said before, this is a quick operation, so we will add in a bunch more of the cross-surface lines.
15. Add in two more snapped lines half way to the two ends. Remember that the Curve-Add Polyline is still current, all you have to do is position the cursor to a new point and press the ‘p’ key. When you have added the two new lines, the model should look like this.
16. Add four more cross-surface lines by splitting the difference between the existing lines. You should see something like the following.
Notice that the lines added near the ends of the surface were added in with a slight angle. The reason for doing this is that I want these lines to reflect the angled shape of the two short, green end curves. We could stop now, but the process is very quick and more cross-surface lines will help you get the surface to fit the boundary edge better.
17. Add in eight more cross-surface lines by splitting the difference between the existing lines. You will end up with something like this.
Notice again that the lines near the ends of the surface reflect the change in angle of the short, green edge curves. Fitting surfaces to curves always works better if your skin/loft lines are evenly spaced.
18. Display the wireframe model in the 3D view and you should see something like this:
Remember that we don’t have a surface yet. All we have are 3D lines and polylines in space (wireframe). We will create the surface by using the short, green end edge curves and the in-between straight, green, crossing lines.
Now, if we use the end curves and the short, cross-surface, lines we have just entered, we will create a surface that matches the shape of the end curves AND will match the shapes of the two long, red boundary curves.
19. Select the Create 3D-Skin/Loft Surf command. The program will prompt you (see the status line at the bottom of the screen) to pick the curves you wish to skin – in order. Start at one end (short, green edge curve) and use the left mouse button to pick (select) the polyline. Pick the polyline near one end or the other. Next, pick the closest cross-surface line (one that you entered) NEAR THE SAME END as the first polyline you picked.
[Note: as you are picking these skinning curves in sequence from on end to the other, the program really needs to have you pick each curve near the same ends of the curve. The program uses this information to know how to connect the curves together into one surface. If you pick the skinning curves at opposite sides or ends, then you will see what looks like a twisted surface when you are done. If this happens, you will have to use the Undo command and redo the skin/loft command. The Undo command is the counter-clockwise arrow on the toolbar.)]
As you pick each cross-surface line entity in sequence, the program will highlight or temporarily change the color of the line. This lets you know that you are on the right track. After you have picked all of the lines from one end to the other, PICK THE RIGHT MOUSE BUTTON to pop up a dialog box with many options for skinning the surface to the curves you have selected. I won’t go into all of the options now, but all you have to do is to accept all of the default settings and pick the OK button. You should see something like the following.
The program fit a surface through all of the picked curves and then turned off or hid the lines that were selected. The original lines were not deleted in case you want to delete the surface and start over again.
20. Select the Curve-Draw All Curves command. This command will turn back on all of the curves used in the skinning process. I want to do this so that I can judge the accuracy of the surface fit along the edges and make any necessary fixes.
21. Since the surface is drawn in a washed out blue-gray color, I want to change it to a different color. You do this by putting the cursor along any row or column of the surface (not near any edit points) and picking the right mouse button. A dialog box will appear that allows you to change the color. After making the color change, I drew the surface in the 3D view and this is what I got.
The surface might look good, but you really need to examine how the surface matches up to the original digitized points.
22. Display the surface in the Top View again and use the Zoom command to focus on one of the corners of the surface, as shown below. This is where the biggest corrections will be.
When the program fits a surface to the curves, it tries to do its best, but there are always some funny little curves unless the original cross-sections were very nice.
23. Select the Edit-Move Point command. That command is also on the toolbar and is draw with an icon that shows 4 arrows pointing in the 4 main directions. If you select this command, you can grab and drag the bad surface point to fix the shape of the corner of the boundary.
This picture shows the shape of the corner after the surface point was moved a little bit.
You can zoom or scroll all along the boundary edge and fix up all of these little problems. If you don’t think that the surface fit was close enough to the original data, you might want to delete the surface, add more cross-section lines and then re-skin/loft the surface using more curves.
Before you do this, however, I need to talk about accuracy. When you digitized the original shape, you have to have some idea of what kind of accuracy you want. Digitized points always wiggle one way or the other unless you have some nice line or curve that you are following. Even so, you still might have some wiggles in the original data. The skinning/lofting process eliminates some of the wiggles in the raw data (as you can see if you zoom in along the boundary edge), but is it good enough? This is something you will have to decide.
If you want additional accuracy, you might want to smooth or fair the original digitized data first, before you get into the skinning process. Since the original data was in the form of a polyline, there is no easy way to smooth this data. However, Pilot3D includes the ability to fit (interpolate) a smooth curve through the data points. This is done using the Curve-CurveFit command. So, at the very beginning of this process, you could have used this command on the original, single polyline digitized points to create a smooth curve. The smooth curve would have wiggles, but Pilot3D gives you commands for smoothing and fairing curves. If you don’t like the accuracy of the original digitized points, you might want to do this. If so, then you can refer to one of our tutorials on shaping and fairing (smoothing) curves and surfaces.
Since the Skin/Loft command does its own smoothing and since you can go along the edge of the surface and easily fix up problem areas, there is probably no need to smooth or fair the original data.
24. Select the View-Render View-Open Render View command and use the rotation buttons on the toolbar to see what the surface looks like, as shown below. To exit the Render View, pick the ‘X’ in the corner of the window.
After you have fixed up the edges of the surface and checked for accuracy of shape, you are ready to unwrap or develop the shape of the plate.
25. Select the Develop-Develop Plate command and pick one of the rows or column lines of the surface in Top View. A dialog box will appear showing a list of options. This tutorial is long enough, so I won’t go into an explanation of all of the options (see the manual for details).
The most important options are the number of grid rows and columns. Pilot3D uses a finite analysis method for the solutions and this grid is used to subdivide the surface at locations where the strain is calculated. If these values are too high, then the calculation will take a long time. Pilot3D generates a HUGE matrix that is solved based on the grid size. If the program looks like it is taking a long time to do the calculation (see the status line for progress information), then you can press the ESC key to terminate the calculation. Then, you can pick the surface again and enter smaller numbers for the number of grid rows and columns.
For this example, I put in 20 for the number of grid rows and 100 for the number of grid columns. I left the rest of the options alone and picked the OK button. Depending on your machine and how many rows and columns you define, this calculation could take a while. For my not too fast machine, it took about 30 seconds. Check the status line for progress in the solution. The program uses an iterative method of solution and it shows you which step of the solution it is in. If it seems to be taking too long, press the ESC key and pick the surface again. Then, you can try a different combination of grid rows and columns.
The result of this layout process is calculated and displayed, as shown below.
26. Select the File-Data File Output-DXF Output next if you want to output this boundary shape to a DXF file to send to the CNC cutter software. When the program displays the DXF output dialog box, make sure you select the 2D output option so the program will output what appears on the screen rather than a 3D mesh of the surface.
The key to this process is to fit a surface to the boundary shape because surfaces can be unwrapped, but not wireframe curves. To create a 3D surface with existing data, you need to construct a series of cross-section curves that define the shape of the surface. Once you fit these sections with a surface using the Skin/Loft command, you need to “fix-up” the surface before doing the final unwrap and export to a DXF file.