Assembly 4 workbench

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Joe_Hildreth
Posts: 2
Joined: Thu Sep 08, 2022 5:35 pm

Re: Assembly 4 workbench

Post by Joe_Hildreth »

Thank you Zolko.

That resolved the issue. Thank you very much for your help.

Regards,
Joe
leoheck
Veteran
Posts: 1222
Joined: Tue Mar 13, 2018 5:56 pm
Location: Coffee shop

Re: Assembly 4 workbench

Post by leoheck »

Hi, I have this kind of situation, where I have a Body, that is being used in 2 other bodies that were added to their own Parts, see the attached file.

Then I am seeing messages like this

Code: Select all

17:59:30  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:30  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:30  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:30  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
17:59:35  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:35  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:35  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:35  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
17:59:40  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:40  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:40  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:40  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
17:59:45  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:45  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:45  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:45  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
17:59:48  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:48  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:48  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:48  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
17:59:51  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
17:59:51  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
17:59:51  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
17:59:51  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
18:00:19  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
18:00:19  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
18:00:19  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
18:00:19  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
18:00:27  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
18:00:27  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
18:00:27  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
18:00:27  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
18:00:31  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
18:00:31  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
18:00:31  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
18:00:31  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
18:00:33  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
18:00:33  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
18:00:33  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
18:00:33  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
18:00:42  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body001'. Instead, the linked object(s) reside within 'N/A'.
18:00:42  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket' go out of the allowed scope 'LCS_Bottom'. Instead, the linked object(s) reside within 'Model Top Model Top'.
18:00:42  PartDesign::Body: Link(s) to object(s) 'Body' go out of the allowed scope 'Body002'. Instead, the linked object(s) reside within 'N/A'.
18:00:42  PartDesign::CoordinateSystem: Link(s) to object(s) 'Pocket001' go out of the allowed scope 'LCS_Top'. Instead, the linked object(s) reside within 'Model Bottom Model Bottom'.
Am I doing something wrong? Is there a better way of reusing an object? How do I avoid those messages?
Attachments
object_out_of_the_allowed_scope.FCStd
(99.3 KiB) Downloaded 29 times
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

leoheck wrote: Thu Sep 15, 2022 9:52 pm Am I doing something wrong ? Is there a better way of reusing an object? How do I avoid those messages?
1) there is no need to put the 2 bodies inside parts, you can link (insert) the Bodies directly into the assembly

2) if you do that most of the warnings will disappear
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: Assembly 4 workbench

Post by ppemawm »

Zolko wrote: Fri Sep 16, 2022 7:30 am...
Two questions about Variant Parts:

1. Is it not possible to assemble a body or part link or one variant part to another variant part? (They do not show up in the Edit Parent drop down list.)

2. If I make a change (e.g. add or delete a feature, hole axis, LCS, etc.) in a variant part file it does not update in the assembly Model. Is this correct or am I using it incorrectly?

BTW thanks again for such a valuable feature.

Code: Select all

OS: Windows 10 Version 2009
Word size of FreeCAD: 64-bit
Version: 0.21.30345 (Git)
Build type: Release
Branch: master
Hash: f42a47aa0fd8c4f34ef63c185d9f29b9b6e84737
Python 3.10.6, Qt 5.15.4, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.3
Locale: English/United States (en_US)
Installed mods: 
  * Assembly4 0.12.4
  * fasteners 0.4.6
  * fcgear 1.0.0
"It is a poor workman who blames his tools..." ;)
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

ppemawm wrote: Sat Sep 17, 2022 5:31 pm 1. Is it not possible to assemble a body or part link or one variant part to another variant part?
correct. This is because the LinkedObject to a vraniantLink is a copy of the original object into a hidden temporary document that is created on-the-fly. Thus, it is different at each reload, and therefore it's very difficult to know what name the newly created document will be. Therefore, for stability reasons, and also because I didn't know how good/useful this is going to be, I preferred to not allow to attach anything to a variantLink. It's trickier than for a plain link.

2. If I make a change (e.g. add or delete a feature, hole axis, LCS, etc.) in a variant part file it does not update in the assembly Model. Is this correct or am I using it incorrectly?
For the previous reason, the modifications will show up the next time you re-load the variantLink (i.e. the assembly). I should make a function that does this without needing to close-and-reopen the assembly. Let me think about this.
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: Assembly 4 workbench

Post by ppemawm »

Zolko wrote: Sat Sep 17, 2022 8:20 pm Therefore, for stability reasons, and also because I didn't know how good/useful this is going to be
OK thanks. I can adjust the assembly sequence and knowing this decide when a variant link is most useful.
Zolko wrote: Sat Sep 17, 2022 8:20 pm I should make a function that does this without needing to close-and-reopen the assembly.
For small sub-assembly it's not so important but for the large top assembly it would be most helpful since load times can be significant for save and re-load.

Another question. Maybe you did not see this post. Have you seen this anomaly in other Assembly4 files?
Early assemblies I have made without a workbench do not behave this way. I do not know about the other assembly workbenches.
https://forum.freecadweb.org/viewtopic.php?f=3&t=71948
Again, not such a big deal since zoom is quick and easy but still annoying.
"It is a poor workman who blames his tools..." ;)
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

ppemawm wrote: Sat Sep 17, 2022 11:26 pm Maybe you did not see this post. Have you seen this anomaly in other Assembly4 files?
https://forum.freecadweb.org/viewtopic.php?f=3&t=71948
yes I've seen your post but I've never paid attention to this default zoom. I'll try to take notice the next times
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
freman
Veteran
Posts: 2198
Joined: Tue Nov 27, 2018 10:30 pm

Re: Assembly 4 workbench

Post by freman »

Hi. Is this a general discussion thread for all things asm4 ? I hope this is the right place.

Just getting to grips with asm4. I have a part constructed on a circle but the circle is only in the sketch and lied below the part itself.

I tried to add an LCS to make an assy out of the part but it seems to insist on fixing the LCS somewhere on they body of the part.

Code: Select all

16:16:22  PositionBySupport: AttachEngine3D: link points to something that is not App::GeoFeature
I would be more useful to have access to the sketch or at least to be able to align LCS with the parts own origin001.

I can probably work around this by placing the origin somewhere and hardcoding an offset but it would be more natural to align with existing origin/axes. Is this possible ?

Thanks
Attachments
brg-blk-assy4.FCStd
(16.26 KiB) Downloaded 19 times
brg-blk.png
brg-blk.png (5.28 KiB) Viewed 2052 times
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: Assembly 4 workbench

Post by ppemawm »

Please add your version information. It makes a difference.
freman wrote: Sun Sep 18, 2022 1:13 pm I would be more useful to have access to the sketch or at least to be able to align LCS with the parts own origin001.
Make the Body Origin001 planes visible. Open the Attachment panel and select one of the planes then an ObjectsXYZ mode or one which matches the orientation you want.

You can only attach to objects in the sketch that are visible, i.e. no construction lines. If you want to attach to a sketch you have to hide the feature.

If you start a new Body with the one from the Assembly4 workbench toolbar it will include a default LCS located and aligned at the body origin. Double click the Body and it will take you to the PartDesign workbench. Now, when you add the first sketch it will be automatically aligned with this LCS. You will not have to add any LCS's unless there are additional points of assembly on that body. I prefer to attach to sketches rather than body features for stability purposes.
"It is a poor workman who blames his tools..." ;)
User avatar
Vincent B
Veteran
Posts: 4713
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: Assembly 4 workbench

Post by Vincent B »

@Zolko
As the Plot wb allow to build a curve to see kinematic movement, could you make a feature to carry out a list of coordinates of points?
https://github.com/FreeCAD/freecad.plot
Post Reply