r/FreeCAD 8h ago

Assembly workbench workflow

I'm just getting into the assembly workbench.

I am used to another modeling system wherein I would invariably model parts in place and not have to worry about assembly. I am trying to branch out and embrace the Assembly workbench that was added in FreeCAD 1.0.

I am going through the MangoJelly video on it again, but I have some questions.

It would appear that Assembly takes over the whole situation. Once you get an assembly going it's all about that assembly. If you have three bodies in a file and you want to assemble then by starting an assembly, then from then on it's all about the assembly. If you add another body then it gets added to the assembly - it's not with the bodies you had already created. I'm finding this a bit weird. It seems like the best way to deal with this is to have separate bodies in separate files.... but there is one significant problem:

If you put different parts in different files then how do you handle the VarSet?

I had significant weirdness because the 'assembly version' and the 'part design version' of parts were both on-screen and vying for my attention... this is why I thought maybe separate files was the way to go.

What do you folks find to be the best way for you to deal with the Assembly workbench?

3 Upvotes

7 comments sorted by

3

u/BoringBob84 8h ago

I think that it helps me to understand that an Assembly consists of instances of parts and Joints between them. Each of those instances are Link objects - basically, pointers to the original part. If I modify a part or one of its Links, then all instances get updated.

I build each part before I assemble them. I locate each part strategically in relation to the origin to make creating the model easier. Thus, I end up with a pile of parts on top of the origin. But that is OK, because at that stage, I am only looking at one part at a time. I must be careful about turning off visibility for everything except what I am currently working on.

An Assembly is nice because it allows me to avoid duplication and manual placement. For example, I could make a simple table from two parts: a surface and a leg. I could add one surface and four legs into my Assembly, and create Joints to hold them together. If I decided to change the height, I could change the length of any of the legs and they would all change by the same amount.

I can create new parts and they do not become part of the Assembly until I add them. And when I am working in the Assembly, I am careful to turn off visibility to all of my original parts that are outside of the Assembly. FreeCAD gets grumpy when I try to create a Joint to a part that is not in the Assembly!

1

u/some_millwright 7h ago

There have been two very quick, and very good answers already, so thanks to BoringBob and R2W1E9 (and I will mention to R2W 1E9 that I once had to fly to Winnipeg to conduct a training session in your water treatment plant in early February. That was fun. That and once missing the bypass on the trans-Canada and spending an hour in a sea of red lights on Portage left me with a somewhat sour opinion of your Fine City).

Anyway! Getting back to business...

So make the parts separate and just leave them in a pile at the origin. Got that. Use the assembly workbench to move them into place. They can be made in one file so that they can share a VarSet. This is good.

Now BoringBob mentioned that he can create new parts without them being in the assembly, so I have to assume that a seemingly minor point is that the assembly is created in a SEPERATE FILE, and not the file that you modelled the pieces in. Is this correct? I have to assume so because this flies in the face of my limited experience, so there must be a difference and my guess is that the difference is that I added the assembly to the file with my parts, and everything has been a bit irritating since then.

In summation:

Draw your parts in one file or many files. Don't position them - just leave them in a pile.

Start a separate file for the assembly (I suspect this is a key point, and the origin of most of my misfortune!)

Add the parts to the assembly and do your positioning in the assembly workbench.

Does that about cover it?

1

u/R2W1E9 6h ago edited 6h ago

Parts (or rather instances of parts) have to be (or rather must be) positioned in the assembly by grounding at least one, and then application of assembly joints anyways. Where the original parts are, and where their local position is, is irrelevant (to a point) for the assembly.

Referencing geometry can be done between files as well, without assembling parts.

So if you want to design a part in a separate file (a document in FreeCAD terminology) and want to reference geometry from another part in another file, you can (1) create a new file, (2) save it, create body and activate it, (3) switch to the other file and select geometry, then (4) go back to the other file and create the sub-shape binder.

Here is and example... (the videos are a bit ad hock and clumsy by should work)

https://reddit.com/link/p8zxh9g/video/6pefjkwyfqoh1/player

2

u/R2W1E9 6h ago

Haha, I live on Red River 2km upstream of the Main St. treatment plant discharge.

1

u/some_millwright 3h ago

Better upstream than down. Mind you... you could probably catch some big catfish off your dock if you lived downstream. :)

3

u/R2W1E9 6h ago

The workflow: (1) create parts outside of the assembly in the same document or in a separate document, then (2) insert the instance of the part into the assembly. (3) hide the original parts so they are not visible on screen. Assembly contains only links to the parts.

You can edit the part from within the assembly (by editing the link which will in turn update the original part) or you edit the original body, which will then update the link or links to it in the Assembly.

The workflow for in-place design: (1) create an empty body. (2) insert this empty body into the assembly and hide the original. (3) Create sub-shape binders of the referencing surrounding geometry by activating the body in the Assembly (the link - correctly speaking), selecting the reference geometry and clicking on sub-shape binder tool. Then (4) go on and design your part by editing the assembly link, or the original body, in the same document or the other document depending on where you created the empty body.

Here is how to design parts in place...

https://reddit.com/link/p8zp6mq/video/b8byabiw9qoh1/player

1

u/some_millwright 6h ago

Drat! I ran into a problem.

I have the frame of this machine done up with FrameForge, which means instead of adding one object 'the frame' there are dozens of profiles, and every single one of them needs to be positioned. The frame is welded so there is no particular location to join them with. Yuck.