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

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..

Tagged:
MassimoRoeltheoryshawsemhustejDarth_BlenderNigelOwura_quatomkarincavelochadCoen
«1

Comments

  • @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 ....

    steverugitheoryshawNigelOwura_qu
  • @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

    MassimotheoryshawBimlooserNigel
  • @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.

    MassimoBimlooserOwura_quNigel
  • @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 :-)

    steverugi
  • edited December 2023

    @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.

  • edited December 2023

    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

  • 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) :

    theoryshawsteverugi
  • edited December 2023

    @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 ?

  • edited December 2023

    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.

  • edited December 2023

    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

  • 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

  • edited December 2023

    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

  • 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

    Massimo
  • edited December 2023

    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!

  • 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

  • @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 :-)

    steverugi
  • @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!

  • 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 :)

    Massimo
  • @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 ...

  • @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

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

  • @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

    Nigel
  • @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

    NigelMassimoc4rlosdiasbruno_perdigao
  • @steverugi Wow, insightful video, thank you. I was too scared to venture into the 'Costing & Scheduling' tab, a couple of Ds beyond my scope, however I am keen to explore further now, I think I have a book of Quantity Surveying on the shelf that will get a read before my summer holidays are over.

  • @Nigel said:
    @steverugi Wow, insightful video, thank you. I was too scared to venture into the 'Costing & Scheduling' tab, a couple of Ds beyond my scope, however I am keen to explore further now, I think I have a book of Quantity Surveying on the shelf that will get a read before my summer holidays are over.

    most welcome @Nigel , happy to help if needed, ciao

  • edited January 1

    Hi @Nigel

    @steverugi Wow, insightful video, thank you. I was too scared to venture into the 'Costing & Scheduling' tab, a couple of Ds beyond my scope, however I am keen to explore further now, I think I have a book of Quantity Surveying on the shelf that will get a read before my summer holidays are over.

    If you can go through my italian accent I prepared some quick videos on BoQ preparation in BBIM:

    1. This shows a simple slab and wall, extracting quantities from the model and setting rates manually:
      BoQ 1

    2. This shows a different method using a Schedule of Rates to add rates to the Cost Items in the same BoQ
      BoQ 2

    3. Finally this video shows the use of a .csv table to import queries to automatically extract quantities from the model into a BoQ, rates are then added like in video 2
      BoQ 3

    I am quite new to all of this (BBIM, video recording, etc) but I hope it can be of help

    PS the Schedule of Rates too can be imported as a .csv table

    theoryshawcarlopavMassimoNigelbruno_perdigaoAce
  • Just one more thing..

    Since today I am in the video mood I prepared another one with a different case similar to a rate build-up method

    1. This shows another way of calculating a rate using resources (labor and material) to be assigned to the cost item in the BoQ
      BoQ 4

    again, it's just a quick way to show what I learned so far, with some grey area for which I hope to receive some feedback from the deus ex machina @SigmaDimensions :D

    Massimocarlopavbruno_perdigaoShegs
  • @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 ....

    @Massimo
    do you happen to know what to use in the column properties in the automated BoQ when it comes to counting items?
    if I use

    I get this (I double checked that window and door are on the GF storey)

    thanks

  • @steverugi so i tried and also looked at the code and i think that atm Count just doesn't work.
    I saw in this video at minute 17:17 @SigmaDimensions shows that it is possible but i think it doesn't work because the code looks only at the qto properties (GrossVolume, NetVolume, etc...)
    Maybe i'm missing something btw ... :-)

Sign In or Register to comment.