Separate wall extrusion ability for wall classification ability?

A forum dedicated to the Draft, Arch and BIM workbenches development.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
User avatar
Moult
Posts: 321
Joined: Sat Jan 05, 2019 11:46 am
Contact:

Separate wall extrusion ability for wall classification ability?

Post by Moult »

I just discovered a few things that were not at first obvious to me but Yorik pointed them out: if you click on any generic geometry, and then click the arch wall button, it then becomes a wall :) Then of course I can change the Ifc type to something else if I want. This wasn't initially obvious to me, and I thought I could only draw lines and convert them to walls.

I think the reason is because the wall button does two things: 1. it assigns the selected geometry as a product representation of the IfcWall product. this is good and expected. 2. it performs an extrusion and thickness offset function.

This double behaviour instead of single behaviour is a bit confusing to me because:

- It doesn't make it obvious to the user that any ifc product can have any product representation
- if i then select the line, and then click the "Window" button, then I lose the extrusion, which is uninuitive
- If I then select the wall, and then click the structure button, I can now have an IfcSlab, which has a base of an Ifc...Wall ... which has a base of a ... line... what?

I propose:

1. One toolbar for Wall, Door, Window, Beam, Column, and Other. All they do is take the selected geometry, and make it a product representation of the ifc product. Maybe they are grey icons to match the other IFC icons. This is essentially the same function as the "BIM component" button, but split up into a bunch of common product types for easy selection. The Other button would be the existing "BIM component" button.
2. Move the line and thickness extrusion (i.e. the type of extrusion that a wall would do) into a feature in the Part workbench.
3. Have another toolbar for Wall, Door, Window presets. This would be the yellow icons that currently exists. However, they have slight modifications. For example when you draw a draft line and press the yellow wall preset, instead of creating a Wall object with a Line base (e.g. Wall->Line), it should do Wall->Extrusion->Line. This makes it explicit that the Extrusion is the product representation, and not the line. This also ensures that wall isn't misused as an extrusion tool. Similarly, for a window preset, it will create extrusions and profiles and cuts and so on.

I think there is an argument against this approach that it is computationally more intensive to have many nested levels of geometric operations. However, I think there is a solution for that too: create a "Bake" feature that can store the geometric operations and its result, and a corresponding "Unbake" feature to decompose the operation sequence.
I also blog about 3D rendering, architecture, software and other on thinkMoult.com. RSS / Atom feed available for your convenience.
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Separate wall extrusion ability for wall classification ability?

Post by bernd »

For me it was a confusion we have a wall tool at all, when I started with FreeCAD. For all objects I use structure (column, foundations, slabs, beams) but for walls I use the wall tool. The reason might be Yorik is an Architect, and walls are very imortant for Architects, because they do splitt the spaces of a building. For me it is just as important as any other structural object. Even less, because wall usually have enough strength. Columns and slabs are what engineers have an eye on any time.

Furthermore I quite often switch for objects between wall, column and beam, depending on the geometry. If the geometry change a column could switch to a wall or the other way around.

bernd
vocx
Veteran
Posts: 5197
Joined: Thu Oct 18, 2018 9:18 pm

Re: Separate wall extrusion ability for wall classification ability?

Post by vocx »

Goddammit Moult. What you mention is exactly the same thing Yorik has mentioned in his own thread Discussion: Arch generators - naming. Did you really have to create your own thread? You already posted there as well.
Moult wrote: Tue May 28, 2019 12:13 am ...
- It doesn't make it obvious to the user that any ifc product can have any product representation
And this is exactly why Arch is so powerful. Because you don't need to be strict about what you create. You can create an arbitrary shape, and turn it to a structure, a wall, roof, equipment, whatever. You don't have to overthink that. You can more or less start however you want, and tweak it as you go with your model. It may seem messy, but at the same time, think of the children! Think of all those people who aren't trained architects, civil engineers, or CAD professionals; those people don't care much about what you say, they want to get things done, and that's better done with the current implementation. Separating the construction of the geometry from the IFC classification could be done, but at what cost? Think of all the use cases, not only from your perspective.
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
User avatar
Moult
Posts: 321
Joined: Sat Jan 05, 2019 11:46 am
Contact:

Re: Separate wall extrusion ability for wall classification ability?

Post by Moult »

Sorry vocx for the extra thread. I thought I'd create a new one because this has concrete proposals of how to implement, starting with separating wall from extrusion. It seemed like a logical first step. Mods feel free to merge threads :)

I hope I am not excluding use cases? I'm not proposing to remove any features, simply proposing to restructure to be more akin to the IFC schema.

It is my personal belief that an industry tool that treats IFC as a first class data structure rather than an external format to translate and map to will be extremely useful and can offer what will take the larger monopolies ages to refactor and deliver.
I also blog about 3D rendering, architecture, software and other on thinkMoult.com. RSS / Atom feed available for your convenience.
vocx
Veteran
Posts: 5197
Joined: Thu Oct 18, 2018 9:18 pm

Re: Separate wall extrusion ability for wall classification ability?

Post by vocx »

Moult wrote: Tue May 28, 2019 10:16 pm Sorry vocx for the extra thread. I thought I'd create a new one because this has concrete proposals of how to implement, starting with separating wall from extrusion. It seemed like a logical first step. Mods feel free to merge threads :)
I don't think the threads need to be merged, but the very least you could do is mention the major discussion thread from Yorik. This is just so there is some semblance of organization, and things are discussed in a more general fashion. After all, what is discussed in one specific tool will be probably applicable for other tools, as most objects will need to be split into that approach of "construction" and "logical object".

For example, paullee also proposed changing the behavior of Arch Stairs, but for that it has its own thread, where he explains with detail everything: [PR] [0.18] [0.19_pre] Arch Stair - More Geometry Control? Profile Generator
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
User avatar
yorik
Founder
Posts: 13660
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Separate wall extrusion ability for wall classification ability?

Post by yorik »

Moult wrote: Tue May 28, 2019 10:16 pm It is my personal belief that an industry tool that treats IFC as a first class data structure rather than an external format to translate and map to will be extremely useful and can offer what will take the larger monopolies ages to refactor and deliver.
I'm against this. IFC is limiting, it has a series of weird, annoying things (Mandatory To Have One Building, No Object Shall Live Outside A Storey, etc...) that would seriously limit your freedom in FreeCAD. And you had a taste yourself of how things go there, you can imagine how many years it would take to try to convince buildingsmart people to change anything.

I think the path to follow is the path of knowledge: Make users know more about the IFC format. Don't try to "hide" or "automatically perform" translations under the hood, if possible. Constantly educate users about the IFC format. If you know IFC well, I really believe FreeCAD is already one of the best tools currently available, you can basically make it output IFC objects exactly the way you want.

About the ability to turn any object into a wall, it's common to all Arch objects: All of them has a "Base" property that is a link to another object. What they do with their Base depends on what's in the Base. In the case of the wall, if the Base is made of one or more solids, then the Base shape is adopted by the wall, no transformation. If it's one of more faces, they get extruded in one direction. If it's one or more edges, they are first offsetted to form faces, then extruded.

All the other Arch tools work like that too, if you take a cube and make it the Base of a window, the shape of the window will be the cube, no additional operation done.

When you press an Arch button, all it does is create a corresponding object and set the selected object as its Base, no more.

Of course, there comes our "problem" with semantic naming, etc... If you take a cube, and just name it "IfcWall", and give it some properties, you don't need all the "engine" inside the Arch Wall tool.

Sometimes I'm thinking, we could have only one Arch object, empty, without any "engine". Then it would have different "geometry generation" modes, that the user could choose, that would basically define which execute() method it would do (the Wall one, or the Window one...) So you could litterally switch an object from wall to window, not only the ifc type, but even the geometry generation code... Thst needs more thorought thinking, though.
Post Reply