Assembly 4 workbench

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
bernard_01
Posts: 47
Joined: Sun Mar 24, 2019 9:22 am

Re: Assembly 4 workbench

Post by bernard_01 »

Zolko wrote: Sun Sep 25, 2022 12:55 pm
bernard_01 wrote: Sun Sep 25, 2022 10:46 am I renamed in Z_AxisLinearArm.FCStd an "Attached To" LCS from LCS_A_Axis_RotationalArmPart to LCS_A_Axis_RotationalArmAssembly
what do you mean by "I renamed an Attached To ..." ? These properties are handled by the "place part" function, if you edit them by hand you must be very sure you know what you're doing
I am really trying to stay within the rules, the boundaries, believe me. You can see that my models are very simple and conservative. I have used the model tree and edited the name there. Some editing should be possible. And I think that the system should report an error. Should report an error NOW after the fact even. The situation I see is truly horrifying. You don't want to teach your users to stay away from normal behavior. What happens then is that you have a system that only works because it does not break due to extremely defensive use. My use is in fact extremely defensive. The benefit is that you can see EXACTLY what happened and it should be reproducible.
drmacro
Veteran
Posts: 8867
Joined: Sun Mar 02, 2014 4:35 pm

Re: Assembly 4 workbench - selection filter tools

Post by drmacro »

I liked the idea of the selection tools, so I added them to my global toolbar.

Figured I do some testing. Opened the selection view and activated the edge only filter.

But, clicking on faces, faces showed up in the selection view.

Should I see faces in the selection view with the edge filter set?

If so, when is the filter applied?

Edit: never mind, I see the workbench has to be loaded.
Star Trek II: The Wrath of Khan: Spock: "...His pattern indicates two-dimensional thinking."
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

bernard_01 wrote: Sun Sep 25, 2022 1:17 pm ... believe me....
I never believe anyone saying "believe me". And you didn't answer my question, so I can't help
try the Assembly4 workbench for FreCAD — tutorials here and here
bernard_01
Posts: 47
Joined: Sun Mar 24, 2019 9:22 am

Re: Assembly 4 workbench

Post by bernard_01 »

Zolko wrote: Sun Sep 25, 2022 1:39 pm
bernard_01 wrote: Sun Sep 25, 2022 1:17 pm ... believe me....
I never believe anyone saying "believe me". And you didn't answer my question, so I can't help
You don't need to believe be because you can test everything I said. So I am trying to answer your question. I went into the "Model" tab. Then I highlighted the tree node and changed it using the [F2] function key. After editing, the name of the node was changed from "LCS_A_Axis_RotationalArmPart" to "LCS_A_Axis_RotationalArmAssembly". That is all I did. I did not edit anything in the Properties sheet. IMHO if this editing that I did is not supported, then it should be disabled.

BTW I don't know why you took this personally. I am just trying to express that I want to be conformant with the spirit of the system as I see it and not introduce my own ideas. So please see this as a sign of cooperation not confrontation.
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

bernard_01 wrote: Sun Sep 25, 2022 1:50 pm After editing, the name of the node was changed from "LCS_A_Axis_RotationalArmPart" to "LCS_A_Axis_RotationalArmAssembly". That is all I did
looks reasonable .... where's your problem then ?
try the Assembly4 workbench for FreCAD — tutorials here and here
bernard_01
Posts: 47
Joined: Sun Mar 24, 2019 9:22 am

Re: Assembly 4 workbench

Post by bernard_01 »

Zolko wrote: Sun Sep 25, 2022 1:55 pm
bernard_01 wrote: Sun Sep 25, 2022 1:50 pm After editing, the name of the node was changed from "LCS_A_Axis_RotationalArmPart" to "LCS_A_Axis_RotationalArmAssembly". That is all I did
looks reasonable .... where's your problem then ?
The problem is that the property sheet which I think is the proper way to explore the relationships and start up up the dialogs via [...] buttons shows me the old value and I have no way of finding out what the relationship is because the parent LCS does not exist as shown in the sheet. I cannot rely on my memory to guess which one is correct. This LCS stuff is not trivial, and I need accuracy there to not get confused.

In other words, judging by the names, after a rename, the system creates the illusion that the number of LCSs increased, and if I don't keep that in my head, then I am running around in circles trying to eliminate superfluous coordinate systems that don't even exist in reality. That is actually the problem I was facing before I noticed what really happened.

The next thing is that I want to use Python to animate the assembly and then I have the same problem of trying to guess which names to use in Python. So I am basically paralyzed now because I don't know whether what I want to do will ever work.
Last edited by bernard_01 on Sun Sep 25, 2022 2:24 pm, edited 1 time in total.
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: Assembly 4 workbench

Post by Zolko »

bernard_01 wrote: Sun Sep 25, 2022 2:06 pm The problem is that the property sheet ... shows me the old value
no it doesn't. It shows the actual "Name", and what you have changed is the "Label". Names in FreeCAD are immutable, when a user renames an object only the user-facing Label changes, but not the internal Name. If you want to convince yourself try to reposition the relevant part and you'll see that the LCS shows up with both its Name and Label. And if you want to script your model you're better off using Names rather than Labels.
try the Assembly4 workbench for FreCAD — tutorials here and here
bernard_01
Posts: 47
Joined: Sun Mar 24, 2019 9:22 am

Re: Assembly 4 workbench

Post by bernard_01 »

Zolko wrote: Sun Sep 25, 2022 2:21 pm
bernard_01 wrote: Sun Sep 25, 2022 2:06 pm The problem is that the property sheet ... shows me the old value
no it doesn't. It shows the actual "Name", and what you have changed is the "Label". Names in FreeCAD are immutable, when a user renames an object only the user-facing Label changes, but not the internal Name. If you want to convince yourself try to reposition the relevant part and you'll see that the LCS shows up with both its Name and Label. And if you want to script your model you're better off using Names rather than Labels.
I understand. Now please show me some place in the system where I can see the internal name as you say and the label of it as I changed it in the same property sheet. I need a way to see that association. When I highlight the changed label LCS "LCS_A_Axis_RotationalArmAssembly" in the model tree and then explore its properties in the property sheet then I cannot see the internal name only the Label. So the internal name is hidden here.
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: Assembly 4 workbench

Post by ppemawm »

bernard_01 wrote: Sun Sep 25, 2022 1:17 pm You can see that my models are very simple and conservative.
You may be over-complicating it. I used to change all the labels when first learning Assembly4 but found it to be very confusing very quickly as my assemblies became more complex. Renaming is a lot of work, requires maintenance if you want to change it, and clutters the model tree and the assembly panels. Now, all I do is choose a simple meaningful name for the file name to describe either an individual part/body or a sub-assembly. Then I only change the label of the Body and never re-label the assembly links or LCS's. If I want to add something to remind me I use the Label2 property in the Description field for reminders (right click the Property View and Base>Show All to add the label).

The other thing I notice in your file is that you are not using the Assembly4 Part and Body containers. These containers include default LCS which are intended for use during assembly. You can use this LCS as the primary assembly interface for the body or sub-assembly and then add any LCS's or hole axes for anything else that attaches to the body. It is important that first sketch in the body take advantage of the default LCS, e.g. if you have a primary mounting hole, pilot, foot, etc. then the first sketch of that feature should coincide with the default LCS. I rarely have to add any LCS's to the Model unless I am using a master sketch as the assembly solver.

I assume that your files will be part of a larger assembly, but I notice that you have all of your bodies or sub-assemblies attached to the Parent Assembly. That means they are all independent of each other which I'm not sure if that is what you want. I.e. if you move one via Placement or Attachment Offset then nothing else moves. They should usually be attached to each other so that if one moves the others move logically with them. The exception is if you are using a master sketch as a solver then you attach all the moving parts to the sketch.
bernard_01 wrote: Sun Sep 25, 2022 2:06 pm The next thing is that I want to use Python to animate the assembly
Why not use the Assembly4 animator? It can handle almost any complex animation using Variables and Expressions. And, it conveniently provides an video file for sharing.

My 2 cents and only a humble opinion, but only after 100's of hours building complex assemblies with Assembly4.
"It is a poor workman who blames his tools..." ;)
bernard_01
Posts: 47
Joined: Sun Mar 24, 2019 9:22 am

Re: Assembly 4 workbench

Post by bernard_01 »

ppemawm wrote: Sun Sep 25, 2022 3:00 pm
bernard_01 wrote: Sun Sep 25, 2022 1:17 pm You can see that my models are very simple and conservative.
You may be over-complicating it. I used to change all the labels when first learning Assembly4 but found it to be very confusing very quickly as my assemblies became more complex. Renaming is a lot of work, requires maintenance if you want to change it, and clutters the model tree and the assembly panels. Now, all I do is choose a simple meaningful name for the file name to describe either an individual part/body or a sub-assembly. Then I only change the name of the Body and never rename the assembly links or LCS's. If I want to add something to remind me I use the Label2 property in the Description field for reminders (right click the Property View and Base>Show All to add the label).

The other thing I notice in your file is that you are not using the Assembly4 Part and Body containers. These containers include default LCS which are intended for use during assembly. You can use this LCS as the primary assembly interface for the body or sub-assembly and then add any LCS's or hole axes for anything else that attaches to the body. It is important that first sketch in the body take advantage of the default LCS, e.g. if you have a primary mounting hole, pilot, foot, etc. then the first sketch of that feature should coincide with the default LCS. I rarely have to add any LCS's to the Model unless I am using a master sketch as the assembly solver.

I assume that your files will be part of a larger assembly, but I notice that you have all of your bodies or sub-assemblies attached to the Parent Assembly. That means they are all independent of each other which I'm not sure if that is what you want. I.e. if you move one via Placement or Attachment Offset then nothing else moves. They should usually be attached to each other so that if one moves the others move logically with them. The exception is if you are using a master sketch as a solver then you attach all the moving parts to the sketch.
bernard_01 wrote: Sun Sep 25, 2022 2:06 pm The next thing is that I want to use Python to animate the assembly
Why not use the Assembly4 animator? It can handle almost any complex animation using Variables and Expressions. And, it conveniently provides an video file for sharing.

My 2 cents and only a humble opinion, but only after 100's of hours building complex assemblies with Assembly4.
Your advice is appreciated. However I am coming from a different background. From my perspective you have already capitulated. As we know, one can only have one model in each file. So I need one file per model. And my structure is a 5 axis robot where in fact on every subsequent level when moved, moves all other levels below it as expected!

It is a system like Russian dolls. This is as EASY as it gets and not over-complicated at all because of the encapsulation. There might be a problem of addressing the internals on lower levels because of the encapsulation, but I will deal with that when I get there.

Sure I can put everything in one file and handle everything using formulas, using the expression engine. and THEN it gets complicated. So you can see there are different ways to achieve the same EFFECT, and there could be endless discussions about what is right and what is wrong.

As to why I do not use the assembly containers - they have become obsolete in later versions of the software - they do not add value.

You can imagine that If I build a robot, then the standard animation will not do the trick. I will use the web interface to animate it driven by an external program.
Post Reply