Pagina's op IkLeerBIM

vrijdag 30 juni 2017

Automatiseren met Dynamo

De laatste tijd zijn we ons bij RoosRos architecten meer en meer in Dynamo aan het verdiepen.
Behalve dat het gewoon erg leuk is, kan Dynamo ook erg behulpzaam zijn om arbeidsintensieve en eenvoudige taken in Revit te automatiseren. Hoe dommer hoe beter zou je kunnen zeggen.

Hieronder een voorbeeld van hoe ik en mijn collega Pieter Schipper onderdelen uit het proces om tot verkooptekeningen te komen, hebben geautomatiseerd. Natuurlijk zijn er altijd de laatste puntjes die je even na moet lopen, maar een groot deel automatiseren geeft een goed gevoel.

 

Zonder alle 5 scripts helemaal uit te spitten per script toch een paar "wistjedatjes".

01 Area from Room
Het koste best wat moeite om de Rooms samen te voegen tot 1 contour en de binnenste lijnen te verwijderen. Ik was prettig verrast dat native Dynamo Nodes in staat waren uit zichzelf Room Boundaries op basis van de Wall Centre Line aan te leveren. En deze lijnen ook nog op te splitsen als er een andere wand op aan sloot. Daarnaast bleek het opschonen van de inwendige lijnen het meest soepel te lopen door van alle Curves een String te maken en deze met elkaar te vergelijken. Ik had niet gedacht dat Dynamo sneller met een String om kon gaan dan met harde geometrie. Maar het werkt.
Wensen voor verbetering zijn er natuurlijk ook. Want de contour van het gebouw klopt natuurlijk om meerdere redenen niet. En ik heb ook weinig moeite gedaan voor een mooie plaatsing van de Area zelf. Uiteindelijk was een correcte Area voor dit proces niet het belangrijkste aangezien ik het vooral wil gebruiken om per woning een View Crop met offset te maken.

02 Area to View on Sheet
Bij het maken kwam ik erachter dat de onzichtbare binding van door Dynamo gemaakte Revit elementen erg lastig is als je er niet op verdacht bent. Dynamo verwijderd doodleuk zaken die bij de vorige keer gemaakt zijn. Gelukkig zijn er oplossingen: Custom Nodes die niet binden, Dynamo afsluiten zonder op te slaan, Dynamo Primer gebruiken, of de Bake Node van Beaker.
Het uitlijnen van een View op een Sheet vraagt wat rekenwerk maar het kan.
En ik weet nu ook dat als je een Revit Boolean Parameter wilt wijzigen je een 0 of een 1 gebruikt.
Mijn collega Pieter Schipper heeft zelf een mooi stukje Python script samengesteld om de Annotation Crop in te regelen.
Verder zat er een rare bug in die Views hoger dan de Sheet hoogte niet wilde plaatsen. Dan de Sheet eerst maar hoger maken en later weer terug. Als het niet kan zoals het moet, dan moet het maar zoals het kan!
Wensen voor verbetering zijn er ook. Ik heb niet heel veel extra energie gestopt in de naamgeving van de nieuw aangemaakte Views en Sheets. Maar het is allemaal uniek en je kan het in Revit zo recht zetten waar nodig.

03 Ruimtemaatvoering plaatsen
Dit was best een zoektocht om een acceptabele oplossing te vinden. Maatvoering voor verkooptekeningen zijn doorgaans iets kleiner dan wat de aannemer gaat maken. Dat is met reden, want in de bouw kunnen afwijkingen optreden en iedereen krijgt liever meer dan minder huis. Toch?
Het punt is alleen dat alle tekenpakketten exact zijn en voor zover ik weet, is Revit niet in staat om Dimensions naar beneden af te ronden op een zelfgekozen manier. Ook zijn onderdelen in een Multi Segment Dimension slecht aan te roepen in Dynamo. En tenslotte is het uiterlijk van een Dimension ook niet helemaal zoals wij dat graag zagen. Een Detail Item bleek hier de oplossing.
Voor de plaatsing hebben mijn collega Pieter Schipper en ik enkele getrapte mogelijkheden ingebouwd. Op die manier ontstaat er een mooi leesbaar resultaat.
Verbeteringen zijn ook hier. De laatste update van de Package Data-Shapes (die de UI Nodes heeft gemaakt) heeft de mogelijkheid om voorkeur keuzes aan een lijst toe te voegen. En eigenlijk zou je ook nog moeten kunnen filteren op ruimtegrootte.

04 Ruimtemaatvoering update
Hier wordt ik pas echt enthousiast! Geweldig hoe Dynamo in staat is om een RayBounce te maken. Ook hier was de Data-Shapes Package onmisbaar. Hierdoor konden we de RayBounce ook laten reageren op Linked Models, wat natuurlijk standaard is.
Het doorgeven van waardes aan gedraaide en gespiegelde Detail Items was even puzzelen (vector nachtmerrie ;-) Maar het is gelukt.
Verbeteringen hier: Tja. Als een RayBounce tegen een Window aankomt, kunnen we die gevonden waarde dan niet corrigeren naar de Wall waar de Window in zit? Gaat wel erg ver denk ik... En je moet toch ook blijven nadenken.

05 Print PDF
Yes. Eindelijk een betere manier om te kunnen printen. Niet alleen het selecteren van de te printen Sheets, maar ook het printen zonder elke keer het formaat op te moeten geven als die wijzigt. Door het formaat van de Sheet te koppelen aan een Printersetting loopt het allemaal heel soepel. En naamgeving van PDF bestanden kan op veel manieren en leek niet ons grootste probleem.
We hebben hier ook echt gebruik moeten maken van de Archi-Lab_Grimshaw package. Helaas moesten we nog wel flink op internet op zoek, om de laatste aanscherpingen aan zijn Python script te doen, om het echt werkend te krijgen. Maar het is gelukt.
Ook hier heeft mijn collega Pieter Schipper intensief meegeholpen om met name het selectie gedeelte en de UI in te regelen.
Verbeteringen hier: We zouden meer werk kunnen maken om de pdf bestanden op de juiste plek en met de juiste naam op te slaan. En in elk project zitten wel een paar uitzonderingen die op een bijzondere manier geprint moeten worden. Daarom zouden we graag alle printersettings die in een project zitten in 1 lijst te kunnen inlezen, om deze te kunnen gebruiken in Dynamo.

vrijdag 24 februari 2017

A tool to build Revit's IFC mapping tables - feedback and revision




Based on some questions I received lately I would like to explain some things about the spreadsheet.


First of all I did update the excel spreadsheet recently to fix a translation bug in the formula (Ctrl H . the Dutch CEL("inhoud" for CEL("contents" in the whole model 6131found) It works as good as it needs to be for now. And the waiting is still on Autodesk to really change the way to interact with IFC. The spreadsheet is nice for a + user. But most people can do their job real nice without it.

The spreadsheet consist of 4 sheets (in green) for making an import, export and parameter mapping table. The 4th green sheet is the one I like the most, because I learnt the most about IFC with that sheet. All the other sheets are mostly used for reference. The first 3 green sheets have a grey part. This is the actual mapping text. You should select the cells that you need, copy those to clipboard and paste them in a new .txt file. Or simply change an existing table. The grey part will change if you change orange cells beside it. The formula in the grey cell will report and look first at the column with >>1 (in Row 1), and then to the column with >>2 and so on. It’s like a filter. The first rows will contain some + options. Just read and try, or simply leave it as is – it’s not that important.

The spreadsheet links .txt files while opening the file. You should check that all the files are (re)loaded by excel correctly.  Later you can change every file differently if you want to. Just check the Data Tab \ Connections group \ Connections.
Most of the .txt files will appear in the ‘reference’ sheets I mentioned earlier. If you are not familiar with data connections in Excel, just google a bit. I found some English explanations here. tutorialspoint.com - External Data Connection
When actively using this spreadsheet with different projects, you can change the export.txt, import.txt with every new project. Or reload these connections with new project specific .txt files. You can make those .txt files in Revit in the IFC option menu – Save As.. Exporting from a project will make sure that you got every subcategory covered.

You can later on also change the standard DRS / standard AIA settings for your own standards. You can do this if you feel more comfortable with the spreadsheet. By doing so you will able make your own referencing standard.


Then the most important part...


Fill in Revit Export 
This export table suggest that you can actually map every single revit subcategory to a different IFC entity. But it mostly works as an do or don’t export table in Revit. Using the IFCExport parameter is still necessary.

Fill in Revit Import
Is nice, but importing an IFC works already fine, by just linking everything and use Revit’s native settings. If you want to do more with the import part, you should also look into this guy.
http://geometrygym.blogspot.nl/ and
Ifc Import Class Category Mapping

Fill in ParameterMapping
Is nice for a + user who wants to know all the options that native IFC has to offer, and wants to use it. But there are also other ways to add parameters to an IFC entity and they also work fine.
If you want to map IFC common properties to your own / specific Revit Shared Parameters. Override or change the link for the file RevitGG_IFC Shared Parameters_20121102.txt to your own Shared Parameter File. This will be loaded in 1 of the last Sheets called “Shared Param DRS”. The whole Column C in that Sheet is an Excel Named Range with the Name “Shared_Param_DRS”. This will be the content of the drop down menu in the Sheet “Fill in ParameterMapping”, Column M so you can use it.
With the Sheet “Fill in ParameterMapping” you need to copy only parts of the grey cells that you really want to map. Skip in the .txt editor the PropertySets or Properties that you don’t want to use. Check the Data Type of the properties to make sure it will work. I didn’t build a check for that. And everything will be “Text” at the moment. Some Properties are hardcoded in the IFC exporter. So if it doesn’t work as expected, do ask on the Sourceforge side. This is not all documented at the moment. There is something more info over here:
Mapping of Revit parameters to IFC values 
Custom parameter mapping
Revit IFC Support for Extended FMHandOverView Definition (used for COBie)

IFStructure 
I like this one a lot. It gave me a lot of inside in the IFC structure / missing entities / new types / new parameters that I didn’t know off. And the direct link to the building smart site is very convenient. Because of the last 3 remarks I did stop working on this spreadsheet. And It’s good enough for now. I did had 1 request to add the IFC layers but didn’t build it. And don’t know if I will add it in the future. What I did do, is follow the conversation on the Sourceforge site. And I will add a few links. Perhaps these conversations with Autodesk will clearify some IFC related question that you also have, just as it did for me.
Inherited propety sets
IFC export mapping table

Have fun with this spreadsheet. Hope it helps a little, to tweak IFC and Revit.
Or that it at least will give more clarity on IFC.

Kind regards,
Teun de Vries.

Also thanks to Rene Pellicer Garcia for your feedback.

Populaire berichten

Zoeken in deze blog