Assembly3 preview

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
sgrogan
Veteran
Posts: 6499
Joined: Wed Oct 22, 2014 5:02 pm

Re: Assembly3 preview

Post by sgrogan »

Syres wrote: Sat Sep 26, 2020 3:38 pm Is it worth updating the Conda builds that have Asm3 included to have the gui.py fix and therefore stop future reports or is this all done automatically?
I updated the freecad.asm-feedstock so this should be available in the next updates.
Thanks for the heads-up!
"fight the good fight"
ToniTen
Posts: 242
Joined: Fri Sep 04, 2020 10:11 am

Re: Assembly3 preview

Post by ToniTen »

realthunder wrote: Sat Sep 26, 2020 7:39 am You can use the upstream AppImage which includes everything I believe. You can update AppImage as well using Preference->AppImage dialog. Or you can try my personal release of AppImage, which contains lots of extra features. I usually sync with upstream master every month or two.
I know I know, it's just that the upstream appimage is 810 MBs (yours is 458) while the .deb packages are a fraction of that. If asm3 wasn't included in the official development appimage then I would not be asking this, but seeing as it is, it must mean that there are few to no obstacles remaining from having it work with upstream. I guess I should be talking to the packagers of the tje FreeCad-Daily ppa and asking them instead.

Many thanks for this workbench and for all your other contributions.
User avatar
czinehuba
Posts: 160
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: Assembly3 preview

Post by czinehuba »

Hi Realthunder,

Would it be possible to have a exposed the names of bodies. ie if I want to reference a placement for a body in x, y, z, I have to use body001.placement....., or body002...... Would it be possible to have it as the given name? Which is a bit meaningful.

Thanks
Huba
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly3 preview

Post by Zolko »

czinehuba wrote: Tue Sep 29, 2020 9:59 am Would it be possible to have a exposed the names of bodies. ie if I want to reference a placement for a body in x, y, z, I have to use body001.placement....., or body002...... Would it be possible to have it as the given name? Which is a bit meaningful.
RTFM ! this has been explained thousands of times: use <<label>>
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
czinehuba
Posts: 160
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: Assembly3 preview

Post by czinehuba »

Zolko wrote: Tue Sep 29, 2020 10:39 am RTFM ! this has been explained thousands of times: use <<label>>
Thanks for the pointer. You have to appreciate, there is a wast amount of information, and things are easily missed.

Thanks again.
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

czinehuba wrote: Tue Sep 29, 2020 9:59 am Would it be possible to have a exposed the names of bodies. ie if I want to reference a placement for a body in x, y, z, I have to use body001.placement....., or body002...... Would it be possible to have it as the given name? Which is a bit meaningful.
The next release will have an improvement on expression auto complete. Just type any keyword from the label it will show item with << >>, so no need to explicitly type that.
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
User avatar
czinehuba
Posts: 160
Joined: Mon Oct 15, 2018 4:59 am
Location: UK
Contact:

Re: Assembly3 preview

Post by czinehuba »

realthunder wrote: Wed Sep 30, 2020 3:57 am ]The next release will have an improvement on expression auto complete. Just type any keyword from the label it will show item with << >>, so no need to explicitly type that.
Brilliant news.

Thank you! Looking forward to it.
ToniTen
Posts: 242
Joined: Fri Sep 04, 2020 10:11 am

Re: Assembly3 preview

Post by ToniTen »

realthunder wrote: Wed Sep 30, 2020 3:57 am The next release will have an improvement on expression auto complete. Just type any keyword from the label it will show item with << >>, so no need to explicitly type that.
That sounds fantastic. Can't wait for the next release
catman
Posts: 412
Joined: Fri Jan 11, 2019 10:42 pm

Re: Assembly3 preview

Post by catman »

I would like to disucss about a new constraint proposal with the goals
  • widen the application of the Attachment Constraint
  • Shorter contraint lists with standard joints
  • Less load for the solver
  • no redundant DOFs, no over-constraints
The Attachment Constraint got improved since its introduction and it is great to use if its applicable. My most used constraint seems to be Plane Alignment/Plane Conincident, but I think that many could be replaced by a single Attachmemtn if there would be a modified variant available.

Here is a quick example to illustrate it.

Its an assembly of two bars, that should be mounted on the rounded sides like the red/yellow example. The file shows 3 cases with the same parts.
Asm3_AttachQuestion.png
Asm3_AttachQuestion.png (148.48 KiB) Viewed 1722 times
The Attachment constraint quickly attaches the bottom and side of the two bars as in the first step. The elements are joined at their LCSs (local coordinate system). Note that an outer edge alignment by attaching two corners is not possible, because of the rounded edges.

To get the red/yellow state, one of the elements is moved (second case in the image). By how much is determined by visual inspection (until edges match). I find this solution is too cumbersone in day-to-day use. It is not precise, needs visual tuning and entering dimensions which is impractical when the sizes of the other part might change. If there is a better way with Attach, I am glad to learn about it.

The third part shows the proposal: some faces on the parts are selected (different color from the red base color). I selected 3 faces on each part. This would define two LCS that can be joined by the additional Attachment constraint, say "Attachament6". Instead of numerical values, its only based on Elements and thus can be recalculated if their owners change, they can be reassigned to change the part and they can be visually debugged.

So the procedure for the red part would be
1. Select on vertical part: top, front and right side
2. Select on the other part: top, front and top side
3. Select "Attachment6"
Then the part is mated with exactly 6 DOF by reducing the redundancy once. In the tree all 6 Elements are listed under the "Attachment6" constraint.
There is one issue to be solved: there are 3 solutions for each side to place the LCS axes. One way is to define the z-axis by the first plane the other is to allow randomness and provide a button to toggle through the two other choices quicky. Or both.

I would like to invite comments on whether or not that would be considered an useful addition. And also, of course, an information on whether or not that would be a feasible extension for ASM3.

Thanks

PS: (optional) would that be useful to make to define linear axes more compact and cleanly: with an Attachment6D constraint, but only 4 Elements added, there is a precise direction left open for a "sliding axis". Today one needs several rather expenive constraints to achvieve this.

EDIT: shortened the text.




OS: Ubuntu 18.04.5 LTS (XFCE/xubuntu)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22411 (Git) AppImage
Build type: Release
Branch: master
Hash: d4519d5aec15bc08f029da5ed15410a494b57b2c
Python version: 3.8.5
Qt version: 5.12.9
Coin version: 4.0.0
OCC version: 7.4.0
Locale: English/United States (en_US)
Attachments
Asm3_TestAttach.FCStd
(37.85 KiB) Downloaded 66 times
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

catman wrote: Sun Oct 04, 2020 6:09 pm Then the part is mated with exactly 6 DOF by reducing the redundancy once. In the tree all 6 Elements are listed under the "Attachment6" constraint.
There is one issue to be solved: there are 3 solutions for each side to place the LCS axes. One way is to define the z-axis by the first plane the other is to allow randomness and provide a button to toggle through the two other choices quicky. Or both.

I would like to invite comments on whether or not that would be considered an useful addition. And also, of course, an information on whether or not that would be a feasible extension for ASM3.
That Attachment6 itself is not going to be cheap to solve, probably require an actual algebra solver. Granted that solving for a single pair of parts is relatively easy, but that's against the idea of using Attachment, which just requires simple matrix operations.

A very important idea of asm3 is that it is an important and distinctive step to create the constraining element. The tutorials may put emphasis on how this step can be a way to reduce impact of topological naming issue, but it has many other benefits. In your case, depending how you create that part, it may be possible to include the constraining element in your model sketch, as some construction geometry, a simple circle maybe. If it's not possible for whatever reason, you can always create a new sketch on the face, and use a circle to mark the position. Be sure to move the sketch into the assembly. For a more modular design, you can create a sub-assembly with just that part and the sketch. Conceptually speaking, as an assembly author, the sketch element can serve as an instruction to others on how to assembly your parts.
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