Assembly3 preview

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
ceremcem
Posts: 226
Joined: Sun Jan 07, 2018 11:10 am

Re: Assembly3 preview

Post by ceremcem »

Mark Szlazak wrote: Tue Apr 16, 2019 5:08 am
Do you know why?
I'm also interested in the answer. I guess the answer lies between "Gui.runCommand('asm3CmdSolve',0)" and "Gui.runCommand('asm3CmdQuickSolve',0)".
Mark Szlazak
Posts: 439
Joined: Tue Apr 04, 2017 6:06 pm
Location: SF Bay Area, California

Re: Assembly3 preview

Post by Mark Szlazak »

ceremcem wrote: Tue Apr 16, 2019 5:02 pm
Mark Szlazak wrote: Tue Apr 16, 2019 5:08 am
Do you know why?
I'm also interested in the answer. I guess the answer lies between "Gui.runCommand('asm3CmdSolve',0)" and "Gui.runCommand('asm3CmdQuickSolve',0)".
What you get online is ways all these programs handle large assemblies. What large means for each i am not sure (1000, 10000, 100000, 1000000 parts)? Maybe Solidworks and others could handle assemblies just as large as NX, CATIA and CREO for several years. But i do not know.

Also, there does not appear to be enough clues to me to the file structure or programming involved but i do not have the knowledge that someone like Realthunder has. Here are links to what i found online:


https://m.youtube.com/watch?v=L19VY8irwrw

https://www.digitalengineering247.com/a ... cad-models

https://www.digitalengineering247.com/a ... assemblies

https://www.adandp.media/articles/cad-f ... -and-large

https://youtu.be/1ta2dPzuZAc

https://community.plm.automation.siemen ... d-p/327686

https://dasisolutions.com/large-assembly
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

triplus wrote: Mon Apr 15, 2019 8:25 pm @realthunder

Read this more as a thinking out loud type of question. App::Link is therefore a lightweight representation of the linked feature. Being capable of extracting some properties from the linked feature document object. A discussion has been started here:

https://forum.freecadweb.org/viewtopic. ... 30#p301293

Do you feel it would be possible to create a group of App::Link features acting as a single document object? Or does each App::Link feature need its own document object? If creating souch group would be possible, could such group be able to suppress/promote any individually linked feature document object? That is when working in the same document, and could that yield in more performance, due to lower number of document objects.
Based on the referenced topic, I don't think that's a proper use case for 'Link' there. Link does have a mode called 'collapsed array mode' that works somewhat similar to what you have in mind. Basically, when using Link on any object, you can turn the single instance link into an array by simply change the 'Count' property. By default, each instance is shown as a separate document object, which although cheap, consumes extra resources nevertheless. You can collapse the array, by setting 'ShowElement' property to False, which cause Link to ditch all the element object. You can still select individual geometry element in the 3D view, and overrides color and visibility of individual instance or geometry element. Right now, it only support Face color override. Even though I can add support for edge and point, I don't think this feature fits exactly the usage scenario described in that post.

Image
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

Mark Szlazak wrote: Tue Apr 16, 2019 5:08 am Hi realthunder. I brought this up before and it has always been in the back of my mind ever since. Some class teaching assistants claim that CAD products like NX, CATIA and CREO can handle very large assemblies of say 100,000 parts while Solidworks (maybe not Solidworks 2019) and others cannot. Usually unsatisfying answers are given as to why this is so. Do you know why? I am asking because it could be important to how FreeCAD’s assembly gets developed.
I can't say for sure. I didn't have any experience in using those CAD in the first place. From some readings, I get the feeling that high-end CAD like CATIA are design to be used by team of trained professionals. They are hard to use, because the user need to follow certain protocols, and those protocols differs among team members depending on their roles. The pay off in these complicity is that the end result scales well. On the contrary, mid-range CAD like SolidWorks is targeted to individual user or small team of professional or hobby users. So there may not be strict protocol enforcement, and correspondingly, the end result may not scale to the same degree as those high end products. In other word, I feel that the mid-range CAD nowadays may be able to handle large scale assembly, if the user did it the right way.

As for FreeCAD, we are still far from there yet. I found that upstream FreeCAD starts getting into trouble when exceeding 1000 objects. I have patches here and there for the scalability issue, but still, there is much to be improved.
Second thing that one may wonder is why would an assembly of 100,000 parts be made in the first place. A response I got was that a center of gravity maybe needed. After all, it was Boeing that one time boosted it got a jet designed so fast because it used CATIA.
I think hierarchy is the key to handle complexity. Just like in reality, you don't assembly the circuit board while assembly the whole plane. At the time the body is assembled, the wings, tail etc are fully assembled and can be treated as individual parts. But of course a complex assembly can still require hundreds and thousands of parts. We'll still need various tricks to handle that complexity. One of the tricks implemented in my Link, as shown in the post above, is the efficient array handling. You can use one object and a link to represent each type of parts, no matter how many instances you want.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
Mark Szlazak
Posts: 439
Joined: Tue Apr 04, 2017 6:06 pm
Location: SF Bay Area, California

Re: Assembly3 preview

Post by Mark Szlazak »

realthunder wrote: Wed Apr 17, 2019 1:54 am
Mark Szlazak wrote: Tue Apr 16, 2019 5:08 am Hi realthunder. I brought this up before and it has always been in the back of my mind ever since. Some class teaching assistants claim that CAD products like NX, CATIA and CREO can handle very large assemblies of say 100,000 parts while Solidworks (maybe not Solidworks 2019) and others cannot. Usually unsatisfying answers are given as to why this is so. Do you know why? I am asking because it could be important to how FreeCAD’s assembly gets developed.
I can't say for sure. I didn't have any experience in using those CAD in the first place. From some readings, I get the feeling that high-end CAD like CATIA are design to be used by team of trained professionals. They are hard to use, because the user need to follow certain protocols, and those protocols differs among team members depending on their roles. The pay off in these complicity is that the end result scales well. On the contrary, mid-range CAD like SolidWorks is targeted to individual user or small team of professional or hobby users. So there may not be strict protocol enforcement, and correspondingly, the end result may not scale to the same degree as those high end products. In other word, I feel that the mid-range CAD nowadays may be able to handle large scale assembly, if the user did it the right way.

As for FreeCAD, we are still far from there yet. I found that upstream FreeCAD starts getting into trouble when exceeding 1000 objects. I have patches here and there for the scalability issue, but still, there is much to be improved.
Second thing that one may wonder is why would an assembly of 100,000 parts be made in the first place. A response I got was that a center of gravity maybe needed. After all, it was Boeing that one time boosted it got a jet designed so fast because it used CATIA.
I think hierarchy is the key to handle complexity. Just like in reality, you don't assembly the circuit board while assembly the whole plane. At the time the body is assembled, the wings, tail etc are fully assembled and can be treated as individual parts. But of course a complex assembly can still require hundreds and thousands of parts. We'll still need various tricks to handle that complexity. One of the tricks implemented in my Link, as shown in the post above, is the efficient array handling. You can use one object and a link to represent each type of parts, no matter how many instances you want.
Please check out the links in my previous post. Particularly links from around 2012.
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

Mark Szlazak wrote: Wed Apr 17, 2019 1:58 am Please check out the links in my previous post. Particularly links from around 2012.
Yes, I've read some of them. I have also previously watched SW 2019's new feature demos on youtube and amazed by their new assembly improvement, which leads me to say that nowadays, those mid-rage CAD can already handle very big assemblies. And the differences between the high-end may not be software limitation, but the users, specifically their way of using the software.

I have also implemented some of the techniques mentioned in those articles, such as partial loading. And you previous mentioned coase model feature from SW is also very helpful, which I do plan to implement it in the future.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
Mark Szlazak
Posts: 439
Joined: Tue Apr 04, 2017 6:06 pm
Location: SF Bay Area, California

Re: Assembly3 preview

Post by Mark Szlazak »

realthunder wrote: Wed Apr 17, 2019 2:11 am
Mark Szlazak wrote: Wed Apr 17, 2019 1:58 am Please check out the links in my previous post. Particularly links from around 2012.
Yes, I've read some of them. I have also previously watched SW 2019's new feature demos on youtube and amazed by their new assembly improvement, which leads me to say that nowadays, those mid-rage CAD can already handle very big assemblies. And the differences between the high-end may not be software limitation, but the users, specifically their way of using the software.

I have also implemented some of the techniques mentioned in those articles, such as partial loading. And you previous mentioned coase model feature from SW is also very helpful, which I do plan to implement it in the future.
Can you elaborate more how strict protocol enforcement would allow software like NX, CREO, CATIA larger assemblies even over the latest version of Solidworks (2019)? An example may help. I can pass this onto teaching assistance since what they say does not seem right or more like hand waving. Thanks again and look forward to your work.
triplus
Veteran
Posts: 9471
Joined: Mon Dec 12, 2011 4:45 pm

Re: Assembly3 preview

Post by triplus »

realthunder wrote: Wed Apr 17, 2019 1:25 am Link does have a mode called 'collapsed array mode' that works somewhat similar to what you have in mind. Basically, when using Link on any object, you can turn the single instance link into an array by simply change the 'Count' property. By default, each instance is shown as a separate document object, which although cheap, consumes extra resources nevertheless. You can collapse the array, by setting 'ShowElement' property to False, which cause Link to ditch all the element object. You can still select individual geometry element in the 3D view, and overrides color and visibility of individual instance or geometry element. Right now, it only support Face color override. Even though I can add support for edge and point, I don't think this feature fits exactly the usage scenario described in that post.
This feels close to the initial idea. Some questions:
  • Could such an array consist of different (links to) objects, each therefore being one element in an array.
  • Could a Link feature suppress and promote linked (parent) feature document object?
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

Mark Szlazak wrote: Wed Apr 17, 2019 5:41 am Can you elaborate more how strict protocol enforcement would allow software like NX, CREO, CATIA larger assemblies even over the latest version of Solidworks (2019)? An example may help. I can pass this onto teaching assistance since what they say does not seem right or more like hand waving. Thanks again and look forward to your work.
Well, I can't, since I haven't used those software. And I think we may need someone inside the automobile or aviation design industry to tell us the real difference, not just someone who have 'used' the software. Another thing, CATIA and SW are from the same company, so obviously they won't compete with each other.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

triplus wrote: Wed Apr 17, 2019 11:47 pm Could such an array consist of different (links to) objects, each therefore being one element in an array.
Could a Link feature suppress and promote linked (parent) feature document object?[/list]
When links to a group, each child object is treated similar as an array element. But no, it cannot be collapsed, meaning that those different objects must still be there. It is possible to retain the coin nodes when the objects are gone, but the internal geometry hierarchy is lost. For example, if you have a link to an assembly, and that assembly object is gone, I can make the link to retain the 3D visual (not implemented yet), but you will not be able to constrain on that link, which requires geometry data.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
Post Reply