If you're reading this, we've just migrated servers! If anything looks broken please email dion@thinkmoult.com :)

4D Workflow recommendation

edited September 2022 in General

So what use of software is recommended to use the 4d capabilities from the ifc schema?
4D software: ProjectLibre ?
4D Animation: BlenderBIM ?
I haven't tried anything yet, but before I get into this variant, I wanted to know who has already had experience with it. Maybe with other software.

Comments

  • @SigmaDimensions is the one to ask for 4D ?

    Martin156131
  • https://community.osarch.org/discussion/comment/9808/#Comment_9808
    Check this discussion out, I think it might help. Or try to describe what exactly are you trying to do.

    Martin156131
  • edited September 2022

    Thanks for the help.

    What I have is a 3D model as ifc and a schedule in a table. The goal now would be to somehow add the information from the schedule into the ifc so that everything is stored in ifc.

    The ifc schema has the 4D capabilities and therefore I think it is possible, but I don't know how.

    The long-term goal would be to automatically read the schedule with a script and automatically assign these processes to the correct objects in the 3D model in ifc -> so that in the end you can quickly and easily see the construction sequence in an ifc viewer that also supports 4D.

  • edited September 2022

    If you have your schedule already created in other project management software, you may auto convert it using Ifc4D: https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.7.0/src/ifc4d - the proprietary "big three" are already covered.

    I've personally used ProjectLibre for basic schedules. It's simple and you can pick it up without any training, but lacks many more advanced features that the big three have. It doesn't have an Ifc4D converter yet though.

    You can also create your schedule within the BlenderBIM Add-on interface itself. See Scene Properties > IFC Costing and Schedule. It works very much like other project management software and I've trained others familiar with existing software very quickly on it, yet it's not quite "as slick" and doesn't have an gantt chart visible at all times (you need to press a button to show it) which is not very pleasant. It works, though. Lots of QoL work still to be done.

    Animation-wise there are two types of 4D animation in our industry: fancy marketing explanatory ones, for which Blender is more than capable and I've used it on large commercial jobs (and won some too!), and more technical "schedule-connected" generated animations, which I also use at work (and for some projects it's a staple!). The BlenderBIM Add-on has basic generation capabilities with speed controls and so on. It won't yet create the timeline overlay though, but it does generate an auto-updating date text. I've used this quite a bit at work too. If you're good with Blender you can do quite a few things that the proprietary tools can't do.

    Or you can script it yourself. This'll get you started for scripting the schedule generation. You can even script custom animation yourself, and use the existing animation generation code as a starting point. I know of a huge commercial project which has written a lot of custom Blender IFC animation code and is using it very successfully.

    import datetime
    import ifcopenshell
    import ifcopenshell.api
    import blenderbim.tool
    
    def add_task(model, name, predecessor, work_schedule):
        task = ifcopenshell.api.run("sequence.add_task", model, work_schedule=work_schedule)
        task.Name = name
        task.PredefinedType = “CONSTRUCTION”
        task_time = ifcopenshell.api.run("sequence.add_task_time", model, task=task)
        ifcopenshell.api.run(    
            "sequence.edit_task_time", model, task_time=task_time,
            attributes={"ScheduleStart": datetime.date(2022, 1, 1), "ScheduleDuration": "P1W"}
        )
        if predecessor:
            ifcopenshell.api.run("sequence.assign_sequence", model, relating_process=predecessor, related_process=task) # defaults to an FS relationship
        return task
    
    model = blenderbim.tool.Ifc.get() # model = ifcopenshell.open('whatever.ifc')
    schedule = ifcopenshell.api.run("sequence.add_work_schedule", model, name="Construction")
    task = add_task(model, "Site est.", None, schedule)
    start_task = task # Life is simpler if you know your start task
    # Example of building a building storey by storey
    for storey in model.by_type("IfcBuildingStorey"):
        name = f"Construct {storey.Name}"
        task = add_task(model, name, task, schedule)
        for product in ifcopenshell.util.element.get_decomposition(storey):
            ifcopenshell.api.run("sequence.assign_product", model, relating_product=product, related_object=task)
    
    ifcopenshell.api.run("sequence.cascade_schedule", model, task=start_task) # Notice we didn't care much about explicit dates / etc, you can if you want to, but this'll also autocalculate it all for you.
    ifcopenshell.api.run("sequence.recalculate_schedule", model, work_schedule=schedule) # Critical path, float, etc
    
    Martin156131SigmaDimensionsvpajickaiaurelienzh
  • Thank you all for your advises. Now I have to read, learn and test the whole thing. I will update this thread when I have created something useful.

  • So with this sample ifc file, that has only five IfcWall cubes, i tested @Moult s Script.

    For this i created this jupyter notebook https://github.com/Martin15135215/git_ifc_test/blob/main/test_4d.ipynb
    the only thing that is different from @Moult s Script, is that, i have added an work plan and modified the for-loop.
    And this created me this nice ifc file https://github.com/Martin15135215/git_ifc_test/blob/main/ifc4_wall_cube_4d.ifc

    to test the created ifc file with the 4D Elements, i loaded it in BlenderBIM and followed @SigmaDimensions instructions from here
    And it did work ?

    JanF
Sign In or Register to comment.