Is there an ability to drag and rotate parts freely in assemblies yet?

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
shadybob
Posts: 18
Joined: Wed Jun 06, 2018 5:50 pm

Is there an ability to drag and rotate parts freely in assemblies yet?

Post by shadybob »

I've been using Autodesk Inventor as my main design tool for almost 20 years now (i.e. since V1)! I'm also well versed in Unigraphics and have done a fair amount of programming over the years (C, python, visual basic, ilogic, etc). I have recently been checking out Freecad as an alternative, but so far, I find quite a few frustrations.

Is there currently anyway to do the following in Freecad (assemblies): I would really like to see an inplementation similar to Inventor:
1. Place a component part into an assembly at it's current orientation and positioned at a mouse click point?
2. Once placed like that, one should be able to just click on the part and drag it around.
3. Use the same type of assembly constraints like inventor has. There aren't that many. Mate, Flush, Tangent, Angular, Insert and Symmetry. These constraints can use several different object types, faces, axes, points, arcs, cylinders, etc.
4. Once you place one constraint, you still have the ability to freely drag the part around in the unconstrained directions.
5. Perhaps have a dedicated assembly document (similar to Inventor, SolidWorks, etc)?

There is more to say, but my time is a little limited today. I would be interested in helping to implement this functionality as best I could, maybe even do a little python programming? I think the first item would be freely placing parts and being able to move them around? Maybe one of the existing workbenches already has this ability?
User avatar
OficineRobotica
Posts: 433
Joined: Thu Feb 21, 2019 8:17 am
Contact:

Re: Is there an ability to drag and rotate parts freely in assemblies yet?

Post by OficineRobotica »

Sorry for the telegraphic is answer ...at work atm. There is a similar functionality recently implemented in the a2plus workbench. The thread where you can see that , in the last pages must be this
kbwbe wrote: Sun Dec 22, 2019 12:55 pm Hi people,

A2plus V0.4.33 has a new feature (thanks to a user request). Now you can click a part and move it around under rule of all constraints.

Have a look at this video:
phpBB [video]


Have fun.

Merry christmas to all,
Klaus

P.S: Find the assembly attached (for your own experiments)

That being said , that kind of functionality could be really useful in A4
Zolko wrote: Sun Jan 26, 2020 6:53 pm
catman wrote: Sun Jan 26, 2020 11:40 am Another usefult thing would be a kind of "switching" App:Link. Maybe something like this already exists?
yes I know, and it doesn't exist. We have called that variant link or configurations. This will need some core FreeCAD support, not only some Python scripts. I would also like to make this compatible with exploded assembly.

So this will probably wait for FreeCAD v0.20

As for the rest of the requests, please note that this is for me also a free-time involvement. You probably know the saying:

We have done the urgent, we're doing the impossible, for miracles please be patient.

On the other hand, and I don't know if you can see this statistics: there are 20 downloads of this workbench a day. While I'm very happy — and proud — that people like what I've be doing, some help could be appreciated.

traffic.png

Zolko could really use some help and A4 is such a promising workbench.

Cheers
Check out my Youtube channel at: https://www.youtube.com/@OficineRobotica
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Is there an ability to drag and rotate parts freely in assemblies yet?

Post by Zolko »

shadybob wrote: Tue Jan 28, 2020 5:58 pm I think the first item would be freely placing parts and being able to move them around? Maybe one of the existing workbenches already has this ability?
Assembly4 does that already: insert a part (a link-to-a-part actually), click "Cancel" in the placement dialog, right-click on the part (link) in the tree and choose "Transform". You'll have a dragger (much better than the free mouse movement). If the part is already attached, you can release it's attachment with the corresponding button and place it manually (you can also place it manually if it's still attached, but as soon as you quit the manual placement the part snaps back to place)
Transform_Tool.png
Transform_Tool.png (217.66 KiB) Viewed 4956 times
Attachments
asm_tuto2.FCStd
(61.12 KiB) Downloaded 54 times
try the Assembly4 workbench for FreCAD — tutorials here and here
shadybob
Posts: 18
Joined: Wed Jun 06, 2018 5:50 pm

Re: Is there an ability to drag and rotate parts freely in assemblies yet?

Post by shadybob »

kbwbe: Thanks for pointing that feature out to me. I've been struggling with figuring out how to use A2plus more so than Assembly4 so far (I can't seem to find a good tutorial for it that is up to date?). However, the one additional thing I would request in A2plus is that this ability to move the parts be the default. You shouldn't have to push a button first. Also, the assembly should only move when you press the mouse down on the part, and stop when you let go. Currently, it looks like it keeps moving even after you release the mouse button, until you hit the escape key?

Zolko: That is an interesting feature. I like how you setup the handles so you can rotate or shift along the axes. It is reminiscent of Inventor's "Free Move" and "Free rotate" commands, but better I think so far. One problem I am having with assembly4 is that it appears you have to have the part you want to place open in freecad already in order for it to show up in the placement dialog? Is there any way to place a part by instead selecting it from a file open style dialog box?

Question for both of you (I suppose I could look at github to try to figure it out): Are these modules programmed completely in python, or are you also using C++? I never learned C++!
catman
Posts: 412
Joined: Fri Jan 11, 2019 10:42 pm

Re: Is there an ability to drag and rotate parts freely in assemblies yet?

Post by catman »

shadybob wrote: Tue Jan 28, 2020 5:58 pm Is there currently anyway to do the following in Freecad (assemblies): I would really like to see an inplementation similar to Inventor:
Great to to see an experienced user taking a deeper look at FreeCAD.

Sometimes it easy to overlook that that FreeCAD is not a finished project (thus versions are below V1.0). Not all developers have the focus to optimize usability, minimize clicks for certain tasks, etc. as long as there are basics on the todo list. Sometimes patience is required (struggeling with that myself) ;).

Although some things are quite intuitive to use from knowledge of commercial tools (like Sketcher, PartDesign) still I found that FeeCAD needs a steep learning curve. Every day I am finding things that can be done that I was not aware of. Also every day I find things that could be improved 8-)

There is no assembly like in Inventor at this time. Not too long ago that was hardly any assembly at all! As the other answers showed there are parts of what you are looking for distributed between A2plus, Assembly4 and Assembly3 (Assembly3 requires a custom FreeCAD version). But there are not all combined in one place and they are not compatible. Please be aware that assembly is not a finished feature of FreeCAD. There is no final unified concept yet.

Afaik most workbenches are done in Python: If you are good in python, it should be much quicker for you to see how things are working under the hood than for an ordinay new user. You can modify all sorts of stuff and change things you do not like. The core developers want to keep the core as small as possible in order to allow most functionality to be done in FreeCAD. There are only a few workbenches done in C++ (I am aware of Sketcher, but there might be a few more). So Python brings you a lot further in FreeCAD as C++.
shadybob wrote: Tue Jan 28, 2020 5:58 pm 4. Once you place one constraint, you still have the ability to freely drag the part around in the unconstrained directions.
This should be a key feature of Assembly3. I guess the solver of A2plus can not calculate that in real time. You should check out the custom version of realthunder.
shadybob wrote: Tue Jan 28, 2020 5:58 pm 5. Perhaps have a dedicated assembly document (similar to Inventor, SolidWorks, etc)?
There is not difference in FreeCAD. To get an assembly document just make a normal FreeCad file and only place links in that. Its best to see with the Asembly4 default structure. Links only go into the "Model" structure. If you want to have links and geometry in one document put the geometry in the "Parts" folder. Then you can link the parts from there into the "Model" structure. Its works the same way as external links but is from the local document. So you can have pure part docs, pure assemlby docs and mixed part and assembly docs. Also you can convert one to the other at any time. I think that is a lot more useful than in Invetor.

The restriction to keep documents open seems to be not so easy to resolve. For larger models it a bit of a hassle to handle and close all these files indeed. I would expect that a solution requires rather complex core extensions. If you tried to rename or move files on disk that are used in an Invetor assembly you are probably aware of the complexies invovled.
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Is there an ability to drag and rotate parts freely in assemblies yet?

Post by kbwbe »

shadybob wrote: Wed Jan 29, 2020 12:55 pm kbwbe: Thanks for pointing that feature out to me. I've been struggling with figuring out how to use A2plus more so than Assembly4 so far (I can't seem to find a good tutorial for it that is up to date?).
A basic tutorial, which is not complete outdated can you find here: https://www.youtube.com/watch?v=QMxcQ5tssWk
Perhaps you know it already. I think i will do a new one next time, as there are some very new features.
shadybob wrote: Wed Jan 29, 2020 12:55 pm However, the one additional thing I would request in A2plus is that this ability to move the parts be the default. You shouldn't have to push a button first. Also, the assembly should only move when you press the mouse down on the part, and stop when you let go. Currently, it looks like it keeps moving even after you release the mouse button, until you hit the escape key?
Thats correct. I will try to improve this next time.
shadybob wrote: Wed Jan 29, 2020 12:55 pm Question for both of you (I suppose I could look at github to try to figure it out): Are these modules programmed completely in python, or are you also using C++? I never learned C++!
A2plus and Assembly4 are completely Python workbenches, no C++ inside. A2plus also has a pure python solver for the constraints. Assembly4 uses the expression engine.
KBWBE

https://github.com/kbwbe/A2plus
latest release: v0.4.56, installable via FreeCAD's addon manager
Tutorial: gripper assembly https://www.youtube.com/watch?v=QMxcQ5tssWk
Documentation: https://www.freecadweb.org/wiki/A2plus_Workbench
Post Reply