AutoLISP nabízí několik datových typů, následující přehled ukazuje jednotlivé typy AutoLISPu s příklady použití (tvaru):
V AutoLISPu máme k dispozici dva typy proměnných:
Globální proměnné jsou přístupné všem funkcím načteným v rámci výkresu AutoCADu. Globální proměnné lze s výhodou použít jako "paměť" pro uchování např. nastavení dialogových prvků (použito v naší funkci). Dále si mohou tyto proměnné ponechat hodnotu od programu, který je definoval. Mezi hlavní nevýhody patří nesnadné odhalení chyby (modifikace proměnné při běhu programu).
Lokální proměnné si uchovávají hodnotu pouze po dobu běhu funkce, která je definovala. Po skončení běhu funkce je lokální proměnná automaticky odstraněna z paměti. Velkou výhodou lokálních proměnných je skutečnost, že je mohou měnit pouze příkazy v rámci funkce, která lokální proměnnou definovala. Z toho vyplývá daleko snazší odstranění chyb při modifikaci proměnné.
Lokálních proměnné jsou deklarovány za znakem lomítka / (viz příklad):
(defun jméno_funkce (/ jména_lokálních_proměnných) - tělo funkce )
Při psaní programů (funkcí v AutoLISPu) není potřeba předem deklarovat proměnné (jako je tomu například v programovacím jazyce C). Pokud v programu potřebujete použít nějakou proměnnou stačí pouze do proměnné přiřadit hodnotu.
V AutoLISPu se přiřazení hodnoty do proměnné uskuteční pomocí příkazu setq.
(setq promenna 9 druha 66.6) (setq retezec "tohle je retezec")
AutoLISP umožňuje přiřadit do proměnné prázdnou hodnotu - nil. Hodnota nil znamená skutečně "žádný znak, nic". Pokud byste do proměnné přiřadily 0 nebo "" jednalo by se již o hodnoty typu integer, resp. string.
AutoLISP nabízí k použití následující předdefinované proměnné:
Jak již je patrné z názvu programovacího jazyk Auto LISP jedná se o jazyk pracující se seznamy (List procesing language). Seznamy v LISPu vytváří podstatnou část jeho funkčnosti. Řada funkcí pracující s AutoCADem vrací přímo hodnoty ve tvaru seznamu, např. funkce getpoint vrací souřadnice formou seznamu.
Seznamy slouží k uchování dat, které mohou být různých datových typů. Příklad vytvoření seznamu o třech různých prvcích:
(setq seznam1 (list 1.0 "prvek" 6))
Funkce nth umožňuje jednoduchým způsobem získat prvek ze seznamu. Příklad získání druhého prvku z našeho seznamu seznam1:
(setq druhy_prvek (nth 2 seznam1))V příkladu je patrné, že druhý prvek seznamu je uložen do nové proměnné druhy_prvek.
Funkce cons přidává další prvek na začátek seznamu. Příklad přidání nového prvku - řetězce "prvek" na začátek našeho seznamu seznam1 a uložení výsledku do nového seznamu seznam2:
(setq seznam2 (cons "prvek" seznam1)Nová proměnná seznam2 obsahuje nyní prvky:
("prvek" 1.0 "prvek" 6)
Funkce append přidává další prvek na konec seznamu. Příklad vytvoření nového seznamu, který bude obsahovat náš původní seznam seznam2 a nový prvek přiřazený na konec seznamu:
(setq seznam3 (append seznam2 '("prvek"))Nová proměnná seznam3 bude obsahovat nyní prvky:
("prvek" 1.0 "prvek" 6 "prvek")V kódu si všimněte použití znaku quote ('). Znak ' signalizuje AutoLISPu , aby nevyhodnocoval další výraz, ale použil ho jak je napsaný.
Funkce subst umožňuje změnit všechny výskyty prvku s danou hodnotou na jinou. Příklad změny textu "prvek" v seznamu seznam3 na "PRVEK":
(setq seznam4 (subst "PRVEK" "prvek" seznam3))Nový seznam bude nyní obsahovat prvky:
("PRVEK" 1.0 "PRVEK" 6 "PRVEK")
Funkce car slouží k získání prvního prvku ze seznamu. Funkce cdr slouží ke získání zbytku seznamu bez prvního prvku. Příklad použití funkcí cdr a car k získání dvojice souřadnic (x,y) ze seznamu obsahujícího tři souřadnice (x, y, z):
Nejprve si musíme vytvořit proměnnou bod obsahující tři souřadnice bodu x = 1.1, y = 2.2 a z = 3.3:
(setq bod '(1.1 2.2 3.3))Nyní máme v proměnné bod typu seznam uložené tři body (1.5 3.2 2.0). Jistě jste si všimli jakým způsobem jsme vytvořili nový seznam bod. Pro vytvoření seznamu jsme použili funkci quote ('), která sdělí AutoLISPu aby následující text za funkcí nevyhodnocoval a předal ho tak jak je napsaný - v našem případě ve tvaru seznamu. K získání první souřadnice použijeme funkci car:
(setq x_sour (car bod))Do proměnné x_sour jsme si uložily x-ovou souřadnici = 1.1. Druhou souřadnici získáme pomocí funkcí cdr a car:
(setq y_sour (cdr (car bod)))Volání funkcí (cdr (car ...)) je možné zkrátit na (cadr). Získání y-ové souřadnice pomocí zkrácené verze:
(setq y_sour (cadr bod))Do proměnné y_sour jsme si uložily y-ovou souřadnici = 2.2. Třetí souřadnici získáme pomocí funkcí cdr, cdr a car. Opět použijeme zkráceného zápisu:
(setq z_sour (caddr bod))Tím jsme získali i poslední souřadnici bodu.
Z výše uvedených příkladů vyplývá schéma tvorby zkrácených příkazů car a cdr. Potřebujete-li zkrátit následující sekvenci příkazů (cdr (cdr (cdr ( car ..)))) postupujte odzadu (z nejvnitřnější závorky). Tj. nejprve napište písmeno c, potom za každé car napište a, a za každé cdr napište d. Nakonec napište písmeno r. Pro náš příklad dostanete:
cadddr