Než začnete programovat v AutoLISPu je důležité si uvědomit, že veškeré programy v AutoLISPu mají tvar volání funkcí. Také každý výraz v AutoLISPu je ve své podstatě volání funkce s následujícím tvarem:
Příklady volání funkce předešlé funkce:
(jm_funkce povinný_argument) (jm_funkce povinný_argument volitelný_argument)
Když již víme podstatu syntaxe programu v AutoLISPu, ukážeme si definování uživatelské funkce. Pro definování funkce použijeme příkaz AutoLISPu defun.
(defun sym ([arguments] [/ variables...]) expr...)
Jako první příklad uvedeme velice známou funkci - AhojSvěte. Jedná se o nejjednodušší funkci, která zobrazí dialogový box (tzv. alert box) s pozdravem:
(defun AhojSvetePrvni() (alert "Nazdárek uživatelé! \njak se Vám líbím!") )
Z příkladu je patrné, že nová funkce nepřebírá žádné parametry. V kódu funkce si všimněte znaku zpětného lomítka v zobrazovaném řetězci. Znak \n signalizuje AutoLISPu, aby následující text zobrazil na nový řádek.
Pokud si budete chtít tuto funkci spustit, stačí v AutoCADu načíst a spustit soubor AhojSvetePrvni1.lsp. Pokud nevíte jak
Další příklad ukáže způsob předání výsledku z funkce. Vytvoříme funkci, která po svém zavolání vypočítá druhou mocninu argumentu:
(defun mocnina (cislo) (setq cislo (* cislo cislo)) )
Použití naší funkce:
(setq mocnina mocnina(8))
Aby bylo možné volat funkci s argumentem, musíme v definici funkce uvést v závorkách proměnnou, do které se vstupní argumenty předají. V našem příkladu se jedná o proměnnou cislo. Pokud byste potřebovali použít více vstupních argumentů stačí do závorek napsat více proměnných oddělených mezerami.
Pokud byste potřebovali předat více argumentů z funkce musíte použít proměnnou typu seznam.
V příkladu je dobré dále si všimnout použití operátoru *. Jak jste si jistě všimli AutoLISP používá prefixovou notaci operací:
výsledek = operátor argument1 argumen2
Více o aritmetických operátorech v AutoLISPu se dozvíte v lekci Používání proměnných a operátorů v AutoLISPu.
V prostředí AutoCADu máme možnost definovat funkci tak, aby mohla být jednoduše vyvolána v AutoCADu jako příkaz. Nemusí se v AutoCADu volat v závorkách. Aby to bylo možné, stačí před jméno funkce uvést prefix c:jm_funkce. Malé písmeno c: značí command.
(defun c:AhojSveteDruhy () (alert "Dobrý den! \nJak se Vám daří!") )
Po nahrání souboru s výše uvedenou funkcí stačí v AutoCADu napsat na příkazový řádek pouze AhojSvete a funkce je spuštěna - zobrazí se dialog s pozdravem. Zdrojový kód funkce je možné nahrát v souboru AhojSvete2.lsp.
Definice uživatelské funkce umožňuje ještě jednu velice důležitou věc. V definici funkce můžete určit, které proměnné budou pouze lokální = budou viditelné pouze v těle funkce.
(defun jméno funkce (/ lokální_proměnná1 lokální_proměnná2 ...)
(defun lokalni (/cislo) (setq cislo 10) )
V příkladu je definována proměnná cislo, která je lokální = je možné použít ji pouze ve funkci lokalni. Pokus o získání hodnoty z proměnné cislo mimo funkci lokální vyvolá chybu. Spustíte-li tuto funkci a do okna konzole napíšete příkaz !cislo, konzole zobrazí hlášení, že funkci cislo nezná, proměnná cislo mimo funkci lokalní nelze použít. Zdrojový kód funkce je možné nahrát v souboru Lokalni.lsp.