onsdag 20. august 2014

torsdag 14. august 2014

Detail numbering, callouts and dynamo. (And changing to english..)

Ok, so I am not perfectly fluent in english, but I will try the best I can from here on.

The reason for changing to english is of course enabling others to read my blog as well as the norwegian vikings.
So here goes..

I don't know the best workflow for giving names and numbers to callouts in Revit. It has been up for discussion over the years and we've landed a sort of "manual labor" way of doing it.

Something like this:

1. Create callout
2. Name the callout manually with a prefix and a serial number. For instance "HD 1", (Horizontal Detail number 1)
3. Put callout on sheet. Callout gets a detail number (which is sheet specific)
4. Manually update the detail number to match the view name...
5. Tada.. View name and detail number now match.


However, this is tedious and uncomfortably timeconsuming, especially on larger projects.

so without changing to much of the workflow, what can we use to automate a little bit?..

Well, dynamo of course:

Here's step 2 in the workflow automated to change all views containing "Callout" (Which is default naming convention i Revit) One problem I haven't figured out yet is how to run this multiple times when adding callouts and get the definitions to start from the last generated number. Let me know if you have suggestions!


For various reasons I have chosen to split step 2 and 4, but I think they could be in the same definition without problem.

So step 4: Here I have a definition that use many of the same nodes as the one in step nr 2(I tried making it a custom node, but then it crashed dynamo hard..), but this one gets all the view names and writes it to the detail number parameter. Keep in mind that you must place the callouts on sheet before doing this.


So now we've at least automated it a bit.

However I got this feeling that others out there have better workflows even without dynamo, so don't be shy and share if you care! :)



List.Filter og List.Map

Har drevet litt videre med listebehandling i Dynamo og selv om det er laaaangt igjen til zen iht. denne tabellen Six phases of Revit  så er jeg kanskje på nivå 2-3.

Har tenkt til å forklare to funksjoner idag som har med listebehandling å gjøre.

1. List.Map

List.Map er en funksjon som lar deg "mappe" en funksjon over en liste og bevare listestrukturen din.
Under har jeg laget en enkel liste med stringinputs. Jeg vil finne ut om noen av listeverdiene inneholder stringverdien "xyz".

Map funksjonen lar meg altså bruke String.Contains noden uten å ha en string input i selve String.Contains noden. Ikke helt enkelt, men lettere å se på bildet tror jeg.



Jeg sitter altså igjen med en liste med true/false-verdier og de er ikke så mye verdt i seg selv.
(dette er et eksempel, men for String.Contains noden kan man kjøre listen rett i noden og få samme resultat som ved å mappe den)

Men, vi kan bruke..

2. List.FilterByBooleanMask

Som lar oss bruke true/false-listen vi akkurat har laget til å filtrere den originale listen. 


Kan hende andre har bruksområder jeg ikke kommer på, men kan feks brukes til å filtrere ut punkt verdier som har en gitt x verdi, sjekke om punktverdier er innenfor en gitt verdi osv

Snakkes.