Vi vil oprette en ny dotted-pair-liste (1 . “FACADE 1:100”) og gemme denne i variablen DP_NY, og det gør vi med funktionen cons.
Funktionen tager to argumenter
-new-first-element = nyt første element i listen
– list-or-atom = den liste, vi vil manipulere
Funktionen returnerer den nydannede liste.
Eksempler:
returnerer listen (1 2 3 4)
(cons (1 “En tekst”))
returnerer listen (1 . “En tekst”)
Derfor definerer vi DP_NY sådan her:
DP_NY repræsenterer nu dotted-pair-listen (1 . “FACADE 1:100”).
Dermed kan vi generere en liste, der svarer til listen ED med én forskel, nemlig elementet (1 – “FACADE 1:100”). Vi gør det med funktionen subst.
Funktionen subst erstatter et element i en liste med et andet.
– newitem = det nye element
– olditem = det gamle element, som skal erstattes
– lst = den liste, vi vil bruge funktionen på
Funktionen returnerer den nygenererede liste.
Det nye element er DP_NY, det gamle element er DP, og den liste, vi vil manipulere er ED. Vi vil gemme den returnerede liste i variablen ED_NY.
Altså …
Det får vi nedenatående liste ud af. Bemærk, at kun (1 . “FACADE 1:100”) adskiller sig fra den entity-data-liste, vi gemte i ED.
(
(-1 . )
(0 . “TEXT”)
(5 . “15A91”)
(102 . “{ACAD_XDICTIONARY”)
(360 . )
(102 . “}”)
(330 . )
(100 . “AcDbEntity”)
(67 . 0)
(410 . “Model”)
(8 . “0”)
(100 . “AcDbText”)
(10 1868.88 -768.639 0.0)
(40 . 500.0)
(1 . “FACADE 1:100”)
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . “Grenov”)
(71 . 0)
(72 . 0)
(11 0.0 0.0 0.0)
(210 0.0 0.0 1.0)
(100 . “AcDbText”)
(73 . 0)
)
Det sidste, vi skal gøre er at foretage selve opdateringen af tekst-objektet. Det gør vi med funktionen entmod.
Læs mere om entmod-funktionen her.
Funktionen tager et argument
– elist = liste med entity data for det objekt, der skal opdateres.
Funktionen returnerer den nye entity data liste. Hvis der er fejl i koden, eller operationen af anden årsag fejler, returnerer funktionen nil.
Vi gør dette:
og dermed opdateres teksten.
Koden ser sådan her ud i Visual LISP:
og den kan, som nævnt et par gange ovenfor, optimeres, så det gør vi lige
Prøv at loade denne kode ind i en AutoCAD-tegning med tekst. Det kan du gøre via Visual LISPs toolbar-> Load active edit window.
Du kan selv forvisse dig om, at den valgte tekst nu står med store bogstaver. Åbn AutoCADs dokumentvindue og tjek.
Vi er ikke færdige med vores kode endnu, men hermed lukker vi del 2 af introduktionen til AutoLISP. I del tre vil vi se nærmere på Visual LISPs programmeringsinterface, og vi vil udvikle koden, så den bliver anvendelig i praksis for enhver AutoCAD-bruger.