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
- 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)