portál uživatelů
softwarů Autodesk

Použití výrazů v jazyce DIESEL

Přizpůsobení stavového řádku K zobrazení informací ve stavovém řádku můžete použít systémovou proměnnou MODEMACRO. Stavový řádek může nabídnout uživateli důležité informace bez přerušení pracovního po…

Použití výrazů v jazyce DIESEL

Přizpůsobení stavového řádku

K zobrazení informací ve stavovém řádku můžete použít systémovou proměnnou MODEMACRO. Stavový řádek může nabídnout uživateli důležité informace bez přerušení pracovního postupu. Systémová proměnná MODEMACRO ovládá uživatelem definovanou oblast ve stavovém řádku. Vypočtená hodnota systémové proměnné MODEMACRO se zobrazí v panelu zarovnaném doleva ve stavovém řádku dole v produktu AutoCAD v rámci okna. Její hodnota je nastavena na prázdný řetězec při spuštění produktu AutoCAD. Její hodnota se neukládá v aktuálním výkresu, v konfiguračním souboru ani kdekoliv jinde.

Počet znaků zobrazených ve stavovém řádku je omezen pouze velikostí okna produktu AutoCAD (a monitoru). Výchozí panely se posunou při zvětšení obsahu panelu proměnné MODEMACRO doprava. Výchozí panely lze posunout úplně mimo obrazovku (v případě potřeby).

Systémovou proměnnou MODEMACRO rovněž můžete použít k tomu, aby se ve stavovém řádku zobrazila většina hodnot známá produktu AutoCAD. S jejími výpočty, rozhodnutími a editačními možnostmi lze upravit stavový řádek podle vašich přesných požadavků.

MODEMACRO je řetězcová proměnná. Lze ji nastavit na libovolnou řetězcovou hodnotu. Maximální délka řetězce 460 znaků by měla fungovat na všech systémech. Proměnnou MODEMACRO lze nastavit pomocí příkazu SYSPAR nebo zadáním modemacro na příkazovém řádku. Pokud takto upravujete hodnotu MODEMACRO, můžete experimentovat s různými formáty stavového řádku; maximální počet znaků, které lze takto zadat, je 255.

Jestliže nastavíte hodnotu MODEMACRO na prázdný řetězec zadáním tečky (.), AutoCAD zobrazí standardní stavový řádek.

Nastavení hodnot proměnné MODEMACRO

Hodnota MODEMACRO určuje, co se zobrazí ve stavovém řádku režimu. Nejjednodušší (a nejméně užitečné) zadání proměnné MODEMACRO je zobrazení stálého textu. Pokud například chcete zobrazit název vaší společnosti ve stavovém řádku, použijte následující postup:

Příkaz: modemacro

Nová hodnota pro MODEMACRO nebo pro žádné <„“>: Výrobní podnik

Tato hodnota MODEMACRO vždy zobrazí stejný text; stavový řádek neodráží změny v produktu AutoCAD a jeho interním stavu. Nezmění se, dokud nezměníte hodnotu MODEMACRO.

Chcete-li, aby stavový řádek odrážel v produktu AutoCAD jeho aktuální stav, zadejte pomocí jazyka DIESEL výrazy maker v následujícím formátu:

$(nějakáfunkce, arg1, arg2, …)

Ve výrazu makra je nějakáfunkce název funkce DIESEL (podobný názvu funkce AutoLISPu) aarg1, arg2 atd., jsou argumenty funkce, interpretované podle její definice. Na rozdíl od AutoLISPu mají výrazy makra jazyka DIESEL pouze jeden datový typ: řetězce. Makro, které pracuje s čísly, musí používat čísla převedená na řetězce a převést je zase zpět podle potřeby.

Nyní definujte zajímavější stavový řádek, například takový, který zobrazuje název aktuálního stylu textu:

Příkaz: modemacro

Nová hodnota pro MODEMACRO nebo pro žádné <„“>: Styl: $(getvar, textstyle)

·Styl: je textový řetězec, který se zobrazí ve stavovém řádku.

·$(getvar,textstyle) je funkce jazyka DIESEL (getvar) a argument, který získá aktuální hodnotu systémové proměnné TEXTSTYLE.

Poznámka: Příklady v tomto tématu mohou ukázat řetězec MODEMACRO jako více řádků textu. Zadáte ho jako jeden velký řetězec na výzvu.

Libovolnou systémovou proměnnou lze získat zadáním $(getvar, názevproměnné). Aktuální nastavení systémové proměnné nahradí výraz makra ve stavovém řádku. Až potom například změníte styly textu, bude znovu vyhodnocena hodnota MODEMACRO. Jestliže se změní, název nového stylu textu se zobrazí ve stavovém řádku.

Výrazy mohou být vnořené, proto můžete vytvářet i velmi složité výrazy. Následující příklad zobrazuje ve stavovém řádku aktuální velikost kroku a úhel (ve stupních). Používá vnořené výrazy, které převedou úhel kroku z radiánů na stupně a z hodnoty vytvoří celé číslo.

Příkaz: modemacro

Nová hodnota pro MODEMACRO nebo pro žádné <„“>: Krok: $(getvar, snapunit) $(fix,$(*,$(getvar,snapang),$(/,180,3.14159)))

Rovněž můžete zobrazit hodnoty v aktuálních lineárních a úhlových jednotkách.

Příkaz: modemacro

Nová hodnota pro MODEMACRO nebo pro žádné <„“>: Krok: $(rtos,$(index,0,
$(getvar,snapunit))),$(rtos,$(index,1,$(getvar,snapunit)))$(angtos,
$(getvar,snapang))

Jazyk DIESEL zkopíruje zadání přímo do výstupu, až do výskytu znaku dolar ($) nebo řetězce v uvozovkách. Řetězec v uvozovkách můžete použít k potlačení vyhodnocení sekvence znaků, která by jinak byla vyhodnocena jako funkce jazyka DIESEL. Do řetězce můžete vložit uvozovky zdvojením uvozovek. V následujícím příkladu je aktuální hladina nastavena na ROZVRŽENÍ a proměnná MODEMACRO je nastavena na řetězec.

Příkaz: modemacro

Nová hodnota pro MODEMACRO pro žádné <„“>: „$(getvar,clayer)= „““$(getvar,clayer)““““

Ve stavovém řádku se zobrazí:

$(getvar,clayer)=“ROZVRŽENÍ“

Nastavení proměnné MODEMACRO pomocí AutoLISPu

Jiným způsobem nastavením hodnot MODEMACRO je použití AutoLISPu. Uvedené příklady můžete uložit do textových souborů ASCII a načíst je pomocí funkce AutoLISPu load.

Následující příkaz AutoLISPu definuje řetězec MODEMACRO, který nabízí podobné informace jako vestavěný stavový řádek. Protože AutoLISP nepovoluje řetězce na více řádcích, je nutné použít funkci strcat která sestaví kompletní definici MODEMACRO z kratších úseků.

(defunC:ACADMODE ( )

(setvar „modemacro“

(strcat

„Hladina $(substr,$(getvar,clayer),1,8)“

„$(if,$(getvar,orthomode), Orto)“

„$(if,$(getvar,snapmode), Krok)“

„$(if,$(getvar,tabmode), Tablet)“

„$(if,$(=,$(getvar,tilemode),0),“

„$(if,$(=,$(getvar,cvport),1), V)“

„)“

)

)

)

Tuto funkci AutoLISPu můžete uložit do souboru s názvem acadmode.lsp. Pokud proceduru načtete a spustíte, informace se zobrazí ve stavovém řádku. Není to samozřejmě nejužitečnější využití této funkce, je zde uvedena pouze jako příklad.

Vzorový souboru acad.lsp používá funkci S::STARTUP, která nastaví proměnnou MODEMACRO na hodnotu definovanou v souboru AutoLISPu mode1.lsp.

;;; Vzorový soubor ACAD.LSP, který pomocí S::STARTUP načte

;;; soubor MODE1.LSP definující řetězec MODEMACRO

(defun S::STARTUP ( )

(load „mode1“)

(princ)

)

;;; Další soubory AutoLISPu mohou rovněž být definovány nebo

;;; načteny zde

Když je následující soubor AutoLISPu načten (mode1.lsp), použije systémovou proměnnou MODEMACRO a nastaví její hodnotu tak, že zobrazí H: za kterým následuje prvních osm znaků názvu hladiny, dále název výkresu a cestu a nakonec první písmeno aktuálního režimu. Umístění názvu výkresu je pevné, bez ohledu na délku názvu hladiny.

;;; MODE1.LSP

;;;

(setvar „modemacro“

(strcat

„H:$(substr,$(getvar,clayer),1,30)“

„$(substr,,1,$(-,30,$(strlen,$(getvar,clayer)))) „

;;^^^^^^^^ Zde je 8 mezer

„<..“

„$(if,$(eq,$(getvar,dwgname),BEZ NÁZVU),UNNAMED,“

„$(substr,$(getvar,dwgname),“

„$(if,$(>,$(strlen,$(getvar,dwgprefix)),29),“

„$(-,$(strlen,$(getvar,dwgprefix)),29),1“

„),“

„$(strlen,$(getvar,dwgname))“

„)“

„)“

„>“

„$(if,$(getvar,orthomode), O, )“

„$(if,$(getvar,snapmode), K, )“

„$(if,$(getvar,tabmode), T, )“

„$(if,$(and,“

„$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)),V)“

)

)

Jak je ukázáno v předchozím příkladu, vhodné odsazování zvyšuje čitelnost kódu AutoLISPu a DIESEL.

Popis funkcí jazyka DIESEL vám přineseme v příštím díle.