Arch Module: Walls & Windows Proposals

A forum dedicated to the Draft, Arch and BIM workbenches development.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
twohot
Posts: 63
Joined: Tue May 17, 2011 10:48 pm
Location: 9ja://coalcity
Contact:

Arch Module: Walls & Windows Proposals

Post by twohot »

Hi everyone,

I have been studying FreeCAD (Arch Workbench) for quite some time now. Coming from AutoCAD Architecture, it has been quite a challenge adapting to the workflow. I am gradually adapting -- I'm a fast learner. I've also looked at the "ArchWall.py" Module and some other 'Py-Examples' to understand how automation works in FreeCAD. Its quite interesting. I've been able to eliminate some of my own ideas by just reading-up a bit on Coin/Mentor, IFC2x3 standards and Yorik's codes.

However, I have some suggestions to propose as regards Walls and Windows (Those are the ones I have tested the most):

WALLS:
  • Wall instances that are independent of each other. Arch Workbench (AW) tends to group walls together as the user creates them. This makes modification difficult. It would be nice to have independent wall nodes, each having its own separate hierarchies (child objects = windows,doors etc)... which may only be unified by common objects like Floors/levels
  • It would be great to have a "Standard Wall" length attribute that can be adjusted from UI (despite underlying "trace" objects). Can't the points defining axis paths (trace) be read via the API? If they can, then this is possible
  • Introduction of control objects (tweakers/handles .. whatever) that allow for the adjustment of lengths, height, and position via the viewscreen/GUI (I suspect this can be achieved through Coin manipulators or Draggers). It might be better to define a 'TweakerObject()' Class with methods for returning translation values to drive those attributes then derive Wall Classes from those (Ok, I might just be dreaming ... I think like that sometimes. Pardon me)
  • Copying a wall, should also copy its children (windows and doors). The result should be a new instance of the source wall with exact heirarchy (child objects = windows, doors preserved). Users may not always want this behaviour, so it might be best to have a toggle that switches this off. In any case, the recent behaviour is that the walls are copied with their openings but without the children that occupies them. Alternatively, such copies should trigger a cleanup of such holes -- whichever is best preferred
WINDOWS
  • What if the user doesn't have to draw windows at the first instance of running the "Add window" command? Most users would expect AW to add a default preset Window on the selected wall, and then allow them to tweak the attributes to suit. The current experience is that they are presented with Sketch Module to draw Window Profiles. Its a good way to make new comers learn Sketch Module, but I'm not sure many would be that patient. Users tend to pick up on application components gradually. Presenting them with too much to learn, all at once, can be daunting. Nonetheless, I learned how to sketch custom windows, and it was illuminating. Which brings me to the next proposal
  • What if the "Window Object" had defining components intelligently strung together (separate "Window Parts" which have independent Shape definitions -- Frame, Mullions, Muntins, Glazing). I'm thinking of a table-type of a definition similar to HTML/XML tables for defining where elements will appear. Such configuration could be altered and stored as reusable "Window Styles". This kind of provides a connection to the IFC equivalents like IFCWindow (with similar sub-component definitions like IfcWindowStyle, IfcWindowLiningProperties, IfcWindowPanelProperties). Perhaps I will illustrate this graphically ... if it sounds interesting
  • Currently, while I saw code for Preset Windows, they are not visible when drawing new windows. Hence, users are left with no option than to draw from scratch. This might be a bug
  • Finally, I'd like to propose that the default design Display Mode should be Wireframe. This is not directly related to Doors and Windows, but I thought I should mention it. It makes Plan drawing easier because, in shaded mode, one can't see the positioned windows in Plan view. Drawing in Shaded mode might be okay if FreeCAD supports Live Sections. (A situation where one is drawing in section and can see objects in section while adding them. A plan is actually a horizontal section)
I make these proposals as one that is willing to contribute towards actualizing them, but I'd like to confirm that I'm not being overly naive with my dreams. What do you guys think?
User avatar
yorik
Founder
Posts: 13665
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by yorik »

Interesting ideas. Here goes my point of view:

Walls
1. Easy, we could add a preference setting for that. I'll do that when possible.
2. Not sure what would be the use for that?
3. That's a really huge amount of work. Some day we get there, but it will take time...
4. I kind of disagree with that. But it is easy to obtain if you need it, just copy the wall AND its windows... You can also make a Draft Clone with several objects selected, then move that clone around...

Windows
1. All that is still experimental and far from finished. I'm not happy yet with the way it works now either, but I think it still needs some experimenting. Right now I'm more focusing on having more presets, and better positioning tools
2. Same as 1. All this would of course be welcome, but we need to think how to do it a smart and flexible way. It is also a lot of work.
3. I agree, but other things have more priority for me, namely better placement tools.
4. It is actually possible to switch the whole 3D view to wireframe display, but that tool is only available in the complete WB at the moment, I don't remember why it never made it to the general tools...
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by bernd »

Wow, tons of interesting ideas ...
yorik wrote:... 4. It is actually possible to switch the whole 3D view to wireframe display, but that tool is only available in the complete WB at the moment, I don't remember why it never made it to the general tools...
I did not know about that one. Could you give more information or point me to some documentation?
User avatar
yorik
Founder
Posts: 13665
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by yorik »

Complete WB -> View -> Draw Style. But it is actually not the same as the wireframe mode of objects...
User avatar
twohot
Posts: 63
Joined: Tue May 17, 2011 10:48 pm
Location: 9ja://coalcity
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by twohot »

yorik wrote:Complete WB -> View -> Draw Style. But it is actually not the same as the wireframe mode of objects...
I didn't know that was there ... but that's different from the one I was talking about. What you describe shows the face triangulations. That, too, seems distracting in Plan View. Each FreeCAD object has a "Display Mode" attribute which defaults to "Flat Lines". Setting the Object Property to "Wireframe" gives the desired effect -- no face triangles.

Image

You can toggle this for a selected object with SHIFT+SPACE. With the right "Line Colour" attributes, we have something similar to 2D CAD applications. This is nice for designing in Plan View.
yorik wrote:3. I agree, but other things have more priority for me, namely better placement tools.
What ideas do you have about "Placement Tools"?
jmaustpc
Veteran
Posts: 11207
Joined: Tue Jul 26, 2011 6:28 am
Location: Australia

Re: Arch Module: Walls & Windows Proposals

Post by jmaustpc »

If you multi-select many or all items in the treeview you can change all their "display modes simultaneously.

The only caveat is that you can only select a "common" view mode, i.e. a view mode which is available for all items selected.

All items except a point can display "wireframe" mode. So you can easily select all or many items then switch them to "wireframe".

The problem comes when you want to toggle back to "flatlines".

This is why I argued for all items to have a consistent list of display modes, even if they do not make sense. So for example a Line should be allowed to go up the list beyond wireframe to flatlines even though it will still only display the same in either wireframe or flatlines as it only has "wireframe" items to show.

The only problem with my theory is that display modes would have to be only hierarchical for it to work. For example a point or Line will completely disappear in "shaded" because they have no face entity to show and "shaded" hides vertices and edges.

A work around could be to allow the selection of an inappropriate view mode in the GUI but not actually put the shape into that view mode.

The only problem with that is what if you actually did want to use this mode to deliberately hide something, for example all the points.

Look at Part point and line, if you want to experiment. Part Point's view provider was not updated to remove its inappropriate view modes where as Line was.
User avatar
yorik
Founder
Posts: 13665
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by yorik »

Hmm I think having all objects inside a freecad document to have the same display modes is a shooting in one's foot IMHO. The idea is that all kinds of objects can coexist in the FreeCAD document, and we must allow different objects to have different needs too and let them be free to have the properties they want.

As for changing all the DisplayModes at once, nothing prevents you to do it via python, for ex. MyObject.ViewObject.DisplayMode = "MyFunnyDisplayMode", this will yield an error on objects which don't have that mode, but work on the others. So you could easily have a macro or a very simple tool to switch all objects to wireframe...

Twohot's suggestion of having all new objects take wireframe display mode might be doable, but would be a lot of redundant work to implement in the arch module (each creation function should be modified). Probably a better approach is to do that at Part module level, have a preference setting for the default display mode to adopt on object creation. Frankly I don't find that so useful, but why not, it wouldn't harm to have it.

About placement tools, I mean one should be able to place a window exactly where one wants, on a wall, say 20cm from the left border, and 100cm above the ground. You can do that with a sketch of course, but I'd like to find a smart way to do it with preset windows too. The same applies for other objects too. I started working on this with the "temporary dimensions" that appear when snapping, but it's still far from good.
User avatar
jriegel
Founder
Posts: 3369
Joined: Sun Feb 15, 2009 5:29 pm
Location: Ulm, Germany
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by jriegel »

With the DisplayModes I agree with Yorik. There fore we have Python, and you can make all kind of crazy tools with it...
Stop whining - start coding!
User avatar
twohot
Posts: 63
Joined: Tue May 17, 2011 10:48 pm
Location: 9ja://coalcity
Contact:

Re: Arch Module: Walls & Windows Proposals

Post by twohot »

As for changing all the DisplayModes at once, nothing prevents you to do it via python, for ex. MyObject.ViewObject.DisplayMode = "MyFunnyDisplayMode", this will yield an error on objects which don't have that mode, but work on the others. So you could easily have a macro or a very simple tool to switch all objects to wireframe...
The concern isn't about "every" object because that doesn't make sense. The concern is about those objects that are hidden from view in "Plan View". I may be wrong, but a great majority of architects organize spaces in "Plan View" (i.e. Plan Projection -- viewing at 90-degrees from the top). Important objects to consider in this projection include Walls, Doors, and Windows . Those are the objects we are discussing here. Arches don't really apply since they are subtractions from host objects. I am suggesting that we give FreeCAD/Arch-Workbench users the opportunity to perform 'traditional-style' planning without having to pause and wonder where they put their openings (because, currently, the walls hide them in Plan View). Having to plan spaces in 3D increases the amount of mouse movements required to complete a design. The emphasis is on PLAN view
Twohot's suggestion of having all new objects take wireframe display mode might be doable, but would be a lot of redundant work to implement in the arch module (each creation function should be modified).

Code: Select all

MyObject.ViewObject.DisplayMode = "MyFunnyDisplayMode"
Adding that somewhere in the code shouldn't be much work sir. :mrgreen: However, I know that feeling. Just give it some thought. In the future, it might be necessary to include the visibility attribute in this kind of consideration. Imagine a situation where one has to design a 2-3 storey building in Plan View. I might become necessary to switch off an entire floor. That is a subject for another day
Probably a better approach is to do that at Part module level, have a preference setting for the default display mode to adopt on object creation. Frankly I don't find that so useful, but why not, it wouldn't harm to have it.
That sounds like a good idea (the Part Module one) ... since that's where it all starts. I hope the explanations above were convincing enough. It will be useful, not just for me -- but for every architect planning to organize space in PLAN View (using FreeCAD).
Last edited by twohot on Wed Jan 15, 2014 4:54 pm, edited 2 times in total.
jmaustpc
Veteran
Posts: 11207
Joined: Tue Jul 26, 2011 6:28 am
Location: Australia

Re: Arch Module: Walls & Windows Proposals

Post by jmaustpc »

Juergen and Yorik
Just to be clear, I am not actually disagreeing with you two. It was just that I had been using, what was probably an accidental side effect, in a particular way, as though it was a deliberate feature.

I found another way to do what I wanted, so it has not been a problem for me, for that particular use. I was using wire frame to see something being obscured, while still being able to see the object doing the obscuring. I decided it was better to just use the transparency setting to achieve much the same thing.

Jim
Post Reply