An experimental add-on module to augment Arch Objects with additional features
For better and more intuitive architectural modelling workflow, this workbench leverage Sketch (or SketchObjectPython) inherent features and enhance it with smarter and information-rich features for use as Base of Arch Objects (e.g. Wall, Structure, Curtain Wall).
- Leverage Sketch inherent features and capabilities
- So ArchSketch + Arch Wall + Structure + Curtain Wall etc. = Building Layout
- Sketcher have geometric and dimensional constraints to help making and editing 'single-line sketch layouts'
- Sketch have Mapmode/Attachment Offset so sketch for each floor layout can be fixed at desired position 'mutually as a whole'
- Extend capability to Arch Objects, e.g. Window, Equipment and their Links could 'attach' to 'Wall Segment' / 'Layout Sketch' to fix its position
- Discussion (Intuitive Automatic Windows/Doors + Equipment Placement) (forum thread) (downloadable model)
- Note: (Window Object also use Sketch; alternative use Window's Sketch to attach to Layout Sketch)
[ Special Remarks :
- For this feature to work, use at least the 0.20_pre-release version git 26720 (e.g. FreeCAD_weekly-builds-26720-Linux-Conda_glibc2.12-x86_64.AppImage)
- Otherwise, needs to follow the FreeCAD forum discussion to use the tweaked ArchWindow.py, ArchEquipment.py etc. ]
- ArchWall base on a ArchSketch / Sketch can have different Width, Align & Offset for each segment - per Sketch Edge
- ArchWall base on a ArchSketch / Sketch can then be treated / moved / edited as single floor layout object, the dimension of which, width of individual wall segment can be modified relatively easily
(with User Selected Edges in ArchSketch)
ArchSketch + ArchWall = Wall Layout
ArchSketch + ArchStructure = Slab Layout
ArchSketch + ArchCurtainWall = CurtainWall Layout
Have your ever set out your building layout in a sketch like below, and wonder if -
- ArchWall would build walls based on edges in the middle part
- ArchStructure build slab based on the outermost one, with an opening in the middle
- ArchCurtainWall build panels based on the outermost one edges
So you have just 1 simple ArchSketch, just like any architectural student start learning sketching building layout in school. Now, you can select the Edges in ArchSketch you want for your Wall, Slab, or Curtain Wall separately though on same ArchSketch; and you just edit the same ArchSketch, and you have e.g. the shape / dimension of the slab and curtain wall changed at the same time.
FreeCAD Forum Discussion Thread
- See YouTube Video adn FreeCAD Forum Discussion at the moment - https://forum.freecad.org/viewtopic.php?p=784622#p784622
- (Click To PLAY VIDEO !)
- [Feature] Floor Area Calculation + Room Dimension (forum thread)
- See below on CellComplex
- CellComplex is a Topologic concept and object : see (OSArch discussion - Talk on Topologic: Redefining BIM through Spatial Topology, Information, and Grammars)
- [Feature] CellComplex & ArchWall Creation on 1 ArchSketch (forum thread)
- In addition to build ArchWall based on an ArchSketch, CellComplex can be created automatically also
-
Progress / Status of Implementation :
- 10.7.2021 Exposed - Arch Object Intuitive Automatic Placement
- 27.4.2024 Exposed - Arch Wall Width Setting for Each Wall Segment
- 27.4.2024 Exposed - Arch Wall Align Setting for Each Wall Segment
- (Above 3 Features Implementated in 2019-21)
-
The most important feature is to make referencing to a Sketch Edge persistent (not currently as of 0.19_pre, unless use @realthunder's branch), 3 main approaches :
- Using sketch.Geometry[index].Tag
Using
sketch.Geometry[index].Tag
== Unique identification survive changes? (forum thread)
a. Implemented On-the-fly updating Index referencingSketch.Geometry[index].Tag
onUpdateAttachmentOffset()
(preferred approach) [Need every object recompute() to keep in sync]
b. Rebuilding a Dict referencingSketch.Geometry[index].Tag
onDocumentRestore
(Implemented but not exposed. Solution 1a is preferable)
(As of Marh 2024, a mix use of 1a and 1b are used) - Using PartGeometryExtension / SketchGeometryExtension
Being Implemented as of March 2024- Part Geometry Extensions - Extension for 'Persistent UUID Tag' (forum thread)
- Sketcher Development - Integration of Extensions (forum thread)
- Using @Realthunder's branch
- Using sketch.Geometry[index].Tag
Using
-
Earlier Discussions : Unique and Persistent Sketch Edge Name
- Ability to (auto) give (unique) name each edges in a sketch which would not be repeated or reused - Sketcher: Virtual Space (forum thread)
- Tag consistent (for Sketch geometries) - Civil engineering feature implementation (Transportation Engineering) (forum thread)
- https://forum.freecadweb.org/viewtopic.php?f=23&t=61158&p=535506#p535506
- Current workflow for comment / suggestion: -
- Select the shape object to 'voxelise', click Voxel button
- Can select the shape of voxel, like (App::Link to) a Group w/ 4 Walls, Windows, Slab etc.
- Has 3 modes :-
- a. Center : If Center of (the BoundBox of) voxel is within the Input Shape, it is shown
- b. Any Corner : If Any Corner of (the BoundBox of) voxel is within the Input Shape, it is shown
- c. All Corners : Only if All Corners of (the BoundBox of) voxel are within the Input Shape, it is shown
What ceated ?
- Under the hood, pressing the button creates 2 objects
- First is a 'VoxelPart' object with a propertyLink to an 'Input Shape Object'
- Second is an App::Link which produce the Array of Voxels
- The VoxelPart calculates the placement of every Voxels
- It creates a Box, or copy the shape of 'VoxelObj' (usecase: point to a object with Shape, or to a Link to a Group containing a numbers of objects)
- The 2nd Object App::Link actually create the array of Voxels according to VoxelPart calculation
Click to expand!
-
A Space, Room or Zone could be defined right within (Arch)Sketch itself
-
Automatic identification of each enclosed area (room) defined by edges (walls)
-
Automatic generation of CellComplex (see below)
-
Manual assignment of Space / Zone definition identified by user
-
Naming of the Space / Room / Zone by user
-
Single Source of 'Information Rich' Sketch to build
- ArchWall
- ArchSpace / CellComplex (rooms)
-
CellComplex
- OSArch forum: Talk on Topologic (CellComplex) (forum thread)
- Built on same Sketch as ArchWall (building layout)
- Share same faces between Cells
- Cell faces have no thickness
-
Space Connectivity
- So 2 ArchSpace / Cells with same ArchWindow/Door is interconnected
-
ArchWindow/Door Attachment
- 'Attached' to Space / Room / Zone rather than only 'Arch Wall' (or edges)
- 'Grouped' under 'ArchSpace' as well
- Different materials for wall surface on each sides
- Different wall joint / junction geometrical shape
- (good for IFCexport ?) Maybe Wall can support different Height for each segment? Similarly, this information be saved in the ArchSketch
- (good for IFCexport ?) Different materials for different wall segment?
- The said information (width, align, height, material etc.) is conceived to be saved in ArchSketch with Part Geometry Extensions feature - the latter currently has a bug which crash FC
- Bugs / IFC export / multi-materials etc. to support Wall base on Sketch to be fixed / implemented
Models
- Villa Savoye Discussion (forum thread) (downloadable model)
- Carpenter Center Discussion (forum thread (downloadable model
'Semi'- Automatic (recommended)
- Launch FreeCAD and start the Addons Manager (Tools > Addon manager)
- Press the Configure... button.
- The Addon manager options dialog box opens.
- Add the repository to the Custom repositories list - https://github.com/paullee0/FreeCAD_SketchArch
- Optionally choose proxy settings.
- Press the OK button button to close the dialog box.
- Restart FreeCAD
- Locate the workbench dropdown list and switch to the 'SketchArch workbench'
Manual
If necessary, this workbench can be installed manually. Example:
- Find your default local FreeCAD directory and clone SketchArch in to it. Example:
cd ~/.FreeCAD/Mod git clone https://github.com/paullee0/FreeCAD_SketchArch
- Restart FreeCAD
- Locate the workbench dropdown list and switch to the 'SketchArch workbench'
For more general info see the general instructions for manual install on the FreeCAD wiki.
There are a few discussion on FreeCAD discussion fourm with different topics:-
- Intuitive Automatic Windows/ Doors/ Equipment Placement (forum thread)
- PR / Discussion Thread - (forum thread)
- ArchSketch + ArchWall = Building Layout - (forum thread)
- Auto-creating ArchSketch - (forum thread)
- Automatic Building Generator - (forum thread)
When bugs/feature-requests are vetted on the forum they will then be tracked in the issue queue of this repo.
Maintainer: paullee (@paullee0) Repository: https://github.com/paullee0/FreeCAD_SketchArch