An experimental add-on module to augment Arch Objects with additional feature
To leverage Sketch and/or SketchObjectPython inherent features to help building Architectural Models
- Leverage Sketch and/or SketchObjectPython inherent features and capabilities
- So Sketch Layout + Arch Wall = 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 Sketch / SketchObjectPython object (ArchSketch) can have different width for each segment - per Sketch Edge
- ArchWall base on a Sketch / ArchSketch 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
ArchSketch + ArchStructure = Slab Layout
ArchSketch + ArchCurtainWall = CurtainWall Layout
ArchSketch + ArchWall = Wall 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 just edit the same ArchSketch, you have e.g. the shape / dimension of the slab and curtain wall changed at the same time.
FreeCAD Forum Discussion Thread
- [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 Sketch / SketchObjectPython 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