Wie een beetje langer werkt met Dynamo heeft natuurlijk het CodeBlock als zijn beste vriend omarmd. Een CodeBlock is superkrachtig en je kunt vele malen sneller daar iets in doen dan werken met losse nodes. Als bijvoorbeeld een node vraagt om de ModelSpace dan moet je eerst een node plaatsen die verwijst naar het document, dan een node die verwijst naar ModelSpace. Met een CodeBlock kan het met één regel:
Autodesk.Document.Current.ModelSpace;
Zo zijn er talloze snellere manieren te bedenken die met een CodeBlock mogelijk zijn. Eén die reuze interessant is, zijn Ranges. Een Range node vul je normaal gesproken met een startwaarde, een eindwaarde en een tussenstap, vier nodes dus. Dit kun je in een CodeBlock eenvoudiger doen:
1..100;
Dit geeft een Range van 1 tot 100 met tussenstappen van 1.
1..100..5;
Dit geeft een Range van 1 tot 100 met tussenstappen van 5.
1..87..3;
Dit geeft een Range van 1 tot 85 met tussenstappen van 3 (87 wordt niet gehaald met tussenstappen van 3 dus de Range stopt bij 85).
1..87..~3;
Dit geeft een Range van 1 tot 87 met tussenstappen van ongeveer 3:
Andere mogelijkheden zijn het werken met letters:
"A".."G";
Dit levert een lijst van A t/m G op. Eigenlijk hoor je een lijst te voorzien van blokhaken maar zolang je niets anders dan een lijst genereert mag je het overslaan. Je kunt dit ook combineren met een tekst, waarbij de blokhaken wel noodzakelijk zijn:
"Gebied " + ["A".."G"];
Ook andere lijsten kun je snel maken:
["Anton", "Jan", "Manon", "Truus"];
En je kunt het combineren met een functie. Bijvoorbeeld een Range van punten:
Point.ByCoordinates(0..10,0..5);
Je ziet twee ongelijke lijsten. Met Lacing instellingen op de nodes zou je deze ongelijke lijsten toch anders kunnen toepassen, maar dat werkt niet op een CodeBlock. Hoe werkt Lacing dan wel in een CodeBlock?
Replication
In een CodeBlock wordt dit Replication genoemd. De notatie hiervoor is het gebruik van <1>, <2>, enzovoort. Deze plaats je achter de lijstverwijzing en de getallen geven de belangrijkheid aan. Het maakt niet uit welke getallen je gebruikt, als ze maar hoger dan 0 zijn. Je kunt prima <37> en <42> gebruiken. De lijst met het laagste nummer wordt als eerste toegepast.
Je ziet nu als resultaat 3 lijsten met elk 6 waarden. Dit is hetzelfde als de Cross Product Lacing instelling op een node.
Als je de nummers omdraait dan zie je 6 lijsten met 3 waarden. Omdat <1> het laagst is, wordt nu die lijst als eerste toegepast.
Als de nummers gelijk zijn dan werkt het weer als vanouds, alsof je geen Replication hebt toegepast:
Nu zou je zeggen dat dit zinloos is maar je kunt dit nog uitbreiden met de toevoeging van een ‘L’, om aan te geven dat de langste lijst doorgezet moet worden. Hiermee simuleer je de Longest Lacing instelling:
Het lijkt niet uit te maken waar deze L wordt toegevoegd.
Het werkt niet echt intuïtief want zelfs na langdurig spelen met getallen moet je nog steeds nadenken wat je precies wilt bereiken en hoe je dat moet doen. Dan is de Lacing functie op een node wel een stuk aantrekkelijker om toe te passen. Maar voor eenvoudige lijstjes als hier beschreven is het een prima mogelijkheid.
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 only available in English.