Revit to BOQ Package in minutes using API and Mail Merge

Here's my new add-in concatenateBOQ. It's for creating BOQ packages (both MTOs and QTOs) with corresponding images as a Word Document using Mail Merge in minutes.


BIM to Fabrication

I've got the "BIM OCS Network" up and running. It's been working continually for a few months and continuously for more than a month logging the sensors' data in one minute intervals.
The system works great and it looks like it won't need more modification / adjustment.
So it was time to build the casings. I've modeled the casings in Revit and sent them to Laser Cutting.

Revit Model of 1-5 Satellite Pods

 Revit Model of Logger Pod

 Revit Model of Gas Pod

 Revit Model of All Pods including the face plates of the additional Satellite Pods

 Sheet view in Revit. Exported to DXF for Laser Cutting.

 Parts arrived!

 Needed a little bit cleaning.

 Shaking the part / gentle pressure on the cut was enough.

 Here are the parts cleaned and stacked!

 And here they are assembled!

 Another shot..

 Close Up of Satellite Pod

 Close Up of Logger and Gas Pods

 Close Up of Satellite Pod

 Close Up of  Logger Pod

Close Up of  Gas Pod


AUx Istanbul

I'm a speaker at the first Autodesk University Extension Istanbul.

I'd like to thank to everyone involved in the organization of such a great Event, especially Autodesk Turkey team whom I know working really hard for this.



140907 Update BIM IoT Occupancy Comfort Sensor

Ok hardware is ready!
I may do some minor modifications like adding LCD displays to all Pods.
(If my LCDs come from China in a timely manner)
I also need to build some basic casings.

 Logger Pod

 Gas Pod

Satellite Pod (1-5)


140811 Update BIM IoT Occupancy Comfort Sensor

I've done some hardware planning and some software trial.

There will be 7 pods connected as a mesh network via Zigbee protocol (Xbee S2B Pro):

There will be 5 satellite Pods:
-Arduino Micro
*Luminosity Sensor
*High Accuracy Temperature Sensor
*Temperature / Humidity / (Heat Index) Sensor

One Gas Pod: (There's only One Gas Pod because these measurements are close to homogeneous and the sensors are expensive to get to Turkey )
-Arduino Uno
*CO2 sensor
*Dust Sensor

One Logger Pod:
-Arduino Yun
*Realtime Clock to sync Pods
*Micro SD Card Reader / Internet (Xively)

On the software side I did a little bit more than planning:

There are 5 Pod Generic families with mark values from 01 to 05 in a room.

Software gets the XYZ values of pods and converts them to UV on an analysis surface offsetted from the bottom surface of the Room object.

Addin asks for the Analysis Type. (Which values will it read from excel)

Reports a basic info.

Creates Analysis Visualization, reads the values from an excel file and puts those multiple values in points and draws a basic graph where you can click and move the mouse to change Analysis Configuration. (date/time). Thanks to Augusto Goncalves for helping me figure out an issue.

After you close the graph, the analysis remains to play with conventional Revit ways.


BIM IoT Occupancy Comfort Sensor

Information models we're building are getting richer day by day. With every new BIM project more disciplines and project members are entering information to the Model(s).
At some point as well as people entering information, we'll need more things to report about themself (and their surroundings) into the BIM.

Imagine a "Structural Element" reporting the current forces on it or a "Light Transmission Coefficient sensing Window" begging to be cleaned :)

This may be all possible with IoT The Internet of Things. IoT is the interconnection of uniquely identifiable embedded computing like devices with the existing Internet infrastructure. These microcontrollers and the sensors connected to them are relatively cheap and highly available items.

To examine the idea further I've built an Occupancy Comfort Sensors Pod.

It was encouraging to see a lot of people building such devices and sharing their knowledge.
In fact OCS and / or a Weather Station seems to be the first project anyone getting into Arduino builds.

Although the idea was not achieving a device with a pro-grade accuracy, I've done my best to do so.
I'd like to thank everyone sharing their knowledge of calibrating the sensors I've used and friends lending me serious toys to calibrate to.

BIM OCS senses (from top left to bottom) Light, Carbon Dioxide, Dust, Sound Level, Temperature, Humidity, Heat Index and Barometric Pressure.

BIM OCS has a wireless connection to the internet and uploads the sensors' data to Xively in every cycle.
Xively (formerly known as Cosm and Pachube) offers an Internet of Things (IoT) platform as a service.

You can check the readings of BIM OCS here. (The BIM OCS may not be online all the time as I'm disconnecting the prototype to do modifications from time to time.)

Now I'll be working on getting this information into BIM. I've emailed Ramtin Attar for more information about Autodesk Projects Dasher a month ago (140627) but couldn't get a return.

So I'll be focusing my efforts on the good ol' Revit and its Analysis Visualization Framework (AVF)


Power of Formula Driven Geometry: Singularity

Although Revit does not like zero length elements, it allows in Adaptive Components. But if you use an Adaptive as a reference when the length is zero the reference breaks for good.

Even if you use it as a reference in its own family the reference breaks for zero length but recovers for other lengths.
I guess when the Adaptive is zero length Revit says "Ok! It's broken. I'm not gonna make it a big deal and wait for another value."

When I was experimenting on this I've found it quite difficult to achieve an Initial Singularity.
(Positive and Negative values are usually pretty easy to get.)

Using Formulas or an external referrer (like dynamo / API) for referencing overcomes this.

Here is my Formula Driven Snub Dodecahedron (wikipedia):

Archimedean Solids - Snub Dodecahedron.rfa (2015)

Snub Dodecahedron has one data entry parameter, two visibility parameters and five informing parameters.

When e has a positive value:

If we enter zero for the value of e, Revit warns us about the identical instances in the same place:

Hell yea! Identical instances in the same place:

And a negative value to check it's still working:


BIM is all about "I". What If?

You've been asked for the velocity and the throwing angle of a bird with anger management issues to hit the wall on the second level?

Well.. Fear no more!
The velocity and the throwing angle of a bird with anger management issues calculator family is at your service!
(Call this one useless! I dare you! :)

Angry.rfa (Revit 2015)

Angry family has 3 data entry parameters, an informing and a visibility parameter.

θo = Throwing angle
Vo = Throwing speed
t = Estimated impact time
tflight = Total flight time
cheat = Flight path visibility

And this is how it looks when the cheat parameter's checked.
I warn you! It's not as easy as it looks to hit something, especially in complex BIM models!


Revit Deadline! Calculate Days Between Dates

I'd like to thank Joseph and Robin for their comments on Revit Calendar at revitforum.org. And a huge thank you goes to Oscar Lopez, curator of my morning ritual BIM WORLD. Seeing my own post there was like being on TV!

Edit 140618:
I'm a long time fan and follower of whatrevitwants. (As you can see from my top links list.)
It's an honor to be there! Thank you Luke!

at revitforum.org:

-You can use it in an evil or good way right now. Put a Comments label in it, adjust a date and place it on views in a work shared environment saying..
Good: "Hey don't forget the party!"
Evil: "Yes! That deadline was yesterday!

-Yes, for Evil. I have also been thinking about doing some kind of project planning in Revit. For example if you make "Comment Objects" that a project manager or lead designer, with very little Revit experience, can place on drawings and fill in with date and actions they can be scheduled. This gives a clear overview of what needs to be done, by whom, when and if actions have been completed or not. It would be very useful to have Date and Time available as parameters in Revit so that actions approaching deadlines could be shown in ever brighter colours as the moment of death or glory approaches...


D_GEN_DEADLINE.rfa (Revit 2015)

The deadline family has 2 data entry parameters:
DateA and DateB. Family expects DateA to be earlier than DateB by default.

It has 2 check parameters:
DateAcheck and DateBcheck. These parameters show how the family interprets the dates we've entered.

And there's a txtMessage parameter with 6 possible outcomes.

While I was looking for a solution I've found Julian Day in wikipedia:
Julian Day is the continuous count of days since the beginning of the Julian Period used primarily by astronomers.

A count for each Date means I can subtract one from other to find the days in between. This would be easier than I've thought!

I also didn't want to have 6 entry parameters(y/m/d) for two dates so I've made 2 integer parameters which I parse into y/m/d and correct with DRV(drive) parameters and concatenate back into check parameters.

DateA (Integer Parameter)

year(at least 1 digit)month(2 digits)day(2 digits). So the earliest date you can enter is 10101.
(If you have a deadline before that let me know! :)

Parsing (Probably called something else!) done by getting the correct decimal places.

AyearParse = rounddown(DateA / 10000)
AmonthParse = rounddown(DateA / 100) - (AyearParse * 100)
AdayParse = DateA - (AyearParse * 10000) - (AmonthParse * 100)

I've used the same day / month / yearDRV(drive) parameters from the Revit Calendar.

Julian Day Number

You must compute first the number of years (y) and months (m) since March 1 −4800 (March 1, 4801 BC):

So be it!
Aa = rounddown((14 - AmonthDRV) / 12)
Ay = AyearDRV + 4800 - Aa
Am = AmonthDRV + (12 * Aa) - 3

AJulianDay = AdayDRV + rounddown(((153 * Am) + 2) / 5) + (365 * Ay) + rounddown(Ay / 4) - rounddown(Ay / 100) + rounddown(Ay / 400) - 32045

I've repeated the above steps for DateB.
BJulianDay - AJulianDay is the Droid we are looking for!

Usually I nest formulas when I believe they're working OK to reduce the number of parameters. For readability I didn't do it in this family.

Enjoy!.. Thanks for reading..