I’m trying to model up some window types and my typical approach to doing this in CAD software is to extrude a profile along a path or shape. I understand that standard method in Blender is to use a Curve for both the path and the profile, and use the profile as the object in the Bevel pulldown. I have done just that, but I have noticed that the resultant geometry is not the same size as the profile and I cannot figure out why. I believe I have correctly applied transformations to both the of the curves, yet it does not fix the problem. Another thing I have checked (suggested in search result for the same problem) is to ensure that the Mean Radius for both curves (in Edit Mode) is set to 1, which again doesn’t solve the problem.
Though I’m not sure if it matters, I’ll add this as extra info. The Path was created as a plane, then converted to a Mesh, and rotated 90 degrees. The Profile was imported from a DXF, and was a Curve upon import.
I’m unaware if there is some logic to determining which orientation around the Z-axis that a profile curve needs to be rotated to get the correct extrusion, but it seems a but like trial and error.
This image is a closeup of the extrusion and just using the grid as a visual guide I can see the extrusion is correct in the Y direction, but wrong in the X direction:
So you can hopefully see that the width of the face which looks to be 40mm, should in fact be 59mm, but the depth is correct at 70mm. I would love to know if I have done something incorrectly, since this is something I would expect to be doing a lot since its a very common operation in architectural modelling. I’ve also attached the blend file Window.blend (1.1 MB)
.
You are not doing it wrong.
When lofting, blender places a copy of the profile at each path vertex rotated at the tangent at that point, so the profiles are rotated 45 degrees at each vertex, thats why the measure is not what you expect.
It can be seen if you subdivide the path:
My suggestion is to scale the profile in the affected axis (y in this case) to compensate.
If you scale y by 1.414 (that is 1/cos45) you should have correct measures.
And do not subdivide de path, this is for 4 vertices orthogonal paths.
Hi @lqppro
Thanks for the explanation. Unless there is some beneficial reason to this approach, I have to say that I think the developers have this operation coded completely wrong. Or at least, provide a setting that allows users to toggle how the profile is calculated at vertices to let us get the result we need for our situation.
Going by your image, I think you mean it places the profile at the bisected angle between the segments normals; if it were at a tangent, it would be flat since the profile is perpendicular (once the extrusion takes place) to the path. This brings me to my next point…
I wish the corners did have the profile calculated tangentially at the vertices; that is precisely what I am used to using other software.
See the below example where I slowly demonstrate the same operation:
First I pick the path
Then I pick the profile
Then I left-click to give a preview of the profile (notice how at corners the profile is tangentially (i.e. flat) at the end of each segment and not at a bisected angle)
Finally I left-click to complete the extrusion and the dimensions are correct all around the extrusion
It’s frustrating that Blender can’t do this operation in this way. Do you know if any add-on/extensions can do a loft in this manner?
I appreciate the suggestion to correct the problem, but I probably feel more comfortable extruding the profile and shearing the ends, or using CAD Transform to rotate ends.
After some search i found this solution
If the curve is set to 2D the extrusion preserves profile dimensions along edges.
Make sure the points of the curve lie in the objects own xy plane with z=0.
This requires some editing in imported profiles not in the xy plane.
I can see that works, though its less than ideal to be forced to model an object on the XY plane, when that isn’t the model’s actual orientation. I’ll need to give it some thought if this is the approach to go with, or the methods I mentioned previously. Thanks again.
This problem seems to have been caused by the nature of the curve.
You have to do it in 2D to solve this problem.
Alternatively, you need to modify it to suit the transformation.
Perhaps several options are possible in the geometry node, so I think it can be solved.
I haven’t tried it.