In de laatste 5 jaar zijn er meerdere grote en kleine updates doorgevoerd. Als ik Google Drive mag geloven wel 21 versies. Maar nu met Revit 2023 moest er een grotere wijziging worden doorgevoerd, omdat Revit de belangrijkste IFC mapping parameters heeft veranderd, vereenvoudigd en verbeterd.
Fijn!
kijk een kort filmpje wat de tool doet
zie het introductiefilmpje van Autodesk
Wat zijn die IFC veranderingen in Revit 2023 nou in detail? En wat is het nut van het updaten van die BIM standaard tool?
Zoals je in het filmpje kan zien heeft Revit 3 extra Instance en 3 extra Type parameters gekregen. Die parameters zorgen voor de mapping tussen Revit en IFC. Deze nieuwe BuiltIn parameters worden met met een apart menu of dropdown gevuld. En zijn niet als tekst aan te passen in Revit. Zo voorkomen we tiepfouten. Het updaten van oude projecten naar Revit 2023 ging bij ons ... automatisch en vooralsnog prima.
Dat zo'n mapping tussen Revit en IFC een dingetje is, komt omdat de structuur van Revit en IFC niet 1 op 1 is. Niet elke Revit Wall is een IfcWall, en niet elke Generic Model wil je als IfcBuildingElementProxy in een IFC zien, etc.
Hoe bepaal je dan wat die Revit Wall of Generic Wall wel zou moeten zijn? Daar helpt die BIM Standard tool dus wat mee. In de eerste plaats door een suggestie te geven op basis van de Revit Categorie. Een Wall is vaak wel degelijk een IfcWall. Maar in combinatie met de NL-SfB code die je opgeeft, zal er eventueel een alternatieve suggestie worden gegeven. Twijfel je nog steeds. Dan kan je door op de hyperlink te klikken (>>), direct naar de IFC website van BuildingSmart. Daar wordt uitgelegd waar elke IFC entiteit of Enummeration Type voor bedoeld is.
Maar de NL-SfB geeft ook aanleiding voor de Function parameter. Dit is de BuiltIn parameter die binnen Revit aangeeft, of een wand of kozijn, bijvoorbeeld binnen of buiten is. En daarnaast komen de 1e 2 cijfers uit de NL-SfB ook terug in de naam van objecten in Revit. Deze benaming komt vaak terug in een IFC. (Al hoeft dat niet persé)
Het moge duidelijk zijn, dat deze tool er voor zorgt, dat er samenhangende informatie ontstaat. Dit is noodzakelijk als je ook maar iets met data wilt doen (en machine learning niet in je skillset hebt) En een computer is simpelweg beter in structuur, dan goedwillende mensen die alles handmatig doen. Ook helpen ingebouwde suggesties, om spelenderwijs, de mapping steeds nauwkeuriger te maken.
We zijn als jonge kinderen allemaal begonnen met het uitspreken van een paar woordjes. En wat waren onze ouders trots! Spelenderwijs leren mensen steeds meer woorden, om beter te zeggen wat we bedoelen. Professioneel is dat niet heel anders. Steeds een stapje vooruit.
Testen of gebruiken?
Wil je eens testen wat er bij het updaten naar een Revit 2023 project nou precies gebeurd? Download dan het eenvoudige voorbeeld bestand met een paar objecten erin. Deze hebben de verschillende voorkomende oude mapping instellingen. Je kan dit bestand ook gebruiken om de BIM standard tool eens zorgeloos te ‘gebruiken’.
Zin om ook de tool een keer te proberen?
Download dan hier of via Github de laatste versie. Je kan de scripts gebruiken uit de map die matched met je eigen Dynamo versie. Voor Revit 2023 is dat op dit moment Dynamo2.13. Kijk zeker het uitgebreide filmpje waar ik door de BIM standaard tool heenloop. Ondanks dat sommige details door de jaren heen iets verbeterd zijn, geeft het een goed beeld van hoe de tool werkt.
Hieronder een paar belangrijke punten vooraf:
Het gebruik van de tool is helemaal vrij, maar wel op eigen risico. Ik moet dit voor de duidelijkheid wel zeggen. Maar bij RoosRos gebruiken we de tool ook gewoon om projecten op een iets hoger niveau te krijgen.
Synchroniseer altijd eerst voor je gebruik maakt van een Dynamo Script.
Voorkom dat je in Excel verder werkt met handmatige aanpassingen die de vorige keer gemaakt zijn. Reset het Excel document na een import, door in de Sheet Dynamo_Read, 1 van de 2 onderste rijen over het hele invulveld tot de gele headers heen te kopiëren. Dat reset alle input, opmaak en formules van je invulveld.
Het doorlopen van meerdere eigenschappen van alle Types in je Revit project kost simpelweg tijd. Afhankelijk van je ervaring en de grote van het project kan het zomaar een aantal uur kosten. (het minimale Revit 2023 voorbeeld bestandje is natuurlijk wel razendsnel)
Kies dus een rustig moment en doorloop alle handelingen voor je verder werkt in Revit. Als Revit wordt aangepast -voordat alle wijzigingen zijn terug geschreven- wordt het import script mogelijk afgebroken. En moet je daaarom veel dingen opnieuw doen. :-(
Kom je erachter dat je niet alles wilt doen. Of heb je niet voldoende tijd. Wees gerust, je kan best delen overslaan. Gooi dan de invulvelden leeg van de onderdelen waar je niet bewust naar gekeken hebt. Daarmee voorkom je, dat alle suggesties die Excel automatisch doet, worden overgenomen in Revit. Heel praktisch: verwijder de formules voor het aanpassen van de Family of Type benaming, en concentreer al je aandacht op de Assembly Code. Loop dan snel de IFC mapping na en synchroniseer de resultaten terug. Een volgende keer kan je de benaming wel doen.
Werk van boven naar beneden.. En begin bij de Assembly Code. Check daarna snel de IFC mapping. Let daarbij vooral op IfcOpening (=31.10 en 32.10) en IfcSite. IfcOpening alleen gebruiken als er geen zichtbare Geometry aanwezig is – dus nooit bij kozijnen. Maar ook niet per definitie bij een sparingmaker. Beperk de IfcSite mapping zoveel mogelijk tot de Toposurface. En eventueel een 0-punt object. Gebruik IfcSite niet bij vrachtwagens, of inrichting ofzo. En liever ook niet bij een Floor die een lastige Toposurface moet vervangen. (rule of thumb)
Als je dit gedaan hebt loop dan nog sneller de Function en eventueel de Manufacturer na.Gebruik de rest van de tijd om Family en Type benaming na te lopen. Gebruik ‘de blauwe kolommen’ om meer of juist minder karakters uit de oude benaming over te nemen.
Als er vragen of opmerkingen zijn hoor ik dat natuurlijk graag. Daar hebben we allemaal wat aan! Meerdere mensen zijn je al voor geweest. Tot nu toe was allemaal goed en snel oplosbaar.
Ook namens RoosRos architecten veel werkplezier met deze tool! Een tool voor het werken met de BIM Basis ILS en de Revit Standard. Bouwen met BIM doe je samen!
The IkLeerBIM Dynamo package has just been updated.
more methods, more arguments,
ready for Revit 2021,
and what about sandbox and other software.
A few things have improved or changed:
Some Python 'build in functions' did not show up as a method. This error is fixed.
The Revit API 2021 has deprecated the displayUnitType in Revit 2021. So based on the Revit version the script uses displayUnitType or ForgeTypeId.
The LookUp node and MethodLookUp node should also work in Dynamo Sandbox or other software. So the UnwrapElement and the loading of some libraries are made conditional.
The MethodLookUp node now also can deal with 'overloads'. Cases were more than 1 argument series for a method is possible in the API.
The Example.dyn file in the Extra directory is also updated to the new functionality.
Johan Cruijff zou aan die uitspraak nog een puntje kunnen zuigen ;-) Maar voordat de ene helft van de lezers weer doorklikt en de andere helft zich ongemakkelijk gaat voelen de echte vraag. Weet je 'voldoende' over IFC? Want veel van ons werken wel met IFC: we maken IFC bestanden, we gebruiken IFC bestanden en sommigen praten alleen maar over IFC. Maar weten we eigenlijk wel voldoende? En als je een vraag hebt wat doe je dan?
Vandaag heb ik een oud Excel bestand eens opgepoetst om (weer) te delen met jullie. Op 24 november 2014 deelde ik op mijn blog IkLeerBIM een eerste tool om de mapping tussen Revit en IFC wat beter in de vingers te krijgen. Inhoudelijk zou ik deze tool niet meer aanraden en verwijs ik liever naar de Revit Standards. Maar wat ik nog steeds waardeer, is dat het me hielp, om de de structuur, mogelijkheden en beperkingen die IFC heeft, iets beter te leren kennen. Ik gebruikte daar 1 sheet voor, die IFC structuur heette. Het was best leuk om daar wat mee te spelen. En af en toe de hyperlinks naar de BuildingSmart documentatie te gebruiken. Daar vind je meer info en achtergronden. Behalve dan de belangrijke relatie met een MVD natuurlijk.
De inhoud is nog gebaseerd op IFC4 (4.0.0.0) En inmiddels zijn we al wat verder. Daarom heb ik de hyperlinks laten verwijzen naar IFC4 ADD2 TC1 (4.0.2.1) Na het volgen van een hyperlink kan je dan verder lezen over de huidige stand. Sommige zaken zijn in IFC4 nieuw toegevoegd en nu inmiddels al weer 'DEPRECATED'. En gaan zo langzamerhand over de houdbaarheidsdatum heen.
Misschien is deze download voor jou ook wel een leuk startpunt. Om spelenderwijs te leren, te klikken en te lezen in de BuildingSmart documentatie. Ontdek jij ook nieuwe benamingen die je nog nooit hebt gebuikt? Ontdek jij ook nieuwe plekken waar specifieke informatie eigenlijk hoort te staan? Ontdek jij misschien zaken die inmiddels al achterhaald zijn? En voordat we weer helemaal de andere kant doorschieten, check ook even de certificering.
Graag hoor ik jullie mening over het volgende, maar voel je niet verplicht. 😉
Mijn vraag gaat over het zo goed mogelijk modelleren van een spouwmuur in Revit en het exporteren naar IFC.
Alles
los modelleren kan natuurlijk altijd. Maar het kost stomweg meer tijd
om te maken laat staan te onderhouden. En je kan die tijd ook besteden
aan extra details bijvoorbeeld. Hierbij een klein onderzoekje of een
gelijkwaardige kwaliteit ook op een snellere manier gemaakt kan worden,
in Revit en met behulp van Parts. Zelf ben ik geen ‘gebruiker’ van de
IFC data, dus of het functioneel gelijkwaardig is in andere toepassingen
kan ik slecht zelf beoordelen, vandaar mijn vraag.
Welke van onderstaande 3 opties is voor jou gebruik gelijkwaardig aan het ‘los modelleren’ van een spouwmuur?
En als geen van onderstaande gelijkwaardig is, welke komt dan het dichtste in de buurt. Waarom?
Levert dit onderzoekje nieuwe inzichten op – of is het toch beter om ‘los’ te modelleren en de extra kosten voor lief te nemen.
p.s.
Ik zag achteraf dat sommige data van de wand niet correct bleek te zijn
|-( Maar voor het principe maakt het niet veel uit. Dus ik heb het even
zo gelaten.
1.
Hieronder de basisuitvoering van een samengestelde wand in IFC.
Visueel
zijn er geen losse bladen zichtbaar. Wel zit er onder de Material-tab
een lijstje met materialen waar de spouwmuur uit is opgebouwd inclusief
dikte.
2.
Hieronder
een basis uitvoering met Parts in het bronbestand. En als IfcParts in
de IFC. Het eerste wat opvalt is dat we nu echt de spouwbladen en
materialen herkennen. En daarnaast dat de basiswand nog steeds aanwezig
is. Deze bevat nog steeds alle oude data, behalve de Materialen Tab en
de Material Property. In plaats daarvan zijn de bladen als Building
Element Part aanwezig.
Parts
missen standaard heel veel data. Maar die data is best toe te voegen
met IFC parameters in Revit. En dat levert het volgende op.
Er
zijn veel Properties gevuld. Maar FireRating, Load Bearing, Is
External, Classification ontbreken. Die zijn ‘natuurlijk’ hetzelfde als
het IfcObject waar de IfcPart deel van uit maakt. Veel Quantities lijken
te ontbreken in Solibri. Solibri rapporteert alleen de Inhoud en de
BoundingBox. Het host object heeft natuurlijk wel gewoon een lengte,
hoogte en verschillende oppervlaktes in Solibri.
3.
Maar je kan de met extra data gevulde Parts ook exporteren als eigen IFC objecten, zie hieronder.
De
oorspronkelijke host ontbreekt dan wel. En in plaats daarvan zitten er
alleen 2 IfcWalls in het model. Deze bevatten alle Properties die horen
bij een IfcWall. (inclusief de gevulde Pset_WallCommon) Eventueel kan je
nu ook de spouw filteren zodat deze niet meegaat in de IFC. Wat
ontbreekt is de ‘BaseQuantities’ tab. Maar Solibri geeft wel gewoon zijn
eigen Quantities. (Eventueel zou je extra Quantities uit het
bronbestand mee moeten kunnen sturen.) Wat Solibri niet meer kan is de
Area van openingen opgeven. Een eventuele IfcOpening ontbreekt ook echt.
En er is dus ook geen relatie tussen bijvoorbeeld een kozijn en de wand
waar deze in zit. Maar is dat nodig?
Het enige verschil in de IFC export zit in het aanvinken van ‘Advanced \ Export parts as building elements’
Wat
verder opvalt is de IfcName van de IfcWalls in de browserstructuur.
Deze is met behulp van de IFC override parameter IfcName bepaald. En
automatisch ingevuld met een script. Het is vrij eenvoudig om dit
bijvoorbeeld terug te brengen tot alleen het materiaal. Bijvoorbeeld om
de sortering in de IFC browser te vereenvoudigen.
Resume:
Voor
een modellerende partij is het vaak handig om -tot op zekere hoogte-
met samengestelde objecten te werken. Door het maken van Parts en deze
(geautomatiseerd) van extra IFC data te voorzien kan er direct een IFC
worden gemaakt met losse objecten. Of juist als IfcPart onderdeel van
een host. De laatste 2 opties hebben hun eigen specifieke voor en
nadelen.
Just added 2 extra nodes: API.MethodLookUp and API.FilterScriptGenerator.
And in the extra directory is also an example.dyn file for a Quick start.
The whole goal of this Package is to help people who are already familiar with Dynamo. And understand how to make a for loop in Python. So they can find their way with the (Revit) API as comfortable as possible. You can search the internet later. Most Dynamo users will come to this point where they need to build just a little Python script because there is no Node available. Or they need to speed up a Dynamo script just a little.
To do this I needed to add 2 more Nodes:
API.FilterScriptGenerator
Will help you with your second problem: "How to grab elements from the Revit Database?" You can use the Dynamo Nodes off course. But can you do without? Now you can. And very easy. This Node will generate a complete Python Script. Copy this to clipboard, with a Node from Clockwork or Rhythm. Paste it in a Python Node. And tweak it to your needs.
API.FilterScriptGenerator
But, "The FilterElementCollector is no rocket science." I hear you say. No it isn't.
Still this Node has almost every option that the API gives us. And there are quite a few...
Beside filtering on 1 or multiple Classes or BuiltinCategories, you can Filter on all the Parameters you want. Use Views, Levels, Geometry and DesignOptions. And there is also an option so your Python Node also works for Linked documents.
Some Filter options can be achieved in multiple ways. If that is the case I tried to choose 1 or the other. I also skipped some very specialized Filters, because it is possible to also use e.g. BuiltinCategories. Most of this is documented in the Node.
And for those who know their stuff. This is not the most beautiful, clean and efficient script I ever wrote. But it works. ;-) So perhaps I will clean it up later (if I want to).
API.MethodLookUp
Helps to find the arguments needed for a method. In al lot of cases this will be enough. And if this is still confusing you can always use google and find more examples or an explanation.
API.MethodLookUp
With Lacing Longest and some sorting and grouping.