BlenderBIM: Have an IFC Dumb Wall roundtrip onto itself

edited September 5 in General

Possible to have an IFC Dumb Wall roundtrip on itself in BlenderBIM? That is, recreate the 'solid' modifier.
Would love to see, as a general roadmap in BlenderBIM, that anything that is given added intelligence in Blender (through a modifier, for example), can be reconjured, upon the import of that IFC file into BlenderBIM.

James_UK_BIM_Manager

Comments

  • That's the plan :) Actually, I think that it can be done natively with IFC's material layer set. Unfortunately, the BlenderBIM Add-on does not yet support the IfcMaterialLayerSetUsage feature in IFC - that is the prerequisite for this to work.

    In the short term, I guess I can do similar to what FreeCAD is doing. @yorik - do you reckon there are enough similarities between basic Blender modifiers (solidify, array, mirror) such that both FreeCAD and Blender can use the same IFC Psets to record them?

    theoryshawJames_UK_BIM_Manager
  • Is there a 'tear' emoji?

  • Well I think we should rather look at it the other way around-what are the possible ways of representing geometry in ifc and what should they translate to in Blender. (I don't think there should be Blender- or even Blender plug in- specific data in the export , just to enable roundtripping.)
    I can think of at least four ways people draw walls in Blender right now
    -magic (archipack, plane with one modifier, controlled by parameters)
    -axis with two modifiers
    -plane with one modifier (btw @Moult what is the reason you picked specifically this option?)
    -mesh boxes
    all of which can be considered a standard. Will round tripping mean we have to pick some of these as our favorite and kind of force people to use them?

  • edited September 4

    Roundtrip simple wall is only a first step, there are cases where "simple" extrude will not fit at all, eg wall under roof with slope on top of wall. For such cases (and many orther ones) only a geometric representation using polygons will handle properly all cases.

  • edited September 4

    There is no easy answer :(

    Even within IFC there are many ways to model a wall. At one point in time, buildingSMART picked a favourite of a 2D flat profile on the Z axis, which was extruded up and made an implementer agreement to use that (yes, this contradicts the IfcMaterialLayerSetUsage, which is perpendicular from an axis). They even created IfcWallStandardCase to attempt to enforce this. They have since realised that this was a bad idea and backed off.

    When faced with a difficult, non-standard scenario, my usual approach is not to overthink it and try things out and see. When things seem more successful, they tend to catch on, and over time organically grow into best practices.

    I chose a plane with one modifier because it was the simplest non-magic method I could possible think of, and when I tried doing some commercial jobs with the BlenderBIM Add-on, that was my favourite method. Mesh boxes are painful when dealing with wall junctions, especially when non orthogonal. I didn't know you could do it with a single axis with two modifiers - can you show me how? I didn't want to do magic, since Archipack is already doing a great job, and I wanted to offer a non-magical alternative :)

    James_UK_BIM_Manager
  • @JanF that looks much simpler than my solution! I've implemented it as a default in the BlenderBIM Add-on now: https://github.com/IfcOpenShell/IfcOpenShell/commit/dae5adc38b614c673c42fff50ea89daffd88ca46

    I've left a boolean toggle (defaults to false) in case you do want a plane-based wall (e.g. if you are drawing a wall with sloping height).

    theoryshaw
  • @JanF I might be missing something, but your suggested wall seems to be flared out at the ends.

  • Enable "Even thickness" in solidify modifier.

    theoryshawDarth_Blender
  • Btw. I learned this from Chris Prenninger (https://www.chrisp.zone/), he has some nice tips on parametric modeling in Blender.

    Jesusbill
  • Indeed there is a lot of similarity between freecad and blender bim workflows.. draw in 2d -> extrude/solid -> array is a very common one. But more and more I also like the idea that geometry is geometry, and each user (or app) sort of "chooses" how to edit that geometry. for ex, a wall drawn as a vertically extruded footprint in one app, might be edited another way (for ex by moving verts of a vertical face) in another app.. that is, the modelling history would not necessarily be imposed on you..

  • @yorik I think BlenderBIM schould be able to have more options: 1. import as close to the Ifc definition as possible (beam defined as an axis with profile as beveled curve, extruded wall as mesh face with modifier and so on) 2. all mesh 3. some other we agree on?
    I hope we get the workflow from topologic soon and will be able to ditch the "2d->extrude->..." workflow and work with spaces only. But until we do, my ideal would be something like this:
    1. sketch, similar to what @DADA_universe did here https://community.osarch.org/discussion/comment/1782#Comment_1782 (I imported my sketch from inkscape)

    2. generate walls and openings by digitizing the sketch (simply add vertexes on intersections, unless the intersection is close to the stroke center, in that case opening, or something like that, I just redraw the sketch manually and added modifiers)

    3. fix some points and add dimension constraints, refine the model by overwriting the dimensions and so on (right now I don't know about anything in blender able to do this?)

    Generally start from a sketch of spaces and refine, this could work as a base for the topologic workflow as well.

    DADA_universeJQLbrunopostleJesusbill
  • JQLJQL
    edited September 22

    That would be very interesting to have. However, you're generating doors and windows as objects with fixed width. It would be nicer if we could define the width of doors and windows on the sketch too, using some means of identifying where they start and end.

    There are a lot of examples of doors/windows that are tangent to walls and that possibility may also be difficult to detect by the software.

    Some kind of symbols for openings could probably be used to clearly mark openings.

  • JQLJQL
    edited September 22

    There is an example o Github's sverchok page similar to this by enzime69:

    @enzime69 said:
    Using Grease Pencils and SV Nodes to draw WALLS and DOORS for my simple imaginary house.

    https://t.co/WVuvMSSZnM?amp=1

    There are a few gotcha you can try the setup yourself but hopefully can be improved in the future:
    enzyme69/blendersushi#811

    The link to sverchok page where it's featured:
    https://github.com/nortikin/sverchok/issues/2814

    Maybe it would be interesting to talk with enzime69 as he's probably doing something similar to what @DADA_universe did, but with sverchok

    I'm still miles away from this. I'm just figuring out blender.

    JanFJesusbillCGR
  • My idea was to use the length of the perpendicular stroke to roughly estimate the planned width of the opening 🙂

  • Maybe there can be a way that connects points to a grid (like a structural grid) and forces walls to be generated orthogonally to the grid. Architecture is a fluid that boils at 90o most of the time.
    Having sketches turn into Bézier splines or other type of regular curves would also be cool. I don't know if it's even remotely possible.

  • @JanF said:
    @yorik I think BlenderBIM schould be able to have more options: 1. import as close to the Ifc definition as possible (beam defined as an axis with profile as beveled curve, extruded wall as mesh face with modifier and so on) 2. all mesh 3. some other we agree on?
    I hope we get the workflow from topologic soon and will be able to ditch the "2d->extrude->..." workflow and work with spaces only. But until we do, my ideal would be something like this:
    1. sketch, similar to what @DADA_universe did here https://community.osarch.org/discussion/comment/1782#Comment_1782 (I imported my sketch from inkscape)

    2. generate walls and openings by digitizing the sketch (simply add vertexes on intersections, unless the intersection is close to the stroke center, in that case opening, or something like that, I just redraw the sketch manually and added modifiers)

    3. fix some points and add dimension constraints, refine the model by overwriting the dimensions and so on (right now I don't know about anything in blender able to do this?)

    Generally start from a sketch of spaces and refine, this could work as a base for the topologic workflow as well.

    @JanF I find your thoughts on this and @JQL 's addition to it quite interesting and it all got me thinking. Caveat though, what I'm about to touch on is just a thought experiment and not something I may be able to implement, I'm however wondering if anyone can make sense of it in some way.
    If we look at those line sketches as a graphical representation of a 'language' for architecture, i.e. orthography of sorts, with the symbols and how they are arranged having meaning, can we take it one step further and make that language programmable, such that different symbol combinations can be used to generate volumes and the meshes enclosing those volumes according to pre-defined rules? I have not said anything new here, I have only re-presented what has others have said before.

    Regarding volumes, there is the concept of colliders in game development which helps in defining volumes and detecting when they are crossed. I've always thought that the way colliders are used could probably be adapted for the sort of problems Topologic tries to solve in terms of articulation of volumes and not just meshes in architectural representation. This made me think of the Godot Game Engine and the fact that it has already been used to build very powerful painting apps, so its ability to build sketch tools is proven. I asked on the Godot Page on Facebook and got two recommendations for libraries that potentially could be integrated with Godot for some form of pattern recognition for line sketches / symbols:
    1) https://depts.washington.edu/acelab/proj/dollar/pdollar.html
    2) https://tcbmi.com/strokeit/
    The first one in particular seems plausible, there is a demo that works on the page. It has Python versions (amongst others) available and is distributed under the New BSD License. Perhaps it can be integrated into Blender? I don't know how the collider concept would be integrated in Blender though.......such a concept existed in the Blender Game Engine but has now been removed unfortunately.

    My pitch is that if we had a way of sketching / doodling (with a mouse or digital pen) and a system (or grammar) for representing doors, walls, windows (it should also be possible to sketch in 3d) etc with simple symbols (like the suggestion by @JQL for indicating doors) and a symbol for creating volumes, naming them and defining their relationship to walls, doors, windows (I understand from @topologic's previous interventions that the volumes probably should be defined first, and that makes absolute sense), and then a magic button you can press which calls up a pop up that asks you to either change parameters for stuff like window heights, wall thicknesses, etc, or accept default values, after which the doodle is used to generate Blender (Archipack?) objects based on those parameters, with the relationship with the volumes / colliders still being maintained. BlenderBIM can then chew this material and make more magic out of it. It really would be a beautiful thing.......I think.

    My suggestion would still be to do this with Blender Grease pencil objects, and this recent ability to trace bitmaps into Grease Pencil objects means that you can ''code'' your doodle by sketching the old fashioned way on paper, using the appropriate symbols and then scan and import into Blender, and when you trace the image into Grease Pencil, you would then be able to press the magic button to generate a 3d model from your sketch. I've obviously over simplified a fairly complex set up with my pseudo code, but I imagine this should be possible and it could be a workflow that would catch on for fast iteration for early stage design and concept development in Blender.

    Here's a bonus link to an article / tutorial on using Grease Pencil for generative art for some more Grease Pencil inspiration.

    CGR
  • As far as i'm aware, Potrace only create lines between areas of different colors, but is not able to actually trace from lines.

  • @stephen_l said:
    As far as i'm aware, Potrace only create lines between areas of different colors, but is not able to actually trace from lines.

    I don't know for sure.

  • Hi everyone! This might be a good place to show a certain concept sketch i made for architectural element creation / editing for Blender, done a couple years ago. I just revisited it and it seems it still has some value to it. Stephen might recognize it, i think i showed it to him at some point of his Archipack development evolution.
    It deals with basic wall / opening creation and editing, the way i think most of us architects would like to have in real architectural production environment. It exists in three layers - a simple vector sketch for user to edit, an autogenerated base plan for 2D representation and an autogenerated 3D geometry for everything else. In this case, the user manipulates the first, sketch layer exclusively.

  • I think it would be good idea to think a little bit about these basic, high level pipeline concepts that would be visible and quickly - understandable to a broader AEC / archvis community and give some energy to ever-lasting primitive tool and snapping issues in core Blender.

Sign In or Register to comment.