BlenderBIM Add-on new release!



  • edited November 2020

    I can imagine that layers could work like Archicad. They use it for dimensioning/anotation. So that the 2d info for schematic 1:200 drawing has a layer. But also the 1:50 2d info has a layer. That way you can instantly switch between the level of detail you want tot show. Although that is what i remember of my test run with Archicad. Also Revit does have a kind of layer function, it has design options. Really useful for testing for example different façade options. The new layer function could also used for that? Also you could use it to quickly hide parts of the building or surrounding

    How do you guys planning on using the new layer function?

  • @JanF I guess the thing to point out is the layers in IFC are not "new", in fact, you may open a lot of existing IFC files and discover that there are actually layers hidden inside, just that most viewing software did not expose it. Layers are optional and do not replace IFC classes.

    Layers were developed by @krande - so I'm sure he can elaborate on the usecase that prompted development :)

    However, I can think of a few usecases myself:

    1. Many BIM software still work with a layer based approach and have poor IFC support. This results in an IFC with poor IFC classifications, but rich layer data. This layer data can be used to help clean up the IFC.
    2. Layers can be used to store styling information, especially for 2D annotation, where the classes are less meaningful, especially after buildingSMART went ahead and deleted 90% of them.
    3. Some government bodies and older systems have a contractual requirement to comply with a CAD layer standard, so that BIM models and older CAD models can interoperate.

    @Meetlat good point about the design options! IFC currently has very poor support for design options, so layers may be used to the rescue!

  • edited November 2020

    @JanF @Moult The need arose from a couple of things. One issue was the fact that layers is used extensively in our primary CAD system and we needed a way of transferring that information through IFC. Without having an option to hide certain elements by default we ended up with a ton of doubly defined geometries or other non-physical geometry volumes (no-go zones, etc..). The IfcPresentationLayers seemed to me to be a decent approach for setting certain elements in a defaulted "hidden" state. I would be happy to explore better alternatives if anyone know of some alternatives for grouping elements in IFC with similar abilities? You might ask why we have doubly defined geometries in the first place? Well one issue I recently encountered was specifically with built up girders. I wanted them to be represented as a IfcBeam so that I can access all the necessary attributes needed for my structural analysis using beam elements (start, end positions, cardinality point, etc..) whilst fabrication would need the built up girders represented as individual IfcPlates given that the girder is welded up from individual plates in the first place.

    Personally I do not have any strong feelings one way or the other towards IfcPresentationLayer in itself (which two-three weeks ago I did not know existed :p). If someone know of better alternatives that provide the same level of functionality within the IFC ecosystem I would gladly change :)

  • I think it's better we gather all "use cases" and see which approaches, and which IFC classes and attributes are suitable
    Personally, I think layers are good and even can become better
    It's about a year I want to see some new features in BlenderBIM that opens doors to do "layer-based design" which is a normal approach in facade design

  • Any decent IFC viewer should be able to filter elements by any property. What do you need a layer property for? It has no meaning whatsoever. If it is a design option, simply make a "design option" property, if you need some elements to be hidden make a visibility property.
    If you have different versions of the same element they should be representations.
    If you want to send the model and force a particular view with a particular settings on the viewer can't you just send a bcf with it?

  • @JanF sort of. In theory the layer information (name / visibility / frozen / etc) could be turned into Pset_CadLayer and a bunch of the spec removed. There is one technical difference between the two solutions, which may or may not describe the logic that buildingSMART went through when they made this decision.

    In the pset solution, psets in IFC are assigned to elements, therefore an entire element can be assigned to one layer, but not more, as psets cannot be repeated.

    In the dedicated assignment class solution (i.e. the way it is now), the assignment class actually does not reference an element. Instead, it references a representation, or a representation item. This has a few implications. The first is that theoretically you can assign a rep or rep item to more than one layer, which is not possible with psets. The second implication is that if you assign to a rep, you can have one context in one layer, and another context in another layer. E.g. the body geometry can be in a layer Foo and the clearance outline can be in a layer Bar. The third implication is that if you assign to a rep item, you can have one portion of the geometry in one layer, and another portion of the geometry in another layer. E.g. from a single Window element, the frame can be in one layer, and glazing in another.

    All this highly granular layer assignment make a little more sense when you consider that unlike a pset solution, a dedicated class lets you reference a layer style. This includes line weights, stroke patterns, and so on. The obvious rebuttal is that the same thing can be achieved with materials and regular style assignments ... but ah well.

    Personally, I'm with you. I don't want to use layers, and I don't like this overcomplicated assignment / layer style hierarchy. I thought I'd simply point out that there are technical differences between the two approaches. Also, most IFC viewers ignore layers, it's nice to have a FOSS one that supports it well, even if we don't use it to author files.

  • @JanF, Dion mentioned a simple example of layered-design:

    E.g. from a single Window element, the frame can be in one layer and glazing in another.

    For instance, Revit has limited support of layered walls, you can define wall layers, but it's really hard and time-consuming and even sometimes impossible to build complicated/composite wall layers, with its associated parts, like frames, bolts, ...
    So, we need some layers, or planes, and also some reference (snapping) points in Blender and BlenderBIM to be able to build such walls that have patterns that those patterns repeat when we draw/put a wall from point A to point B

  • So, we need some layers, or planes, and also some reference (snapping) points in Blender and BlenderBIM to be able to build such walls that have patterns that those patterns repeat when we draw/put a wall from point A to point B

    It's way harder than you may think, eg what happen arround windows / doors, for wood framed walls as sample, you must take account of openings to spread structural beams in credible fashion, things like that require another level than what blender native array is able to handle.
    A "Rule" based entity like some kind of "Rail clone" probably will solve such issues, but as it require multiple entity interaction is pretty hard to implement properly.

  • @stephen_l some months ago we (you, Dion, and I) talked about this in the webchat, and you're right (especially about the rule-based notion)
    Some months ago I had another idea, today I have another, because Blender is going to improve in some areas that are important to me, like "volumetric rendering", like OpenVDB, and also subdivision area, like OpenSubDiv
    Soon we will focus more on OpenSubDiv which has the potential to open some new doors

  • @stephen_l just a question, Blender uses which scene graph method? Is it a custom scene graph/tree?

  • edited November 2020

    Latest version of BlenderBIM is discussed at BIMvoice:
    Moult shows the use of IFC Debug feature for advanced inspection of IFC data. I learned that you can read IFC files like text and use the #number to inspect specific data within Blender. He also shows the IFC Object Material function, explaining the four different ways to set material properties. At the end Sverchok is used to filter an IFC for data using the IFC nodes. Nice video, helps understanding the use of the add-on a lot! Thanks!

  • Thanks for sharing @Meetlat! Credits go to @condur for helping produce the video! We will be releasing a new one every week. I think next week's one will be a back to basics.

  • edited December 2020

    BlenderBIM Add-on v0.0.201207 has been released with 50 new features and fixes. It's our built environment, help support the BlenderBIM Add-on: 100% free and open source software that lets you author and document BIM data fully to ISO standards. It's built by the AEC community, for the AEC community. Get it today:

    Highlights include drastically improved material, geometry, and context IFC round-tripping, and stabilisation of the new material system.

    Image credits go to the Opening Design Aalseth Residence team - available under CC BY-SA 4.0.

    New features:

    • Add support for IFC2X3 material data imports
    • Vendor workaround for "treat styled item as material" now deprecated, as new material and style system is much better
    • Add support for importing IFC material description and category attributes
    • Native element roundtripping now supports layer assignments
    • Native representation roundtripping now auto-fixes representations that aren't using contexts properly
    • Improved packaging and refactoring for BIMTester makes it easier for other devs, including FreeCAD integration (thanks berndhahnebach!)
    • Native geometry roundtripping now decouples surface styles
    • Native geometry roundtripping now lets you change styles independently from geometry
    • New experimental utility to upgrade IFC2X3 to IFC4, and downgrade IFC4 to IFC2X3 automatically
    • Native geometry roundtripping now works across different IFC versions, so you can roundtrip and change schema at the same time
    • Exporting classifications to different IFC schemas (including graceful downgrading) is now supported
    • Support graceful downgrading of material definitions from IFC4 to IFC2X3
    • Support built-in vendor workaround for importing invalid IFC properties coming from ArchiCAD
    • Roundtripping geometry now works for geometry which has one to many relationships between geometry and styles
    • Handle and gracefully accept invalid IfcGrid elements coming from Revit. Sigh.
    • New experimental support for Non-IFC, Blender object clash detection
    • IfcOpeningElements now only show as wireframes by default for convenience
    • Roundtripping now enables openings by default, which works much better with the latest Blender boolean modifier
    • The object property sets panel now also shows inherited psets from the construction type
    • Improved UI for psets and qtos with collapsible panels and improved readibility
    • New UI that shows inherited materials from the construction type if available
    • Add support for exporting material sets for construction types
    • All representation contexts are now round-tripped in native roundtrip mode, not just the body context.
    • New powerful and intuitive smart clash grouping feature (thanks vinnividivicci!)
    • The Optimise IFC patch recipe is now packaged with the BlenderBIM Add-on
    • The ExtractElements IFC patch recipe is now packaged with the BlenderBIM Add-on, letting you extract a subset of elements from a larger IFC file
    • Dumb grids are now auto placed in an IfcSite if it can detect one
    • Drawings now have classes for material layer set names
    • Improved usage descriptions for IFCCSV to help new users
    • You can now smart tag material attributes in drawings
    • New utility function to check is_a() in the schema without needing a file first
    • Auto add the currently loaded IFC when creating a drawing for the first time
    • You can now apply drawing styles to elements with material set usages
    • New vendor workaround for exporting to the DESITE BIM application
    • The Migrate IFC patch recipe is now packaged with the BlenderBIM Add-on, letting you upgrade or downgrade IFC versions
    • IFCs with invalid attributes are now gracefully exported with warnings when exporting to a schema which doesn't allow it to let the user fix it easily
    • You can now bake parametric geometry into meshes

    New fixes:

    • Fix bug where no colour is set if only a styled item has a style but a material has no representation
    • Fix default category to none, not load bearing, in case we import IFC2X3 where this property doesn't exit
    • Fix bug where a material wouldn't get assigned for multiple mapped representations
    • Fix warnings in copy attribute to selection tool
    • Fix import bug where some IfcOpeningElements aren't placed in the correct openings collection
    • Fix regression where the section cutting plane doesn't work unless you've selected an object
    • Fix bug where a drawing can't be created with a file that uses material set usages
    • Fix issue where invalidly declared representation contexts from other vendors can confuse drawing creation
    • Fix bug where sometimes thes IFC class and product dropdowns get out of sync
    • Fix import bug where duplicate material names with accents fail to import
    • Fix bug where some aggregates can cause drawing generation to fail
    • Fixed example script in the IfcOpenShell Qt GUI viewer
    • Fix bug where spatial elements didn't get styles exported correctly
    krandeCGRMeetlatEinarCyrilReD_CoDEtlangJanFJesusbillbrunopostleand 7 others.
  • I guess I now rank as a collector!

  • If anybody is looking for old builds there is a link on the site, or here for convenience :)

  • Hi, I'm brand new to BlenderBIM, I was trying to follow the HelloWorld tutorial from YouTube, got all the way through to the export part, I'm getting an error on export

    "ValueError: Expected AggregateOfEntityInstance for attribute IfcMemberType.RepresentationMaps, got #99=IfcProductDefinitionShape($,$,(#91,#98))"

    I don't know if I have the add-on installed correctly. Could someone offer some help please?

  • @Smarty23 that's an odd error. Which Hello World tutorial is it from YouTube? I see we're both online now, can you join the OSArch Live Chat (see link at top of the forum) and ping me on the chat, and let's screenshare using Jitsi Meet. Then I can help debug.

  • edited December 2020

    @Smarty23 ah yes, that is a heavily outdated video. In future videos I do put up a warning screen in case the video gets out of date. Basically to fix it, instead of manually creating the aggregation collection, use the "aggregate" buttons in the scene properties.

Sign In or Register to comment.