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

nikitron

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

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

    • those two side-bars, left and right ones (Properties and Tree (NodeBox))
    • Subgraphs
    • So on

    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:

    • Integration with BlenderBIM to allow Sverchok to add IFC data to parametrically created geometry. This is your current interpretation, I believe. BlenderBIM has done a lot of the hard work in implementing the schema and defining the property groups in Blender, so Sverchok just needs to insert some Blender property groups, which is relatively straightforward.
    • A new feature to allow Sverchok to parametrically create IFC schema definitions, which can then be used to parse IFC data in any IFC-enabled program. The schema isn't an IFC file itself, but it then defines what you can do in IFC. For example, you might have heard of an MVD: this is a custom IFC schema definition. This, I believe is what @ReD_CoDE is aiming for.

    If you're interested in implementing both, let's do it!

    ReD_CoDE
  • @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 processes


    I 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&nbsp; 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&nbsp; 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&nbsp; New entity in IFC1.0</blockquote>\X\0D\X\0A\X\0D\X\0A<blockquote class="change-ifc2x4">IFC4 CHANGE&nbsp; 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> -&gt; <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 properties bpy.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

    MoultReD_CoDE
  • Thanks @bitacovir

    However, I think Dion needs the deveeloper package, Sverchok in its raw mode


  • 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

Sign In or Register to comment.