OSArch Community

BBIM - Bill of Quantities & Schedule of Rates | A simple workflow

  1. S

    A simple model and a Bill of Quantities (BoQ)

    the simple model is made out of a foundation slab, 4 columns, 4 beams, 1 roof slab, 4 parapet walls (see ifc attached). A BoQ is going to be assigned to it to calculate its cost.

    1. Quick Solution : import the BoQ.csv file (attached , replace "txt" suffix with "csv") with all info (code, description, quantity, unit, rate)

    go to File > Import > Cost Schedule (csv) to import it

    once available in Costing and Scheduling > Cost press the pencil icon on the right to edit the Cost Schedule and set the PredefinedType to PRICEDBILLOFQUANTITIES and click on the checkmark at the top

    Expected result

    notes on solution 1:

    A predefined BoQ does not use BlendeBIM to its full potential, since quantities can be extracted from the model and rates can, for example, be originated from a Schedule of Rates, imported as a .csv file

    1. Detailed Solution using BBIM to calculate quantities and rates

    extract quantities from the entities in the model

    select all the elements and press shif + Q, now values are populated in the Object Quantity Sets:

    to make use of the extracted values in the BoQ, in this case the GrossVolume of the slab:

    • open the BoQ along with the Cost Item Quantites

    • select the element to extract its quantity, the slab in this example

    • select the item in the BoQ (Slab 150mm raft)

    • select GrossVolume from the dropdown list at the bottom of the Element pane

    • click on the switch icon above the pane, to link the BoQ's item to the element(s)

    assign a rate to quantities in the BoQ from a Schedule of Rates (SoR)

    When it comes to pre-prepared rates, together with a BoQ, a Schedule of Rates (SoR) is usually availabe to be used with all items with similar scope. For this purpose use the SoR.csv file attached

    import the .csv file as a Cost Schedule, similar to what done before with the BoQ BUT make sure to check the box on the top right of the import window:

    After importing it, set its PredefinedType to SCHEDULEOFRATES, using the same sequence with the BoQ indicated above.

    • Open the BoQ and Cost Item Rates, select SoR from the box below it to show its content.

    • Select the item in the BoQ and its correspondng rate in the SoR, click the arrow + folder icon on the right to assign the rate from the SoR to the item in the BoQ.

    notes on solution 2:

    this is one method to connect a rate from a SoR to a specific item in the BoQ, my understanding is that rates in BBIM can also be derived from a Resource Schedule where amounts come from a set of items, like in a traditional Rate Build-up. According to him, @SigmaDimensions is going to issue a video on the 5D feature of BBIM in the near future, to date I didn't figure out how to connect the two ;)

    I hope the above is clear enough, it's just a quick one that can be elaborated further if needed.

    The above was prepared mainly thanks to @SigmaDimensions and @Massimo 's input, I am a Quantity Surveyor by trade and just recently did I start using BBIM and BIM/IFC specifications in general, hopefully I didn't make many mistakes..

  2. M

    @steverugi thanks for the reported workflow, i think it's very useful!

    There is also a nice feature about automating the connection between the cost item and model quantities...

    If you specify, in the BoQ csv fiile, the column "Property" with a defined quantity name (for example "GrossVolume") and in the column "Query" specify the query filter (for example IfcWall, location="My Storey" ), you can automate the connection between the cost item and the elements quantities...

    For example, in this case, it connects the GrossVolume quantity of all the walls located in My Storey with the cost item ....

  3. S

    @Massimo said:

    @steverugi thanks for the reported workflow, i think it's very useful!

    There is also a nice feature about automating the connection between the cost item and model quantities...

    If you specify, in the BoQ csv fiile, the column "Property" with a defined quantity name (for example "GrossVolume") and in the column "Query" specify the query filter (for example IfcWall, location="My Storey" ), you can automate the connection between the cost item and the elements quantities...

    For example, in this case, it connects the GrossVolume quantity of all the walls located in My Storey with the cost item ....

    Yes! I noticed it when I opened the available templates at https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/ifc5d/sample_cost_schedule_house_FR.csv

    very useful to prepare filtered BoQ, thanks

  4. S

    @Massimo said:

    There is also a nice feature about automating the connection between the cost item and model quantities...

    If you specify, in the BoQ csv fiile, the column "Property" with a defined quantity name (for example "GrossVolume") and in the column "Query" specify the query filter (for example IfcWall, location="My Storey" ), you can automate the connection between the cost item and the elements quantities...

    based on the useful suggestion by @Massimo I modified (and attached as .txt file) the .csv to automatically load the quantities and units from the model based on the settings in column Property and Query.

    Make sure to use Shift+Q to extract quantities from the model entities before importing the .csv

    As for rates I think the method indicated in my previous post , picking them from a separated schedule, is still the way to go.

    I haven't fully tested it yet but I think using this feature a functioning BoQ can be drafted independently with a .csv table and used to parse (quantity-wise) the model, provided the query follow the syntax indicated here:

    https://blenderbim.org/docs-python/ifcopenshell-python/selector_syntax.html

    I am very close, and grateful, to fully implementing BBIM in my workflow, once I manage to iron out the synergy between 4D and 5D, hopefully soon.

  5. M

    @steverugi yes, i confirm that it uses the selector syntax, the same used to select elements with the dedicated tool...so, if you are not sure how to write the query syntax, you can create a selector syntax visually with the dedicated tool and copy-past the query.

    So, i guess that 4d (costing) is fully understood and explained now... what are your concernings about the 5d? Is it about how to use the resources? If you want, we can try to learn it as well :-)

  6. S

    @Massimo said:

    @steverugi yes, i confirm that it uses the selector syntax, the same used to select elements with the dedicated tool...so, if you are not sure how to write the query syntax, you can create a selector syntax visually with the dedicated tool and copy-past the query.

    Yes, good idea, I will certainly use it.

    So, i guess that 4d (costing) is fully understood and explained now... what are your concernings about the 5d? Is it about how to use the resources? If you want, we can try to learn it as well :-)

    Since the cost factor has been put to bed with the latest exchanges, I would love to takle the time and resources aspect of a project .

    Setting out a work breakdown structure up to assigning resources to tasks based on a calendar is quite intuitive in BBIM, I regularly use Project and I am familiar with those concepts, thanks to @SigmaDimensions ' video on YT I now find easy to use both Resource and Work Schedules.

    To the best of my knowledge in construction an activity can be costed based on several factors (mainly workmanship, plant, and materials plus overhead and profit), this is eventually expressed with a rate build-up, often times containing embedded rates and relations among them, not just a simple sum of the components involved.

    I think I almost got that in BBIM, what I am at loss at the moment is to be able to connect resources (or a set of them) to the rate in the BoQ.

    possible scenarios

    1. load a premade BoQ in the model, no connections to the elements, just summaries of line items. check

    2. load a BoQ with no quantity/rates, both can be assigned inside BBIM. check

    3. load a BoQ with no quantity/rates but filtering options via query to selectively extract quantities from entities in the model, rates from Schedule of Rates. check

    4. same as 3 but rates, or some of them, come from the Resource Schedule where rates are the output of single or set of resources, their quantities and relationship within the main rate. pending

    5. like 4 but dependent on how the timeline in the work schedule is arranged or updated, time-related resources are affected accordingly. pending

    I got to item 3 so far, hopefully the other 2 items are clearly expressed and soon I'll be able to fully understand their implementation in BBIM.

    As usual, BIG thank for your assistance.

    PS I am planning to put together some shots showing where I am stuck, maybe it's best.

  7. S

    simple question

    1. how do I set hourly rate for a labor resource? I can see how to by importing a csv schedule as explained by @SigmaDimensions, how would I do it using BBIM UI?

    is this the way? I had to set hours part of the project units

    thanks for any help

  8. S

    I should hopefully find more time towards end of the year for that tutorial. Though you don't need my help anymore, you've cracked it! Nice !

    To constitute a "schedule of rates" for your resources, you only need to specify rates for resources tree.

    So just add those base costs to the resource spreadsheet - I assume every company has their own historical productivity & cost data.

    If you want to do it manually, press on the coin looking like icon ( it's similar to editing a cost item rate) :

  9. S

    @SigmaDimensions said:

    I should hopefully find more time towards end of the year for that tutorial. Though you don't need my help anymore, you've cracked it! Nice !

    I wish I did :) many aspects of how to formulate resources to form a rate build-up are still unclear

    To constitute a "schedule of rates" for your resources, you only need to specify rates for resources tree.

    So just add those base costs to the resource spreadsheet - I assume every company has their own historical productivity & cost data.

    If you want to do it manually, press on the coin looking like icon ( it's similar to editing a cost item rate) :

    thanks for your reply, please how do I now use the resource rate into the BoQ ?

  10. S

    If you want to use the Resource Base cost to calculate a cost item's value:

    Assuming you have a resource, (or its parent) with:

    • Base cost as, cost rate = 300

    • Base quantity , or ScheduleWork (ex. resource.Usage.ScheduleWork=PT20H).

    When you add your resource to your cost item,

    1st press on "+". This will assign the resource to the cost item directly. ( You could also assign these to a task first, and only assign the task to the cost item).

    2nd step, press on the coin looking like icon.

    We have a cost item called Labor Cost Item, with quantity = 1, cost item value = 6 000.00

    If your base costs change, or resource quantity change, you'd have to press on the coin icon to recalculate the cost item resource values.

  11. S

    thanks for your quick reply

    not sure I fully understood it from the explanation

    Assuming you have a resource, (or its parent) with:

    • Base cost as, cost rate = 300
    • Base quantity , or ScheduleWork (ex. resource.Usage.ScheduleWork=PT20H)

    is this correct?

    in my case it doesn't show the switch between 1 and 2 and doesn't assign any value to the item

    but will play a bit with it and revert, cheers

    EDIT:

    OK I needed to also manually enter the quantity in the resource, now it works (but need to properly study the whole process) thanks again for your help and looking forward to your next video

  12. S

    Yes! The resource will need to have either a Quantity, or Usage.ScheduleWork, to allow this calculation to take place:

    cost item total = Resource Quantity x resource cost

  13. S
  14. S

    comment on example in calculate_cost_item_resource_value

    Here's the code if someone's curious to know what is handled :

    it was a very informative link thank you @SigmaDimensions

    I used the example in the notes (I found some typos if you don't mind, I attached a working script where I added, as you suggested, a quantity to the equipment, otherwise the result won't be the same)

    question

    how do you assign in the script code (now xxx) and name to the IfcCostItem? it's set in its root, I think, but I coulnd't find the way to do it

    as always, thanks a lot for your kind assistance

  15. S

    please disregard my request, it wasn't difficult , I had to look into the python console when done manually.. :)

    
    ifcopenshell.api.run("cost.edit_cost_item", model, cost_item = item, attributes={"Name": "Foo"})
    

    cheers

  16. S

    edit UnitBasisValue in IfcCostValue

    using a script to create a Schedule of Rates from scratch is not too difficult, even for a person with limited programming knowledge like myself.

    to summarize:

    
    import ifcopenshell
    
    import blenderbim.tool as tool
    
    model = tool.Ifc.get()
    
    pricelist = ifcopenshell.api.run("cost.add_cost_schedule", model, name = 'SoR', predefined_type = 'SCHEDULEOFRATES')
    
    rate = ifcopenshell.api.run("cost.add_cost_item", model, cost_schedule = pricelist)
    
    ifcopenshell.api.run("cost.edit_cost_item", model, cost_item = rate, attributes = {"Name": "C25/30", "Identification":'C-02'})
    
    ratevalue = ifcopenshell.api.run("cost.add_cost_value", model, parent = rate)
    
    ifcopenshell.api.run("cost.edit_cost_value", model, cost_value = ratevalue, attributes = {"AppliedValue": 5.0})
    

    generates the following:

    to have the m3 showing in the item's unit at the moment I can only do it through the UI:

    for what I gathered so far there is an attribute for that purpose: UnitBasis that accepts a type IfcMeasureWithUnit

    , which is made out of two further attributes:

    question:

    can anyone please show me how to set those two attributes in the line

    ifcopenshell.api.run("cost.edit_cost_value", model, cost_value = ratevalue, attributes = {"AppliedValue": 5.0})

    or if I have to follow a different procedure?

    all of this to generate the following using a script:

    thanks in advance!

  17. S

    hi @SigmaDimensions

    could you please showcase a simple example of this:

    When you add your resource to your cost item,

    1st press on "+". This will assign the resource to the cost item directly. ( You could also assign these to a task first, and only assign the task to the cost item).

    how to assign resource to a task and apply it to a cost item?

    if it's not too much it would be helpful for me to understand the process, at the moment I cannot figure out how to link resources (labor and material) > task > bill of quantities

    thanks

  18. M

    @steverugi i have managed to do that, i try to explain how. I cannot share the images atm unfortunately because i'm on mobile phone.

    First create one labor resource, one cost item and one task (i'll call them resource, cost item task respectively).

    In the model there is only one product, let's say a slab with the calculated quantities (NetVolume, GrossVolume, etc..).

    Select the resource and set the productivity with the productivity tool (let's say 1 GrossVolume in 2 hours).

    Select the task and assign the resource to the task: it creates automatically also a subresource specific for the task.

    Remember to calculate the man hour clicking to the button: this is the time needed to do the task with the specified productivity.

    Select the subresource and set the cost of the subresource, for example 35..the correct field to use is AppliedValue.

    Select the cost item and assign the task to the cost item.

    Finally, in the panel cost item and subpanel resource click to the disk icon and it should calculate the cost item value based with the resource productivity and cost...

    Please try and let me know if there are problems, cheers :-)

  19. S

    @Massimo said:

    @steverugi i have managed to do that, i try to explain how. I cannot share the images atm unfortunately because i'm on mobile phone.

    First create one labor resource, one cost item and one task (i'll call them resource, cost item task respectively).

    In the model there is only one product, let's say a slab with the calculated quantities (NetVolume, GrossVolume, etc..).

    Select the resource and set the productivity with the productivity tool (let's say 1 GrossVolume in 2 hours).

    Select the task and assign the resource to the task: it creates automatically also a subresource specific for the task.

    Remember to calculate the man hour clicking to the button: this is the time needed to do the task with the specified productivity.

    Select the subresource and set the cost of the subresource, for example 35..the correct field to use is AppliedValue.

    Select the cost item and assign the task to the cost item.

    Finally, in the panel cost item and subpanel resource click to the disk icon and it should calculate the cost item value based with the resource productivity and cost...

    Please try and let me know if there are problems, cheers :-)

    I certainly will! thanks!

  20. S

    It worked!

    with one critical point, nr 5 of the list below, I prepared for those who want to try, based on your VERY useful method without which I would be still poking around in vain:

    @Massimo said:

    1. Create: 1 Labor resource, 1 cost Item and 1 Task

    2. Create: 1 Slab (4x3x0.1 in my example) with the calculated quantities (GrossVolume = 1.2m³, using shift + Q ).

    3. Select the Labor resource and set the productivity with the productivity tool ( 1 m³ = 2 hours)

    4. Select the Task and assign the Resource to the task: it creates automatically also a Subresource allocated to the task

    5. Select the slab and assign it to the task Outputs

    6. Calculate the man hour clicking the Schedule Work button of the Subresource: this is the time needed to do the task with the specified productivity. (Work Time = 1.2m³ * 2 h/1m³ = 2.4 h)

    7. Select the Subresource and set its cost to $35 in the AppliedValue field

    8. Select the cost Item and assign the Task to the cost Item

    9. In the panel cost Item > subpanel resource click on the disk icon to calculate the cost item value based with the resource productivity and cost (2.4h x 35$/h = 84$ x the unit automatically set to 1U = $84, in my case)

    wow! now I can try adding plant, materials, etc but the procedure is finally there, thank you, so much appreciated

    ...and Happy New Year :)

  21. M

    @steverugi ah yeah of course i forgot to mention about assigning the product output to the task...

    Good and useful recap btw!

    About resources, i studied them in the past and i found that for labour resources there are no problems but for material resources there is an issue (not really an issue actually but it's more a feature request) that deserves to mention: material resources doesn't change the quantity with the product but they needs to manually specify the quantity... it shouldn't be too much difficult to inplement the function, it could be a tool like the productivity tool, but atm it is not implemented ...

  22. S

    @Massimo said:

    @steverugi ah yeah of course i forgot to mention about assigning the product output to the task...

    Good and useful recap btw!

    About resources, i studied them in the past and i found that for labour resources there are no problems but for material resources there is an issue (not really an issue actually but it's more a feature request) that deserves to mention: material resources doesn't change the quantity with the product but they needs to manually specify the quantity... it shouldn't be too much difficult to inplement the function, it could be a tool like the productivity tool, but atm it is not implemented ...

    thanks for the heads up, ciao

  23. C

    Excellent knowledge shared in this post! It would be interesting to have a video demonstrating step by step, what about this idea?

  24. S

    @c4rlosdias said:

    Excellent knowledge shared in this post! It would be interesting to have a video demonstrating step by step, what about this idea?

    It's a good idea

    I am personally not too comfortable with video creation and editing, but I can try something soon, or I can simply do it with snapshots and text .

    AFAIK @SigmaDimensions is preparing one on 5D during XMas break, let's see

    cheers

  25. S

    @c4rlosdias said:

    Excellent knowledge shared in this post! It would be interesting to have a video demonstrating step by step, what about this idea?

    hi, let's see if I managed to make something useful (I was struggling with the trackpad of a small laptop, not sure about its quality)

    I just added "learn how to make a video" to my new year resolutions' list :D

    link to the video

  1. Page 1
  2. 2

Login or Register to reply.