Curves workbench

Post here for help on using FreeCAD's graphical user interface (GUI).
Forum rules
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help

Also, be nice to others! Read the FreeCAD code of conduct!
User avatar
Chris_G
Veteran
Posts: 2579
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Curves workbench

Post by Chris_G »

Great ! That was rather strange, indeed.
edwilliams16
Veteran
Posts: 3106
Joined: Thu Sep 24, 2020 10:31 pm
Location: Hawaii
Contact:

Re: Curves workbench

Post by edwilliams16 »

Has anyone done a video or tutorial on the use of the Curves|Freehand BSpline tool? MangoJelly is likely https://www.youtube.com/playlist?list=P ... pYPiEKMmC] - but 41 videos are a lot to wade through!
drmacro
Veteran
Posts: 8865
Joined: Sun Mar 02, 2014 4:35 pm

Re: Curves workbench

Post by drmacro »

edwilliams16 wrote: Thu Jun 30, 2022 5:43 pm Has anyone done a video or tutorial on the use of the Curves|Freehand BSpline tool? MangoJelly is likely https://www.youtube.com/playlist?list=P ... pYPiEKMmC] - but 41 videos are a lot to wade through!
I know of no video. But I'm pretty familiar. Is there a question?

Edit: there is a LOT of info in those 41 videos... ;)

And, I did remember:

Mango did a specific video: https://www.youtube.com/watch?v=SjjMdUsGBsE

There is a woman on YouTube that has demonstrated using it to do car bodies: https://www.youtube.com/watch?v=zEWzp857wPA&t=4s
Star Trek II: The Wrath of Khan: Spock: "...His pattern indicates two-dimensional thinking."
edwilliams16
Veteran
Posts: 3106
Joined: Thu Sep 24, 2020 10:31 pm
Location: Hawaii
Contact:

Re: Curves workbench

Post by edwilliams16 »

drmacro wrote: Thu Jun 30, 2022 5:46 pm Mango did a specific video: https://www.youtube.com/watch?v=SjjMdUsGBsE
That one was useful.
I wasn't sure of the concept of the tool, because when I referred to the documentation https://wiki.freecadweb.org/Curves_EditableSpline
  • It doesn't actually say that it creates 3D B-Splines
  • That it does so by manipulating the B-Splines in the projected view
These are no doubt so obvious to the current user of the tool that they don't need mentioning, but lack context for the prospective user browsing the docs.

So if I now understand, the tool provides more Gui oriented way of creating a 3D B-Spline from its projections. Given say, the projections of a curve on the XY and XZ planes (maybe from tracing the top and front view images of an object), one way would be to
  • Create two sketches of the respective projections on the two planes
  • Select the sketch curves and use the Curves|Mixed Curve tool
OR
  • Select top view (XY)
  • Create a Curves|FreeHand B-Spline and create the XY projection of the desired curve, adding nodes and moving points as required
  • Select front view (XZ) and manipulate the B-Spline to match the desired projection
  • Iterate as required if you changed x-coordinates of points in the prior step
If I have the above right, do the projections need to be orthogonal?
drmacro
Veteran
Posts: 8865
Joined: Sun Mar 02, 2014 4:35 pm

Re: Curves workbench

Post by drmacro »

You can select any 2 vertexes in space, then click the tool and a 2 point spline is created., click between the 2 points, hit I and a new vertex is added to the spline. Without a modifier key, dragging the vertex will move it in 3d space (I suppose the vector is based on the camera).

So, when using orthogonal views it is a more e in the view plane. With modifier keys it can be constrained to move in a specific angle while in a non-orthogonal view.

No sketch projections are necessary.

But, I'm not sure that answers you question.
Star Trek II: The Wrath of Khan: Spock: "...His pattern indicates two-dimensional thinking."
edwilliams16
Veteran
Posts: 3106
Joined: Thu Sep 24, 2020 10:31 pm
Location: Hawaii
Contact:

Re: Curves workbench

Post by edwilliams16 »

OK. I tried some of this out. I made a 3d curve using the mixed_curves tool and then attempted to trace it using the Freehand tool, going back and forth between the top and front views.

I couldn't get a tangent constraint at the origin end. The T key sets or un-sets tangent mode for the selected vertexes or guide lines (relative to the view direction). I hacked it with a control point very close, but that gives it too much leverage.
It took me quite a while to get even this poor match. What's the technique? I'm more used to playing with control points as in Sketcher.
Attachments
matchingcurves.FCStd
(22.05 KiB) Downloaded 22 times
User avatar
hammax
Veteran
Posts: 1985
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: Curves workbench

Post by hammax »

... I agree to Ed's findings => the CurvesWB 3D_spline_tool is complex and hard to remember after some time of not using.
MixedCurve is more "transparent", but has it's limits. (Using the knotless Sketcher BSpline with variable control point weights).

matchCurves.PNG
matchCurves.PNG (10.76 KiB) Viewed 1340 times
Attachments
matchingcurves_2.FCStd
FC.20
(22.7 KiB) Downloaded 20 times
User avatar
Chris_G
Veteran
Posts: 2579
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Curves workbench

Post by Chris_G »

@edwilliams16, the FreeHand BSpline is rather experimental, and suffers a couple of bugs :
- the "a" key to select everything is not working anymore
- we can't release a grab move above an existing object (I thing the pre-select highlighting is eating mouse button release signal)

This tool is far from perfect.
I wanted to experiment with the graphics library that looo added to pivy.
But it doesn't totally fit my needs, because it works purely on the coin nodes, while I also need to interact with shapes (for snapping).
So I tried to create another layer above it for that purpose, but I was not very happy with it.

The main idea behind this tool is when creating a curve network for Gordon surfaces : imagine you create a set of rail curves, then the FreeHand BSpline can be used to create the profiles, snapped on the rails, like in attached file.
Attachments
curve-network.FCStd
(17.43 KiB) Downloaded 25 times
edwilliams16
Veteran
Posts: 3106
Joined: Thu Sep 24, 2020 10:31 pm
Location: Hawaii
Contact:

Re: Curves workbench

Post by edwilliams16 »

Chris_G wrote: Fri Jul 01, 2022 8:46 am
The main idea behind this tool is when creating a curve network for Gordon surfaces : imagine you create a set of rail curves, then the FreeHand BSpline can be used to create the profiles, snapped on the rails, like in attached file.
I tried to create a Gordon Surface from your curve network above, but I had no success.

Code: Select all

12:50:51  Traceback (most recent call last):
  File "/Users/ed/Library/Application Support/FreeCAD/Mod/Curves/./freecad/Curves/gordonFP.py", line 137, in execute
    s = gordon_surf.surface()
  File "/Users/ed/Library/Application Support/FreeCAD/Mod/Curves/./freecad/Curves/gordon.py", line 356, in surface
    self.perform()
  File "/Users/ed/Library/Application Support/FreeCAD/Mod/Curves/./freecad/Curves/gordon.py", line 317, in perform
    self.make_curves_compatible()
  File "/Users/ed/Library/Application Support/FreeCAD/Mod/Curves/./freecad/Curves/gordon.py", line 504, in make_curves_compatible
    progressbar = FreeCAD.Base.ProgressIndicator()
<class 'TypeError'>: cannot create 'N4Base19ProgressIndicatorPyE' instances
12:50:51  Recompute failed! Please check report view.
was the error I got.

Code: Select all

OS: macOS High Sierra (10.13)
Word size of FreeCAD: 64-bit
Version: 0.20.29177 (Git)
Build type: Release
Branch: (HEAD detached at 0.20)
Hash: 68e337670e227889217652ddac593c93b5e8dc94
Python 3.9.13, Qt 5.12.9, Coin 4.0.0, Vtk 9.1.0, OCC 7.5.3
Locale: C/Default (C)
Installed mods: 
  * Curves 0.4.4
  * DynamicData 2.46.0
  * fasteners 0.3.44
  * fcgear 1.0.0
  * GDML 1.8.0
  * Help 1.0.2
  * lattice2 1.0.0
  * MeshRemodel 1.8919.0
  * toSketch

User avatar
hammax
Veteran
Posts: 1985
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: Curves workbench

Post by hammax »

... for Gordon match of not so good fitting (end)points => increase the tolerance value.
But @Chris: how about introducing some kind of parametric "Snapping_operation" to points or even wires into creation of 3D-BSpline?
That would be a great helper.

matchCurves_2.PNG
matchCurves_2.PNG (61.06 KiB) Viewed 1196 times
Attachments
curve-network_2.FCStd
FC.20
(70.76 KiB) Downloaded 22 times
Post Reply