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.
- 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
- 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..
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 ....
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
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 .csvAs 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.
@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 :-)
Yes, good idea, I will certainly use it.
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
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.
simple question
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) :
I wish I did :) many aspects of how to formulate resources to form a rate build-up are still unclear
thanks for your reply, please how do I now use the resource rate into the BoQ ?
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:
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.
thanks for your quick reply
not sure I fully understood it from the explanation
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
Here's the code if someone's curious to know what is handled :
https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/ifcopenshell-python/ifcopenshell/api/cost/calculate_cost_item_resource_value.py
comment on example in
calculate_cost_item_resource_value
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.. :)
cheers
edit
UnitBasisValue
inIfcCostValue
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:
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 typeIfcMeasureWithUnit
, 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:
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 :-)
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:
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 :)
@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?
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
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
@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
Hi @Nigel
If you can go through my italian accent I prepared some quick videos on BoQ preparation in BBIM:
This shows a simple slab and wall, extracting quantities from the model and setting rates manually:
BoQ 1
This shows a different method using a Schedule of Rates to add rates to the Cost Items in the same BoQ
BoQ 2
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
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
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
@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 ... :-)