Assembly 4 workbench

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
UFODivebomb
Posts: 3
Joined: Sat May 09, 2020 7:50 pm

Re: Assembly 4 workbench

Post by UFODivebomb »

ppemawm wrote: Mon Dec 30, 2019 3:47 pm I have been using the Part > Mirror of the Body which is quite convenient, but it is a bit awkward. It kicks the mirror out of the Part which must then be returned via drag and drop resulting in a out-of-scope warning. You can then attach the Part with its mirror to the assembly LCS, but I am not so sure that is how Zolko would recommend it to be done.
I've been attempting to attach a mirrored part. Should the above procedure of using Part -> Mirror still work? In my case: After I drag-and-drop the part into the Assembly "Parts" folder I cannot insert a link that references that part. I also am unable to add a LCS to the part mirror.

Question: what is the recommended way to add a mirror part to an assembly?

If there is no recommended way yet then no worries :)
User avatar
MSOlsen65
Posts: 226
Joined: Wed Feb 19, 2020 8:30 pm
Location: Winnipeg, MB Canada
Contact:

Re: Assembly 4 workbench

Post by MSOlsen65 »

UFODivebomb wrote: Wed May 13, 2020 2:35 am I've been attempting to attach a mirrored part. Should the above procedure of using Part -> Mirror still work? In my case: After I drag-and-drop the part into the Assembly "Parts" folder I cannot insert a link that references that part. I also am unable to add a LCS to the part mirror.

Question: what is the recommended way to add a mirror part to an assembly?

If there is no recommended way yet then no worries :)
I presume you are using Assembly 4 which works by using Link. Link will mirror a part by setting the scale property of the link to "-1". Thus you should not need to use Part -> Mirror if you are using Link.

Personally, I find this feature of Link preferable to Part -> Mirror as it allows me to see both objects as related equals without the overhead of Part -> Mirror.
Sincerely,


Michael S. Olsen
Electrical Engineer & Joiner
RatonLaveur
Posts: 991
Joined: Wed Mar 27, 2019 10:45 am

Re: Assembly 4 workbench

Post by RatonLaveur »

MSOlsen65 wrote: Wed May 13, 2020 3:14 pm Thus you should not need to use Part -> Mirror if you are using Link
Given the functionality of links, is there now a good reason to not use them as mirror or multi-transform or polar arrays?
Or perhaps these functions operate on features of a part which link does not?
This question might actually have it's place in Part and PartDesign development.
User avatar
MSOlsen65
Posts: 226
Joined: Wed Feb 19, 2020 8:30 pm
Location: Winnipeg, MB Canada
Contact:

Re: Assembly 4 workbench

Post by MSOlsen65 »

RatonLaveur wrote: Wed May 13, 2020 4:05 pm Given the functionality of links, is there now a good reason to not use them as mirror or multi-transform or polar arrays?
Or perhaps these functions operate on features of a part which link does not?
This question might actually have it's place in Part and PartDesign development.
That is a more in depth question that requires careful review by the coding developers. There could be any number of issues of which I am not aware. :roll: For now, I use Link as a more efficient form of copy with the advantages that it can create mirrors and other composite effects, Like working effectively between documents.

The YouTube videos provided by the author are definitely worth studying in detail as Link is an extremely powerful tool. As such, It is possible for Link to create problems just as easily as it solves them. So learning to use it wisely is important, and the videos do a good job of providing the background needed. I have watched them several times and am still finding information I previously overlooked. :ugeek:

The main point here is that, since Assembly 4 uses Link natively to do its job, it only makes sense to use the innate property of Link to create mirrors. Thus eliminating the headaches that arise from using Part -> Mirror in this setting. :D
Sincerely,


Michael S. Olsen
Electrical Engineer & Joiner
UFODivebomb
Posts: 3
Joined: Sat May 09, 2020 7:50 pm

Re: Assembly 4 workbench

Post by UFODivebomb »

MSOlsen65 wrote: Wed May 13, 2020 3:14 pm
UFODivebomb wrote: Wed May 13, 2020 2:35 am I've been attempting to attach a mirrored part. Should the above procedure of using Part -> Mirror still work? In my case: After I drag-and-drop the part into the Assembly "Parts" folder I cannot insert a link that references that part. I also am unable to add a LCS to the part mirror.

Question: what is the recommended way to add a mirror part to an assembly?

If there is no recommended way yet then no worries :)
I presume you are using Assembly 4 which works by using Link. Link will mirror a part by setting the scale property of the link to "-1". Thus you should not need to use Part -> Mirror if you are using Link.

Personally, I find this feature of Link preferable to Part -> Mirror as it allows me to see both objects as related equals without the overhead of Part -> Mirror.
Yes: I am using Assembly 4.

I tried the Scale set to -1. Didn't work how I expected. First I expected there to be a scale vector not single scalar. So I'm guessing this mirrors around the origin. Seems odd. The blocking issue is that the LCS of the part being attached is not at the attachment point.

Scale appears applied to the geometry post attachment.

See here: https://photos.app.goo.gl/oFzZgMZnv5bvnF2i9

The selected part is the mirror of the left part. The goal is for it to be a mirror using the YZ plane.
circuit
Posts: 8
Joined: Sun May 03, 2020 6:53 am

Re: Assembly 4 workbench

Post by circuit »

Hi all. I'm really struggling to make sense of Assembly 4. I'm totally stuck.

Here's my demo setup. I've created two rectangle solids "a" and "b", stored in their own FreeCAD documents. I plan to animate the rotation of both solids, powered by variables. I convert each to an assembly model and put the body under the "Model" in the tree. I creat a new LCS at the same level as "Body".

Then I create an assembly "asm" and import each. The origin of "a" is placed coincident with the global origin, and origin of "b" coincident with the new LCS of "a". I then create two new assembly variables, "var1" and "var2", to power the angle constraint of "a" and "b". I connect the angle constrain using asm#Variables.var1 and asm#Variables.var2.

All good so far:

Image

Here's where the problems start.

Issue #1. When I animate one of the variables I get a "Links go out of the allowed scope" message for each step (but it STILL animates).

Image

I think this is because the LCS is at the same level as the Body instead of underneath. But if I put it underneath I don't have the option of using it when importing the model into the assembly:

Image

Issue #2. When saving I get a "cyclic dependency" error. I'm guessing this is because I'm referring to the assembly's variables from within the imported parts:

Image

I know this isn't ideal, but I'm really not sure how to define variable from imported parts. I can't reference the parts variables as they seem to be a copy of the assembly's. Maybe I can use global variables?

Image

Issue #3. Error "The graph must be a DAG" on saving... maybe caused by a combination of the issues above. This will cause the assemble to fail to load. The model will be bricked upon reload.

Image

I really have no idea what I'm doing wrong and whether Assembly 4 can work with my workflow of creating and rigging each model independently, then importing them into an assembly and animating as a whole.

I'd appreciate any help.
User avatar
MSOlsen65
Posts: 226
Joined: Wed Feb 19, 2020 8:30 pm
Location: Winnipeg, MB Canada
Contact:

Re: Assembly 4 workbench

Post by MSOlsen65 »

UFODivebomb wrote: Wed May 13, 2020 8:36 pm So I'm guessing this mirrors around the origin. Seems odd.
I understand. I felt the same when I first used Link. Then I realized that scale was exactly that, a pure scalar. This makes sense because only a pure scalar does not change the actual form from the original. Yes it is relatively larger or smaller, but the ratios of all dimensions remain the same. If they changed, then the link would no longer be a copy of the original.

Since we must use a pure scalar, the only option for mirroring is to mirror across the origin by scaling to -1.
The blocking issue is that the LCS of the part being attached is not at the attachment point.

Scale appears applied to the geometry post attachment.
Not certain I understand what you are saying. An LCS should generally be assigned to a vertex or other singular point (e.g. concentrically to a cirle so that one axis is normal to the circle's center). This eliminates ambiguity as to the origin of the LCS. Once assigned, the LCS does not move and is not affected by any scaling factor.

That said, since the mirror effect is through the object's origin, the best choice of LCS assignment is not always as obvious. It may require rethinking the design of the original object.
The selected part is the mirror of the left part. The goal is for it to be a mirror using the YZ plane.
Remember that once you assign two LCS to collocate their respective origins, you can still adjust how the various axi align with each other (I.e. you can rotate in 90 degree increments around any or all of the axi). Again, the best choice of LCS assingment is not always as obvious as one might at first presume.

Also, initial object design may have unexpected affects to LCS assignment. This is especially true for asymmetric objects mirrored by scaling. In such cases, it can often be simpler to assgin the LCS after creating the mirrored link. I personally have found such a bit more intuitive.

All this said, there are many far more experienced than I. Hopefully one of them will add their insight to this.
Sincerely,


Michael S. Olsen
Electrical Engineer & Joiner
User avatar
adrianinsaval
Veteran
Posts: 5548
Joined: Thu Apr 05, 2018 5:15 pm

Re: Assembly 4 workbench

Post by adrianinsaval »

Well, actually the scale is a vector, its just hidden, right click in property view and check the view all option to see the vector. The scaling visually moves the LCS but internally it's placement is not modified so the rest of FreeCAD is not aware of the movement, as has been said, the current workaround would be to add the LCS after applying the scale.
UFODivebomb
Posts: 3
Joined: Sat May 09, 2020 7:50 pm

Re: Assembly 4 workbench

Post by UFODivebomb »

adrianinsaval wrote: Thu May 14, 2020 1:11 am Well, actually the scale is a vector, its just hidden, right click in property view and check the view all option to see the vector. The scaling visually moves the LCS but internally it's placement is not modified so the rest of FreeCAD is not aware of the movement, as has been said, the current workaround would be to add the LCS after applying the scale.
Ahhh. Interesting! That did work to mirror on the YZ axis. Thanks!

I ended up getting the desired effect by:

1. creating a Part in the model
2. creating a link to the left keyboard side
3. setting the scale of this link to (-1, 1,1)
3. placing this link within the new Part
4. adding a LCS to the new part
5. attaching this part to the assembly
6. setting the scale of the attached part to (-1, -1, 1)

Not really sure why the second scale was required. But, uh, worked well enough.

https://www.instagram.com/p/CAJsPzYFVGh/
Haldar
Posts: 11
Joined: Thu May 14, 2020 9:41 am

Re: Assembly 4 workbench

Post by Haldar »

Hello, I've been working with this WB a little bit i've done cool animations like this:
ImageImage

I really like it, but i would like to know if it's possible to make a camshaft animation like this.
Image

For the moment, at a workaround i am using an elipse, but i don't feel like it's perfect.
Thank you for your help.
Post Reply