Niet alles hoeft nuttig te zijn, soms is je werk ook gewoon leuk. Bijvoorbeeld als je een Civil 3D Surface wilt omzetten naar Lego-blokjes. Dit kan heel eenvoudig met Dynamo uitgevoerd worden.

Voorbereiding

Je hebt voor het uitvoeren van dit script wel de Arkance Systems Node Library nodig. Deze bibliotheek bevat enkele nodes die je hiervoor nodig hebt. Het grappige is, ze zijn niet ontworpen om specifiek Lego-blokjes te plaatsen op een terreinmodel, maar je kunt ze er wel voor gebruiken.

Verder heb je een blok nodig met de afmetingen 1x1x1, wat niet exact de vorm van een echt Lego-blokje is maar wel makkelijk rekent. Dit moet een 3D blokje zijn en de objecten in het blok dienen als Color de kleur ‘ByBlock’ te hebben.

Het script

In het script, of de graph zoals het eigenlijk heet, plaats je enkele nodes. Voor het hergebruik is het handig om de nodes die je wil wijzigen, in een aparte groep te plaatsen. Bijvoorbeeld aan de linkerkant waar je een dropdown plaatst om een Surface te kiezen, een Code Block met daarin de grid size en eventueel de kleurenrange die toegepast gaat worden om het hoogteverschil te visualiseren.

Je kunt op een terreinmodel een grid aan punten opvragen. Hoe groter de grid-size, hoe groter de blokjes verschaald worden en hoe sneller Dynamo klaar is. De tekening wordt al snel erg zwaar dus begin eerst maar met een grotere tussenafstand.

De Z-waarde moet nog afgerond worden naar een waarde die overeen komt met de afmeting.

De formule hiervoor is:

Math.Round(z / schaal) * schaal

Als je blokje 25x25x25 moet worden, dan moeten de hoogten afgerond worden op een waarde van 0, 25, 50, 75, enzovoort. Een hoogte van 17.23 wordt dan met bovenstaande formule afgerond naar 25. Daarna moeten er nieuwe punten worden samengesteld die als invoegpunt gelden voor de lego-blokjes. De oorspronkelijke X en Y worden gecombineerd met de afgeronde Z-waarden.

Vervolgens worden de blokjes geplaatst en verschaald (de node Vector.ByCoordinates gevuld met de ‘size’ zorgt voor de juiste schaal).

Daarna heb je een dictionary nodig van unieke hoogten en een bijbehorende kleur.

Wel even die hoogten sorteren, anders loopt je kleurenrange niet netjes mee. En daarna kun je de blokjes kleuren met de kleur die hoort bij de Z-waarde van het blokje.

Je kunt hier natuurlijk echte nodes voor gebruiken maar met twee coderegels kan het net zo eenvoudig.

Het resultaat

Na het uitvoeren worden in Civil 3D allerlei blokjes geplaatst en van kleur voorzien.

Hoe kleiner de grid-size, hoe nauwkeuriger de Surface wordt gevolgd maar de tekening wordt dan ook snel heel zwaar. Verder heb je er niet veel aan, behalve dat het leuk is om te spelen en leerzaam om Dynamo naar je hand te zetten.

Wil je complexe of repetitieve taken automatiseren in Civil 3D? Dit boek helpt je alles te leren over de design automating tool Dynamo voor Civil 3D. Je wordt een professional in visueel programmeren, en binnenkort zijn al je saaie of complexe taken geautomatiseerd!

This book is available in English only.