I'm also interested in the answer. I guess the answer lies between "Gui.runCommand('asm3CmdSolve',0)" and "Gui.runCommand('asm3CmdQuickSolve',0)".
Assembly3 preview
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Re: Assembly3 preview
Assembly 3 notes: https://github.com/ceremcem/freecad-notes
-
- Posts: 439
- Joined: Tue Apr 04, 2017 6:06 pm
- Location: SF Bay Area, California
Re: Assembly3 preview
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
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Assembly3 preview
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.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.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Assembly3 preview
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.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.
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.
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.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.
-
- Posts: 439
- Joined: Tue Apr 04, 2017 6:06 pm
- Location: SF Bay Area, California
Re: Assembly3 preview
Please check out the links in my previous post. Particularly links from around 2012.realthunder wrote: ↑Wed Apr 17, 2019 1:54 amI 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.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.
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.
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.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.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Assembly3 preview
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.Mark Szlazak wrote: ↑Wed Apr 17, 2019 1:58 am Please check out the links in my previous post. Particularly links from around 2012.
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.
-
- Posts: 439
- Joined: Tue Apr 04, 2017 6:06 pm
- Location: SF Bay Area, California
Re: Assembly3 preview
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.realthunder wrote: ↑Wed Apr 17, 2019 2:11 amYes, 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.Mark Szlazak wrote: ↑Wed Apr 17, 2019 1:58 am Please check out the links in my previous post. Particularly links from around 2012.
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.
Re: Assembly3 preview
This feels close to the initial idea. Some questions: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.
- 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?
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Assembly3 preview
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.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.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Assembly3 preview
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.