IfcXtreme
Hi all,
I have to choose between Sverchok (https://github.com/nortikin/sverchok) and Animation Nodes (https://github.com/JacquesLucke/animation_nodes)
So based on your experience which one is better to build a crossed-platform with interface to build IFC classes nodes?
I explained my proposal here: https://github.com/IfcXtreme/IfcXtreme/issues/2
Comments
Ping @nikitron as he might be able to answer this one.
Do you have a UI mock-up that may be able to explain your idea?
Thank you so much Dion, yes I think, some months ago I shared a mock-up that was developed based on BHoM add-on on Grasshopper:
https://www.linkedin.com/pulse/ifcxtreme-ehsan-azari
And would be happy to know thoughts from Sverchok friends
It seems that Animation Nodes supports all the features PyFlow (https://github.com/wonderworks-software/PyFlow) has and even extra features, but I for sure Sverchok is one of the oldest and the best add-ons in Blender community and I'm sure it's invaluable enough to build IfcXtreme based on Sverchok
The idea is for the first phase of the IfcXtreme as an easy to use alternative of IfcDoc
The second phase is a federated decentralized CDE which will explain in the near future because maybe cause confusion in this phase
@Moult I think it should be good to have a section for IFC terms and definitions.
Hi. First of all, what is special heere on PyFlow?
We using inner nodes for now. There are blender inner libs, that we use a lot, so no metter to be separated.
Second. Currently I'm working in ArchiCAD and use IFC for conversation on BIM.
But the idea for adding IFC specifications to Sverchok was a dream for me. Using Sverchok for that purpose, we can add some extra functions in viewer bmesh so it will add that ID's for IFC exporter.
But i do not know structure of IFC.
Am I correctly got your thought?
Hi Nikita, I'm trying to keep it as IfcXtreme as a cross-platform which is the next generation of IfcDoc
Working with IfcDoc is hard, especially for the majority and I'm wishing for an easy to use one
I think PyFlow has some features that are useful like:
IFC Schema thousands classes/objects, so there's a need for an easy way to convert all of them to Nodes and Sockets, ect
IFC 4.2 Final: https://drive.google.com/file/d/1SUPN7wPG9N9yqecw7DGCqhrTyWuGz69K/view
IFC 4.1 Final Release: https://drive.google.com/file/d/1LNExcEI5vkv5as0o5pp5KIldSweZWLW5/view
Hey @nikitron ! It's cool that you're excited about this! I am relatively experienced in the IFC schema so I would be happy to teach you everything that I know. You might want to check out https://blenderbim.org/ - which allows Blender to export IFC, which I am the main developer of.
There are two aspects here:
If you're interested in implementing both, let's do it!
@Moult Thanks Dion for explaining in a clear way
I think OpenBIM can summarized in this way:
bSDD (IFD) + IFC (input) --> IDM (process) --> MVD (output)
I think Sverchok is good at generating "Geometry" and BlenderBIM is good at injecting/mounting IFC Data/Information into Geometry to build OpenBIM models (MVD as a model =
.ifc
file)And there's a need for IfcXtreme which does IDM/MVD part to generate
MVDXML
which is a data/information template to check/control the processesI think it'd be better IfcXtreme be a separate add-on other than Sverchok and BlenderBIM because it does a specific job which is different
intrigued, but not sure the nodes are fit documentation purposes.
More suitable is lists, as i see.
But till i not investigate that issue, i don't know.
Nodes somewhat fit, but need some improvements and adding some features and also in the near future an engine that can reads and writes IfcDoc file
#5837= DOCENTITY('IfcObject','<p>An <em>IfcObject</em> is the generalization of any semantically treated thing or process. Objects are things as they appear - i.e. occurrences.</p>\X\0D\X\0A\X\0D\X\0A<blockquote class="note">\X\0D\X\0ANOTE Examples of <em>IfcObject</em> include physically tangible items such as wall, beam or covering, physically existing items such as spaces, or conceptual items such as grids or virtual boundaries. It also stands for processes such as work tasks, for controls such as cost items, or for actors such as persons involved in the design process.\X\0D\X\0A</blockquote>\X\0D\X\0A\X\0D\X\0A<p>Objects can be named, using the inherited <em>Name</em> attribute, which should be a user recognizable label for the object occurrance. Further explanations to the object can be given using the inherited <em>Description</em> attribute. The <em>ObjectType</em> attribute is used:</p>\X\0D\X\0A<ul>\X\0D\X\0A <li>to store the user defined value for all subtypes of <em>IfcObject</em>, where a <em>PredefinedType</em> attribute is given, and its value is set to USERDEFINED.</li>\X\0D\X\0A <li>to provide a type information (could be seen as a very lightweight classifier) of the subtype of <em>IfcObject</em>, if no <em>PredefinedType</em> attribute is given. This is often the case, if no comprehensive list of predefined types is available.</li>\X\0D\X\0A</ul>\X\0D\X\0A<p>Objects are independent pieces of information that might contain or reference other pieces of information. There are several relationships in which objects can be involved:</p>\X\0D\X\0A<ul>\X\0D\X\0A <li><b>Association to external/internal resource information</b> - an association relationship that refers to external/internal\X\0D\X\0Asources of information. See supertype <em>IfcObjectDefinition</em> for more information.</li>\X\0D\X\0A <li><b>Assignment of other objects</b> - an assignment relationship that refers to other types of objects. See supertype <em>IfcObjectDefinition</em> for more information.</li>\X\0D\X\0A <li><b>Aggregation of other objects</b> - an aggregation relationship that establishes a whole/part relation. Objects can either be a whole, or a part, or both. See supertype <em>IfcObjectDefinition</em> for more information.</li>\X\0D\X\0A <li><b>Assignment of a type</b> : <em>IsTypedBy</em> - a definition relationship <em>IfcRelDefinesByType</em> that uses a type definition to define the common characteristics of this occurrences, potentially including the common shape representation and common properties of all object occurrences assigned to this type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).</li>\X\0D\X\0A <li><b>Assignment of a partial type</b> : <em>IsDeclaredBy</em>, <em>Declares</em> - a definition relationship <em>IfcRelDefinesByObject</em> that uses a component of a type definition (a part of a type, called the "declaring part") to define a component of an occurence (part of occurrence, called the "reflected part"). This is also refered to as a "deep copy". The common characteristics of all parts in the occurrence are defined by parts in the type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).<br></li>\X\0D\X\0A <li><b>Assignment of property sets</b> : <em>IsDefinedBy</em> - a definition relationship <em>IfcRelDefinesByProperties</em> that\X\0D\X\0Aassignes property set definitions to the object occurrence.</li>\X\0D\X\0A</ul>\X\0D\X\0A\X\0D\X\0A<blockquote class="note">NOTE See <em>IfcRelDefinesByType</em> for an explanatory figure. Also see there for how to override type properties by occurrence properties. See <em>IfcRelDefinesByObject</em> for an explanatory figure for the assignment of a partial type.</blockquote>\X\0D\X\0A\X\0D\X\0A<blockquote class="history">HISTORY New entity in IFC1.0</blockquote>\X\0D\X\0A\X\0D\X\0A<blockquote class="change-ifc2x4">IFC4 CHANGE The inverse relationships <em>Declares</em>, <em>IsDeclaredBy</em>, and <em>IsTypedBy</em> have been added, types are not longer included in the <em>IsDefinesBy</em> relationship. <em>IfcProject</em> has been promoted to be a subtype of <em>IfcObjectDefinition</em> -> <em>IfcContext</em>.</blockquote>\X\0D\X\0A\X\0D\X\0A<p class="spec-head">Informal Propositions:</p>\X\0D\X\0A<ol>\X\0D\X\0A<li>A partial type assignment, i.e. the inverse attribute\X\0D\X\0A<em>IsDeclaredBy</em>, or <em>Declares</em> shall only be used, if\X\0D\X\0Athe object is part of a decomposition, i.e. if either\X\0D\X\0A<em>IsDecomposedBy</em>, or <em>Decomposes</em> is exerted.</li>\X\0D\X\0A</ol>','03ad1d5a-0288-44a7-b612-096bd45ae66b','',$,$,$,$,$,(#39625,#95108,#38790),#132183,1,'IfcObjectDefinition',205,(#132159,#132163,#132167,#132171,#132175,#132179),(#111256,#111260,#111264,#111268,#111272),(),(#145262),(),$,$,(#132156));
Let's s start step by step, anytime you say I write a POC at https://github.com/IfcXtreme/IfcXtreme
@nikitron if you could point me to some documentation showing how to create a new node in Sverchok, and maybe attach a sample file, I'd be happy to do a bit of work on the IFC export portion (not the IfcDoc portion, just yet).
@Moult Last night I checked Sverchok
We have to write our own properties
ifcx.props
, because Sverchok uses Blender propertiesbpy.props
, most of the times, DefinedTypes (130), EnumerationTypes (217), SelectTypes (60), ...The last chapter of this Guide refers to creation of nodes in Sverchok
k
Thanks @bitacovir
However, I think Dion needs the deveeloper package, Sverchok in its raw mode
Maybe this (https://forums.buildingsmart.org/t/guids-in-an-bim-project/2593/9?u=red_code) explains why IfcXtreme is important ??
mods, (https://github.com/fabfoundation/mods)
Antimony, (https://github.com/mkeeter/antimony)
Animation Nodes, (https://animation-nodes.com)
Have some similarities with what I follow in IfcXtreme! My approach is something like this:
Combined with other methods