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

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: 10732x

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: 14839x

 
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 vlastnostem objektů pomocí VisualLISPu

Kategorie » téma: LISP

23.08.2010 09.21 | Jan Panoch | Komentáře: 2 komentářů | Přečteno: 17394x

V produktech jako AutCAD Architecture, případně při využití některé nadstavby nad AutoCADem, se většinou obejdeme bez správce hladin. Připravené parametrické 3D objekty jako stěna okna, dveře apod. jsou na základě zvoleného "klíče" hladin automaticky umístěny do příslušné hladiny.

Ale i při 2d kreslení můžeme alespoň pro některé objekty stanovit cílovou hladinu.

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: 10291x

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 Stránka 2 >