From 733b7c0e1ec59d788695d73549c434513a594e6b Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 1 Jul 2021 09:55:59 +1000 Subject: [PATCH] Add basic documentation for developer guide --- src/blenderbim/docs/blenderbim.rst | 1 + .../docs/blenderbim/architecture.png | Bin 0 -> 77969 bytes .../docs/blenderbim/developer_guide.rst | 81 ++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/blenderbim/docs/blenderbim/architecture.png create mode 100644 src/blenderbim/docs/blenderbim/developer_guide.rst diff --git a/src/blenderbim/docs/blenderbim.rst b/src/blenderbim/docs/blenderbim.rst index 62fbade88b..be2aac5c10 100644 --- a/src/blenderbim/docs/blenderbim.rst +++ b/src/blenderbim/docs/blenderbim.rst @@ -12,6 +12,7 @@ this document. :caption: Contents: blenderbim/installation + blenderbim/developer_guide blenderbim/scene diff --git a/src/blenderbim/docs/blenderbim/architecture.png b/src/blenderbim/docs/blenderbim/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd89fc04b89bfc3ca394e965e393bb6fd8a153f GIT binary patch literal 77969 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 literal 0 HcmV?d00001 diff --git a/src/blenderbim/docs/blenderbim/developer_guide.rst b/src/blenderbim/docs/blenderbim/developer_guide.rst new file mode 100644 index 0000000000..293921ba62 --- /dev/null +++ b/src/blenderbim/docs/blenderbim/developer_guide.rst @@ -0,0 +1,81 @@ +Developer guide +=============== + +The BlenderBIM Add-on takes a unique approach to authoring BIM data. Traditional +BIM authoring apps create features that are tailored for a single discipline's +paradigm, such as a 3D environment, or a spreadsheet view, and store their data +structure in a schema that is unique to their application. In order to +interoperate with others, there is an export or import process that translates +between their discipline-specific schema and the ISO standard for BIM: IFC. +After translation, they then serialise it typically into one of the various IFC +formats. + +The BlenderBIM Add-on does things differently. + +The BlenderBIM Add-on modifies ISO standard BIM data directly using the IFC +schema in memory. Every user operation reads or writes this data structure in +memory, and the IFC data becomes the source of truth for all data. There is no +such thing as an import or export, but simply a serialisation or deserialisation +operation. This also means that the ``.blend`` container is largely unnecessary, +as nothing of significance is stored in the Blender system. + +Due to this significant difference, hacking on the BlenderBIM Add-on requires +knowledge not just about how Blender works, but also how IFC works. + +Technology stack +---------------- + +At a high level, the BlenderBIM Add-on works through two integration of two +systems. The IFC based system takes care of reading and writing IFC data using +the IfcOpenShell library. This system is agnostic of Blender and the BlenderBIM +Add-on. Data is read from the IFC dataset using ``Data`` classes. Data is +written into the IFC dataset using ``Usecase`` classes. + +The Blender based system takes care of turning Blender into a BIM authoring +client. Like all Blender add-ons, ``Operators`` define user operations, such as +those triggered when pressing a button. ``UI`` defines the interface, such as +the layout of buttons, input fields, and panels. Finally, ``Props`` define +properties that Blender keeps track of, typically for interface input fields or +user settings. + +.. image:: architecture.png + +.. + digraph G {rankdir=LR; + node [fontname = "Handlee", shape=rect]; + + subgraph cluster_0 { + node [style=filled,color=pink]; + + IfcOpenShell -> Data; + Usecase -> IfcOpenShell; + + label = "*IFC based*"; + fontsize = 20; + color=grey + } + + subgraph cluster_1 { + node [style=filled,color=lightblue]; + + Operators -> Usecase + Data->UI + Data->Operators + + Operators -> Props + Props -> Operators + Props -> UI + + label = "*Blender based*"; + fontsize = 20; + color=grey + } + } + +Of course, there are many details that we are glossing over, but it provides a +good representation of data flow in the BlenderBIM Add-on. + +Code structure +-------------- + +TODO