Het is niet voor het eerst dat op deze blog iets wordt geschreven over Property Sets. Het is namelijk een fantastische manier om data te koppelen aan objecten, met daarbij de mogelijkheid om niet alleen automatische waarden op te slaan, maar ook berekende waarden met een formule. Als je kijkt naar bijvoorbeeld Object Data, dan is dat allemaal veel statischer. Daarmee kun je niet automatisch een objectnaam of status uit de NLCS halen. Met Property Sets wel.

NLCS opsplitsen met een formule

Om een NLCS laagnaam op te splitsen in een Property Definition, is een Formula Definition nodig. Deze moet echter verwijzen naar een andere Property Definition, namelijk een Automatic Definition die de laagnaam ophaalt van een object. Die Automatic Definition maak je zelf aan en laat deze verwijzen naar de Layer. Vervolgens maak je een Formula Definition aan.

De formule die je toepast is als volgt:

' Altijd starten met een defaultwaarde 
' en ontsnappingsmogelijkheid bij errors
RESULT="--" On Error Resume Next
' Splits de naam van de laag objName = Split( "[Layer]", "-" )
' Retourneer het deel wat je wilt
' hebben (vanaf 0-index tellen)
' waarbij de underscore vervangen wordt
RESULT = Replace( objName(3), "_", " " )

Je splitst de laagnaam op het streepje, en haalt dan het vierde (vanwege de 0-index verwijs je naar index 3) deel op die je retourneert als RESULT. In de preview van het venster zie je rechts boven het deel wat geretourneerd wordt.

Let erop dat de [Layer] echt een object is en geen tekst. Bij het kopiëren kun je dit stukje beste verwijderen en dan toevoegen door dubbel te klikken op het object ‘Layer’ links onderin. Links boven wordt dit dan met een lichtgrijze achtergrond getoond.

Een status haal je op gelijkbare wijze op.

Met een If..Else..Then constructie kun je de status tonen als een volledige omschrijving. Let er wel op dat dit niet werkt als de status is voorzien van een volgnummer. In dat geval kun je beter controleren of het begint met een B of N of andere status-letter.

De Property Set Definitions kun je natuurlijk uitbreiden met andere zaken. De Layer Definition kun je overigens onzichtbaar maken, dit voorkomt een extra Property Set waarde in de Palette.

Hierboven zie je in de kolom ‘Visible’ dat de Layer uitgeschakeld is. Deze is wel te gebruiken in andere Property Set Definitions maar wordt niet getoond bij het object dat deze set gekoppeld heeft.

Je kunt het nog mooier maken door de hoofdletters aan te passen naar kleine letters, of andere velden toe te voegen.

Labels

In Civil 3D kun je de Propery Set waarden ook tonen in een Label. Soms kun je deze rechtstreeks in de Label editor selecteren, maar ook gewoon zelf invoeren. De notatie is als volgt:

<[PS:NLCS:Naam(CP)]>

‘PS’ staat hier voor Property Set, ‘NLCS’ voor de Property Set Definitions onder deze naam, en ‘Naam’ staat voor de Property Definition in deze set. Met de toevoeging (CP) geef je aan dat de tekst ongewijzigd getoond moet worden. Andere opties zijn bijvoorbeeld CU of CL voor upper en lower tekst.

Dynamo

Wil je meer automatiseren met Property Sets, kijk dan eens naar Dynamo. Daarmee kun je ook redelijk automatisch Property Sets maken en vullen, hoewel het nu nog niet mogelijk lijkt om ook formules toe te passen. Maar omdat je toch al automatiseert, is dat misschien ook niet nodig.

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.