Another approach to assembly solver (A2plus)

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

just tested with 0.17. works fine :D
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
User avatar
easyw-fc
Veteran
Posts: 3629
Joined: Thu Jul 09, 2015 9:34 am

Re: Another approach to assembly solver (assembly2relaunch)

Post by easyw-fc »

kbwbe wrote: Thu Jun 14, 2018 9:18 am just tested with 0.17. works fine :D
good to see it...
I noticed that your WB is forcing to use its icons also for Assembly2 WB
I'm attaching here a small modified version which is using the new A2 icons...

here the WB zipped with some of modification for a better integration in Qt5 and A2 coexistence ...
a2plus.zip
(520.34 KiB) Downloaded 131 times
Still the A2plus WB needs to fix the resource loader to avoid an override of other WB icons... you probably have to put a prefix like ap2_ before Icon resources with the shared name between the two WBs...
Last edited by easyw-fc on Thu Jun 14, 2018 1:31 pm, edited 1 time in total.
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

many thank, exact right timed...

this evening i planned to start with renaming. Good to have your changes before that point.
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
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

Hello Maurice,
just want to start renaming and looked at your zip. Found many icon-folders with pretty icons. (icons, icons-old, wiki, gui/. )
What is the central folder to adapt icon-names if i want to change some? Did you compile icons to code ? Should i better leave hands off renaming them?
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
User avatar
easyw-fc
Veteran
Posts: 3629
Joined: Thu Jul 09, 2015 9:34 am

Re: Another approach to assembly solver (assembly2relaunch)

Post by easyw-fc »

kbwbe wrote: Thu Jun 14, 2018 6:00 pm Hello Maurice,
just want to start renaming and looked at your zip. Found many icon-folders with pretty icons. (icons, icons-old, wiki, gui/. )
What is the central folder to adapt icon-names if i want to change some? Did you compile icons to code ? Should i better leave hands off renaming them?
icon-old was just a backup of the previous icons...
A2 uses also some compiled resources, so the icons need to be renamed before compiling them with rcc, or just move to using the icons as svg directly.
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

thanks Maurice,
at first i will use icons with your suggested names. I will first start with reworking the code files.
If some icon-names are conflicting with anything, we can change later.

P.S. I should have done a deeper look to your zip. You have already changed the codefile-names. Many Thanks.
I will go over for testing :D
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
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

Incredible,
you have done all my work i intend to do this evening. Works fine. I will reset my internal repository and use your one as new starting point.
:) :) :)

Your proposal for workbench name is not bad.
A2 => respect to hamish's work (and your contributions to it)
plus => it is not really new and is following hamish's concepts, except solver and some other things.

I can live with this name: "Assembly 2 plus" , short A2p.
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
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

New steps starting now:

3 new constraints as there are:
- point Identity
- point on line
- point on plane ()

This will have instantly effect to my rudimental topological naming, which only covers planes and edges and not vertexes. And this only with fc0.16.
Using vertexes within the muxInfo-entry of my importPart-Object will increase filesize to much. I shurely will have to change datastructure.

Nevertheless i will implement the constraints mentioned above now and will deactivate toponame checks for it.
(if topological naming is deactived, updating Parts to the assembly will possible break constraints, when parts have been modified)

So the question to the forum:
Is there anything like following pseudocode available for python:

Code: Select all


constantFaceNames = {}
for i, face in enumerate(Part.Shape.Faces):
	constantFaceNames[i] =       Part.getFaceTopoName(i) # <=== this is the important point


Same i would need for Vertexes, Edges.
The resulting names should be robust to most common modifications of a part.

I think topological naming for purpose of assembly does need to be so perfect as for PartDesign. Almost at beginning.
Machinery designers ( i am one ) mostly fix parts together by fitting planes, axes, drilling holes, some important vertexes and so on.
Fixing parts together by constraining small fillets, chamfers and other complicated things can be necessary, but not so often.

So what i want to say:
Does anyone here have such thing or is working on it ? Is something in the pipe ? Really ready or not even. Accessible for python!
Or do i have to rework my own toponamer (it is a hell)

Each help is appreciated.

kbwbe
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
triplus
Veteran
Posts: 9471
Joined: Mon Dec 12, 2011 4:45 pm

Re: Another approach to assembly solver (assembly2relaunch)

Post by triplus »

As for the name of the workbench. Take your time and don't rush into something that won't make all that much sense in the future. Topology in general can change when user goes back in the (part) design history and adds/removes stuff. Therefore end users do need to redefine Assembly relations after. In the future there likely will be some solutions available in FreeCAD mitigating the issue to some extent:

https://forum.freecadweb.org/viewtopic.php?t=27278
https://forum.freecadweb.org/viewtopic.php?t=27582

For now i would say focus only on the solver part and keep an eye on Assembly3. To see how your solutions can challenge the SolveSpace solver.
kbwbe
Veteran
Posts: 1052
Joined: Tue Apr 10, 2018 3:12 pm
Location: Germany, near Köln (Cologne)

Re: Another approach to assembly solver (assembly2relaunch)

Post by kbwbe »

I understand. Will work on solver as you proposed. (As contribution to FreeCAD)

Getting same performance as SolveSpace will be hard. Pure Python working together with FreeCAD's basic api will be fast, but not as fast as SolveSpace.

The topological naming issue is still frustrating. I know the links you have posted. Nothing seems to be really ready.

I have a different opinion how endusers should work with assembly.
If constraints refer to geometric Elements which still exist unchanged within a modeltree, but the user changed some small other things, these should not have to break. Commercial products can do this.
Example: A standard part, build into many of customized assemblies, you do only a small modification of the Part, perhaps a new complete uncritical hole.
If using Assembly2: All customized assemblies will be blown up. Definitely. Who should use it ?

If this topic will not be solved, IMHO endusers will not accept an assembly, regardless which variant. I hope, RealThunder's assembly crack's the nut.

Enough. I concentrate on the solver..
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