“Impossible” Modeling Challenges Part 4: Reverse Engineering (Surfacing and Direct Editing)
This is the fourth installment discussing SOLIDWORKS Power User Challenges (SWPUC). Check out the links below to see parts one through three:
- ‘Impossible’ Modeling Challenges Solved by CAD Power Users
- ’Impossible’ Modeling Challenges Part 2: Dynamic Straightening of a Bent Wire in CAD
- ‘Impossible’ Modeling Challenges Part 3: (Un) Bend a Square Profile in Multiple Directions
While SOLIDWORKS is the most popular 3D CAD software, it is not the only one. We live in a CAD world that offers engineers and designers many software packages with which to work. Collaboration among various companies using different CAD system is the norm, not the exception.
SOLIDWORKS can import various file types, in either native or neutral format. If you want to see all type of files that could be imported by SOLIDWORKS, simply go to the File menu and select Open, then select the file type (Figure 1.)
More details about the type of files that could be imported or exported by SOLIDWORKS can be found in the SOLIDWORKS Help file (Figure 2).
Figure 2–Importing and Export File Version Information for SOLIDWORKS 2018 SP4.0
In practice, model data is usually transferred from one CAD software to another by the use of neutral formats such as STEP, IGES, SAT, Parasolid and more.
A neutral file usually contains only the body data. The features that generate solid and surface bodies are not preserved. As a result, when the model is loaded into SOLIDWORKS, the only features listed in the FeatureManager Design Tree are Imported features, one for each body.
The power users from the SOLIDWORKS forum were presented with the following case study:
A 3D Printing Bureau receives a neutral file that generates the model shown in Figure 3.
Figure 3 – Imported model, full of cut-outs
The customer wants a 3D Printout showing the way the model looked before all the cut-outs were added.
Figure 4 – End goal: Remove all the red faces.
In the end, the model should look like the one shown in Figure 5.
Figure 5 – A travel back in time, before any cut-outs were added.
If such a model had been created natively in SOLIDWORKS, the user would simply rollback the features in the FeatureManager Design Tree to travel back in time before any cut-outs were created. With an imported model, we do not have this luxury. The challenge is to perform the most elegant reverse engineering procedure for achieving the same goal.
Notice that I did not write “to fill the cut-outs” but “to remove the cut-outs.” Filling the gaps would add to the model, which would not be real reverse engineering.
Fortunately, SOLIDWORKS is built on the Parasolid kernel, which ensures that most faces in a model behave like pieces of cloth “cut” from a larger patch of fabric. There is magic inside SOLIDWORKS that allows for each face to “untrim” itself up to the original patch from which it was cut. For algebraic faces—planar, cylindrical, conical, spherical, toroidal—SOLIDWORKS can precisely extrapolate the untrimmed result. For the rest, it will be precise until the boundaries of the original patch are reached. After that, it will “guess” the rest of the shape or simply stop in case of singularities.
If you are not yet bored by these explanations and would like to be exposed to more information about topology and geometry inside SOLIDWORKS, I strongly suggest taking a Surface Modeling course.
There were 73 replies to the 8th Weekly Power-User Challenge on the forum, containing various solutions. When you combine the versatility of SOLIDWORKS with the collective talent in the SOLIDWORKS Community, the results are always astonishing.
Reverse Engineering Features vs Fillers or Bridging Features
It is tempting to use features like Extrude, Sweep, Loft, Boundary or Fill Surface to fill the gaps. Some of them are really good in enabling the user to contain the curvature continuity across multiple faces. The truth is that such features will never recreate the original geometry but only approximate it.
Users who require precision learn how to use pure reverse engineering tools like Delete Face and Patch, Untrim, and Delete Hole.The question is what can be done with only three tools.
Most of the Fillers and the Reverse Engineering Tools can be found in the Surfaces toolbar on the CommandManager (Figure 6).
Figure 6 – Fillers enclosed in blue, Reverse Engineering tools in red.
In this article I will present a solution that is close to ideal. This user maximized the use of the information contained in the imported model, getting close to a pure Reverse Engineering solution.
In order to reduce the amount of work, it was assumed that the model was symmetrical about the Right Plane. Thus, the user could cut the part in two, work on half of it and later mirror the body to return to the full model.
It is worth noting that SOLIDWORKS has a useful tool for checking the Symmetry, as shown in Figure 7.
In this case, the model is not 100 percent symmetric, but this is the assumption we made.
Step 1 – Delete as Many Cut-outs as Possible on Half of the Model
Simply use the Delete Face feature, with the Patch option checked (Figure 8) to remove the cut-outs on half of the model. The selected faces will disappear. The rest will grow based on their own original patch of fabric until the “holes” are removed.
Figure 8 – Delete Face and Patch
Notice that not all cut-outs could be removed with this feature. It is a great tool for simple topology, mostly for faces that are completely contained inside other faces. As you can see in Figure 9, there are areas where fillets of various radii are interrupted. SOLIDWORKS can untrim those faces but cannot determine where the untrimmed faces should meet in order to create a valid edge between them since there are an infinite number of solutions.
Figure 9 – This model has area with complex topology, where Delete Face cannot patch the cut-outs.
It might be hard to select all faces that are not visible if the Display Style is Shaded or Shaded with Edges. In this case, I recommend using Hidden Line Visible style, in conjunction with the Lasso selection mode (Figure 10). That would enable the selection of all faces, hidden or visible, inside the lasso.
Figure 10 – Lasso selection in HLV mode
After step 1, the model looks like the one in Figure 11:
Step 2 – Remove Half of the Solid Body
There are several ways to achieve this. Since the Right Plane is the Symmetry reference, we will use it as input in a Cut With Surface feature.
Figure 12 – Cut With Surface feature
After step 2, the model looks like the one in Figure 13:
Step 3 – Delete the Rest of the Cut-Out Faces Located Along the Thickness of the Model.
As shown in Figure 9, there are two complex cut-outs that could not be patched with the Delete Face and Patch feature. It is time to turn the solid body into a surface body by using the Delete Face without the Patch option. In Figure 14, the viewport was split in two in order to show the faces-to-be-deleted from both directions.
After step 3, the model looks like the one in Figure 15:
Figure 15 – Time to do some surfacing.
Step 4 – Remove All Possible Gaps Using the Delete Hole Feature
One of the features that is less documented in SOLIDWORKS is the Delete Hole. It is similar to the Untrim feature with Internal Edges option on but offers more control over which gaps will be removed from a surface.
The most intuitive mode to access it is by pre-selecting one edge for each gap and pressing the Delete key on the keyboard. The gaps containing the selected edges will simply disappear. The surrounding face(s) will grow back based on the original patch of fabric.
Figure 16 – Just press Delete!
After step 4, there are only two gaps remaining in the surface body.
Figure 17 – Two remaining gaps.
At this point, many users would fill the gaps using the Fill surface command. We will continue to attempt to use reverse engineering features to go back in time to the original shape.
Step 5 –Measure the Minimum Radius of Curvature for the Fillets Around the Gaps
The reason the Delete Hole did not work on the remaining gaps is the topological complexity introduced by the fillets intersecting the gaps. In case we would need to remove and re-create them later, we should first measure them. Since the filleted faces are not cylindrical, the only way to measure their minimal radius of curvature is by using the Check tool.
Figure 18 – Make sure to use the Face Filter to target the relevant face.
Repeat this process for all faces that intersect the gaps. Record the measurements.
Step 6 –Isolate the Faces to Be Untrimmed
At this point, we cannot untrim the existing surface body any further. The connections between faces makes any topological change too complex for SOLIDWORKS to handle.
The solution is a divide and conquer method.
For that, we will make a copy of faces that could be untrimmed if they were isolated from the rest. Use the Offset Surface feature, with 0 (zero) offset.
Figure 19 – Zero offset results in copying the faces in new surface bodies.
After step 6, there are two new surface bodies in the model.
Figure 20 – The original surface body has been hidden for clarity.
Step 7 –Isolate the Inner Face of the Big Round
This step is a perfect example of the divide and conquer method. The inner face of the big round needs to be isolated in its own surface body.
Simply add another Offset Surface with zero offset and copy the face from the main body.
Figure 21 – A forth Surface Body is generated.
Step 8 –Delete the Original Faces of the Pocket from the Main Body
Since we will continue the untrimming on the copied faces, it is time to remove the original faces of the pocket. We do not need duplicates.
Figure 22 – A simple Delete Face with no Patch on. The other bodies are hidden in this screenshot.
After Step 8, the model will look like the one shown in Figure 23:
Figure 23 – All faces are unique at this time.
Step 9 – Untrim the “Curvy” Face of the Big Round
It is time to benefit from our work. Since the big curvy face is a one-face surface body, it could be untrimmed with ease. The scope is to extend it until it interferes with the next part of the fillet.
Figure 24 – Learn to love interferences!
Step 10 – Untrim the Left Face of the Big Round
Let’s repeat the process for the face on the left. We will have a nice interference between two separate surface bodies.
Step 11 – Trim the Two Surface Bodies to Generate the New Edge and Knit Them in the Process.
The mutual trim feature is extremely powerful. Not only does it give users complete control over what is preserved and what is removed, but it also automatically knits the remaining faces into one surface body.
Figure 26 – In this case, it is easy to select the big remaining patches for preservation.
After step 11, the model looks like the one shown in Figure 27.
Figure 27 – Divide and conquer works!
Step 12 – Untrim the Bottom Face of the Pocket
Since we isolated this face as its own body, it can be untrimmed. Notice how the resulted face has four edges. Remember the “fabric” or “cloth” analogy? Each piece of fabric is woven from two threads normal to each other. Because of that, the natural shape of the resulted work is rectangular. It is similar in SOLIDWORKS. We call the two threads Face Curves. Take a surfacing course to learn more about them. You cannot be a master of SOLIDWORKS without fully understanding these concepts.
Figure 28 – Notice the four edges of the preview.
Step 12 is ensuring the big purple face is ready to be part of a mutual trimming operation involving the orange round. But first, we need to untrim the round.
Figure 29 – Main body made transparent for clarity.
Step 13 – Extend Some Faces of the Big Round Using the Same Surface Option
This is the first time in which we cannot use a pure reverse engineering tool. Attempting to untrim the big round would not work due to the topology complexity. Instead of that, we will use Untrim’s cousin, the Extend Surface feature, with the Same surface option on.
Even using Extend Surface, only some face of the surface body can be extended.
Step 14 – Recreate the Missing Bits
We are to a point where we need to use fillers in order to fill the missing bits in the round surface. By employing the use of the Tangency to Face conditions, we strive to be as close as possible to the original geometry.
Figure 31 – Boundary employed as the last resort tool. At least we use Tangency conditions…
After adding a second boundary feature for the other missing patch, the result is shown in Figure 32:
Figure 32 – Time to knit the round face.
Step 15 – Knit the Three Surface Bodies of the Round into One Surface Body
Figure 33 – Be sure to “zip” any gap in the new surface body.
After step 15, the round surface body looks like the one shown in Figure 34. Notice the two undesirable edges.
Figure 34 – These edges have to go!
Step 16 – Remove the Two Edges by Using Delete Face with Tangent Fill
Sometimes we must choose between observing the geometry or the topology. As a teaching moment, I chose to attempt to match the topology of the original model. In order to remove the troublesome edges, I will delete all faces containing them. At the same time, I will generate new faces tangent to the original and the geometry around them. A pretty ambitious project is made easy by the Delete Face with Tangent fill feature.
After step 16, the round surface body looks like the one shown in Figure 36.
Figure 36 – Clean faces, no mid-edges.
Step 17 – We Did the dividing, It Is Time to Conquer
At this time, the pocket geometry consists of two separate surface bodies.
We already know how easy is to use the Mutual Trim to join them into a new body.
Figure 38 – Mutual Trim… pure magic!
Step 18 – Recreate the Small Fillet Using the Measurement from Step 5.
At this time, the pocket is completed. It is time to move our attention on the big body.
Step 19 – Untrim the Surface Body by Selecting the Edges on the Right
At this time, it looks like we can knit the two bodies:
Not so fast! There is an interference here:
So, what do we do when the Knit feature does not work?
Step 20 – Mutual Trim, Of Course
I told you that the Mutual Trim feature is magical. Guess what? It can even turn watertight surface bodies into solid bodies.
Figure 44 – When Create solid option is greyed out, it signifies the presence of other gaps that need to be zipped.
Step 21 – Knit the Surfaces, Zip the Gaps and Solidify the Model
Figure 45 – I was right! There were gaps that needed closing! Also, notice the Create solid option being checked.
At this time the model is solid, and the pocket is beautiful.
Figure 47 – Half of the model has been reverse engineered.
Step 22 – Mirror the Solid Body to Complete the Model
Make sure to use the Mirror Bodies option.
Figure 48 – Merge the solids into one solid body.
Job done. Many thanks to the readers who got this far.
Other Solutions Received for this Challenge
Michael Lord has the merit to be the first one submitting a solution. He used the Delete and Patch Face command to eliminate the holes and heal the surrounding faces. That is one of the best tools for reverse engineering in SOLIDWORKS. He used the Fill Surface to close some of the most complex gaps.
Kevin Pymm‘s first entry also used Fill Surface in one place. He was the first who took advantage of the model’s apparent symmetry and saved a lot of time by splitting it in two and working on only half. His subsequent entries avoided the use of the Fill Surface, but they created many little facets in some areas.
Jaja Jojo’s first entry also used Fill Surface.
Roland Schwarz’s first entry proposed a model without holes but also without pockets. The result, an elegant shape, but not the original one.
Paul Salvador submitted several entries that got refined in time. His first acceptable solution was posted June 6 at 12:13 pm. He had good use of Ruled Surface for recreating the original conditions before the fillets were applied. His solution has two more faces than the original model.
Dave Dinius shocked me with his original use of the Move Face command. Initially, it seemed to be a great replacement to the Untrim command. Spectacular! He also helped in revealing bugs in the software. He demonstrated the instability of the Move Face command. Once it is edited (with no change) and rebuilt, several features downstream will fail. Please submit the model to your VAR for getting SOLDIWORKS working on solving this problem. Again, a genial idea that would work well once the software gets repaired. He also graciously provided a detailed play-by-play commentary to his model as a forum message. Thanks for that!
Roland Schwarz’s second submission was a sample of a typical work for a power-user who is not afraid to explore the model by using a sculpting method. Change this, than that… with the ultimate goal to get the job done. He was consequent in using just reverse engineering tools. The end result is a beauty.
I am amazed on how much time he dedicated to this challenge. Take a look at the number of features:
Mark Biasotti’s second entrance is a master’s work of art.
He took advantage of most of the tools available in the surfacing toolbox, including an ingenious use of the Replace Face feature. He was also the first to add comments directly on the features. I love the new Comments Folder introduced in SW 2017!
Figure 53 – Can you imagine how useful having all the designer’s thoughts embedded in the most important features of model could be for your team?
Jaja Jojo submitted a new entry with a fairly small tree. He used Loft and Boundary features for re-creating the fillet, thus adding a certain degree of approximation. To be fair, this is what most users would use in real-life projects.
Steen Winther submitted a beautiful, elegant solution, fully commented. Only 18 features, which could be reduced to 16. He had two extra faces compared to Biasotti‘s solution.
Krzysztof Wojcik made great use of the Heal Edges command. The result is a great.Read this, if you need more information about this feature: http://www.javelin-tech.com/blog/2012/03/imported-surface-edge-count/
The Winner of the 8th SWPUC Is Mark Biasotti.
Special mentions to Roland Schwarz, Michael Lord, Dave Dinius and Krzysztof Wojcik.
About the Author
As an Elite AE and Process Improvement Consultant, working for Javelin Technologies, Alin Vargatu is a Problem Hunter and Solver, and an avid contributor to the SOLIDWORKS Community. He has presented 22 times at SOLIDWORKS World and tens of times at SWUG meetings organized by four different user groups in Canada and one in the United States. Alin is also very active on SOLIDWORKS forums, especially on the Surfacing, Mold Design, Sheet Metal, Assembly Modeling and Weldments sub-fora. His blog and YouTube channel are well known in the SOLIDWORKS Community.