řadit podle: nejnovější | nejčtenější | nejkomentovanější

Příklad vytvoření dialogu v OpenDCL Studiu

Kategorie » téma: LISP

06.09.2010 08.16 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 9067x

OpenDCL

Kategorie » téma: LISP

03.09.2010 08.59 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 10919x

Potřebujeme-li k programům a funkcím napsaným ve VisualLISPu přidat pro jejich lepší ovládání dialogová okna, máme v AutoCADu možnost použít jazyk DCL – Dialog Control Language. Psaní dialogových oken v DCL je ovšem z dnešního pohledu tak katastrofální, že je snad lépe se o tomto jazyku vůbec nezmiňovat. DCL se již více jak deset let nevyvíjí a dialogová okna v něm napsaná mají velká omezení a to jak z hlediska své funkčnosti tak vzhledu. Odpovědí na nezájem Autodesku o další vývoj DCL je projekt Open DCL za kterým stojí dva vývojáři - Owen Wengerd a David Robison.Open DCL je open source aplikace určená právě pro vytváření uživatelského rozhraní pro funkce psané v AutoLISPu nebo VisualLispu. Zatímco DCL se již několik let nevyvíjí, u OpenDCL je tomu naopak. V úplně prvním příspěvku tohoto blogu jsme Vás informovali o tom, že vyšlo nové OpenDCL pro produkty Autodesku založené na AutoCADu 2010. Oproti standardnímu DCL nabízí OpenDCL široký výběr známých komponent pro vytváření uživatelského rozhraní. Uživatelské rozhraní se vytváří v samostatné aplikaci OpenDCL Studio. Práce s jednotlivými komponenty dialogových oken je podobná jako třeba při vytváření dialogů v prostředí Visual Basic. Obslužné kódy komponent se ovšem píší dál ve VisualLISPu. Pro zajištění běhu funkcí psaných v OpenDCL je nutná přítomnost komponenty OpenDCL Runtime. Komponenta je po instalaci přítomná v AutoCADu a runtime není potřeba zvlášť spouštět.Open DCL Studio i runtime jsou malé aplikace a lze je velmi snadno nainstalovat. Domovská stránka OpenDCL je na adrese http://opendcl.com Z adresy http://www.opendcl.com/download/ lze pak stáhnout aktuální Open DCL Studio a stažený msi soubor nainstalovat. Pokud nainstalujeme OpenDCL Studio, není již třeba zvlášť instalovat OpenDCL Runtime. Ten je totiž součástí studia. Naopak pokud budete chtít svoje funkce poskytnout i ostatním uživatelům je třeba je upozornit no to, aby si nainstalovali OpenDCL Runtime. Instalace OpenDCL Runtime je otázkou doslova pár vteřin. Instalace OpenDCL Runtime se viditelně nijak neprojeví. Do adresářů náležejících k AutoCADu přibude několik arx souborů, které se načítají při dalším spuštění AutoCADu. To, zda se instalace Runtime zdařila můžeme ověřit při dalším spuštění AutoCADu napsáním příkazu "opendcl" do příkazové řádky. Pokud Runtime běží, neobjeví se nic. V opačném případě AutoCAD odpoví "Unknown command". OpenDCL Studio je naproti tomu malá aplikace, jejíž ikonu najdeme po instalaci na ploše a v nabídce Start. Po instalaci Runtime i Studia je nutno restartovat AutoCAD.

Opakované zapsání textu pod kótovací čáru pomocí VisualLISPu

Kategorie » téma: LISP

23.08.2010 09.40 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 10236x

Příklad z předchozího příspěvku je sice funkční, práce s ním je však poněkud těžkopádná, protože vyžaduje při každém zápisu textu pod kótovací čáru opakované zadání požadovaných hodnot. Přitom ale například při zápisu výšky okna a výšky parapetu má většinou více oken tyto hodnoty shodné. Potřebujeme tedy do funkce přidat cyklus, který dokud budeme vybírat kóty bude do jejich jmenovatele zapisovat zadaný text. Pro opakované zapsání textu pod kótovací čáru použijeme cyklus while. Syntaxe funkce while je následující:

(while (podmínka)

(výraz)

)

Zapsání textu pod kótovací čáru pomocí VisualLISPu

Kategorie » téma: LISP

23.08.2010 09.28 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 13925x

 
Z předchozích příspěvků věnovaných přístupu k objektům a jejich vlastnostem pomocí VisualLISPu máme již dostatek znalostí, abychom napsali první užitečnou funkci. Po spuštění funkce budeme dotázáni na text, který se má zapsat pod kótovací čáru a po následném výběru kóty se do ní zadaný text dopíše tak, že se stane její součástí. V tomto příkladu použijeme dvě funkce, o kterých jsme se zatím nezmínili.
 
getstring - tato funkce umožňuje získat textové řetězce zadané do příkazové řádky (i číslo takto získané je chápáno jako text). Syntaxe funkce je následující:
(getstring "výzva")
Do uvozovek namísto slova výzva dopíšeme text, jakým jsme k zadání řetězce vyzváni. Pokud budeme chtít zadat řetězec s mezerou, musíme doplnit argument  t, který zajistí, že klepnutí na mezerník bude chápáno jako mezera a ne jako Enter. Syntaxe pak bude následující:
(getstring t "výzva")
 
strcat – je funkce,která spojí více textových řetězců v jeden (STRing CATenation). Syntaxe funkce je jednoduchá:
(strcat prvnitext druhytext tretitext ...)

Přístup k objektům pomocí VisualLISPu

Kategorie » téma: LISP

02.08.2010 11.01 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 9797x

V předchozím příspěvku “Nástroj pro rychlé zjištění informací o entitě” jsme si vytvořily nástroj, který do příkazové řádky vypíše vlastnosti vybraného objektu. Protože jsme v tomto příspěvku již mírně zasáhli do oblasti VisualLISPu ukážeme si v dalším volném pokračování princip práce s vlastnostmi objektu právě pomocí tohoto programovacího jazyka.

VisualLISP nahrazuje a rozšiřuje původní AutoLISP, přitom ale umí pracovat se staršími programy napsanými v AutoLISPu a i s jeho funkcemi. Hlavní přínos VisualLISPu je umožnění přístupu k objektům AutoCADu a ostatních aplikací na AutoCADu založených pomocí rozhraní ActiveX (což tedy z pohledu roku 2010 není zas taková bomba). Pro uživatele to prakticky přináší mimo jiné daleko pohodlnější přístup k objektům a jejich vlastnostem.

Na začátek vytvoříme ve VisualLispu jednoduchou funkci, která bude podobná nástroji z předchozího příspěvku. Příkazem VLIDE nebo VLISP zobrazíme editor kódu VisualLISPu. Pomocí ikony, přes File / New File nebo pomocí Ctrl+N založíme a uložíme nový soubor, který pojmenujeme třeba VlastnostiEntiy.lsp

Kód prvního programu bude vypadat následovně:

(defun c:info  ()
    (vl-load-com)

    (setq  entity1           (entsel "\nVyberte  objekt: ")
           entity2           (car entity1)
           vla-entity        (vlax-ename->vla-object entity2)
    )
)

K tomu uveďme pár základních informací.

< 1 2 Stránka 3 4 >