Assembly4: An Alternative to a Mastersketch for 'Solving' an Assembly--Update #6

This example is show how an assembly with many interdependently moving parts can be assembled and animated without using a mastersketch to ‘solve’ the assembly. I was inspired by this clever animation by wildCAD: https://devtalk.freecad.org/t/toggle-clamp-assy-animated/72105/1

Assembly4 is based on an ingenious concept of a universal joint connector or link LCS that can be tailored with variables and expressions for any desired degrees of freedom. This is in lieu of a myriad of preprogrammed joints that are used by most commercial CAD applications. Each Assembly4 body and sub-assembly part include a default LCS (locked) joint connector that can be used for 90% (my guess) of use cases. For those cases which require relative motion, the LCS joint connector and attachment modes can be “programmed” with variables and expressions for almost any type of movement requirement. This is an incredibly powerful feature for an assembly workbench IMO.

Assembly4 does not yet have a ‘solver’ as you will find in other assembly workbenches for assemblies that require some sort of relative movement among the parts. Instead, you can use a mastersketch as in wildCAD’s example or as described in the Assembly4 workbench instructions. As an alternative work process, the following image captions describe how variables and expressions can be used to ‘solve’ the assembly.

tclamp_1.jpg
tclamp_2.jpg
s
toggle_clamp–handle_RZ2.gif
toggle_clamp-latch2.gif
.
For those interested in the details I will describe my assembly work process in additional posts as time allows. [EDIT] The Assembly file is attached to the last post of this series.
```
OS: Windows 11 build 22621
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.34959 (Git)
Build type: Release
Branch: main
Hash: 640018bfa7878a79e1b3c220ddd488d66464dc70
Python 3.10.13, Qt 5.15.8, Coin 4.0.0, Vtk 9.2.5, OCC 7.6.3
Locale: English/United States (en_US)
Installed mods:

  • Assembly4 0.12.7
  • DynamicData 2.54.0
  • fasteners 0.4.15
  • freecad.gears 1.1.0
  • QuickMeasure 2022.10.28
  • Render 2022.2.0

A few more of the nitty-gritty details:

tclamp_4.jpg
toggle_clamp–hook_position2.gif
tclamp_5.jpg
toggle_clamp–handle_RZ1.gif
tclamp_9.jpg

The next post will cover the latch and fasteners assembly.

do you have a particular reason to use such an old version ? Did you try newer ones ? (they should all be 100% forward and backward compatible)

I actually have V0.50.5 installed according to the Addon Manager. The versions shown in the Help About are not the same as shown by the Manager for some reason.

Thanks a lot for sharing your very detailed explanation of this complex setting! I‘m looking forward to study it in even more detail!

However, so far from looking at animation tclamp_2.jpg I would assume that the yellow point in the hook needs to be moved downwards the ramp of the hook especially when the mechanism is going to be opened. Also during closing the bracket‘s movement should start going up the ramp of the hook until it would start to move the hook.

Hopefully you got what I mean :confused:

Yes, I suppose you are correct if you assume gravity overcomes the friction in the pivot pin. I chose the latter to simplify it for this purpose. In any event, you could account for it by adding a dependent variable and a trig expression for the reference point position based on the ramp angle. It would be a function of the independent handle angle as well. If you don’t like math a sketch would be easier.

Last bit of details regarding the latch assembly and animation:

tclamp_7.jpg
toggle_clamp-latch1.gif
tclamp_8.jpg
toggle_clamp-latch2 (2).gif
Latch_Style_Toggle_Clamp2.FCStd
If you wanted to make a GIF of all the variables that control the toggle clamp in sequence you could use an event scheduler and conditional expressions as shown in this example: https://devtalk.freecad.org/t/use-of-an-assembly4-time-variable-for-mechanism-design-and-assembly-final-comments-re-assembly-constraints/71819/7

Hopefully, with this example and others that I have posted, you are getting the idea of how universal and flexible the Assembly4 LCS joint connector is. Of course, you must be comfortable with a bit of math, variables, expressions, and attachment modes. But, hey, all of FreeCAD is based on these principles so you have to learn them anyway to get the most out of parametric solid modelling and assembly.

You will find that once you learn the expressions for the basic joint constraints such as locked, revolute, cylindrical, slider, ball joint, screw, spring, cam…etc. you may find Assembly4 quite useful especially for the design and assembly of the more complex kinematic assemblies…even without a solver!

We can take this concept a bit further of using the LCS attachment mode as a means of keeping assembled bodies in alignment. However, in this example, which is a compact toggle clamp, we have a 3-bar linkage that cannot be assembled properly without a master sketch or an empirical expression. The captions in the following images describe the empirical approach:

compact_clamp1.jpg
compact_clamp2.jpg
compact_clamp3.jpg
compact_clamp3.gif
Compact_Hold-Down_Toggle_Clamp2.FCStd

Two new enhancement tools I discovered during this exercise are shown in the following posts:

The interference checks are particularly useful for moving parts although it takes a minute or so for each position.
```
OS: Windows 11 build 22621
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.34959 (Git)
Build type: Release
Branch: main
Hash: 640018bfa7878a79e1b3c220ddd488d66464dc70
Python 3.10.13, Qt 5.15.8, Coin 4.0.0, Vtk 9.2.5, OCC 7.6.3
Locale: English/United States (en_US)
Installed mods:

  • Assembly4 0.50.6
  • DynamicData 2.54.0
  • fasteners 0.4.15
  • freecad.gears 1.1.0
  • QuickMeasure 2022.10.28
  • Render 2022.2.0

Thanks! This was a superb tutorial assembly and a fine example of some of the more complicated features of FreeCAD (i.e. expressions and attachment modes), and it also had some very interesting details and good practical tips for assembling in FreeCAD. Very nice! :smiley:


aapo Thank you for your kind comments.

Here is another example I found which better demonstrates the flexibility and versatility of the empirical approach to Assembly4. I am not so sure that this assembly can be solved with a skeleton sketch or by any of the other assembly workbenches.

grab1.jpg
grab2.jpg
grab3.jpg
grab_latch2.gif
Grab_Latch2.FCStd

Here is another example using the empirical method which was not so intuitive to me at first until I figured out how the hinge works. It is a common hidden hinge used in kitchen cabinets.

hinge1.jpg
hinge2.jpg
hinge3.jpg
cabiner_hinge.gif

If you want to use the timer sliders for the sketch and the adjustable spring housing in the attached file then you need to install the utility from mnesarco: https://devtalk.freecad.org/t/assembly-4-workbench/30201/1288 I am finding it to be a most useful addition to Assembly4 during assembly design.

This is a tribute to mnesarco for his essential assembly workbench add-on. (See also https://devtalk.freecad.org/t/assembly-4-workbench/30201/1288). Now, if we could just get it into the Add-On Manager and/or integrated with Assembly4…

It is also another good example of using the Assembly4 LCS connector attachment modes to solve an articulating assembly rather than a skeleton sketch. I’ve included some brief comments in the image captions about the assembly process of which you should be quite familiar by this time if you have been following my thread.

arm6.jpg
arm3.jpg
arm4.jpg
arm5.jpg
Positioning_Arm.FCStd

OS: Windows 11 build 22621
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.35639 (Git)
Build type: Release
Branch: main
Hash: f315314569aee5334fd0e69a49aab33684a802ba
Python 3.10.13, Qt 5.15.8, Coin 4.0.2, Vtk 9.2.6, OCC 7.6.3
Locale: English/United States (en_US)
Installed mods:

  • Assembly4 0.50.6
  • fasteners 0.5.0
  • freecad.gears 1.2.0
  • QuickMeasure 2022.10.28

Thank you ppemawm. btw the mnesarco-utils is available in AddOnManager since the beginning.
Selection_497.png

Indeed it is. Thanks for reminding us. I have been looking for the wrong name. It is only listed under All.