assembly without solver

Discussion about the development of the Assembly workbench.
User avatar
Zolko
Posts: 390
Joined: Mon Dec 17, 2018 10:02 am

Re: assembly without solver

Postby Zolko » Mon Dec 17, 2018 7:10 pm

saso wrote:
Mon Dec 17, 2018 5:30 pm
But building an assembly from different files or having all of it in one file is also not what makes an assembly.
yes it does: because a big part of any design is to re-use existing stuff, be it standard parts like screws, washers, bearings..., or be it other elements coming from colleagues, or be it parts of your own previous designs. If you can't re-use what has been done before you'll spend your time re-inventing the wheel. Literally.

Therefore, one fundamental part of a CAD system is the ability to insert external models into your assembly. Most manufacturers provide now CAD files (often in STEP) of their parts, and the ability to include those into FreeCAD is a make-or-loose question. The image below comes from SolidWorks, and most parts come from the manufacturer (Thorlabs) and I have designed only 3 or 4 parts that are specific to our project.
Attachments
M1_3D.png
M1_3D.png (149.6 KiB) Viewed 658 times
try the Assembly4 workbench for FreCAD v0.19
installable with Tools > Addon Manager, new version 0.7. Simple tutorial here
User avatar
Zolko
Posts: 390
Joined: Mon Dec 17, 2018 10:02 am

Re: assembly without solver

Postby Zolko » Mon Dec 17, 2018 7:27 pm

kbwbe wrote:
Mon Dec 17, 2018 6:47 pm
@Zolko: Perhaps i do not get behind the hidden secrets of your proposals and you have to explain it more detailed to me.
Zolko wrote: Later, it should be possible to define degrees of freedom in the LCS and develop constraints to solve them (for example you can leave the rotation around an axis free, or a translation...). The number of degrees of freedom would be limited to those expressly authorised, thus the solver much simpler than having to solve all 6 degrees of freedom for all parts. This can be implemented at a later stage to provide a full assembly functionality that wouldn't lag the leading CAD systems.
A solver needed ? This differs from threads topic.
I said "later", meaning that doing assembly like I propose is not a dead end, it can later evolve to something more sophisticated, even if it begins very simple. I tried to anticipate remarks.
Zolko wrote: For example, if you want to insert a screw, you define an LCS at the hole, an LCS at the neck of the screw, and you're done.
A constraint is something like a local LCS, combined already with the degrees of freedom. A constraint takes reference points, some axis and (Edit: each half of it) is moved with the body, where it has been defined. OK, it is attached to geometry and cannot be defined without. Where is the advantage of the new proposal ? I do not get it. (no offense, but please explain)
OK, I'll try. Take my example of a hole and a screw. You have made a plate with a simple hole, and inserted a screw into your assembly placing it concentric with the edge of the hole. Nice. Later, you refine your design and you have put a chamfer at the entrance of the hole: PAF, the geometrical reference for the placement has disappeared.

But if you had defined an LCS in the file of your plate, at the edge of that hole, the LCS will not disappear when you add later a chamfer, because it has been defined after the hole, but before the chamfer, therefore, your screw will not see any difference with or without chamfer. This is what actually happens all the time with constraint-driven assemblies.

Another example is if you design a complex mechanics, and you know you'll have a rotation somewhere, but you don't know yet if your axis will be moving or fixed, if you do it with a protrusion or an added part, or whatever. But you know you'll have a rotation. Well, easy: you create there an LCS (with 1 degree of freedom may-be) and you build your assembly with that. If your axis is part of the fixed root assembly, or part of the moving part, you don't have to care: you attach the moving part to the LCS.

Another thing is that even if a constraint is sort-of an LCS, if it's a proper LCS it's a mathematically inversible problem, you don't have to solve, to detect, or anything: it's there, explicitely.
try the Assembly4 workbench for FreCAD v0.19
installable with Tools > Addon Manager, new version 0.7. Simple tutorial here
User avatar
saso
Posts: 1332
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: assembly without solver

Postby saso » Mon Dec 17, 2018 7:43 pm

Zolko wrote:
Mon Dec 17, 2018 7:10 pm
saso wrote:
Mon Dec 17, 2018 5:30 pm
But building an assembly from different files or having all of it in one file is also not what makes an assembly.
yes it does...
no it doesn't :) i am not saying that it is not a desired function for a cad program (and there are currently at least three developer initiatives that work to add that to freecad as far as i know) but it is not the basic of an assembly. almost every cad program has this function to link files, autocad for example also has x-refs, but you cannot say that it has assemblies. the type of tree structure that ppemawm is doing is the best what we have for assemblies in freecad at the moment, it itself is not yet finished so it is not working as it should, the problem is that different assembly workbench initiatives are ignoring this and not continuing on top of this foundations.
Last edited by saso on Mon Dec 17, 2018 7:51 pm, edited 1 time in total.
User avatar
easyw-fc
Posts: 2663
Joined: Thu Jul 09, 2015 9:34 am

Re: assembly without solver

Postby easyw-fc » Mon Dec 17, 2018 7:44 pm

Zolko wrote:
Mon Dec 17, 2018 6:59 pm
but then it's a one-off design. More-or-less for fun, not proper engineering.
:?: :?
ppemawm wrote:
Mon Dec 17, 2018 7:07 pm
There is usually more than one way to productively 'skin the cat'. Thank goodness.
AhAhah +1 from my side @ppemawm ...
PS @Zolko I use FC to make assemblies of pcb and parts (STEP models) and then put it in enclosure and FC works very well even compared to commercial CADs
copter-assembly.png
copter-assembly.png (312.42 KiB) Viewed 647 times
Mark Szlazak
Posts: 405
Joined: Tue Apr 04, 2017 6:06 pm
Location: Edmonton, Canada

Re: assembly without solver

Postby Mark Szlazak » Mon Dec 17, 2018 8:14 pm

Zolko wrote:
Mon Dec 17, 2018 7:27 pm
kbwbe wrote:
Mon Dec 17, 2018 6:47 pm
@Zolko: Perhaps i do not get behind the hidden secrets of your proposals and you have to explain it more detailed to me.
Zolko wrote: Later, it should be possible to define degrees of freedom in the LCS and develop constraints to solve them (for example you can leave the rotation around an axis free, or a translation...). The number of degrees of freedom would be limited to those expressly authorised, thus the solver much simpler than having to solve all 6 degrees of freedom for all parts. This can be implemented at a later stage to provide a full assembly functionality that wouldn't lag the leading CAD systems.
A solver needed ? This differs from threads topic.
I said "later", meaning that doing assembly like I propose is not a dead end, it can later evolve to something more sophisticated, even if it begins very simple. I tried to anticipate remarks.
Zolko wrote: For example, if you want to insert a screw, you define an LCS at the hole, an LCS at the neck of the screw, and you're done.
A constraint is something like a local LCS, combined already with the degrees of freedom. A constraint takes reference points, some axis and (Edit: each half of it) is moved with the body, where it has been defined. OK, it is attached to geometry and cannot be defined without. Where is the advantage of the new proposal ? I do not get it. (no offense, but please explain)
OK, I'll try. Take my example of a hole and a screw. You have made a plate with a simple hole, and inserted a screw into your assembly placing it concentric with the edge of the hole. Nice. Later, you refine your design and you have put a chamfer at the entrance of the hole: PAF, the geometrical reference for the placement has disappeared.

But if you had defined an LCS in the file of your plate, at the edge of that hole, the LCS will not disappear when you add later a chamfer, because it has been defined after the hole, but before the chamfer, therefore, your screw will not see any difference with or without chamfer. This is what actually happens all the time with constraint-driven assemblies.

Another example is if you design a complex mechanics, and you know you'll have a rotation somewhere, but you don't know yet if your axis will be moving or fixed, if you do it with a protrusion or an added part, or whatever. But you know you'll have a rotation. Well, easy: you create there an LCS (with 1 degree of freedom may-be) and you build your assembly with that. If your axis is part of the fixed root assembly, or part of the moving part, you don't have to care: you attach the moving part to the LCS.

Another thing is that even if a constraint is sort-of an LCS, if it's a proper LCS it's a mathematically inversible problem, you don't have to solve, to detect, or anything: it's there, explicitely.

Maybe you should have started the topic with a different title because what seems important is the additional step of specifying local coordinate systems and degrees of freedom before inserting a part. Otherwise, you get these disagreements on what an assembly “really” is. Btw, I like the simplicity of this solver but it seems to slow the process of creating the assembly down. What do you think?
chrisb
Posts: 18793
Joined: Tue Mar 17, 2015 9:14 am

Re: assembly without solver

Postby chrisb » Mon Dec 17, 2018 8:17 pm

Can you please restrict the quotes to the relevant parts? If you quote it all then you can omit it completely. Noone following the task will read this in all its length twice.
User avatar
Zolko
Posts: 390
Joined: Mon Dec 17, 2018 10:02 am

Re: assembly without solver

Postby Zolko » Mon Dec 17, 2018 8:34 pm

Mark Szlazak wrote:
Mon Dec 17, 2018 8:14 pm
Maybe you should have started the topic with a different title because what seems important is the additional step of specifying local coordinate systems and degrees of freedom before inserting a part. Otherwise, you get these disagreements on what an assembly “really” is. Btw, I like the simplicity of this solver but it seems to slow the process of creating the assembly down. What do you think?
well, sorry, I said I was new here, I'm still learning the local rules of engagement.

Yes, you're right, the first step is to add first LCS before being able to assemble parts along this procedure. On the other hand, even the CAD systems that do have constraints do have a particular constraint: matching of LCS (from the original part and from the target assembly). So what I propose is to implement that particular constraint first.
try the Assembly4 workbench for FreCAD v0.19
installable with Tools > Addon Manager, new version 0.7. Simple tutorial here
User avatar
Zolko
Posts: 390
Joined: Mon Dec 17, 2018 10:02 am

Re: assembly without solver

Postby Zolko » Mon Dec 17, 2018 8:50 pm

Mark Szlazak wrote:
Mon Dec 17, 2018 8:14 pm
Maybe you should have started the topic with a different title because what seems important is the additional step of specifying local coordinate systems
I've actually also bumped a thread about this, dating ... 2012 !
but it seems to slow the process of creating the assembly down. What do you think?
Well, it forces you to think in terms of functionality, not geometry. Once you get used to it, it's much faster.
try the Assembly4 workbench for FreCAD v0.19
installable with Tools > Addon Manager, new version 0.7. Simple tutorial here
Mark Szlazak
Posts: 405
Joined: Tue Apr 04, 2017 6:06 pm
Location: Edmonton, Canada

Re: assembly without solver

Postby Mark Szlazak » Mon Dec 17, 2018 8:53 pm

Zolko wrote:
Mon Dec 17, 2018 8:34 pm
Mark Szlazak wrote:
Mon Dec 17, 2018 8:14 pm
Maybe you should have started the topic with a different title because what seems important is the additional step of specifying local coordinate systems and degrees of freedom before inserting a part. Otherwise, you get these disagreements on what an assembly “really” is. Btw, I like the simplicity of this solver but it seems to slow the process of creating the assembly down. What do you think?
well, sorry, I said I was new here, I'm still learning the local rules of engagement.

Yes, you're right, the first step is to add first LCS before being able to assemble parts along this procedure. On the other hand, even the CAD systems that do have constraints do have a particular constraint: matching of LCS (from the original part and from the target assembly). So what I propose is to implement that particular constraint first.
Sure, the LCS would be the underlying backbone and ever more complex constraints could be built on it and added over time. Both types could be present and one could choose either depending on circumstances. I like that idea.
Jee-Bee
Posts: 1957
Joined: Tue Jun 16, 2015 10:32 am
Location: Netherlands

Re: assembly without solver

Postby Jee-Bee » Tue Dec 18, 2018 6:51 am

I would say an assembly is not a big thing as in structure reusable parts etc... It is NOT that if there is no assembly structure FC is unusable!
Just as FC there are enough other packages that use a single workspace (rhino, Creo direct modeling, Autodesk fusion 360, ...). and just start. Here is not spoken about all the BIM sector as their workflow is completely different from machine building for example.
PTC Creo (the first fully parametric CAD package)is going partly back to direct modeling, just because it is faster a lot of circumstances. (They are merging Creo Direct modeling and Creo Parametric.)

As a machine builder where everything works this way i understand your(all of you) critiques. But Please don't complain about "it is not workable". buy yourself a fresh new licence of Creo or solid works (€2000 i guess excluding all fancy and great add-ons) for Christmas and go loose!
If you don't have that amount of money maybe you can pay a few percents of it to the developeres of for example Assembly 2 plus or assembly 3. Maybe give it to FC for all the hard work they do.
Last but not least start a programming course. Take you're time and maybe fail (as i did). but learn the amount of work is needed for a small contribution. It gives the developers the respect they NEED!