Programmeringsinterfacet

Det klassiske interface

I stedet for at skrive AutoLisp-kode på AutoCADs kommandolinje, er det faktisk meget nemmere at benytte et programmeringsinterface.
Vi kan i nyere AutoCAD-versioner vælge enten det (“gamle”) integrerede AutoLISP programmeringsinterface eller det (“nye”) Visual Studio Code interface.

Første gang, du kalder kommandoen VLIDE (Visual Lisp Integrated Development Interface), bliver du spurgt, om du ønsker at anvende det traditionelle interface eller Visual Studio Code.

Indtil videre arbejder vi her videre i det traditionelle interface, fordi det er det interface, der fungerer på alle AutoCAD-versioner (og måske (??) er det lidt lettere at gå til, når man er AutoLISP-begynder).
I alle tilfælde kan du altid skifte mellem det traditionelle programmerings-interface og Visual Studio Code ved at ændre systemvariablen LISPSYS.

  • Traditionelt interface: LISPSYS = 0
  • Visual Studio Code: LISPSYS = 1

Efter ændring af LISPSYS skal AutoCAD genstartes for at få effektueret ændringen.

På side 2 i denne lektion gennemgår vi Visual Studio Code, men lige nu fortsætter vi i det traditionelle programmerings-interface. Det ser sådan her ud:

Herefter åbner vi det vindue, som kaldes Visual Lisp Console. I eksemplet ovenfor er Console-vinduet allerede åbent, men hvis det ikke er tilfældet hos dig, kan du nemt åbne det via Visual-LISP-menuen View -> LISP Console, eller du kan taste F6.
Her er det meget nemmere at afprøve funktioner. Du kan nemt copy/paste, scrolle op og ned med piltasterne, og du kan bruge tabulator-tasten til at hente tidligere brugte funktioner frem.

I nedenstående eksempel har vi brugt funktionen quote (vist som en apostrof ‘) i stedet for list til at generere lister, men resultatet er det samme.

Nu vil vi benytte funktionen setq til at associere tre variabler PATTEDYR, FUGLE og KRYBDYR med tre lister, og vi vil fordele vores kode over flere linjer, så det hele bliver overskueligt.

Når vi skriver kode over flere linjer i Console-vinduet, benytter vi os af såkaldt “bløde linjeskift” = Shift+Enter. Dette forhindrer Visual LISP i at evaluere programkoden, som først evalueres, når du taster et “almindeligt” Enter.
Vi skriver altså nedenstående i Console-vinduet, idet vi laver bløde linjeskift (Shift + Enter) og venter med at taste Enter til sidst.

(setq
PATTEDYR ‘(“Hund” “Kat” “Kanin” “Hest” “Ko”)
FUGLE ‘(“And” “Spurv” “Ørn” “Krage”)
KRYBDYR ‘(“Firben” “Slange” “Salamander”)
)

I Console-vinduet ser det sådan her ud:

Vi ser, at koden automatisk tildeles forskellige farver alt efter karakteren af vores input.
Parenteser er røde, indbyggede funktioner som f.eks. setq er blå og tekstværdier (som vi almindeligvis i kodesprog kalder tekststrenge eller strings) bliver magenta. Det en en måde hvorpå VisualLISP hjælper os med at holde overblik over programmeringskoden. Talværdier bliver i øvrigt grønne.
… indtil vi taster Enter! Så evalueres udtrykket, sidste værdi i setq-funktionen returneres, og hele koden bliver sort.

En lille påmindelse: Pas altid på, at parenteserne passer.
Husk, at enhver startparentes SKAL modsvares af en tilsvarende slutparentes. Ellers virker programkoden ikke.

Når kun den sidste værdi i setq-udtrykket returneres, betyder det dog ikke, at kun KRYBDYR-værdien er gemt. Det kan vi overbevise os om ved helt enkelt at skrive PATTEDYR i Console-vinduet og taste Enter, hvorefter vi får returneret listen (“Hund” “Kat” “Kanin” “Hest” “Ko”). På samme måde vil vi få returneret listen (“And” “Gås” “Spurv” “Ørn” “Krage”), hvis vi skriver FUGLE i Console-vinduet og taster Enter.

Bemærk, at vi her ikke kalder variablen med et udråbstegn (!) foran variablens navn, som vi tidligere gjorte på AutoCADs kommandolinje. I Visual LISP programmerings-interfacet) skriver vi bare variablens navn. Når vi bruger variablen i Console-vinduet, returneres variablens værdi.

I Console-vinduet kan vi også let vende tilbage til tidligere indtastet kode. Hver gang, vi taster TAB, kalder Console-vinduet tidligere kode frem. Prøv det selv.

Nu åbner vi et eksisterende LISP-dokument UpperCase-1.lsp … bare så vi har noget at bruge som eksempel.

Koden i eksemplet beder først brugeren om at udpege en tekst (ikke en multiline-tekst), hvorefter den valgte tekst ændres til udelukkende at bestå af store bogstaver.

Lige nu går vi ikke nærmere ind i selve koden, for først skal vi se på, hvordan vi kan bruge nogle af funktionerne i Visual LISP interfacet.

En ting er nemlig at skrive koden og kende de korrekte funktioner, men det er også vigtigt at kunne formattere koden, tilføje kommentarer, debugge koden trinvist etc.
Inden vi går videre med kodningen, vil vi derfor lige se lidt nærmere på nogle af mulighederne i det traditionelle Visual LISP-programmeringsinterface.
Vi ser først på tjek, formattering og load-funktionalitet, som vi kan tilgå via Tools-toolbaren. Den er markeret med rødt herunder.

Fra venstre mod højre har vi følgende funktionalitet:

  • Load active edit window. Loader al programkode i det aktive redigeringsvindue.
    Hvis der er fejl i koden, returneres en fejlmeddelelse i console-vinduet. F.eks.

  • Load selection. Loader markeret programkode. Hvis der er fejl i koden, returneres en fejlmeddelelse i console-vinduet. Se eksempel ovenfor.
  • Check edit window. Tjekker al programkode i det aktive redigeringsvindue.
    Hvis der er fejl i koden, meddeles dette i “Build Output”-vinduet, som åbner automatisk. F.eks.
  • Check selection. Tjekker markeret programkode.
    Hvis der er fejl i koden, meddeles dette i “Build Output”-vinduet, som åbner automatisk. Se eksempel ovenfor.
  • Format selection. Auto-formatterer markeret programkode.
    Se eksempler ovenfor.
  • Format edit window. Auto-formatterer al programkode i det aktive redigeringsvindue.
    Eksempel – uformatteret kode:

    Eksempel – formatteret kode:

    Hvis der er fejl i koden, advarer Visual LISP. For eksempel …


    Der er, som du ved selvsyn kan kontatere, mange andre værktøjer til rådighed i Visual LISP toolbar’en. Prøv dem selv af.

Her går vi videre på næste side med en indledende gennemgang af Visual Studio Code – installation og konfiguration.