Asm3 - assembly with ~200 fasteners.

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Svet
Posts: 50
Joined: Fri Feb 12, 2021 1:00 am
Location: USA, Texas

Asm3 - assembly with ~200 fasteners.

Post by Svet »

Hello everyone!
Need advise on my current project. I'm working on cnc design and now it almost ready. All I have to do is place all fasteners and create BOM.

At first glance it should be around 200 screws and bolts, so it will produce 200 more constraints and 400 more elements to deal with on top of existing... For me it looks like too much for one assembly. What do you think?

For now I see few option:
1) place fasteners inside sub-assemblies
2) place them all into main and hope for a best
3) create new assembly, add main assembly into it as a part and deal only with fasteners.

Although project almost done it doesn't mean that it will not be changed here ant there in a feature, so it's not good to freeze constraints. And also I have plans to animate main assembly using macros that will change offset values of PointDistance constraints, so assembly should remain solvable.
Untitled.png
Untitled.png (640.92 KiB) Viewed 2316 times
Project is here if someone would like to look: https://github.com/Shkolik/CNC4060

Thank you!
User avatar
jpg87
Posts: 809
Joined: Thu Mar 16, 2017 7:16 am
Location: Limoges - France
Contact:

Re: Asm3 - assembly with ~200 fasteners.

Post by jpg87 »

Svet wrote: Mon Jul 12, 2021 10:59 pm Need advise on my current project.
Hello,
for me there is no hesitation : an assembly element belongs to the same sub-assembly as the parts it links.

On the other hand, I learned from the start of my studies in mechanical construction (a long time ago!) that in the representation of a project, only one connecting element per type and per function was sufficient. Of course, with the ease provided by CAD software, and for the image, this rule is rarely respected.

Finally, with regard to the constraints, the Attachment constraint should be able to be used in most cases, which does not consume any additional resources from the point of view of the solver.
My website : http://help-freecad-jpg87.fr updated 2023/11/06
User avatar
bambuko
Veteran
Posts: 2165
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Asm3 - assembly with ~200 fasteners.

Post by bambuko »

Svet wrote: Mon Jul 12, 2021 10:59 pm ...Project is here if someone would like to look: https://github.com/Shkolik/CNC4060
jpg87 wrote:...
I have downloaded the files available on github and I am unable to look at your project because a lot of parts "do not exist" and there are problems with linked objects "link not restored"
Shame :oops: because I would have loved to have a look at it.

However... (for what it is worth - I am not an expert like jpg87) here are my comments:
I have avoided fasteners (in my case screws, rivets) for now, precisely because of the concerns you are having, but I have given it a lot of thought.
and as far as I am concerned fastener parts belong in assemblies to which they belong physically.

This does not mean neccesarily constraints and element for all of them.

If the assembly is static, the parts are controlled by placement not by constraints in my project. In this case parts are in assembly container, but elements and constraints folders are empty. Of course you can use constraint if you prefer or want to for some reason, but don't have to (at least as far as I am concerned).
The issue here is not "consumption of additional resources from a point of view of the solver" as jpg87 suggests, although it clearly matters, but vast number of constraints and elements that have to be somehow managed :oops:
Just imagine a tree view for such a project... ;)

If the assembly is kinematic (i.e. is animated) then I use Assembly3 constraints, elements and solvers to animate.
This already works very well in my assembly project, where (even without fasteners) number of constraints and elements is overwhelming :o
Here all the fasteners used in specific assemblies will have to be constrained in them (using Attachment, to keep things simple) and will use assembly solver when assemblies are animated.

My assembly project contains both static and kinematic sub-assemblies inside one assembly with no problem.

It is made easier in my model because all the static assembly parts are created using shapebinders and placed relative to earlier parts/assemblies.
I have not used externally imported components and this may force me down the route of using constraints rather then placement even for static assemblies?
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
Svet
Posts: 50
Joined: Fri Feb 12, 2021 1:00 am
Location: USA, Texas

Re: Asm3 - assembly with ~200 fasteners.

Post by Svet »

I have downloaded the files available on github and I am unable to look at your project because a lot of parts "do not exist" and there are problems with linked objects "link not restored"
Shame :oops: because I would have loved to have a look at it.
It's very strange. I'm running project from same exact folder. Did you open it with latest Linkstage3 or with master? Project created in Link branch version 0615 (latest as of today).

Main assembly resides in file CNC4060\cads\4060CNC.FCStd

PS: If you running latest Link daily try to disable partial linked file loading. I saw this issue few times latest week. Disabling this option can help.
User avatar
bambuko
Veteran
Posts: 2165
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Asm3 - assembly with ~200 fasteners.

Post by bambuko »

Svet wrote: Tue Jul 13, 2021 2:44 pm ...It's very strange....
agree

Svet wrote: Tue Jul 13, 2021 2:44 pm...I'm running project from same exact folder...
same here

Svet wrote: Tue Jul 13, 2021 2:44 pm...Did you open it with latest Linkstage3 ...
yes, latest link branch version

Svet wrote: Tue Jul 13, 2021 2:44 pm...Main assembly resides in file CNC4060\cads\4060CNC.FCStd...
yes

Svet wrote: Tue Jul 13, 2021 2:44 pm...If you running latest Link daily try to disable partial linked file loading....
don't know how to do it. Will search and try again.

for now that's what it looks like:
Screenshot from 2021-07-13 16.57.39.jpeg
Screenshot from 2021-07-13 16.57.39.jpeg (36.51 KiB) Viewed 2163 times
and the report view on openning the file:

Code: Select all

17:09:38  <Exception> File '/home/bambuko/Documents/parts/Ballscrew.FCStd' does not exist!
17:09:38  Exception opening file: /home/bambuko/Documents/parts/Ballscrew.FCStd [File '/home/bambuko/Documents/parts/Ballscrew.FCStd' does not exist!]
17:09:38  <Exception> File '/home/bambuko/Documents/parts/Z axis plates.FCStd' does not exist!
17:09:38  Exception opening file: /home/bambuko/Documents/parts/Z axis plates.FCStd [File '/home/bambuko/Documents/parts/Z axis plates.FCStd' does not exist!]
17:09:38  <Exception> File '/home/bambuko/Documents/parts/HGR20.FCStd' does not exist!
17:09:38  Exception opening file: /home/bambuko/Documents/parts/HGR20.FCStd [File '/home/bambuko/Documents/parts/HGR20.FCStd' does not exist!]
17:09:38  <Exception> File '/home/bambuko/Documents/parts/NEMA23-76.FCStd' does not exist!
17:09:38  Exception opening file: /home/bambuko/Documents/parts/NEMA23-76.FCStd [File '/home/bambuko/Documents/parts/NEMA23-76.FCStd' does not exist!]
17:09:38  <Exception> File '/home/bambuko/Documents/parts/BallNut.FCStd' does not exist!
17:09:38  Exception opening file: /home/bambuko/Documents/parts/BallNut.FCStd [File '/home/bambuko/Documents/parts/BallNut.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/HGH20CA.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/HGH20CA.FCStd [File '/home/bambuko/Documents/parts/HGH20CA.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/X axis plates.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/X axis plates.FCStd [File '/home/bambuko/Documents/parts/X axis plates.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/Extrusion.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/Extrusion.FCStd [File '/home/bambuko/Documents/parts/Extrusion.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/Y axis plates.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/Y axis plates.FCStd [File '/home/bambuko/Documents/parts/Y axis plates.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/Table.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/Table.FCStd [File '/home/bambuko/Documents/parts/Table.FCStd' does not exist!]
17:09:39  <Exception> File '/home/bambuko/Documents/parts/Spindle.FCStd' does not exist!
17:09:39  Exception opening file: /home/bambuko/Documents/parts/Spindle.FCStd [File '/home/bambuko/Documents/parts/Spindle.FCStd' does not exist!]
17:09:39  4.86e-07 <App> Document.cpp(3165): X_axis#Link024.LinkedObject: Link not restored
Linked object: Body001
Linked file: parts/Extrusion.FCStd
17:09:39  0.0206065 <App> Document.cpp(3165): X_axis#Link.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/HGR20.FCStd
17:09:39  0.0701588 <App> Document.cpp(3165): X_axis#Link005.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/X axis plates.FCStd
17:09:39  0.0759749 <App> Document.cpp(3165): X_axis#Link004.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/X axis plates.FCStd
17:09:39  0.0873227 <App> Document.cpp(3165): X_axis#Link008.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.0900344 <App> Document.cpp(3165): X_axis#Link007.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.0931592 <App> Document.cpp(3165): X_axis#Link006.LinkedObject: Link not restored
Linked object: Assembly003
Linked file: parts/Ballscrew.FCStd
17:09:39  0.101331 <App> Document.cpp(3165): X_axis#Link009.LinkedObject: Link not restored
Linked object: Assembly003
Linked file: parts/X axis plates.FCStd
17:09:39  0.107224 <App> Document.cpp(3165): X_axis#Link013.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/HGH20CA.FCStd
17:09:39  0.113227 <App> Document.cpp(3165): X_axis#Link012.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGH20CA.FCStd
17:09:39  0.130132 <App> Document.cpp(3165): X_axis#Link022.LinkedObject: Link not restored
Linked object: Assembly005
Linked file: parts/X axis plates.FCStd
17:09:39  0.136105 <App> Document.cpp(3165): X_axis#Link023.LinkedObject: Link not restored
Linked object: Assembly005
Linked file: parts/X axis plates.FCStd
17:09:39  0.13926 <App> Document.cpp(3165): X_axis#Link020.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/BallNut.FCStd
17:09:39  0.144889 <App> Document.cpp(3165): X_axis#Link021.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/BallNut.FCStd
17:09:39  0.353749 <App> Document.cpp(3160): Y_axis#Link.LinkedObject: Link not restored
Linked object: Body005
Linked file: parts/Extrusion.FCStd
17:09:39  0.353795 <App> Document.cpp(3076): Reload partial document Y_axis
17:09:39  0.370282 <App> Document.cpp(3165): Z_axis#Link.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/Z axis plates.FCStd
17:09:39  0.376453 <App> Document.cpp(3165): Z_axis#Link007.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/Ballscrew.FCStd
17:09:39  0.379713 <App> Document.cpp(3165): Z_axis#Link011.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGR20.FCStd
17:09:39  0.385359 <App> Document.cpp(3165): Z_axis#Link012.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGR20.FCStd
17:09:39  0.391414 <App> Document.cpp(3165): Z_axis#Link017.LinkedObject: Link not restored
Linked object: Assembly004
Linked file: parts/Z axis plates.FCStd
17:09:39  0.394477 <App> Document.cpp(3165): Z_axis#Link018.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.402905 <App> Document.cpp(3165): Z_axis#Link019.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.408856 <App> Document.cpp(3165): Z_axis#Link029.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/HGH20CA.FCStd
17:09:39  0.414786 <App> Document.cpp(3165): Z_axis#Link028.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGH20CA.FCStd
17:09:39  0.420481 <App> Document.cpp(3165): Z_axis#Link030.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGH20CA.FCStd
17:09:39  0.423547 <App> Document.cpp(3165): Z_axis#Link026.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/BallNut.FCStd
17:09:39  0.426266 <App> Document.cpp(3165): Z_axis#Link027.LinkedObject: Link not restored
Linked object: Assembly005
Linked file: parts/Z axis plates.FCStd
17:09:39  0.437541 <App> Document.cpp(3165): Z_axis#Link031.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/HGH20CA.FCStd
17:09:39  0.486464 <App> Document.cpp(3165): Z_carriage#Link015.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/Z axis plates.FCStd
17:09:39  0.490072 <App> Document.cpp(3165): Z_carriage#Link013.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/Z axis plates.FCStd
17:09:39  0.493339 <App> Document.cpp(3165): Z_carriage#Link014.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/Z axis plates.FCStd
17:09:39  0.500177 <App> Document.cpp(3165): Z_carriage#Link016.LinkedObject: Link not restored
Linked object: Assembly003
Linked file: parts/Z axis plates.FCStd
17:09:39  0.508622 <App> Document.cpp(3165): Z_carriage#Link010.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/BallNut.FCStd
17:09:39  0.511753 <App> Document.cpp(3165): Z_carriage#Link023.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/Spindle.FCStd
17:09:39  0.517513 <App> Document.cpp(3165): Z_carriage#Link004.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/HGH20CA.FCStd
17:09:39  0.52353 <App> Document.cpp(3165): Z_carriage#Link003.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/HGH20CA.FCStd
17:09:39  0.80841 <App> Document.cpp(3165): Y_axis#Link.LinkedObject: Link not restored
Linked object: Body005
Linked file: parts/Extrusion.FCStd
17:09:39  0.828815 <App> Document.cpp(3165): Y_axis#Link001.LinkedObject: Link not restored
Linked object: Body003
Linked file: parts/Extrusion.FCStd
17:09:39  0.861293 <App> Document.cpp(3165): Y_axis#Link008.LinkedObject: Link not restored
Linked object: Body005
Linked file: parts/Extrusion.FCStd
17:09:39  0.876465 <App> Document.cpp(3165): Y_axis#Link012.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/HGR20.FCStd
17:09:39  0.882323 <App> Document.cpp(3165): Y_axis#Link011.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/HGR20.FCStd
17:09:39  0.885395 <App> Document.cpp(3165): Y_axis#Link015.LinkedObject: Link not restored
Linked object: Assembly003
Linked file: parts/Y axis plates.FCStd
17:09:39  0.891214 <App> Document.cpp(3165): Y_axis#Link016.LinkedObject: Link not restored
Linked object: Assembly002
Linked file: parts/Y axis plates.FCStd
17:09:39  0.89979 <App> Document.cpp(3165): Y_axis#Link014.LinkedObject: Link not restored
Linked object: Assembly004
Linked file: parts/Ballscrew.FCStd
17:09:39  0.902841 <App> Document.cpp(3165): Y_axis#Link013.LinkedObject: Link not restored
Linked object: Assembly004
Linked file: parts/Ballscrew.FCStd
17:09:39  0.90859 <App> Document.cpp(3165): Y_axis#Link018.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/Y axis plates.FCStd
17:09:39  0.914251 <App> Document.cpp(3165): Y_axis#Link017.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/Y axis plates.FCStd
17:09:39  0.922911 <App> Document.cpp(3165): Y_axis#Link020.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.928673 <App> Document.cpp(3165): Y_axis#Link019.LinkedObject: Link not restored
Linked object: Assembly001
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.93187 <App> Document.cpp(3165): Y_axis#Link021.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.937521 <App> Document.cpp(3165): Y_axis#Link022.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/NEMA23-76.FCStd
17:09:39  0.943306 <App> Document.cpp(3165): Y_axis#Link023.LinkedObject: Link not restored
Linked object: Assembly004
Linked file: parts/Y axis plates.FCStd
17:09:39  0.949052 <App> Document.cpp(3165): Y_axis#Link024.LinkedObject: Link not restored
Linked object: Assembly005
Linked file: parts/Y axis plates.FCStd
17:09:39  0.957491 <App> Document.cpp(3165): Y_axis#Link025.LinkedObject: Link not restored
Linked object: Assembly
Linked file: parts/Table.FCStd
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
User avatar
bambuko
Veteran
Posts: 2165
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Asm3 - assembly with ~200 fasteners.

Post by bambuko »

I thought I try your file with FreeCAD on Windows (which you use, I believe?) just in case it some problem with backward/forward slashes :lol:
but not, I get exactly the same errors in Windows.

The only thing that is different is that when I close the file I get this:
illegal_storage.jpg
illegal_storage.jpg (23.52 KiB) Viewed 2147 times
I thought you would be interested in this ;)
but it seem to happen only in Windows (didn't happen yet in Linux)
Might help you with your other issue raised on github?
I will continue playing on Linux and report if I discover more...
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
Svet
Posts: 50
Joined: Fri Feb 12, 2021 1:00 am
Location: USA, Texas

Re: Asm3 - assembly with ~200 fasteners.

Post by Svet »

Yep, when I closing file I got the same error - already reported as issue in github.

What the absolute path to the 4060CNC.FCStd on you machine? Links in xml project file are relative and I believe it's a problem.

Could you please try to open some file prom 'parts' folder. Like Extrusion or z-axis plates? This files doesn't have links to other documents.

Regarding partial load - you can find this option here:
Untitled.png
Untitled.png (153.41 KiB) Viewed 2128 times
User avatar
bambuko
Veteran
Posts: 2165
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Asm3 - assembly with ~200 fasteners.

Post by bambuko »

Svet wrote: Tue Jul 13, 2021 4:48 pm Yep, when I closing file I got the same error - already reported as issue in github...
Yes, I know, but what is interesting, is that I never (so far) had this error in Linux when openning and closing your file repeatedly,
and yet first time I have opened it in Windows I straight away got this message.

Svet wrote:...What the absolute path to the 4060CNC.FCStd on you machine? ...
/home/bambuko/Documents/cad_test/

Svet wrote:...Links in xml project file are relative and I believe it's a problem...
it seems likely?

Svet wrote:...Could you please try to open some file prom 'parts' folder...or z-axis plates?...
18:06:47 Unknown exception while processing file: /home/bambuko/Documents/cad_test/parts/Z axis plates.FCStd

Svet wrote:...Regarding partial load ...
doesn't make a blind bit of difference - same error messages.
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
Svet
Posts: 50
Joined: Fri Feb 12, 2021 1:00 am
Location: USA, Texas

Re: Asm3 - assembly with ~200 fasteners.

Post by Svet »

Ok, I just tried to open this file on brand new fresh windows laptop. What I did:
1) Windows 10 pro fresh install
2) FreeCAD LinkDaily dowloaded and run
3) Install Fasteners workbench from AddonManager
4) Restart FreeCad
5) Disable partial loading in preferences
5) Clone Git repo into C://Projects
6) Drag&Drop C://Projects/CNC4060/cads/CNC4060.FCStd into FreeCAD window

Everything got recomputed without any issue.

For your problem in Linux - try to copy 'parts' folder into you home folder - looks like FreeCAD trying to look for this files here. But still - it's weird. Looks like an bug for me - FreeCAD should look for linked documents with respect to parent doc path.

It's a shame, but I have no pc running linux to test... and cannot install it on my work laptop a well :(
User avatar
bambuko
Veteran
Posts: 2165
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Asm3 - assembly with ~200 fasteners.

Post by bambuko »

I have tried in Linux with parts folder moved to my home directory and partial loading disable - it didn't make any difference - still the same error messages...

I will try now in Windows 10
Can you please translate for me:
5) Clone Git repo into C://Projects
I am a bit slow ;) :oops:

later edit:
I have recreated/copied your folders and files into C and disable #d partial loading and still the same error
(and BTW also "illegal storage" message in Windows)
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
Post Reply