Tricky modeling situation
Here’s a part that Stan, a friend of mine from near Buffalo, NY sent to me to ask why it doesn’t seem to do the right thing. This represents a type of problem that SW users run into frequently. How do you effectively dome or cap off flat ends of parts? I wind up doing a fair amount of this type of tech support for people. Resellers get paid for it, and I do the work. Of course Stan sends some nice modeling work my way, so I gladly help him when I can.


The problem is that from the top view (on the bottom) the part looks like it has 3 way symmetry, but when you create a feature like a Fill with a point at the center axis as the constraint sketch, you assume it should create a symmetrical “dome”, but as you can see in the side view (on the top), it doesn’t. The peak of the dome is slightly toward one of the lobes of the triangle.
Why does it work that way? How do you force it to do what you want it to do?
This looks a lot like another proprietary job I did for a company a couple of years ago. You’d laugh to hear how simple it sounded, but the geometry was almost impossible to get right. It was literally a block. A four sided architectural block. The only trick was that one face of the block had to have a dome on it, and the dome had to come down into the sharp corners gracefully. I must have gone through a dozen attempts, each with a slightly different set of features. In the end I was embarassed to have my ass kicked by a block, but I handed in the best result I could get, and it wasn’t perfect.
Anyway, back to the three sided problem. If you use the Face Curves
![]()
tool on the face of the part, you get this:

The Fill surface is trying to put a 4 sided patch over the 3 sided shape, and it does a nice job, but this is the reason why the result is symmetrical left and right, but not front and back. You can’t get a 4 sided patch to do 3 way symmetry.
The other option is to do something more spherical. But a sphere has a singlularity, a degeneracy, a place where all the uv curves come to a point:

This is the result of creating several of the sections (like the blue lines above), and lofting them together. You could also get this result by lofting from the triangular perimeter to a single point. This type of modeling usually creates some sort of artifact around the degeneracy, like little ripples, divots, or whatever that are most easily seen with either realview reflections or zebra stripes. You have to pivot the part around and watch the reflections change to really see the problem, kind of like a small dent in a car door.
So, we’ve got two methods here, neither of which really does a great job. In this case the best solution turns out to be a combination of these two inadequate methods. The first method (Fill) is great at getting rid of degeneracies, but not so good at symmetry. A loft might be good at symmetry, but sometimes stinks at resolving degeneracies. So, we use the loft or boundary for the part where we need symmetry, and the fill for avoiding the degeneracy.
This is what makes surfacing “difficult”. You have to select construction methods carefully based on their strengths.
I’m always wondering if there is an analytical way to do this rather than the hit-or-miss squint-one-eye method. Well, I think there are some rules you can follow while squinting one eye, but no, SolidWorks does not allow sufficient control over splines to make this a completely analytical exercise, but there are some tools you can use to help you along.
Here is the combination method I used to make a fairly clean 3 sided dome:
- draw a 2 point spline that goes from the trianglular perimeter to the apex sketch point. use pierce at the perimeter and coincident at the point.
- apply horizontal relation to the handle at the end of the spline at the apex.
- apply vertical relation to the handle at the end of the spline at the perimeter.
- show the Curvature Comb for the spline.
- adjust the length of the handle at the perimeter until the entire curvature comb is on the same side of the spline (no inflection points). examine the end at the point to make sure curvature comb is smooth and all on the top.
- apply a Curvature Control (looks like a foreshortened radius arrow) at the end of the spline near the center of the triangle, and give it a definite value in the property manager. make sure that the curvature comb is still in tact.
- exit the sketch and make an Axis from the intersection of two planes at the center of the triangle.
- make a new plane 60 degrees from the old one through the axis.
- copy the first spline sketch to the new plane.
- reattach the pierce relation and the coincident relation.
- make sure the curvature comb still looks good. make sure the curvature control icon is still there. you should have this:
- exit the sketch and start a new Boundary surface feature.
- select each sketch as profiles in direction1.
- set the tangent type for both sketches to Normal To Profile.
- activate direction2 box then RMB and activate the SelectionManager. Select the edges between the two profiles – they are too long, but that is ok. click the green check for the SelectionMgr when done.
- click the Trim By Dir 1 option – this should make the surface correct
- click the green check to accept the result
- Mirror the body about the first plane you sketched on
- use the axis created earlier to pattern the two bodies 3x around the part
- if you examine the part at this point, you can see that there are some “artifacts” like ribs that point to the corners of the triangle. it is best to look at this in shaded without edges.
- draw a circle in the middle of the triangle and trim out the center of all of the patterned wedges.
- create a Fill feature that selects all the edges created by the circular trim, and selects the sketch point that already exists in the part file as the Constraint Sketch. make sure the tangency is set to Curvature for all edges. Also check the Merge Result option.


Wow, who would have thought what appears to be so simple would require so many steps? I’ve run into this sort of thing lots of times in doing surface work and it always gets interesting looking back at how a given problem was ultimately solved. Usually takes lots of tries.
I’ve had things like this fail after the initial build, too–fairly frequently. Get the surface the way you need it, move down the features with shells, ribs, whatever, rebuild and save the part–all is fine. Open the an assembly (later) that includes the part, and find all sorts of red hell in the tree. Open the part and find the surface feature inexplicably failed. Roll back, edit the feature (nothing wrong), rebuild, roll to end, rebuild, save. No problems again. I must have three or four such parts I must constantly monitor like this lest they spontaneously implode. Odd behavior like this is a big hassle.
Hi Matt-
Excellent job solving this problem. You are the master of surfacing.
Devon
matt,
great post! i really like this kind of topic!
i have a question, i’d be appreciated if you take a look here:
http://i37.tinypic.com/2ithqgo.jpg
Thanks!
****
You know, I don’t think that a surface can be not c2 within itself. I think that the math guarantees that it will be internally continuous. Not positive about that, but I’m guessing that. What you might be seeing there is the effect of image display quality settings. Try jacking up your image quality and see if that changes.
Matt,
Excellent post, please do more stuff like this!
Thank you
Dan
Thanks for your reply.
i’m not sure about the math either,but looks like it’s possible for a surface to be internally non G2. i still can see an abrupt change in intersection curve’s curvature and also non-tangent zebra stripes, with highest image quality.
****
Well, it’s possible for a single spline to be not continuous. The option in the spline propmgr for Maintain Internal Continuity keeps asymmetric internal handles from breaking continuity. As I understand it, splines are constructed piece-wise, with different math for each piece. I think the “pieces” are between the spline points. If there is an internal break in continuity, it comes at the spline points.
i think that boundary surface is actually 2 surfaces.
it can’t be curvature continues because one of the boundaries is not G2. the one which consists of an arc and tangent line (filleted area)
oh sorry, not a line, two tangent arcs,with different radius. this area isn’t g2 which then propagated into the whole surface.
Matt,
Nice. When you get a chance, could you please discuss/contrast this method to sweeping the first spline around a circle path and using the perimeter as a guide curve?
Thanks again, Phil
****
I think if you look at the 1 part included in the download, I tried that one. The main problem is that there isn’t a very good systematic way to make sure that the edge of the sweep is tangent to a good direction for the center cap to make a smooth part.
It might be better to make the center cap first, but then to match the curvature you’d want to use a boundary instead of a sweep. I don’t think there’s much good news for a sweep with this kind of feature. Curvature matching is not the strong suit of the sweep.
i just discovered face fillets are capable of doing G2 rounds.but it needs 3 fillets instead of one. take a look here:
http://i37.tinypic.com/21l200m.jpg
thanks!