[BlenderBIM & CharonIFC] Construction Project Planning, and Cost Scheduling

1356

Comments

  • @Moult, I have reached out to Dave. He is willing to have a chat with OSArch. Below is his response.

    Hello Idowu,
    I'm glad to hear from you that CharonIFC can be of interest to your community, I would be glad to have a chat about the project. Let me know when you would like to have a chat, my favourite timeframe would be in late afternoon or early evening CET.
    I had also made a series of videos to demonstrate how the software can be used, unfortunately they are in italian (https://www.youtube.com/channel/UChnG6wN-w2Qs7-tnuecf3Lg), but youtube che auto add english subtitles.
    Cheers.
    Davide vescovini

    So I guess the ball is in our court to decide when we can meet with him. Let me know how your schedule fits into his timeframe.
    @tlang @duncan I guess you would like to join the chat too.

    carlopav
  • @walpa, sure we can. Feel free to open the thread. bSI schema and docs can become a maze and difficult to read at times. It think the main difference between IfcWorkPlan and IfcWorkSchedule is in their entity definitions as supertype /subtype (jargon used in EXPRESS-G ). Below are the entity definitions on the bSI website.

    An IfcWorkPlan represents work plans in a construction or a facilities management project.
    An IfcWorkSchedule represents a task schedule of a work plan, which in turn can contain a set of schedules for different purposes.

    I believe @Moult and others who are vast can help clear this. But I think IfcWorkSchedule is a subtype to IfcWorkPlan. IfcWorkPlan seems to a supertype entity. However, IfcWorkSchedule can be a supertype entity in some cases, but will always be a subtype to IfcWorkPlan.

  • edited March 2021

    Hi everyone,
    I mapped the IFC classes and relationships for a 4D / 5D deployment.
    It is not complete yet, the classes for IfcObjectType and the part of IfcResource are missing (not yet fully understood).
    I omitted the superclasses for convenience.
    This is just my understanding of the scheme, if I am wrong with something feel free to correct me.

    Greetings
    Edit 1 - attached svg file for anyone who wants to edit

    lukasSigmaDimensionsJohnMoult
  • @iosvarms I understood the concepts, but I can't see what it would look like in a UI.
    I posted on the thread about 5D the result of my studies on the bSI scheme so far.
    We can talk more about my doubts there.

  • That looks like a 'graph' ? what file format is it? is it a representation of an ifc file? which tool?
    mapped? with charonIFC?
    Lukas

  • @lukas It is just a 'mind map' to facilitate the tracking of the relationships between the IFC bSI classes. I edited the post by attaching the file.

  • edited March 2021

    like @Dav_id proposed on https://community.osarch.org/discussion/7/aec-free-software-directory#latest
    diagrams.net is something like your tool. Which file format is inside , I do not know. Claims to be open-source. Has svg/pdf export. If Topologic has the 'graph' intelligence, isn't topological something to combine with mindmaps/diagrams ?

  • Hello everyone and thank you @Lukas for quoting me ... this allows me to take a look at Charonifc ;)

    duncan
  • Hello everyone. As Walpa commented, QexStudio is written in C # and works with a SQlite database.
    In QexStudio you can import the automatic measurements generated in Revit, through a Revit addin called Qex.
    This is the workflow:
    1. From Revit, launch Qex.
    2. An automatic measurement is created.
    3. A file with the extension * .qex is exported.
    4. That * .qex file is imported into QexStudio
    5. A * .xml file compatible with MS Project is exported from QexStudio. This file contains the Tasks and the costs for each one.
    6. The * .xml file is opened with MS Project
    7. A normal MS Project * .mpp file is saved
    8. The Revit model and the * .mpp file are integrated into Navisworks and the BIM5D simulation is created, from selection rules
    QexStudio is not native BIM5D software, but it helps speed up the creation of a BIM5D model.
    You can see an example in this video of use:
    https://youtu.be/Aj0RtzJ37CE
    Greetings to all!!

  • edited March 2021

    Hey @iosvarms, @walpa, Regarding the Planning aspects mentioned above,

    @iosvarms said:

    An IfcWorkPlan represents work plans in a construction or a facilities management project.
    An IfcWorkSchedule represents a task schedule of a work plan, which in turn can contain a set of schedules for different purposes.

    I believe @Moult and others who are vast can help clear this. But I think IfcWorkSchedule is a subtype to IfcWorkPlan. IfcWorkPlan seems to a supertype entity. However, IfcWorkSchedule can be a supertype entity in some cases, but will always be a subtype to IfcWorkPlan.

    IfcWorkPlan and IfcWorkschedule are both subclasses of IfcWorkControl.
    IfcWorkControl

    Either one of these entities can be linked to the project through IfcRelDeclares.

    You could have an IfcWorkPlan entity that is linked to various IfcWorkSchedule entities through IfcRelAggregates.
    IfcWorkPlan

    However, this may becoming confusing with the next diagriam, which shows that IfcWorkSchedule can also be instantied in the following way:
    IfcWorkSchedule

    If there is no Workplan, a single IfcWorkSchedule could be directly linked to the IfcProject, and I have a feeling it was specified as such to allow flexibility in planning strategies.

    I would structure the information within the IFC like this :

    • 1 IfcWorkPlan for the construction project
      Then, the WorkPlan entity is linked to as many WorkSchedule as we see fit through IfcRelAggregates . We could for example decompose the WorkPlan into:

    • 1 IfcWorkSchedule named 'Design planning'

    • 1 IfcWorkSchedule named 'Procurement planning'
    • 1 IfcWorkSchedule named 'Construction planning'

    I've never been on the side of maintenance, but let's be imaginative and assume that this very same IFC model is passed down through to maintenance: We could create a new entity of IfcWorkSchedule named 'Maintenance planning' that has IfcEvent and IfcTask entities for Routine checks/maintenance on MEP equipement (etc?) : these are linked in sequence to the tasks and events contained within the IfcWorkSchedules named 'Procurement' and ' Construction'.

    I'm not 100% certain I am getting this right, but this would be awesome... and it seems like the IFC Schema and the ifcopenshell are ready for it!

  • @Goro said:
    Hello everyone. As Walpa commented, QexStudio is written in C # and works with a SQlite database.

    Hi @Goro,
    Interested in turning Qex into python?

  • @SigmaDimensions said:
    If there is no Workplan, a single IfcWorkSchedule could be directly linked to the IfcProject, and I have a feeling it was specified as such to allow flexibility in planning strategies.

    I understood that too, but at the moment I am not implementing with all that freedom for FreeCAD. Because of the relationships and circular references that are introduced. Maybe in the future ...

    I posted a 'map' with my understanding of IFC relationships for this topic in https://community.osarch.org/discussion/160/5d-blenderbim-a-tool-for-quantity-surveyors-or-cost-engineers#latest.

    @SigmaDimensions said:
    I'm not 100% certain I am getting this right, but this would be awesome... and it seems like the IFC Schema and the ifcopenshell are ready for it!

    I agree.

    My question at the moment is:
    The attribute IfcTaskTime in IfcTask there are 2 sets of attributes with 4 dates => Schedule and Actual

    And IfcWorkSchedule has the enumeration attribute PredefinedType with the alternatives: ["ACTUAL", "BASELINE", "PLANNED", "USERDEFINED", "NOTDEFINED"]

    In my understanding the workschedule attribute controls the visibility of the task ( but I'm not sure)
    Workschedule Planned ==> Task Schedule dates
    Workschedule Actual ==> Task Actual dates

    But what about the multiple baselines ?
    Or if for each option in workschedule a new schedule is created, like this:
    WorkPlan
    |----WorkSchedule(Planned)
    |--------Task1
    |--------Task2
    |-------- ...
    |----WorkSchedule(Actual)
    |-------- Task1(copy)
    |-------- Task2(copy)
    |-------- ...
    |----WorkSchedule(Baseline N)
    |-------- Task1(copy)
    |-------- Task2(copy)
    |-------- ...
    In the same way as IfcResource is treated.

    In this case, why schedule and actual dates?
    Not yet how it should be done. :(

  • @walpa said:

    @Goro said:
    Hello everyone. As Walpa commented, QexStudio is written in C # and works with a SQlite database.

    Hi @Goro,
    Interested in turning Qex into python?

    @walpa I currently have very little Python skills. Over time I will have to learn more about this language, because it is being very popular, especially in the science sector.
    And I have not designed any forms in python yet, I have only written simple scripts for Dynamo BIM.

  • edited March 2021

    ( I don't know where to answer, since there are now 3 threads talking about planning and costing, So I'll continue the thread here)

    @walpa said:
    In my understanding the workschedule attribute controls the visibility of the task ( but I'm not sure)
    Workschedule Planned ==> Task Schedule dates
    Workschedule Actual ==> Task Actual dates

    It seems this can be done, since the very same IfcTask can be assigned to multiple WorkSchedules, and we could plug in the actual dates and the scheduled dates inside IfcTaskTime. This would save doubling up entities - but in that case shouldn't there be only two types of predefinedtypes allowable for IfcWorkSchedule? and not multiple? One questions begs another question!

    My curiosity was itching and I tried to apply what you are proposing with ifcopenshell and after parsing a sample .xml made with ProjectLibre, I notice new issues:

    • WBS do not export well ProjectLibre.
    • The concept of WorkSchedules or Workplan in an .xml does not seem to exist,
    • Every <Task> is nested inside the Project's <Tasks>, and the nesting of further tasks is represented by <OutlineNumber>, and <OutlineLevel>

    I guess once we important an .XML file, we would need to do our own tweaking for each vendor's schema and make it match the IFC Schema.

  • @SigmaDimensions
    Continuing the discussion on 4D / 5D implementation in the IFC WorkPlan / WorkSchedule model

    @SigmaDimensions said:
    - the MS Project data schema is different than what @Moult used in the BlenderBIM code with a Primavera 6 .xml file
    I guess once we important an .XML file, we would need to do our own tweaking for each vendor's schema and make it match the IFC Schema.

    I agree, one script for each scheme.

    @SigmaDimensions said:
    ( I don't know where to answer, since there are now 3 threads talking about planning and costing, So I'll continue the thread here)

    @walpa said:
    In my understanding the workschedule attribute controls the visibility of the task ( but I'm not sure)
    Workschedule Planned ==> Task Schedule dates
    Workschedule Actual ==> Task Actual dates

    It seems this can be done, since the very same IfcTask can be assigned to multiple WorkSchedules, and we could plug in the actual dates and the scheduled dates inside IfcTaskTime. This would save doubling up entities - but in that case shouldn't there be only two types of predefinedtypes allowable for IfcWorkSchedule? and not multiple? One questions begs another question!

    This is the question ... I don't know how it would work in Blender, but in FreeCAD it seems a little complicated to do a nested task with multiple workschedules (I may be mistaken).

  • @SigmaDimensions said:
    ( I don't know where to answer, since there are now 3 threads talking about planning and costing, So I'll continue the thread here)

    which one is the third? besides https://community.osarch.org/discussion/160/5d-blenderbim-a-tool-for-quantity-surveyors-or-cost-engineers
    so that we can try and merge everything together

  • edited March 2021

    @walpa said:
    This is the question ... I don't know how it would work in Blender, but in FreeCAD it seems a little complicated to do a nested task with multiple workschedules (I may be mistaken).

    With our assumption that we could control (or nested tasks since) based on the IfcWorkSchedules's predfined type , this is what I tried with ifcopenshell python:

    import ifcopenshell
    file = ifcopenshell.open(r'C:\Osarch\blenderbim.ifc')
    workschedule_planned = file.createIfcWorkPlan(ifcopenshell.guid.new(),Name='WorkSchedule Construction - Planned Baseline',PredefinedType ='PLANNED')
    workschedule_actual = file.createIfcWorkPlan(ifcopenshell.guid.new(),Name='WorkSchedule Construction - Actual Baseline',PredefinedType ='PLANNED')
    task_slab_1 = file.createIfcTask(ifcopenshell.guid.new(),Name='Concrete Slab 1 Construction')
    task_wall_1 = file.createIfcTask(ifcopenshell.guid.new(),Name='Masonery Wall 1 Construction')
    actual_control_1 = file.createIfcRelAssignsToControl(ifcopenshell.guid.new(),Name='Actual Planning Control')
    planned_control_1 = file.createIfcRelAssignsToControl(ifcopenshell.guid.new(),Name='Planned Scheduled Control')
    actual_control_1.RelatingControl = workpschedule_actual
    planned_control_1.RelatingControl = workpschedule_planned
    actual_control_1.RelatedObjects = [task_slab_1, task_wall_1]
     planned_control_1.RelatedObjects = [task_slab_1, task_wall_1]
    

    When we query these task_slab_1, this is returned:

    for assignement in task_slab_1.HasAssignments:
                print(assignement.RelatingControl)
    120=IfcWorkPlan('0zbzDzhebAsuLBBS2k7Uq_',$,'WorkSchedule Construction - Actual Baseline',$,$,$,$,$,$,$,$,$,$,.PLANNED.)
    119=IfcWorkPlan('1YKGOaG_L8HxsT$yMTgxzo',$,'WorkSchedule Construction - Planned Baseline',$,$,$,$,$,$,$,$,$,$,.PLANNED.)
    

    When we query the workschedules' related objects, this is returned:

    workschedule_planned.Controls[0].RelatedObjects
    (#121=IfcTask('3J$46k5Hj4wfKeTIwViMvu',$,'Concrete Slab 1 Construction',$,$,$,$,$,$,$,$,$,$), #122=IfcTask('02hx9c7vL7DBwSHeUQzQlS',$,'Masonery Wall 1 Construction',$,$,$,$,$,$,$,$,$,$))
    
    workschedule_actual.Controls[0].RelatedObjects
    (#121=IfcTask('3J$46k5Hj4wfKeTIwViMvu',$,'Concrete Slab 1 Construction',$,$,$,$,$,$,$,$,$,$), #122=IfcTask('02hx9c7vL7DBwSHeUQzQlS',$,'Masonery Wall 1 Construction',$,$,$,$,$,$,$,$,$,$))
    

    I'm still very hesitant with the assumptions regarding controling tasks based on the predefined type. I think we should perhaps take the problem the other way round and see what kind of IFC 4D data is currently exported from software like Synchro ( it seems like it exports IFC data, but I don't know if they include their planning within it? it appears they are also stuck on old IFC schemas).

    Can we have a joint discussion on all this and more with @Moult, @duncan, @lukas , @iosvarms and interested individuals to discuss the best way forward? It would be good to build on Moult's existing efforts which are being integrated in BlenderBIM and incrementally increase the complexity of the 4D and 5D options.
    I'd also love to join the conversion with the maker of chronaIFC if this is still planned?

  • It's possible to merge threads. Shall I try it?

  • I'd say go for it

  • I see two options:

    or

    I have a suggestion:

    What do you think?

    JohnSigmaDimensions
  • I have now merged the three threads - let me know how well you think that works. The old discussions automatically redirect to this one.

    walpaSigmaDimensions
  • edited March 2021

    @walpa said:
    I see two options:

    I believe the 1st option is the way forward, but I would replace all IfcWorkPlan with IfcWorkSchedule; so that we can organise IfcWorkSchedule entities within A single IfcWorkPlan. ( PS: there's a small 's' missing in the entity IfcRelAssignsToControl in the graphs above ).

    Regarding you UI/backend proposal, I don't understand why you link Tasks between themselves with IfcRelDefinesByObject. Is that allowed, and what for?
    I imagine the following for the UI/Backend:
    1 - The user starts by defining a 'WorkSchedule'. This creates an IfcWorkSchedule entity of 'PredinfedType' : BASELINE. In other words, this is the reference schedule, the one that should be approved and signed off in the project's early stages.
    2- When a user starts to create a schedule , IfcTasks are instantiated and assigned to the the workschedule created in step 1 with IfcRelAssingsToControl.
    3 - When the user decides to create an additional baseline ( which is nothing than a mirror of the first baseline right?), we create a new IfcWorkSchedule with predefined PredefinedType set as either PLANNED, ACTUAL, or USERDEFINED.
    4 - At the same time, the IfcTask entities created in step 2 would be automatically duplicated and assigned to this new IfcWorkSchedule entity created in step 3.

    I'm going to try and implement a small test in Blender and post the progress here

    Aldo
  • My thoughts:
    1 - The workflow (usually on P6, MSProject and LibreProject) is: Schedule--> BaseLine(s) --> Actual
    2 - ok
    3- ok, but with the flow up
    4 - ok for backend, but for frontend I think:

    Regarding you UI/backend proposal, I don't understand why you link Tasks between themselves with IfcRelDefinesByObject. Is that allowed, and what for?

    I did not see this in the IFC documentation, it is just a suggestion, I do not know if it is allowed, perhaps it is possible to consult the bSI forum.
    The reason is to create a way to connect the many tasks (IfcTask) with different data to just one (TaskUI). Example in IfcConstructionResource/Baseline use definition.
    Why ?
    It may not be a good idea to have a TreeView with 3 (or more) structures for repeated tasks, but with complementary information.
    And when the task is linked to the architectural object to search for quantities, apply resources and apply modifiers, it will be done in a single task.
    IfcRelDefinesByObject can be a solution ... but if allowed ...

  • edited March 2021

    Okay, so I have a little proof of concept going on, and although it's very experimental, I'm excited to share it:
    IFC4D Animation
    There are 3 items attached here for further exploration:
    1 - "Blender_Schedule_test.ifc": The IFC model in STEP format created with blenderBIM .
    2 - "IFC_AutoringIFCSchedule.py ": the code that was used to add the Construction Schedule entities and attributes to the IFC model.
    3 - "IFC4D_BlenderAnimation.py ": the script that reads this specific WorkSchedule Data and creates an animation in Blender ( run it at as a 2nd script).

    Using this in Blender: you would only need to import the IFC file, and run the script IFC4D_BlenderAnimation.py ( the materials are not stored inside the ifc model)

    The next steps I'll try to work on are:

    • Add IfcTaskTime entities to the IFC model in order to control the animation sequencing tempo
    • Import a P6 // Asta PowerProject // MS Project // Libre Project .XML file and repeat.
    • Add option for Additional Baselines
    • Make the 4D animation Workflow more robust
    • Figure out Costing requiremements and specifications, and integrate this with the Schedule.
    AldoMoultJesusbillwalpaCGRbitacovir
  • edited March 2021

    This is great! We should integrate this into the "sequence" module of the BlenderBIM Add-on.

    Once or twice a week, @Jesusbill and I meet up to develop a bit of structural support together. What do you think of also meeting up once or twice a week to work on 4D?

    CGRbitacovir
  • This is working!!!!

    SigmaDimensionsCGR
  • Once or twice a week, @Jesusbill and I meet up to develop a bit of structural support together. What do you think of also meeting up once or twice a week to work on 4D?

    I'd like to join you too if it's possible

Sign In or Register to comment.