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

 
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 ...)
Funkci getstring budeme potřebovat k tomu, abychom zadali text pod kótovací čarou a funkci strcat, abychom spojili původní řetězec kóty s novým textem.
 
Funkci můžeme napsat buď do souboru z předchozích příspěvků, nebo si založit soubor nový. Jeden LSP soubor může obsahovat více funkci.
Zpočátku bude naše funkce vypadat takto:
 
(defun c:textdim  ()
    (vl-load-com)

    (setq    kota          (vlax-ename->vla-object (car (entsel "\nVyberte  kótu:")))
    )
)

 

Po načtení a spuštění funkce a výběru kóty se do proměnné kota uloží vybraný objekt AutoCADu a funkce se ukončí. Podíváme-li se nyní v editoru VisualLISPu pomocí okénka Inspect na hodnotu proměnné kota, uvidíme spoustu vlastností, se kterými můžeme manipulovat. Množství vlastností se může lišit podle verze AutoCADu. Na vedlejším obrázku je pohled oknem Inspect do vlastností kóty v AuoCADu 2011. Mezi jinými zde najdeme i vlastnost TextOverride, která má hodnotu “” – tedy prázdný řetězec. V dřívějších verzích AutoCADu může být text kóty pod vlastností, jejíž hodnota je “<>”. Znaky <> znamenají, že text kóty odpovídá její délce – kóta není přepsána. Těchto náhradních znaků použijeme i my, při spojování původního a dopisovaného řetězce. Další náhradní znak, který potřebujeme znát je \X , který oddělí text nad a pod kótovací čarou. Protože zpětné lomítko VisualLISP chápe jako formátovací znak viz například \n, musíme namísto \X zadat \X. Pak bude druhé zpětné lomítko chápáno jako zpětné lomítko a ne jako formátovací znak.
 
 
 
Dokončená funkce bude vypadat následovně:
 
(defun c:textdim  ()
    (vl-load-com)

    (setq    textpodcarou  (getstringt "\nZadejte  text  pod  kótovací  čarou:  ")
             textkoty      (strcat "<>\X"  textpodcarou)
             kota          (vlax-ename->vla-object (car (entsel "\nVyberte  kótu:")))
    )
    (vla-put-textoverride kota textkoty)
)
 
Do proměnné textpodcarou se uloží námi zadaný textový řetězec. Formátovací znaky \n  zajistí, aby se výzva napsala na nový řádek.
Do proměnné textkoty se uloží spojení původního řetězce (hodnoty) kóty, formátovací znak, který posune další text pod kótovací čáru a námi zdaný text.
Další řádka zůstává beze změny.  Pomocí funkce vla-put-textoverride , kterou jsme našli v okénku Inspect, vložíme nový text pod kótovací čáru.
 
Nyní můžeme funkci načíst a otestovat. V  tomto případě se spouští příkazem textdim. Buď v příkazové řádce, nebo u kurzoru myši (podle nastavení) jsme vyzváni k zadání textu pod kótovací čarou.
 
Po zadání textu...
 
jsme vyzváni k výběru kóty.
 
A po jejím vybrání se pod kótovací čáru dopíše zadaný text, který se stane její součástí.
 
Jan Panoch

 Související články:

1) "Nástroj pro rychlé zjištění informací o entitě", Jan Panoch, 26.7.2010

2) "Přístup k objektům pomocí VisualLISPu", Jan Panoch, 2.8.2010

3) "Přístup k vlastnostem objektům pomocí VisualLISPu", Jan Panoch, 23.8.2010

4) "Zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

5) "Opakované zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

6) "OpenDCL", Jan Panoch, 3.9.2010

7) "Příklad vytvoření dialogu v OpenDCL Studiu", Jan Panoch, 6.9.2010

8) "Obslužný kód pro ovládací prvky OpenDCL", Jan Panoch, 13.9.2010

9) "Spojení lsp funkce a odcl dialogu v jeden soubor", Jan Panoch, 13.9.2010

10) "Co je třeba k běhu funkcí s ODCL dialogy", Jan Panoch, 13.9.2010

11) "Funkce na výpočet průřezových charakteristik s ODCL paletou", Jan Panoch, 13.9.2010

(odkazy se svolením autora článků doplnil JT) 

 

Komentáře:

Tento článek zatím neobsahuje žádné komentáře.

Přidat komentář

 *
 *
 
 *

*) Povinné položky jsou označeny hvězdičkou.