Just BIM

This is a blog about doing BIM – no theory, just doing it…

Advertisements

A quick one (while he’s away…)

Task for today – create a wall “Mark” parameter value that is individual for each wall, shows it’s bottom constraint, and dress it up with a “W” prefix.

OK – Dynamo – here we are:

capture

Not necessarily rocket science but still worthwhile to explore – given that it a quick one at the end of a quite long day – so what are we doing here?

noname

We collect all walls and count them and create a string from the count – remember the “Mark” parameter  requires a string….

Further down the drain we do a lot of string manipulation to get an individual number for each wall as a string padded to a “XXX” format

noname

At the same time we extract the “Base Constraint” parameter from all the wall elements and clean up that string to show what we want:

noname

We add the “W_” prefix

noname

And here we go…

noname

Kinda cool for Saturday Night…

The day my baby gave me a surprize…

OK – here is a link to explain the title. But let me get back to what happened the last week(s). BILT Europe 2018 in Ljubljana.

This was grand – best RTC aka BILT ever. Until the folks stop rebranding the event yours truly will refer to it as “the event”.

Before that we had the BILT EUR Academy going on.

BILT-Academy-2018-02

That was fun – young students challenging us procrastinated elderly ones..

More on that to follow soon.. in the meantime – Enscape makes sense to explain clashes to clients like this picture explains

Enscape_2018-10-19-21-35-15Bravissimo to the good folks at Enscape

And life is good

Hell is empty and all the devils are here

BIM is the it – so many things exploding at the same time. My attention – apart of models and complex beam families – was glued today at the work of those folks: OpenDesignAlliance.

With that toolkit we can natively write RVT or RFA shapes – geometry as I understand so far is restricted to DirectShape representations in Revit.

That is the source:

Capture.PNG

That is what the translator tells me:

Capture

So let’s try:Capture

Result:

Capture

So let’s look at this:

Capture

Stay tuned for the outcome…

 

To IFC or not to IFC – that is the question

Killer finding of the day – ever got frustrated by opening an IFC file in Revit? Look at this:

Noname

(Image courtesy of Dutch Steigers BV)

98000 parts, instances of 22 families.

So you attempt to open the file in Revit going the good old File > Open > IFC way

Noname

Result:

Noname

4 Gigabyte – seriously…? And totally unusable. No instances of families whatsoever.

However – try linking the same IFC into an empty Revit project.

Noname

All of a sudden a new Revit project file gets created…

Noname

Wait a second – 29 Mb instead of 4 Gb… really…

Then you close your dummy project and open that newly created Revit file (courtesy of the IFC > Link process)

Open the file and check if there are instances if families:

Noname.png

Sure – perfect… some little things to know – all Direct Shape Geometry (ultra efficient), families won’t show up in schedules or the Project Browser, Dynamo can fetch them – so instead of a plain old Revit schedule take Dynamo and write to Excel – or even better – XML…

But that will be another story…

Life is good…

 

 

Fun Time (ahead)

Dear Followers

Once in a while I accidentally use the wrong material to illustrate new Dynamo development.

So – in order to avoid any further slips using live project data – I’ve prepared several old projects of myself – no further IP related collisions.

Eye-candy below:SimLab_38.png

and

SimLab_40.png

Life is good…

Something for the BIM with everything

Long story short – the assignment we got was to create an electrical schematic drawing programmatically.

Warning: Work in Progress, stay tuned for updates.

So – in AutoCAD the schematic looked like this:

Noname

First step – rebuild it in Revit using Generic Annotations and then record the position of each element:

Noname

So, rebuilt in Revit (there is still the import instance visible in yellow)

Next step – a Dynamo script to record family type name and location into Excel:

Capture.png

Next step – create a new drafting view, read the Excel sheet and position the families:

Capture.png

Graph above and the result:

Noname

Getting there – as said work in progress..

Some more detail – recording the positions was fairly trivial, the Dynamo is here.

Recreating the 2D assembly in a drafting view was a bit more complex – Dynamo here.

Some Python script required (originally: #Copyright(c) 2016, Dimitar Venkov):

Code below:

import clr

clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

clr.AddReference(“RevitAPI”)
import Autodesk

clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

def tolist(obj1):
    if hasattr(obj1,”__iter__”): return obj1
    else: return [obj1]

view = UnwrapElement(tolist(IN[0]))
ftype = UnwrapElement(tolist(IN[1]))
fpts = UnwrapElement(tolist(IN[2]))

OUT = []
ftp_len = len(ftype) == 1
view_len = len(view) == 1

TransactionManager.Instance.EnsureInTransaction(doc)
for i in xrange(len(fpts) ):
    p = fpts[i].ToXyz(True)
    j = 0 if ftp_len else i
    k = 0 if view_len else i
    try:
        if not ftype[j].IsActive : ftype[j].Activate()
        nf = doc.Create.NewFamilyInstance(p, ftype[j], view[k])
        OUT.append(nf.ToDSType(False) )
    except:
        OUT.append(None)
TransactionManager.Instance.TransactionTaskDone()

To-do:

Analyse a model like this:

Noname

Record the elements found and fetch the right symbol families to get placed in a drafting view…

In the end – a real world example where we are aiming at:

Noname.png

Lots to do… stay tuned

And life is good again…