Assembly3 preview

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

ceremcem wrote: Sun Dec 30, 2018 10:32 am and therefore the constraints created inside this kind of assembly uses elements inside its own element group
But I would consider these elements as interfaces as wall, even if are used inside of the same assembly.
I mean I would call as interface anything that is directly referred by an assembly constraint.
I do not care if it is in the same document or not. They are still used in the same way.

Perhaps the "interface" is not the best term to describe this particular usage case but I think tat it is better than "element"
which is too generic and can be used for anything.

An other possibility (to avoid the distinction) could be to force users to create a lower level assembly (named part) before creating any geometry.
A new button (new part) should be added for that and only the parts (that are the special assemblies created by new part button) should be allowed to be dragged into a normal assembly.

This is the usual way most commercial CADs (in example Catia) are working.
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

I forgot to say that in Catia (which I take as an example of a classical CAD with multi-body capability) a single part may include several bodies (which in Catia must be solids) and geometrical sets (which in Catia are similar to FC groups where you may put any kind of geometry).
The assembly constraints can be used to establish the relative position of different parts or different sub-assemblies. But they can not be used with the bodies of a single part. For that you must use the sketch constraints.

The situation described here:
realthunder wrote: Sun Dec 30, 2018 11:35 am So I do allow adding multiple geometry models inside a bottom level assembly, and therefore the constraints created inside this kind of assembly uses elements inside its own element group.
can therefore not happen in a Catia.

With that I do not want to say that the Catia way is better than FC A3. I am simply highlighting the differences to stimulate a discussion and to better understand the merits and drawbacks of these two different approaches.
triplus
Veteran
Posts: 9471
Joined: Mon Dec 12, 2011 4:45 pm

Re: Assembly3 preview

Post by triplus »

realthunder wrote: Sun Dec 30, 2018 12:21 pm I think a single feature can do all of these. It can easily detect the intended type of shape to build by checking its children shape type. For any child vertex, it creates an edge, and so on.
Indeed. I likely could cope with any of the variations.
  • Single command with advanced geometry selection and detection algorithms.
  • A dialog listing available options.
  • A set of standalone commands, each responsible for one geometry building block.
  • ...
All this are for sure viable options. What i could imagine could happen is, when using the single command approach, rather complex command would be the outcome. Code vise? If there would be a single command, i am guessing, it should be able to tackle things like tree hierarchy in a way two points would be listed under a line, three or more lines under a wire/face, ... each item in tree having a distinctive representation, indicating the type of geometry building block it represents. Each building block having some special properties applying just for them? Likely it should be possible to redefine children, by parent acting as a drag and drop group and providing some way to redefine selections in 3D view? It can easily turn out to be a rather complex undertaking. Reserving one toolbar, for providing such functionality, could start to make sense. New users would likely grasp the concept faster, if looking at a set of standalone commands, and corresponding features they produce in the tree view, when used.

All in all i am guessing having some straightforward way to use FreeCAD in such way. That would be great!
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

Hello realthunder,
I have seen that you have merged LinkDev with LinkStage3. So I synced it and tried to use as defining the external sketch geometry.
Unfortunately FC crashed after making the following operations:
1) Start Part Design
2) Make a new part
3) Make a new body inside Part
4) create a sketch on the XY plane and make a rectangle on it.
5) make a pad from the sketch.
6) create a new sketch on the top face of previous pad.
7) Activate the External Geometry
8) Select the 4 pad edges of the top face.. the edges are projected onto the sketch as construction lines
9) Toggle these edges from construction to defining ... here FC crashes.

After that I have seen that the external geometry sub-menu allows to project the edges directly into defining lines.
In this case it works well and these projected edges can be used to create 3D geometry (in example in a second pad).

Nevertheless I think that the toggling mechanism between construction and defining lines should be fixed so that it can be used also with the external geometries.
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

wsteffe wrote: Wed Jan 02, 2019 8:10 am Nevertheless I think that the toggling mechanism between construction and defining lines should be fixed so that it can be used also with the external geometries.
Thanks for reporting. This is fixed now. I also made some changes to sketch undo/redo, to delay commitCommand until the entire command is finished. This allows user to undo any drastic sketch recompute changes due to relocating external geometry. I am not sure if this will disturb normal usage. If you find anything wrong, feel free to report. Thanks!
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
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

realthunder wrote: Thu Jan 03, 2019 8:30 am Thanks for reporting.
Thanks you for your fix.


This is a different topic, but I am a little bit concerned with your basic choice (which in my view is a big deviation from standard CAD model) of making it possible to apply assembly constraints to simple geometries belonging to the same assembly (or part).

In other commercial CADs (i.e. in Catia) athe ssembly constraints can be applied only to different sub-assemblies (or parts) while the sketch constraints can be used only inside a part. So there is a clear separation between the variables handled by the two solvers (sketch solver and assembly solver).

I am wondering if the activation of both constraint solvers in the same part could lead to troubles.
User avatar
saso
Veteran
Posts: 1924
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: Assembly3 preview

Post by saso »

wsteffe wrote: Sun Dec 30, 2018 12:32 pm An other possibility (to avoid the distinction) could be to force users to create a lower level assembly (named part) before creating any geometry.
A new button (new part) should be added for that and only the parts (that are the special assemblies created by new part button) should be allowed to be dragged into a normal assembly.
We already have a Part container.
wsteffe wrote: Sun Dec 30, 2018 2:22 pm I forgot to say that in Catia (which I take as an example of a classical CAD with multi-body capability) a single part may include several bodies (which in Catia must be solids) and geometrical sets (which in Catia are similar to FC groups where you may put any kind of geometry).
The assembly constraints can be used to establish the relative position of different parts or different sub-assemblies. But they can not be used with the bodies of a single part. For that you must use the sketch constraints.
Hope :) Yes, this is more or less the same conclusion that I also made, my suggestion was to split asm3 in two, one that would work on top of Part and Assembly containers (this would be the proper traditional Assembly WB) and one that would work between the geometries (this would then be like the use of constraints between the geometry inside a Catia Part and is also IMO how all A2, A2+ and A3 are mostly working at the moment and why I say that for me they are not assemblies in the way what traditional assemblies are).
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

wsteffe wrote: Thu Jan 03, 2019 11:09 am to split asm3 in two, one that would work on top of Part and Assembly containers (this would be the proper traditional Assembly WB) and one that would work between the geometries
That seems a good idea. At least the assembly constraints would not have to deal with the inner details of parts.

But I do not think that in Catia there is something similar to what would become the second part of the split.
As far as I know in the Part Module of Catia v5 you can use only the two-dimensional constraints of sketches.
You do not have the three-dimensional constraints which can be found only in the Assembly module.

I think to have seen that this kind of feature (hree-dimensional constraints in part design) can be found in SolidEdge and NX (thanks to the "Synchronous Technology").

It is anyway interesting that FC may offer three-dimensional constraints working also in the part design.

In the past I have seen that the Solvespace CAD allows to apply three-dimensional constraints to the geometrical entities without problems.
But, if I remember well, Solvespace doesn't have the (two-dimensional) sketch constraints. So there isn't a possibility to have a conflict between two systems of constraints acting on the same geometrical objects.

I think that also in SolidEdge and NX the utilization of three-dimensional constraints in the part design implies a different kind of operating mode which is named not ordered in the Siemens language and may be selected by the user as an alternative to the more traditional ordered mode.
In other CAD systems the not ordered mode is also called "direct" or "history free".
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: Assembly3 preview

Post by realthunder »

saso wrote: Thu Jan 03, 2019 1:32 pm Hope :) Yes, this is more or less the same conclusion that I also made, my suggestion was to split asm3 in two, one that would work on top of Part and Assembly containers (this would be the proper traditional Assembly WB)
For this part, what is the constraint applied to, if it is not geometry? Or you want to limit the user to only constrain on explicitly defined "Local Coordinate System"? What's wrong with letting them just select a face and use its position and orientation as the coordinate system? That's what A3 does. It also allows you to use datum, sketch, workplane, practically anything. They are all abstracted to what I called an "Element Object" before feeding to the solver. That's the way A3 defines LCS.

wsteffe wrote: Thu Jan 03, 2019 5:50 pm Solvespace doesn't have the (two-dimensional) sketch constraints. So there isn't a possibility to have a conflict between two systems of constraints acting on the same geometrical objects.
It has. You can checkout the skeleton sketch tutorial to see how it's done in solvespace. The solvespace CAD uses the same solver to do everything, even extruding and struff. That doesn't mean it only invokes the solver once to compute everything. Of course the thing has hierarchies. The higher hierarchy treat the lower level just like fixed geometries. The solver tries to solve the higher hierarchy only after all lower hierarchy has finished recomputation. There may (or may not) be conflicts like you worried if a sketch has external dependency across hierarchy. But cross hierarchy dependency is sometimes useful. Instead of completely disable it, I prefer to have more informing messages, or guiding system, etc.
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
wsteffe
Posts: 461
Joined: Thu Aug 21, 2014 8:17 pm

Re: Assembly3 preview

Post by wsteffe »

realthunder wrote: Fri Jan 04, 2019 1:52 am What's wrong with letting them just select a face and use its position and orientation as the coordinate system
Nothing wrong, also in Catia assembly it is possible to select two faces and apply, in example, a contact constraint between them.
The difference between Catia and FC is that in the first the two faces must belong to different sub-assemblies (or parts) while in FC
the may be in the same part.
wsteffe wrote: Thu Jan 03, 2019 5:50 pm The solver tries to solve the higher hierarchy only after all lower hierarchy has finished recomputation.

I may understand your point.
But I think that in a history based CAD as it is FC, this solver hierarchy should be driven by the feature position in the history. The feature last entered in the history should be on the root of the solver hierarchy.
There is a substantial difference between the sketch constraints and assembly constraints. The first live in a given sketch which occupies a given position in the history tree. The assembly constraints (as least the assembly constraints of Catia v5 which I know better) are not related with history. There is no difference if a given assembly constraint is entered before or after an other assembly constraint because they are solved at the same time.

But may be that also this aspect is dealt differently in FC.
Post Reply