Funkce vytiskniPozdrav() je definována s prefixem c:. Z toho plyne, že je možné ji použít jako nový příkaz AutoCADu vytiskniPozdrav. Zadá-li uživatel tento příkaz do příkazové řádky, je ve Wordu vypsán zformátovaný text.
Ve funkci je před vytvořením funkce nahrána podpora ActiveX prvků. Je-li příkaz pro nahrání podpory ActiveX umístěn na začátku souboru (není v žádné funkci), je zpuštěn jako první.Následuje deklarace funkce s prefixem c:, zajišťujícím snadné volání funkce v prostředí AutoCADu - jako příkazu.
Je zkontrolována přítomnost knihovny typů MS Wordu. Není-li knihovna typů importována, importuje-ji pomocí příkazu vlax-import-type-library.
V dalším úseku kódu se AutoLISP pokusí získat pointer na objekt Word. Číslo 9 signalizuje verzi aplikace - Word2000. V případě, že číslo verze neuvedeme bude nahrána libovolná verze přítomná v systému. Pokud se získání pointru nepodaří = Word není spuštěn, je zavolána funkce pro vytvoření objektu Word (spustí Word). Aby byla spuštěná aplikace viditelná musí se spustit funkce vla-put-visible.
Nyní AutoLISP získá pointry na skupinu documents (obdoba modelového prostoru v AutoCADu). Ve skupině documents vytvoří AutoLISP nový dokument (vytvoření nového dokumentu umožňuje při novém spuštění funkce vytiskniPozdrav otevřít vždy nový dokument). V novém dokumentu otevřeme nový odstavec. Před posláním první části textu, AutoLISP zjistí poslední odstavec, určí jeho délku a nastaví tloušťku písma. Poté vypíše první úsek textu za poslední odstavec (pomocí zjištěné velikosti odstavce). Následuje obdobné nastavení (změní se pouze tloušťka písma) a pošle se druhá část textu.
(vl-load-com)
(defun c:vytiskniPozdrav ()
(if (equal nil mswc-wd100Words)
;;; kontrola zda je nahrána knihovna typů Wordu
(vlax-import-type-library
:tlb-filename "D:/msword9.olb"
:methods-prefix "mswm-"
:properties-prefix "mswp-"
:constants-prefix "mswc-"
) ;;; nahrání knihovny typů a definování prefixů
;;; pro metody, vlastnosti a konstanty
;;; POZOR musí být zadána správná cesta
;;; VAROVÁNÍ VLisp nepozná jméno souboru,
;;; v kterém je mezera např. "program files"
)
(setq mswAppObj (vlax-get-object "Word.Application.9"))
;;; pokus o získání objektu aplikace Wordu
(if (equal nil mswAppObj)
;;; pokud objekt aplikace Wordu nebyl získán
;;; aplikace Word není v systému spuštěna vytvoř objekt
;;; a zviditelni ho
(progn
(setq mswAppObj(vlax-create-object "Word.Application.9"))
(vla-put-visible mswAppObj :vlax-true)
)
)
(if (/= nil mswAppObj) ;;; pokud je objekt korektně vytvořen
(progn
;;; získej pointer na objekt skupina dokumentů
(setq docs (vla-get-documents mswAppObj))
;;; vytvoř nový dokument
(setq doc (mswm-add docs))
;;; získej pointer na objekt odstavce v dokumentu
(setq paragraphs (mswp-get-paragraphs doc))
;;; získej poslední odstavec
(setq pg (mswp-get-last paragraphs))
;;; urči rozsah odstavů
(setq range (mswp-get-range pg))
;;; nastav písmo na tlusté
(mswp-put-bold range 1)
;;; vlož za poslední odstavec
(mswm-InsertAfter
range
(strcat "Dobrý den\n")
)
;;; urči nový rozsah
(setq range (mswp-get-range pg))
;;; nastav písmo na normální
(mswp-put-bold range 0)
;;; vlož za poslední odstavec
(mswm-InsertAfter
range
(strcat "\nTento text vypisuje ve Wordu AutoLISP!\n
Podobným způsobem můžete posílat do Wordu i důležitější
informace.\nNashledanou."
)
)
)
(alert "Aplikace MSWord nebyla v sytému nalezena.")
;;; pokud není MSWord v systému obsažen vytiskne se chyba
)
)
![]()
Zdrojový kód funkce vytiskniPozdrav().