Voor het werken met Tables is het handig om de Arkance Systems Node Library te hebben geïnstalleerd. Deze library bevat honderden extra nodes en ook een heleboel om te kunnen werken met tabellen.
Om een tabel te genereren heb je data nodig. Dit kan van alles zijn, en overal vandaan komen. Het hoeft niet uit een tekening te komen, je kunt ook een KML of Excel bestand hebben ingelezen. Zolang je maar tabulaire data hebt of kunt maken. In dit voorbeeld worden de eigenschappen van Alignments gebruikt.
Data verzamelen
Een Table kun je eenvoudig maken uit een List, of Lists in een List. Een lijst bevat een serie objecten die in een tabel als tabelrij geplaatst kan worden. Een lijst met lijsten kan in een tabel zo worden weergegeven dat elke lijst in een lijst in een rij met meerdere kolommen wordt geplaatst. Om te beginnen verzamel je dus eerst data, waarbij elk item in een lijst zelf ook een lijst is. Wil je een tabel maken met de Alignment eigenschappen Naam, Lengte, Stijlnaam, Type, Startpunt en Eindpunt, dan verzamel je zes lijsten met data die je vervolgens combineert in één omvattende lijst.
Om te beginnen haal je alle Alignments op uit de tekening en vraagt daarvan de gewenste eigenschappen.
De verschillende eigenschappen hebben al geresulteerd in een lijst. Maar sommige zijn niet één op één te gebruiken, bijvoorbeeld de StartPoint en EndPoint nodes. Deze bevatten weer afzonderlijke X en Y waarden. Je kunt die eenvoudig omzetten naar een tekst en samenvoegen.
Met dit soort constructies loopt het aantal benodigde nodes al snel op. Als je een fan van Code Blocks bent dan kun je dit ook vereenvoudigen.
Hierbij is gelijk de duizendtalscheiding vervangen. Nu heb je een serie lijsten die nog samengevoegd moeten worden. Dit kan met behulp van een List.Create node. En dan kun je tabellen maken.
De eenvoudige manier
In de meest recente versie 7.3 van de Arkance Systems Node Library is een node te vinden om heel simpel een tabel te genereren van data, als het maar in een List zit. Meer dan een locatie, een titel en de data is niet nodig:
Dit resulteert in een AutoCAD Table met alle gegevens.
Hoewel erg simpel, het nadeel is dat de kolombreedte of kolomtitels niet netjes zijn ingevuld. Maar ook daarvoor zijn aparte nodes beschikbaar. De breedte bijvoorbeeld. Dit kan mooi in een Code Block maar mag ook met aparte numerieke nodes en een List.Create node. Daarna pas je deze toe op de tabel. Je kunt meerdere kolommen ineens aanpassen, en hiervoor geef je de kolomindex op, die begint altijd met 0 (is eerste kolom).
Het ziet er al beter uit:
Ook de kolomtitels zijn eenvoudig aan te passen. Geef een lijstje met titels en voilá.
Zoals je ziet ben ik een groot fan van Code Blocks.
Speciale lijsten
Deze node heeft overigens nog wat bijzonders. Als je deze vult met een enkele lijst met Points of Coordinate Systems, dan zet deze node de data automatisch om in een kolom met X, Y en Z waarden.
Dit zorgt voor een Table met coördinaten.
Om het te verfraaien kun je ook hier de titels aanpassen, de laatste kolom verwijderen (hoogte 0.0 is niet relevant) en eventueel een volgnummer-kolom toevoegen. Ja, ook daar is een node voor beschikbaar.
De uitgebreide manier
Wil je meer grip op de uitvoer dan kun je de data ook eerst omzetten in afzonderlijke TableColumn en TableRow objecten. Je kunt dan de kolomtitel en -breedte op voorhand al sturen. Als een tabel over een A4-breedte getekend moet worden (zoals op een afdruk van een tekening die opgevouwen een A4-formaat heeft), dan heb je 210 units te verdelen. Met wat marges links en rechts kom je al gauw uit op 180 units, op papier dus 18cm. Niet elke kolom hoeft even breed, dus verzin een breedte die past bij de kolom en maak dan verschillende TableColumns aan.
De data zet je om naar TableRow objecten. Maar voordat je dat doet, moet je de lijsten in de lijst converteren zodat elk item van de lijst samen met de bijbehorende items van de andere lijst in een eigen lijst terecht komen. Dit heet transponeren en is bijvoorbeeld ook nodig als je naar Excel wilt schrijven. Anders krijg je elke kolom in een rij, en andersom.
Zoals je ziet heb je nu per lijst de naam, stijl, type, lengte en coördinaten per Alignment. Nu kun je eenvoudig een tabel plaatsen die al de juiste kolomtitels en breedte heeft.
En met niet al teveel moeite voeg je zelfs nog rijen toe met bijvoorbeeld de totale lengte:
Als je eenmaal bezig bent…
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.