Giter Site home page Giter Site logo

j8sr0230 / freecad_sketcharch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from paullee0/freecad_sketcharch

0.0 0.0 0.0 235 KB

A module for Architecure and making Arch Objects with SketchObjectPython

License: GNU Lesser General Public License v2.1

Python 100.00%

freecad_sketcharch's Introduction

FreeCAD SketchArch Workbench

alt text 2 An experimental add-on module to augment Arch Objects with additional feature

I. Description

To leverage Sketch and/or SketchObjectPython inherent features to help building Architectural Models

II. Features

1. Sketcher Capabilities

alt text 1

  • 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'

(Click To PLAY VIDEO !)  Youtube Video  Youtube Video

alt text 1a

alt text 1b

2. Parametric Placement of Arch Objects Intuitively

alt text 2

  • 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. ]

(Click To PLAY VIDEO !)  Youtube Video  Youtube Video

(Click To PLAY VIDEO !)  Youtube Video

alt text 2a

3. Width & Align Per Edge

alt text 3a alt text 3b

  • 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

(Click To PLAY VIDEO !)  Youtube Video  Youtube Video

alt text 3a

4. [ Feature Preview ] - ArchStructure, Curtain Wall, ArchWall etc. + ArchSketch = Layout

ArchSketch + ArchStructure = Slab 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

(Click To PLAY VIDEO !)  Youtube Video

alt text 3a alt text 3a alt text 3a alt text 3a

5. Floor Area Calculation + Room Dimension

  • [Feature] Floor Area Calculation + Room Dimension (forum thread)
  • See below on CellComplex

alt text 3a

6. CellComplex Creation [Topologic]

alt text 6

(Click To PLAY VIDEO !) Youtub Video

alt text 3a alt text 3a alt text 3a

7. Topological naming tolerant

  • 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 :

    1. Using sketch.Geometry[index].Tag Using sketch.Geometry[index].Tag == Unique identification survive changes? (forum thread)
      a. Implemented On-the-fly updating Index referencing Sketch.Geometry[index].Tag on UpdateAttachmentOffset() (preferred approach)
      b. Rebuilding a Dict referencing Sketch.Geometry[index].Tag onDocumentRestore (Implemented but not exposed. Solution 1a is preferable)

    2. Using PartGeometryExtension / SketchGeometryExtension

      • Part Geometry Extensions - Extension for 'Persistent UUID Tag' (forum thread)
      • Sketcher Development - Integration of Extensions (forum thread)
    3. Using @Realthunder's branch

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

(Click To PLAY VIDEO !)  Youtube Video

8. Voxelisation

alt text 6

  1. Select the shape object to 'voxelise', click Voxel button
  2. Can select the shape of voxel, like (App::Link to) a Group w/ 4 Walls, Windows, Slab etc.
  3. 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 ?

  1. Under the hood, pressing the button creates 2 objects
  2. First is a 'VoxelPart' object with a propertyLink to an 'Input Shape Object'
  3. 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

alt text 6a alt text 6b

Features in Development, Other Remarks

Click to expand!

9. Space / Room / Zone & Cell Complex Definition

  • 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

10. More concepts of adopting SketchObjectPython / ArchSketch as Building Layout Object

  • 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?

Prerequisites / Other Remarks

  • 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

III. Examples

Models

IV. Install

'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.

V. Feedback / Discussion / Announcement

There are a few discussion on FreeCAD discussion fourm with different topics:-

When bugs/feature-requests are vetted on the forum they will then be tracked in the issue queue of this repo.

VI. About

Maintainer: paullee (@paullee0) Repository: https://github.com/paullee0/FreeCAD_SketchArch

VII. License

LICENSE

freecad_sketcharch's People

Contributors

paullee0 avatar luzpaz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.