Recent las ik een artikel over handige Lisp routines die het werken in AutoCAD (of Civil 3D, daar ging het artikel eigenlijk over) een stuk eenvoudiger maken. Eén van die Lisp routines was bedoeld om polylijnen op een hoogte te kunnen tekenen. Normaal gesproken teken je een polylijn zonder hoogte, en kun je via de Palette de Elevation Property aanpassen. Maar om polylijnen al direct op een bepaalde hoogte te tekenen, heb je helemaal geen Lisp nodig.

Wat is Lisp?

Even tussendoor, voor wie niet weet wat Lisp is. Lisp is een programmeertaal, of scripttaal, en bestaat al heel lang. De opzet is dat instructies tussen haakjes worden gezet om aan te geven wat bij elkaar hoort. Daarom is de naam ook een afkorting van List Processing, hoewel sommige programmeurs beweren dat het Lost In Stupid Parentheses betekent. Wat hardcore Lisp-programmeurs ertoe bracht om te beweren dat het Language Intended for Smart Programmers zou betekenen. In ieder geval, Lisp is een eenvoudige taal waarmee je instructies afbakent met haakjes. Normaal gesproken gebruik je ook nog inspringen om in de code inzichtelijk te maken waar een instructie begint en eindigt. Dit zijn vrij normale constructies in programmeertalen. In C# gebruik je accolades om blokken code bij elkaar te houden en de Visual Studio editor zal de code ook laten inspringen, hoewel dat technisch niet nodig is. In Python moet je juist wel inspringen, wat het aan de ene kant overzichtelijk maakt; je kunt geen haakjes vergeten want die worden toch niet gebruikt. Aan de andere kant, maak ergens een fout in het inspringen door bijvoorbeeld een nieuwe instructie tussen te voegen, en je bent vervolgens uren bezig om uit te zoeken hoe je het moet oplossen.

Hoogte instellen

Even terug naar het onderwerp, voordat de blog uit enthousiasme voor het programmeren volledig overgenomen wordt en een andere kant op gaat. Polylijnen op hoogte tekenen dus. In de infra heeft iets zelden exact dezelfde hoogte over een langere afstand, dus feitelijk weet ik niet zo goed wat de bedoeling is van een 2D Polyline op een specifieke hoogte. In Civil 3D is een 3D Polyline of een Feature Line veel handiger. Heb je het over contourlijnen, die worden normaal gesproken al geconstrueerd uit Surface data en als je een grondbank of ontgraving moet ontwerpen, dan is een Grading ook nuttig. Maar het kan altijd een keer voorkomen dat je een polylijn op hoogte moet tekenen, en als je dat vaker doet dan is het handig om vooraf de hoogte te kunnen instellen.

Eén van de mogelijkheden is om vooraf een variabele aan te passen. Door de variabele ELEVATION of de afkorting ELEV op te geven op de Command Line, kan daarna een default hoogte worden ingesteld. Alles wat je daarna doet in AutoCAD, zal automatisch op deze hoogte worden geplaatst. Dus niet alleen een polylijn maar ook het invoegen van een Block. Misschien handig als je per verdieping  in 3D een gebouw aan het construeren bent, maar verder best lastig als je niet in de gaten hebt dat die variabele nog is ingesteld.

Een andere snelle mogelijkheid is om bij het eerste punt wat je ingeeft, de parameter .Z in te voeren op de Command Line. AutoCAD vraagt nu om een Z-waarde op te geven. Daarna wordt aangegeven dat er nog een X en Y nodig is. Zo ligt het eerste punt van de Polylijn al op hoogte en automatisch de volgende punten ook.

Command: PLINE
Specify start point: .z
of 4.37
(need XY):
Specify next point or [Arc/Halfwidth/Length/Undo/Width]:

De rode waarden type je op de Command Line of kies je uit de tekening. Super handig en een volgende polylijn is heel eenvoudig op een andere hoogte te tekenen of weer standaard op 0.0m.

Inzichtelijk maken van variabele waarde

Hoewel de tweede mogelijkheid veel beter is, want de standaard werkhoogte wordt niet aangepast, kan het wel interessant zijn om te weten op welke waarde de variabele ELEV is ingesteld. Ook hier zijn wel wat manieren voor.

Met de functie SYSVARMONITOR kun je in de gaten houden wanneer een variabele verandert. Nu is het vaak zo dat je zelf de waarde voor ELEV aanpast en dus weet dat deze aangepast is. Je krijgt in ieder geval een popup en je kunt het zien in de lijst met gemonitorde variabelen:

Je zou ook een ModeMacro kunnen toepassen, iets wat een blog op zichzelf waard is. Maar een snellere manier is om de Coordinates te tonen op de Status Bar onderaan. Helemaal rechts zit een hamburger-knopje, en als je daar op klikt dan zie je een lijst met dingen die je kunt tonen op deze balk. Zet je de Coordinates aan, dan zie je voortdurend de positie van je cursor, en als je op de Z-waarde let dan kun je zien op welke hoogte je werkt.

Altijd al plug-ins willen maken voor AutoCAD? Dan is dit het boek dat je nodig hebt om dat te leren. Het helpt je om plug-ins te ontwikkelen in de .NET taal C# met behulp van Visual Studio. This book is only available in English.