file and directory philosophy

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: file and directory philosophy

Post by Zolko »

roerich_64 wrote: Mon Oct 21, 2019 9:50 pm to give an answer, Zolko, i will speak with my employer tomorrow to need there the I-Net
Is it ok for you?
that would be great, yes. Thanx
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: file and directory philosophy

Post by roerich_64 »

Zolko wrote: Mon Oct 21, 2019 9:19 pm
roerich_64 wrote: Mon Oct 21, 2019 8:59 pm
Zolko wrote: Mon Oct 21, 2019 10:27 am In OpenSceneGraph the LOD is managed by the viewer, but I don't find it in FreeCAD. Did you add some extra magic or is there a hidden feature ?
Hi Zolko,
please don't think so complicated... ;-)
Please follow my tutorial...
I tried but I don't understand: Now you can switch the LOD (Level of Detail)

How do you go from LOD 1 to LOD 2 ? I understand that you include in the assembly a simplified model, and it's possible to switch between the real (full) model and the simplified one. But how ? How do you trigger one or the other ? And how do you trigger it from the assembly ?
Hi Zolko,
A2+ take parts out of a subassembly when they switched to visible with the spacebar.
All not visible parts in the subassembly, they dont imported to the higher file...

It is easy to go to the subassembly with the 'Edit an imported Part' botton, switch there the right part on and/or off and go back with the 'Save and Exit' botton.
Then klick 'update Parts'.
For me whery logical and easy ;-)

Feel free, when you have more questions. And when you need, i can build a Video from the procedure...
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: file and directory philosophy

Post by Zolko »

roerich_64 wrote: Tue Oct 22, 2019 7:44 pm
Zolko wrote: Mon Oct 21, 2019 9:19 pm How do you go from LOD 1 to LOD 2 ? I understand that you include in the assembly a simplified model, and it's possible to switch between the real (full) model and the simplified one. But how ? How do you trigger one or the other ? And how do you trigger it from the assembly ?
It is easy to go to the subassembly with the 'Edit an imported Part' botton, switch there the right part on and/or off and go back with the 'Save and Exit' botton. Then klick 'update Parts'.
Thank-you, I think I understand. I still have a doubt: when you update the part, is it updated only in the assembly or every-where else in FreeCAD ? What I mean is that the representation you have in the assembly is it necessarily the same as the representation you have when opening the part/subassembly in its own window ?

When I take your example about the house and CNC controller, could you have, at the same time, a simplified representation of the controller in the house and a full representation in a separate window ?
try the Assembly4 workbench for FreCAD — tutorials here and here
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: file and directory philosophy

Post by roerich_64 »

Zolko wrote: Wed Oct 23, 2019 6:18 am When I take your example about the house and CNC controller, could you have, at the same time, a simplified representation of the controller in the house and a full representation in a separate window ?
Yes, why?
A2+ makes a own 'A2+ copy' of the part or a subassembly when it was imported in the assembly.

simplified representation:
- take 'edit' the part / subassembly - file
- switch on the simplified model (master body)
- switch off the 'part / subassembly'
- reload this part / subassembly - file
- update the assembly.
Now you see the simplified model.

full representation:
- take 'edit' the part / subassembly - file:
- switch off the simplified model (master body)
- switch on the 'part / subassembly'
- reload this part / subassembly - file
- update the assembly.
Now you see the full model.

When you open before this procedure the same assembly two times, you can take in one window the procedure 'simplify' and in the other window the procedure 'full'.

Also you can safe this two assemblies in two files for the simplified look and the full look.

BR
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

Re: file and directory philosophy

Post by Zolko »

roerich_64 wrote: Sat Oct 26, 2019 8:11 am A2+ makes a own 'A2+ copy' of the part or a subassembly when it was imported in the assembly.
ah OK, yes, then I understand
try the Assembly4 workbench for FreCAD — tutorials here and here
catman
Posts: 412
Joined: Fri Jan 11, 2019 10:42 pm

Re: file and directory philosophy

Post by catman »

roerich_64 wrote: Sat Oct 26, 2019 8:11 am simplified representation:
- take 'edit' the part / subassembly - file
- switch on the simplified model (master body)
- switch off the 'part / subassembly'
- reload this part / subassembly - file
- update the assembly.
Now you see the simplified model.

full representation:
- take 'edit' the part / subassembly - file:
- switch off the simplified model (master body)
- switch on the 'part / subassembly'
- reload this part / subassembly - file
- update the assembly.
Now you see the full model.

When you open before this procedure the same assembly two times, you can take in one window the procedure 'simplify' and in the other window the procedure 'full'.
BR
Walter
I really like that "Ware/House" approach very much. It's a bit like the new Industry4.0's idea of a digital twin for everything. And having a digital twin for your own house/workshop is quite a cool idea, especially when taking it to far to put each tool in its respective drawer. With todays STEP databases I think we have no shortage of parts, we have a shortage of a storage and handling concept. Having an easy to use LOD mechanism in FreeCAD would really be a cool thing.
Currently I am trying an example setup of what you have shown. I am wondering if A2+ is really working or if this would not ask for Zolkos Assembly4 local coordinate system approach. I am not sure if there is some LOD handling concept in Realthunders Assembly3 concept yet.

However, I must admit, I am not fully there. There are some things which are not fully clear to me yet.

For example the LOD switchting. Lets take a simple example, e.g. a building with 2 rooms with a door between them. The door will have 3 different level of detail models.
TextSceneSetup_default_LOD0.jpg
TextSceneSetup_default_LOD0.jpg (79.25 KiB) Viewed 1153 times
This is the described test scene with LOD 0. This is what you will get in the attached zip file.

TextSceneTarget_LOD2.jpg
TextSceneTarget_LOD2.jpg (80.5 KiB) Viewed 1153 times
This is how the test scene should look like with the door set to the second level-of-detail (LOD 2)



Here is the file structure (the // are comments only), empty folders are not shown:
  • building_master.FCStd // placeholder building: a transparent extruded rectangle
    building_asm.FCStd
    1_Parts
    • 0_Room1
      • room1_master.FCStd // placeholder room1: a transparent extruded rectangle. No door
        room1_asm.FCStd // pure A2+ file. Contains placeholder room1 and door_asm.FCStd.
        // the door is attached to a wall using A2+ constraints
        1_Door
        • door_master.FCStd // placeholder door: a box, 15cm thick, transparent
          door_asm.FCStd // pure A2+ file. Contains placeholder, door and door with knob.
        • 1_Parts
          • door.FCStd // the detailed door: a solid box, 5cm thick, white
            knob.FCStd // a door nob: a small solid cylinder, red
          2_Assembly
          • doorWithKnob_asm.FCStd // a detailed door with 2 knobs, made from the files in 1_Parts
      1_Room2
      • room2_master.FCStd // placeholder room2: a transparent extruded rectangle. No door
        room2_asm.FCStd // pure A2+ file. Contains placeholder room2

The tree hierarchy in the files is as follows:
  • building_asm.FCStd
    • building_master
      room1_asm
      room2_asm
The file 'garage_asm.FCStd' is the main file. In this file the rooms are assembled within the box by using A2+ constraints. For example all lower surfaces use a 'planeCoincident' constraint to be on the ground. The building_master.FCStd is defined as 'fixed'. The two rooms are attached using the door between them as attachment geometry, again using 'planeCoincident' constraints.

The only LOD we have in this setup is the door.
  • room1_asm.FCStd
    • room1_master // the room placeholder box
      door_asm // the default is also the transparent placeholder version
Attach the door to the correct position at the wall using A2+ constraints.

The actual LOD is done in the door_asm.FCStd file. Here all available door versions must be at the same position.
  • door_asm.FCStd
    • door_master // the door placeholder box
      door // the thinner solid version of the door.
      doorWithKnob_asm // the detailed door
In the tree set the 'door.FCStd' and 'doorWithKnob_asm.FCStd' to invisible (space bar). This is the default setup.

The building_asm file is the main file of our Project. When we open it we see only the lowest level of detail (LOD 0).
The normal procedure to to switch the door to LOD 2 woud be:
* file buidling_asm should be open
* select room1_asm in the tree
* select A2+ WB/EditImportedPart (icon with pencil)
* a new tab with the room1_asm.FCStd should open
* select door_asm in the tree
* select A2+ WB/EditImportedPart (icon with pencil)
* a new tab with the door_asm.FCStd should open
* use <SPACE> to toggle visibilitly off for door_master
* use <SPACE> to toggle visibilitly on for doorWithKnob
* Save the changed file
* close file
* go back to the room1_asm file
* select A2+ WB/UpdatePart (icon with green arrows)
* Save the changed file
* close file
* go back to the building_asm file
* select A2+ WB/UpdatePart (icon with green arrows)


Now, this did not work, because toggling the visibilty to a different LOD geometry in the door_asm file will invalidate the constrains all up the chain. I get the error messages in the images below in the room1_asm.FCStd fild as well as in the buidling_asm.FCStd file.
TextScene_LODswitching_Error_Constraint.jpg
TextScene_LODswitching_Error_Constraint.jpg (61.52 KiB) Viewed 1153 times
The first error in the room1_asm.FCStd file after swapping the visibilty in the door_asm.FCStd file.

TextScene_LODswitching2LODs_ErrorConstraint.jpg
TextScene_LODswitching2LODs_ErrorConstraint.jpg (68.74 KiB) Viewed 1153 times
Ther error is not contained in the room1_asm.FCStd file. When its saved, also the upper level files generate an error when updated.

What is wrong?
* obviously the A2+ setup in the attached project (its a zip file with the folder structure) can not handle any change in the lower level assembly file (here door_asm.FCStd).
* it does not work to keep the door_master visible, the constraints still become invalid when other geometry is added. But even when it would work, that would mean to make this always fully transparent when switching to another LOD. The usability would be quite a bit reduced.
* clearly, when the LOD geometry has different dimensions, I do not understand how A2+ could solve the problem at all. And higher LODs having slightly different dimensions should be the standard case.

But looking at the posts above, there seems to be a solution.
How to solve it?

TestSceme.zip
(233.23 KiB) Downloaded 30 times
The attached file is the default setup, with working constraints to all master geometries. I recommend to make a backup copy before applying changes.
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: file and directory philosophy

Post by roerich_64 »

Hi Catman,

the 'trick' is: delete the constraints ;-)

Why can we do this?
All parts in a house are static parts and A2+ updates the x/y/z positions of solved parts.
So after deleting the constraints the parts will stay on his place ;-)

When you have taken the door in the subassembly at the same directon and at the same place as the master_body (LOD 0), then it comes to the Master_assembly at the same place and direction as the master_body of the door was ;-)

I hope, this helps.

BR
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
catman
Posts: 412
Joined: Fri Jan 11, 2019 10:42 pm

Re: file and directory philosophy

Post by catman »

roerich_64 wrote: Tue Dec 03, 2019 5:24 pm Hi Catman,

the 'trick' is: delete the constraints ;-)

All parts in a house are static parts and A2+ updates the x/y/z positions of solved parts.
So after deleting the constraints the parts will stay on his place ;-)
Thanks, that helps and explains what I had been seeing in testing the setup. I had hoped you would have another solution, because it would make it very difficult to really work with the large model. Just for example when trying to fit in another item in the room I would like to move the other stuff around (while keeping the constraint to the floor intact.

For that to work it would be "enough" to have one placement model. It would be set to invisible and contain ony the surfaces used for constraints, e.g. a floow plane. To align the subassembly one would just enable only this placement object and then set the constraints. After setting the constraints this model is set to fully transparent (of course it would be in the way when picking stuff...). Then, as you say, all other LOD models just need to be aligned to the same point.
But I think A2+ does not work in this mode, because when having a constraint object visible and then making another (unconstraint) one visible the saved file still produces an error when I tried that.
Post Reply