[PR] [Discussion] - 'Multi-Width' Arch Wall & Stair Landing ( and Profile/ Face / Extrusion Generator )

A forum dedicated to the Draft, Arch and BIM workbenches development.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

[PR] [Discussion] - 'Multi-Width' Arch Wall & Stair Landing ( and Profile/ Face / Extrusion Generator )

Post by paullee »

:)
Hi, I start this thread to discuss the captioned particular case regarding Profile / Extrusion Generator.


ArchWall with 'Multi-Width' Capability ?
  1. Currently ArchWall, no matter how many edges, adopt constant width
  2. No simple way doing a continuous wall, e.g. RC wall, with different width for different 'segment'
  3. - See screenCaptures and file attached with attempts to do it
  4. - Creating 4 different Walls has their corners become 'open bird mouth' shape
ArchStairs [Landing] Capability currently with 'Multi-Width'
  1. To 'simulate' an ArchWall with multiple width ...
  2. I use the same sketch / wire with multi-edges, and click Stairs which produce a 'landing'
  3. Adjust the 'thickness' of structure to say 3000mm as if it is 'height' (+ placement)
  4. Adjust the 'widths' of the Landing in the 'Width of Landing' which accept a list of different width
  5. Now a 'wall' like extrusion with multiple width is generated
  6. And 'house' the 'Stairs-Landing' object in an ArchWall
Issues for discussion
  1. In the first place, any needs for a 'multi-width' ArchWall - seem i start to find usecases
  2. Then, should the code in Stairs for 'multiple width landing' (needs some more works...) be directly adopted / referenced in ArchWall so it has this capability 'inherently',
  3. Or, just let Stairs-Landing to work as an Profile / Face / Extrusion Generator for Wall to host it?
  4. It seems in the example, ArchWall only 'host' the 3d extrusion and have no knowledge about its height...
  5. So, if Stairs-Landing can select to generate the 2d-Profile (/ 2d-Face ), ArchWall can use its Height to generate the extrusion, so it know its height -- screenCapture
Any thought / ideas before I take it further?
  1. Thanks for any idea
  2. This maybe more of a discussion about intuition, convention, ease of understanding and workflow...?
Other Side-Issues
  1. Stair-Landing do not treat a 'close' wire 'properly' currently as in ScreenCapture with the last and first point of wall not 'merged'...(never imagine a 'close-loop landing' :)
  2. When I attempt the codes in Stair-Landing, there was no App::PropertyLengthList, so used PropertyFloatList...
  3. https://forum.freecadweb.org/viewtopic.php?f=22&t=29709
  4. Maybe it is time to make it for consistency?
.
Constant Width ArchWall + 4 different Width Wall
Screenshot from 2019-06-02 10-20-11.png
Screenshot from 2019-06-02 10-20-11.png (291.93 KiB) Viewed 2319 times
.
Stairs [Landing] to imitate Extrusion of 'Multi-Width Wall', host under Wall
Screenshot from 2019-06-02 10-20-45.png
Screenshot from 2019-06-02 10-20-45.png (258.8 KiB) Viewed 2319 times
.
Stairs [Landing] to generate 2d-Profile / 2d-Face
Screenshot from 2019-06-02 11-03-23.png
Screenshot from 2019-06-02 11-03-23.png (240.95 KiB) Viewed 2319 times
.
ArchWall generate Extursion based on Stairs generated 2d-Profile / 2d-Face
Screenshot from 2019-06-02 11-03-38.png
Screenshot from 2019-06-02 11-03-38.png (268.87 KiB) Viewed 2319 times
Attachments
Test_ ArchWall_ Multiple-Width.FCStd
(40.92 KiB) Downloaded 36 times
Last edited by paullee on Sun Jun 23, 2019 12:16 am, edited 2 times in total.
User avatar
yorik
Founder
Posts: 13630
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: [Discussion] - Profile/Face / Extrusion Generator - - - 'Multi-Width' Arch Wall - & - Stair Landing

Post by yorik »

I think it's all a matter of if we want to complexify things or simplify. I have no clear opinion about this.

Basically, do we want a wall that can have only one thickness (simpler), then user needs to make different wall segments when they want different thicknesses, of we have a wall where the thickness is not one value but a list of values, which is more complex to manipulate and learn how to use, but saves some modelling steps?

There are advantages on both sides... Not really sure about this case here...
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [Discussion] - Profile/Face / Extrusion Generator - - - 'Multi-Width' Arch Wall - & - Stair Landing

Post by paullee »

yorik wrote: Mon Jun 03, 2019 7:13 pm I think it's all a matter of if we want to complexify things or simplify. I have no clear opinion about this.

Basically, do we want a wall that can have only one thickness (simpler), then user needs to make different wall segments when they want different thicknesses, of we have a wall where the thickness is not one value but a list of values, which is more complex to manipulate and learn how to use, but saves some modelling steps?

There are advantages on both sides... Not really sure about this case here...
What I am also thinking is (let alone if various width be supported or not) where the section of code to do the '2d Offset' already in ArchWall should be : -
  1. Currently in _Wall Class , part of the getExtrusionData instance method - ~ line 855 to 912 (or 931)
  2. Or should this part of '2d Offset' be an instance method of ArchComponent - so other /Arch object inherit this method
  3. Or should this part of '2d Offset' be a just a Function in any Arch objects modules, or even DraftXXX modules?
  4. Then for the last option, it is even more easier to implement an individual non-Arch Gui to do this particular 'profile-generator'?
(When I first implement the code for 'multi-segment landing' for Stairs, I had not understood Arch Wall code that part of it had done almost the same thing ...)


Just comes a real case people use ArchWall as Offset2d :) though not various width ... https://forum.freecadweb.org/viewtopic. ... 41#p312841
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [Discussion] - Profile/Face / Extrusion Generator - - - 'Multi-Width' Arch Wall - & - Stair Landing

Post by paullee »

Not much progress everywhere, just post some study for fun :)
Screenshot from 2019-06-17 01-05-04.png
Screenshot from 2019-06-17 01-05-04.png (153.42 KiB) Viewed 2197 times
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] - 'Multi-Width' Arch Wall

Post by paullee »

Hi, tweaking ArchWall + DraftGeomUtils.OffsetWire().
  1. Making DraftGeomUtils.OffsetWire() to support offsetting wire (with multiple segments) various distances for each segment of wires
  2. Adding to ArchWall._Wall 'WidthsOfWall' attribute to allow various width for each 'segment' of wall - for passing to DraftGeomUtils.OffsetWire()
See if there is any comments, e.g. name of the new attribute, before PR :)

Screenshot from 2019-06-21 04-07-27.png
Screenshot from 2019-06-21 04-07-27.png (209.66 KiB) Viewed 2152 times
Screenshot from 2019-06-21 04-08-10.png
Screenshot from 2019-06-21 04-08-10.png (215.28 KiB) Viewed 2152 times
Attachments
Test_ ArchWall_ Various Width_ 2.FCStd
(9.44 KiB) Downloaded 38 times
DraftGeomUtils.py
(111.2 KiB) Downloaded 35 times
ArchWall.py
(49.31 KiB) Downloaded 37 times
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] - 'Multi-Width' Arch Wall

Post by paullee »

Some slight adjustment + bug fix
(as indicated in Red)

  1. Making DraftGeomUtils.OffsetWire() to support offsetting wire (with multiple segments) various distances for each segment of wires
  2. Adding to ArchWall._Wall 'WidthsOfWall' attribute to allow various width for each 'segment' of wall - for passing to DraftGeomUtils.OffsetWire()
  3. The 1st value 'WidthsOfWall' overrides 'Width' attribute for 1st segment of wall
  4. If a value of 'WidthsOfWall' is zero, 1st value of 'WidthsOfWall' attribute will be followed
  5. Center Align is supported / fixed
Hope it is helpful for use and good for PR, any comments?

Screenshot from 2019-06-23 08-02-53.png
Screenshot from 2019-06-23 08-02-53.png (222.68 KiB) Viewed 2110 times
Screenshot from 2019-06-23 08-02-14.png
Screenshot from 2019-06-23 08-02-14.png (214.81 KiB) Viewed 2110 times
Attachments
DraftGeomUtils.py
(111.74 KiB) Downloaded 31 times
ArchWall.py
(49.45 KiB) Downloaded 31 times
Test_ ArchWall_ Various Width_ 3.FCStd
(12.22 KiB) Downloaded 31 times
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] - 'Multi-Width' Arch Wall

Post by paullee »

Screenshot from 2019-06-23 08-11-34.png
Screenshot from 2019-06-23 08-11-34.png (201.14 KiB) Viewed 2107 times
User avatar
dimitar
Posts: 229
Joined: Thu Jun 13, 2019 6:10 am
Contact:

Re: [PR] [Discussion] - 'Multi-Width' Arch Wall & Stair Landing ( and Profile/ Face / Extrusion Generator )

Post by dimitar »

paullee wrote: Sun Jun 02, 2019 3:19 am In the first place, any needs for a 'multi-width' ArchWall - seem i start to find usecases
I work on sports arenas and mixed use development. We always have complex walls and sometimes for a theatre or an arena a box within a box concept for sound isolation. Typically, we start with a generic wall of a given width that we then break down into the actually wall assembly elements, including air gaps. In Revit, the LOD (level of detail) option is quite nice, as the wall assembly can show only for LOD of over 300. For LOD of 100, we see only the overall width.

I have also worked on radio stations, where the wall assemblies get very complex. At that time, we had drawn two walls parallel to each other. However, there were many issues with that approach - radio studio geometry is funk - no right angles, so we struggled to consistently make the walls parallel. Also, it was a tedious task to make sure that the door and window openings matched on both walls.

FYI, here is a nice website descibing LOD: https://www.srinsofttech.com/bim-level- ... 0-500.html
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] [Discussion] - 'Multi-Width' Arch Wall & Stair Landing ( and Profile/ Face / Extrusion Generator )

Post by paullee »

dimitar wrote: Mon Jun 24, 2019 9:39 am
I work on sports arenas and mixed use development. We always have complex walls and sometimes for a theatre or an arena a box within a box concept for sound isolation. Typically, we start with a generic wall of a given width that we then break down into the actually wall assembly elements, including air gaps. In Revit, the LOD (level of detail) option is quite nice, as the wall assembly can show only for LOD of over 300. For LOD of 100, we see only the overall width.

I have also worked on radio stations, where the wall assemblies get very complex. At that time, we had drawn two walls parallel to each other. However, there were many issues with that approach - radio studio geometry is funk - no right angles, so we struggled to consistently make the walls parallel. Also, it was a tedious task to make sure that the door and window openings matched on both walls.

FYI, here is a nice website descibing LOD: https://www.srinsofttech.com/bim-level- ... 0-500.html
Thanks for comments :)

Wonder if there is some diagrams showing what do you mean about sports arenas complex wall, radio station etc. for reference. See if there is anything to be done in ArchWall to help.


Thanks for the link on LoD. Yorik made a Hi-Res system in Arch Objects, which help to show model with more details, with some limitations. ArchWall has 'Layers' so that a multiple layers of wall could be built easily.

Recently I have been thinking if ArchWall Layer should only be shown if LoD is set to 'Hi-Res'.
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] [Discussion] - 'Multi-Width' Arch Wall & Stair Landing ( and Profile/ Face / Extrusion Generator )

Post by paullee »

Some bug fix in ArchWall.py

(if Width and WidthsOfWall [0] are both 0, an error message is returned, rather than exception )


DraftGeomUtils.py not attached again
Attachments
ArchWall.py
(49.7 KiB) Downloaded 34 times
Post Reply