Freecad Idomatic Workflows

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
justacec
Posts: 14
Joined: Fri Jul 21, 2017 10:55 am

Freecad Idomatic Workflows

Postby justacec » Mon Sep 23, 2019 1:39 pm

Ok, lets get this out there, I am a noob. I have been playing with Freecad off and on for several years but have never really done anything worth mentioning. Well, that is about to change. I have a project that I planned to use Freecad with and I need just a few things clarified about what workflow I should use.

Specifically I am making an Equilateral Camera Mount to do star field images. The following are my overall requirements for the workflow:
  • Parts need to be able to depend on each other
  • I need to be able to make an overall assembly
  • I need to be able to make adjustments to the parts based on the assembly (Maybe)
  • The final parts need to be exported as a mesh for 3D printing
Up to now, I would generally have a single file with a bunch of parts and bodies and then just manually place them around each other. This does not seem to be compatible with the various assembly options out there. Those solutions tend to say that one must place each part into its own separate file and then add that to the separate assembly file. While this sounds interesting, and great for tracking changes, I am not sure how to define a sketch for one part based on a different sketch from a different part which is in a different file.

Another question is, which assembly framework should I be using. I think this is a real problem for Freecad right now. It seems that creating an assembly is a pretty core thing to do for this type of program and every solution that I see out there (assembly2, a2+, assembly 3, and then even assembly 4) are considered a different add-on package and are not part of Freecad. There seem to be just too many options and it is not clear which is the correct one that new users should go with. I do know that assembly 3 is based on App::Link objects but, after reading up on these, I am still confused about what they are, how to create one, and why they are needed.

I am using Mac OSX and therefore am using the most recent binary build of the 0.19_pre branch. This was suggested by Freecad's GitHub release page for version 18.3.

So, in review I think that I have three pointed questions in conjunction with the overall workflow question:
  • Should I split my project out such that there is one part per file (If yes, how do I handle making a dependency on a sketch based on a different part from a different file).
  • Which assembly framework should I be using (something that is going to last)
  • Do people typically just generate 1 file with everything in it and then at the last minute split the parts out into separate files for use in an assembly file?
Thanks for all the effort on the application and any feedback on these questions.
chrisb
Posts: 19505
Joined: Tue Mar 17, 2015 9:14 am

Re: Freecad Idomatic Workflows

Postby chrisb » Mon Sep 23, 2019 5:54 pm

From what you describe I see no real benefit in putting things in different files, because you are not reusing the same part in different projects.
Leaving all in one file, organized in Part containers you can use ShapeBinders for referencing things and you can place the parts of your model right away in the right position. Examples of this can be seen in the great models of ppemawm, in the showcases forum.

If you want to split things into different files and you are willing to do some research, then You should try the new link feature.

If you want to use something already in use, you can use a2+. From what I read here in the forum this is the most widely spread assembly addon.
justacec
Posts: 14
Joined: Fri Jul 21, 2017 10:55 am

Re: Freecad Idomatic Workflows

Postby justacec » Mon Sep 23, 2019 6:21 pm

I see. I find it difficult to place items relative to each other in Freecad which is why I was excited about using some sort of helper such as an assembly workbench.

Is there an easy way to align objects in Freecad to overcome this and make it to where if I rotated an object the other object rotated relative with it.

Finally, If I was to split it out into different files, can you hint to me how to make import in a linked way (modifications in the linked object propagate to the child object) Is this part of App::Link?
vocx
Posts: 1850
Joined: Thu Oct 18, 2018 9:18 pm

Re: Freecad Idomatic Workflows

Postby vocx » Tue Sep 24, 2019 3:22 am

justacec wrote:
Mon Sep 23, 2019 1:39 pm
...
Those solutions tend to say that one must place each part into its own separate file and then add that to the separate assembly file.
This is correct for A2plus Workbench, but it isn't correct for Assembly3 and Assembly4.
While this sounds interesting, and great for tracking changes, I am not sure how to define a sketch for one part based on a different sketch from a different part which is in a different file.
It really depends on what type of references you need. Can you not copy a master sketch into every of your files?
Another question is, which assembly framework should I be using. I think this is a real problem for Freecad right now. It seems that creating an assembly is a pretty core thing to do for this type of program and every solution that I see out there (assembly2, a2+, assembly 3, and then even assembly 4) are considered a different add-on package and are not part of Freecad.
The reason is that assembling is not easy! If it were easy, it would have been done already, don't you think?

Assembling is tricky because you need a way to track different objects, their positions in space in their own coordinate systems, and in different coordinate systems. Eventually they should be in some sort of top level assembly coordinate system, right? Then you need constraints to define how to "tie" the parts to the others. These relationships aren't easy to solve. Why do you think a professional CAD package like Catia or SolidEdge costs thousands of dollars per license? They have hundreds of programmers to work on these things. FreeCAD has... a few.
There seem to be just too many options and it is not clear which is the correct one that new users should go with.
Assembly (one) was supposed to be the official assembly workbench, but it was never developed; the sources are in the FreeCAD source tree but that's it. Assembly2 was the first usable assembly workbench. It was used for a long time (5 years or so), but its creator decided to not continue working on it. Immediately after, A2plus Workbench came to life as a fork of Assembly2, to keep the work done by the previous workbench. Nevertheless, A2plus and Assembly2 are not compatible, the former is maintained, while the latter is obsolete.

A2plus is the most mature and tested assembly solution, so it's the recommended workbench for starters.

Assembly3 is inspired by Assembly2 but uses the new "App::Link" object developed by its author. For two years, Assembly3 was a testing ground for new features that its author wants to merge into the main FreeCAD code. Part of those changes have been merged (App::Link and some things in the tree view, and selection code), but there are other things that could still be incorporated.

Assembly3 has many nice features, but currently you need to use a special version of FreeCAD to use it. It is experimental, so if you want to test it, you are on your own. Power users are encouraged it to try it, but new CAD users better stay away.

Assembly4 is based on the work of Assembly3. It's a new concept that doesn't use a constraint solver to define relationships between parts, but still uses an Expressions system to do calculations on the positions of the objects.

See the sticky thread: Current Assembly Status
I do know that assembly 3 is based on App::Link objects but, after reading up on these, I am still confused about what they are, how to create one, and why they are needed.
It's hard to explain what a Link is. It's an internal object. Its usefulness will become apparent a bit later, once Assembly3 becomes an installable workbench, through the Addon Manager, like other External workbenches. Once this happens, the wider userbase will be able to test the power of Assembly3, and it will all make sense (tutorials and documentation will also be provided of course). Maybe then some features of Assembly3 are ported to A2plus, and the two workbenches combine to finally get the official Assembly workbench of FreeCAD. Or maybe not.

Assembly3 uses a solver that is GPL3 licensed, and unfortunately this means that it cannot be included in FreeCAD. Only LGPL 2 compatible code can be included by default in FreeCAD. So maybe and Assembly workbench will always be an external addon.
Which assembly framework should I be using (something that is going to last)
A2plus or Assembly3.

Are you pressured to meet a deadline? Or do you have plenty of time?

If you do have plenty of time, why don't you try creating the same assembly in both workbenches and see how it goes? Track your progress, make some notes, and then try to compare them. Write that up, and in the future you can publish your findings. It will be invaluable once Assembly3 is available to a wider audience.

Assembly4 is more like a proof of concept. So, although it works, most probably its parts can be incorporated into Assembly3 or A2plus.
* Should I split my project out such that there is one part per file (If yes, how do I handle making a dependency on a sketch based on a different part from a different file).
...
* Do people typically just generate 1 file with everything in it and then at the last minute split the parts out into separate files for use in an assembly file?
This depends entirely on the type of assembly that you want to create. What sort of references do you really need? Only flat distances? Can you not copy and paste the same master sketch in all of your files with parts?

You only need to split the parts into separate files if you plan on using A2plus. If you want to use Assembly3, or if you want to create everything in a single file, and arrange those manually without constrains, then you don't need to separate the pieces into different files.
vocx
Posts: 1850
Joined: Thu Oct 18, 2018 9:18 pm

Re: Freecad Idomatic Workflows

Postby vocx » Tue Sep 24, 2019 3:36 am

justacec wrote:
Mon Sep 23, 2019 6:21 pm
I see. I find it difficult to place items relative to each other in Freecad which is why I was excited about using some sort of helper such as an assembly workbench.

Is there an easy way to align objects in Freecad to overcome this and make it to where if I rotated an object the other object rotated relative with it.
See the external workbenches page. Workbenches like Manipulator, WorkFeature, lattice2, part-o-magic, etc. are pseudo-assembly workbenches. They don't constrain your bodies to each other, but they provide some auxiliary tools, axes, alignment tools, measuring tools, etc. to position your bodies in the right place.

A constrain solver will have to do some mathematical calculations to keep your bodies tied in the way specified. The pseudo-assembly workbenches will just move your pieces together, but you can always move them to other positions if you want.
Finally, If I was to split it out into different files, can you hint to me how to make import in a linked way (modifications in the linked object propagate to the child object) Is this part of App::Link?
Yes, that's basically what Link does.

In 0.19, have two files open at the same time. Then pick one object, and move it to the other file; it will create a Link. There is some documentation about it, however, its true power will reveal itself once you try Assembly3. A simple path description of Link, 019, Link stage, Asm3, merge?
mfasano
Posts: 51
Joined: Wed Apr 11, 2018 12:31 pm

Re: Freecad Idomatic Workflows

Postby mfasano » Tue Sep 24, 2019 2:06 pm

justacec wrote:
Mon Sep 23, 2019 1:39 pm

Another question is, which assembly framework should I be using. I think this is a real problem for Freecad right now. It seems that creating an assembly is a pretty core thing to do for this type of program and every solution that I see out there (assembly2, a2+, assembly 3, and then even assembly 4) are considered a different add-on package and are not part of Freecad. There seem to be just too many options and it is not clear which is the correct one that new users should go with.

I see a rivalry brewing between A2+ and assembly3 to match that of Betamax vs. VHS. I heard a theory that the porn industry's embrace of VHS is what tipped the scale. I don't see a class of FreeCAD users like the porn industry to make the difference. :)
triplus
Posts: 8786
Joined: Mon Dec 12, 2011 4:45 pm

Re: Freecad Idomatic Workflows

Postby triplus » Thu Oct 03, 2019 9:10 pm

justacec wrote:
Mon Sep 23, 2019 1:39 pm
Another question is, which assembly framework should I be using.
Current recommendation is A2plus for new projects. FreeCAD 0.16 and Assembly 2 should be used for existing Assembly 2 projects.
mfasano wrote:
Tue Sep 24, 2019 2:06 pm
I see a rivalry brewing between A2+ and assembly3 to match that of Betamax vs. VHS.
This likely isn't the best comparison, comparing Betamax vs. VHS. It's more like VHS (1976) -> DVD (1996) -> Blu-ray (2006) -> ... Point being, there likely wouldn't have been Blu-ray if DVD wouldn't happen and likely there would be no DVD if VHS wouldn't have happened. In addition in 1976 it likely made little sense, to wait for Blu-ray. In 2050 there will likely be a few other options too. :idea: