AutoCAD scripts

Lav scripts, der automatisk kan udføre ensartede gentagne procedurer, så du selv kan koncentrere dig om det mere interessante.

Scripts i AutoCAD er en kraftfuld måde at automatisere gentagne opgaver på. Ved hjælp af helt enkle tekstfiler kan du få AutoCAD til automatisk at udføre en række af kommandoer – hurtigt, præcist og ensartet.
Vi gennemgår, hvordan du kommer i gang med scripts, hvordan de opbygges og hvordan du kan bruge dem til at effektivisere din arbejdsproces.
Uanset om du arbejder med mængdeudtræk, tegningsopsætning eller batchbehandling, vil du opdage, at scripts kan spare dig både tid og klik.

Et script oprettes i en almindelig tekstfil med filendelsen .scr. I filen oprettes en række AutoCAD-kommandoer – én efter én, linje for linje. Når scriptet køres via kommandoen SCRIPT, udfører AutoCAD kommandoerne præcis som om de er tastet ind.

Overordnede regler for scripts

  • Mellemrum i en scriptfil er det samme som at taste Enter. To mellemrum er det samme som at taste Enter to gange. Tre mellemrum svarer til at taste Enter tre gange o.s.v.
    Undtagelse: Når en kommando tillader en tekst med mellemrum (som f.eks. et lagnavn eller style-navn), opfattes et mellemrum som en mellemrumskarakter – ikke som Enter.
    Når en tekst indeholder mellemrumstegn, skal teksten skrives i citationstegn som f.eks. et lagnavn, der kunne være “Tunge indervægge”.
  • Et linjeskift i en scriptfil svarer til Enter.
  • En scriptfil skal altid afsluttes med et linjeskift, så det sikres, at den sidst noterede kommando udføres.
  • Kommandoer, der kalder dialogbokse kan kun anvendes i scripts, hvis man foranstiller en bindestreg. F.eks. kalder LAYER-kommandoen jo normalt en lag-dialogboksen, og det kan et script ikke håndtere. Derfor foranstilles en bindestreg, så kommandoen bliver -LAYER. På denne måde kaldes kommandolinjeversionen af LAYER-kommandoen. Det samme gælder f.eks. for INSERT, som erstattes med -INSERT, VIEW, som erstattes med -VIEW, RENAME, som erstattes med -RENAME o.s.v.

Vigtigt om redigering i Notepad

I nogle tilfælde kan Notepad i Windows 11 automatisk gemme filer som UTF-8 med BOM eller tilføje usynlige tegn, som AutoCAD ikke forstår. Det kan også være, at linjeskift eller tegnsætning bliver formateret anderledes, hvilket gør scriptfilerne ubrugelig.
En løsning kan være at anvende en anden editor som eksempelvis den gratis Notepad++, der ikke formatterer teksten, eller også kan Windows 11 Notepad anvendes, men når scriptfilen skal gemmes, skal det gøres ved hjælp af Save as (Gem som):

  1. Skriv scriptet i Notepad
  2. Vælg Filer->Gem som
  3. Nederst i dialogboksen står der Kodning – her skal du vælge
    … enten ANSI
    …eller UTF-8 uden BOM (men det er ikke altid muligt)
  4. Gem filen som en script-fil (f.eks. MitScript.scr)

Lav et script

Her er et eksempel på en kommandosekvens, som den ser ud på kommandolinjen i AutoCAD.

Command: -LAYER
Current layer: "0"
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: N
Enter name list for new layer(s): Tekst
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: C
New color [Truecolor/COlorbook] : 1
Enter name list of layer(s) for color 1 (red) <0>: Tekst
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: N
Enter name list for new layer(s): Målsætning
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: C
New color [Truecolor/COlorbook] : 1
Enter name list of layer(s) for color 1 (red) <0>: Målsætning
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: M
Enter name for new layer (becomes the current layer) <0>: Tegningsopsætning
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]: C
New color [Truecolor/COlorbook] : 7
Enter name list of layer(s) for color 7 (white) : Tegningsopsætning
Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile/Xref]:

Her er, hvad kommandosekvensen udfører:

  1. Kalder kommandoen -LAYER
  2. Opretter laget Tekst og knytter farven rød (farve nr. 1) til laget
  3. Opretter laget Målsætning og knytter farven rød (farve nr. 1) til laget
  4. Opretter laget Tegningsopsætning som aktivt lag og knytter farven hvid (farve nr. 7) til laget
  5. Afslutter kommandoen

og her er, hvordan det ser ud i en script-fil SetupLayers.scr.

Scriptfil SetupLayers.scr

Bemærk, at der er to tomme linjeskift til slut. Første linjeskift afslutter kommandosekvensen i linjen ovenover, og andet linjeskift afslutter -LAYER-kommandoen.

Se scriptet køre her:

Kør et script over flere filer

Vi kan få AutoCAD til at køre et script, som åbner flere tegningsfiler én efter én, udfører nogle kommandoer, gemmer og lukker tegningsfilen og går videre til næste tegningsfil.

Øvelsen kræver, at vi lige først genererer en liste af dwg-filer, som skal bearbejdes. Eksempelvis alle tegningsfiler i en folder plus underfoldere.
For at gøre det, anvender vi Powershell. PowerShell er et kraftfuldt kommandolinjeværktøj og scriptsprog udviklet af Microsoft, designet til automatisering og administration af systemer.
Vi vil benytte Powershell i en cmd-fil, som er en tekstfil med filendelsen .cmd, og som kan indeholde en række kommandoer, der udføres sekventielt af Windows’ kommandoprompt (CMD.exe). Den bruges typisk til at automatisere rutineopgaver, konfigurere systemer eller starte programmer.

Åbn Notebook (Notesblok) og noter følgende Windows-kommandoer (ikke at forveksle med AutoCAD-kommandoer):

@echo off
powershell -NoProfile -Command ^
"Get-ChildItem -Recurse -Filter *.dwg | Sort-Object Name | Select-Object -ExpandProperty FullName | Out-File -Encoding utf8 MyList.scr"
echo MyList.scr has been generated with UTF-8-kodning.
pause

Gem derefter som en cmd-fil:

  1. Gem som …
  2. Vælg den tegningsfolder, hvor dwg-filerne befinder sig.
  3. Skriv et passende filnavn som f.eks. GenererListe.cmd
  4. Vælg Alle typer i feltet Filtype (VIGTIGT!)
Windows Command-fil: MyPowershellCommand.cmd

Her er, hvad det betyder:

  • @echo off skjuler kommandoerne, så kun output vises i konsollen. Det giver et mere ryddeligt udseende.
  • powershell -Noprofile – Command ^ starter PowerShell fra CMD og kører en kæde af kommandoer. -Noprofile Undgår at loade brugerens PowerShell-profil, så scriptet kører hurtigere og mere stabilt, og ^ betyder et linjeskift-tegn i cmd, så kommandoen kan fortsætte på næste linje.
  • Get-ChildItem -Recurse -Filter *.dwg finder alle dwg-filer i den aktuelle mappe og alle undermapper.
  • Sort-Object Name sorterer filerne alfabetisk efter navn.
  • Select-Object -ExpandProperty FullName Udtrækker den fulde sti til hver fil som ren tekst.
  • Out-File -Encoding utf8 MyList.scr gemmer resultatet i en fil kaldet MyLisp.scr med UTF-8-kodning.
  • echo MyList.scr has been generated with UTF-8-kodning. Informerer brugeren om, at filen er oprettet med korrekt tekstkodning.
  • pause Venter på et tastetryk, så brugeren kan se beskeden før vinduet lukker.

Når vi har genereret cmd-filen kan vi dobbeltklikke på den i Windows Explorer.
Herved genereres AutoCAD-scriptfilen MyList.scr

Åbn script-filen MyList.scr for redigering

Sådan her ser MyList.scr ud (på min PC), når den er blevet genereret af cmd.exe:

Script-filen MyList.scr

For at gøre dette til et fungerende AutoCAD-script gør vi følgende:

  • Erstat C:\ med OPEN “C:\ (Husk citationstegnet, da det har betydning for, at mellemrum i stien ikke opfattes som et Enter)
  • Erstat .dwg med .dwg” TILEMODE 0 Zoom Extents Qsave Close

På den måde får vi dette resultat, som er en gyldig AutoCAD-script-fil:

Færdigredigeret MyList.scr

Start nu en ny AutoCAD-tegning. Du må IKKE åbne en af de tegninger, der er listet i scriptet. Ellers fejler scriptet og går i stå.

Kald til sidst scriptet via kommandoen SCRIPT, vælg MyList.scr og betragt AutoCAD åbne tegningerne én efter én og udføre sekvensen af kommandoer.

En lille advarsel

Det er nemt at få et script til at fejle! Du kan kalde en kommando, som åbner en dialogboks. Du kan åbne en fil, som allerede er åben i AutoCAD. Du kan glemme et mellemrum (Enter) i scriptet. Du kan forsøge at skrive til et lag, der enten ikke findes eller måske er låst, o.s.v.
Test på kommandolinjen i AutoCAD, inden du skriver dit script.

God fornøjelse …