Assembly3 preview

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Eric Myers
Posts: 16
Joined: Thu Apr 05, 2018 3:41 pm

Re: Assembly3 preview

Post by Eric Myers »

realthunder wrote: Tue May 08, 2018 3:56 amThe lock constraint is to prevent the solver to move the constrained part. You can of course manually move the part, which causes the solver to gather other movable parts around the newly located fixed part.
Okay, thanks very much for the insight.

Is there a way then to constrain parts with respect to an absolute, global coordinate system of the assembly, so that there is some unchanging frame of reference to depend on?
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

Eric Myers wrote: Tue May 08, 2018 4:06 am In other words, I would expect to be able to select a cylindrical surface on each of the two parts being constrained, or an axis of one part and cylindrical feature of another, or two axes, etc..., and be able to constrain these so that the associated axes are collinear.
The colinear constraint has a bug, and I shall fix it soon. The AxialAlignment constraint, right now does not accept cylindrical or edge as constraining elements, and I shall fix that too. Meanwhile, you can use the bottom plane of a cylinder to constrain it on the normal axis of another plane, using the AxialAlignment.

Eric Myers wrote: Tue May 08, 2018 4:13 am Is there a way then to constrain parts with respect to an absolute, global coordinate system of the assembly, so that there is some unchanging frame of reference to depend on?
Why do you want that? Anyway, you can always have a top level assembly container with no placement, and put some locked object there for 'absolute' reference.
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
Jee-Bee
Veteran
Posts: 2566
Joined: Tue Jun 16, 2015 10:32 am
Location: Netherlands

Re: Assembly3 preview

Post by Jee-Bee »

realthunder wrote: Tue May 08, 2018 4:19 am
Eric Myers wrote: Tue May 08, 2018 4:13 am Is there a way then to constrain parts with respect to an absolute, global coordinate system of the assembly, so that there is some unchanging frame of reference to depend on?
Why do you want that? Anyway, you can always have a top level assembly container with no placement, and put some locked object there for 'absolute' reference.
In some branches it is common to have a common place of that product as the reference point. That point is the reference point for all geometry.
For my feeling all objects should have a reference to an point otherwise the objects are floating around. A lot of CAD packages are able to place the first part on origin for that reason.
I think when Freecad can use of skelton parts that it make it easy to work even on lower levels with global coordinates.
Eric Myers
Posts: 16
Joined: Thu Apr 05, 2018 3:41 pm

Re: Assembly3 preview

Post by Eric Myers »

Jee-Bee wrote: Tue May 08, 2018 5:24 am In some branches it is common to have a common place of that product as the reference point. That point is the reference point for all geometry.
For my feeling all objects should have a reference to an point otherwise the objects are floating around. A lot of CAD packages are able to place the first part on origin for that reason.
I think when Freecad can use of skelton parts that it make it easy to work even on lower levels with global coordinates.
Yes, that's it. In the CAD packages I've worked with, assemblies and parts have an origin point, 3 axes, and 3 planes that define a fixed (absolute and unchanging) frame of reference, so that no matter what changes are made during the modelling, there is always a "home" location and orientation to refer to.

When starting a new assembly, the first thing I do is place the first part and orient it with respect to the coordinate system of the assembly. Usually that part will contact the origin point somewhere logical. The planes have meaning to me as well: XZ is a horizontal plane, parallel with the "ground", XY is the vertical front/back plane, and XZ is the vertical side-to-side plane.

Once positioned and oriented with respect to the assembly coordinate system, that first part is locked in place and remains completely immovable. The next part placed will be placed with some relation to the first part- maybe fixed or maybe with freedom with some relative movement. But there is always at least one part that stays where it is, and always a coordinate system to define where "where" is. ;)
User avatar
Vincent B
Veteran
Posts: 4741
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: Assembly3 preview

Post by Vincent B »

easyw-fc wrote: Sat May 05, 2018 4:55 pm I would like to test it with complex Assemblies... would you mind to share some?
Here a full designed vise I drew.
If you want to try to assemble it, for this moment I resign :roll:
https://cloud.freecad-france.com/index. ... nAss.FCStd
http://philippe.berger2.free.fr/product ... rapide.htm
Attachments
Capture.JPG
Capture.JPG (45.21 KiB) Viewed 1945 times
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

Eric Myers wrote: Tue May 08, 2018 12:16 pm Yes, that's it. In the CAD packages I've worked with, assemblies and parts have an origin point, 3 axes, and 3 planes that define a fixed (absolute and unchanging) frame of reference, so that no matter what changes are made during the modelling, there is always a "home" location and orientation to refer to.
This more of a workflow type of thing. With assembly3, you can adapt to a similar workflow with some self-discipline. Since you always put some part fixed somewhere around the origin, I'll presume you create a separate file for each assembly. Just like I said, you do not set any placement to that top level assembly container, so its local coordinate system is identical to the 'global' one. If you want X-Y-Z plane, you can use the 'Workplane' button to create all the plane you want. Set the plane width or length to 0 to get axis. Set both to zero to get the origin point. I didn't pre-create those things like App::Part because not everybody want that. Like any other part in the container, you'll need to manually lock those planes if you don't want them moved by the solver. When you want to manipulate any sub-assembly, always jump to the file containing the actual assembly so that that parts are at the correct 'global' position.

I can make all these easier, by adding a button to automate origin stuff creation, and maybe another button to disable moving fixed part by the mover.
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
easyw-fc
Veteran
Posts: 3633
Joined: Thu Jul 09, 2015 9:34 am

Re: Assembly3 preview

Post by easyw-fc »

GlouGlou wrote: Tue May 08, 2018 12:29 pm
easyw-fc wrote: Sat May 05, 2018 4:55 pm I would like to test it with complex Assemblies... would you mind to share some?
Here a full designed vise I drew.
If you want to try to assemble it, for this moment I resign :roll:
https://cloud.freecad-france.com/index. ... nAss.FCStd
http://philippe.berger2.free.fr/product ... rapide.htm
Thanks @GlouGlou
for fun I assembled it using my Manipulator WB ;)
aligned.png
aligned.png (287.77 KiB) Viewed 1918 times
But I would need something aligned with A3 to make my tests :D
User avatar
easyw-fc
Veteran
Posts: 3633
Joined: Thu Jul 09, 2015 9:34 am

Re: Assembly3 preview

Post by easyw-fc »

BTW I had an issue with @GlouGlou file if opened in A3 build... I had to open it in FC0.18 and then save it.
Followings the errors I had in A3

Code: Select all

Thread size out of range
Thread size out of range
Thread size out of range
Thread size out of range
Thread size out of range
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
......
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
No extension found of type 'Gui::ViewProviderLinkObserver'
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: Tue May 08, 2018 12:52 pm
Eric Myers wrote: Tue May 08, 2018 12:16 pm Yes, that's it. In the CAD packages I've worked with, assemblies and parts have an origin point, 3 axes, and 3 planes that define a fixed (absolute and unchanging) frame of reference, so that no matter what changes are made during the modelling, there is always a "home" location and orientation to refer to.
This more of a workflow type of thing. With assembly3, you can adapt to a similar workflow with some self-discipline. Since you always put some part fixed somewhere around the origin, I'll presume you create a separate file for each assembly. Just like I said, you do not set any placement to that top level assembly container, so its local coordinate system is identical to the 'global' one. If you want X-Y-Z plane, you can use the 'Workplane' button to create all the plane you want. Set the plane width or length to 0 to get axis. Set both to zero to get the origin point. I didn't pre-create those things like App::Part because not everybody want that. Like any other part in the container, you'll need to manually lock those planes if you don't want them moved by the solver. When you want to manipulate any sub-assembly, always jump to the file containing the actual assembly so that that parts are at the correct 'global' position.

I can make all these easier, by adding a button to automate origin stuff creation, and maybe another button to disable moving fixed part by the mover.
I don't know why people would not want a fixed part. The CAD packages I use have it and it is standard to get graded on whether you have done this or not in classes and course work. Second, I do not think most want or need added "self-discipline". The less the better. I still remember the title of a famous book on GUI (web page) design from years ago "Don't make me think" which basically means make it like people are use to it ... if what they are use to was good already of course.

Anyway, thank you realthunder for your work on the Assembly 3 Workbench. You picked up the ball from where it was dropped or fumbled years ago and are heading for a touch down. You are awesome!
Eric Myers
Posts: 16
Joined: Thu Apr 05, 2018 3:41 pm

Re: Assembly3 preview

Post by Eric Myers »

Mark Szlazak wrote: Tue May 08, 2018 4:58 pmAnyway, thank you realthunder for your work on the Assembly 3 Workbench.
I agree with this completely. Assembly capability is a fundamental must-have thing. It's awesome to see this progressing, so yes-- thanks!
Post Reply