Programujeme: CATVBA a jednoduché dialogy
Publikováno: 28. října 2011 | Zobrazeno: 9285x
V prvním dílu o programování jsme si vysvětlili pojem makro, jak ho jednoduše zaznamenat a upravit, popsali si základní rozdíly mezi CATScriptem, CATVBS a CATVBA, a na závěr předvedli krátkou ukázku. V dnešním dílu se zaměříme na pokročilejší možnost pro tvorbu maker v prostředí CATVBA - CATIA Visual Basic Aplication. Zde se využívají stejné objekty a metody jako u CATScriptu a CATVBS, navíc se ale nabízí možnost používat dialogová okna se standartními ovládacími prvky a další funkce dostupné ve Windows.
Díky využití stejného API (Aplication programming interface) je v podstatě jedno, použijeme-li pro vytvoření makra CATScript nebo CATVBA, pokud ale makro vyžaduje větší interaktivitu s uživatelem, v zásadě je mnohem praktičtější použít CATVBA.
Otevřeme dialogové okno pro editaci knihoven s makry (Tools >> Macro >> Macros) a klikneme na tlačítko Macro libraries, dále na Create new library. V posledním okně zadáme název nového projektu (adresář musí být vytvořen předem).
Po zadání názvu projektu zavřeme okno Macro libraries a v okně Macros vytvoříme samotné makro. Klikneme na tlačítko Create a v okně Create new macro zadáme název nového makra, v našem případě "SwitchWindow".
Poznámka: Jako názornou ukázku VBA aplikace jsem vybral jednoduché makro, které do rozbalovacího seznamu načte všechna otevřená okna v CATIA a po výběru některého z nich ho aktivuje. Odtud je odvozen i název makra.
Po vytvoření makra bychom v dialogovém okně Macros měli vidět to co je na obrázku. Kliknutím na Edit spustíme editor VBA. Tím je v podstatě další aplikace, které je integrovaná přímo do prostředí CATIA. V horní části je roletové menu, pod ním toolbar s ikonami příkazů. V levé částí pak strom s jednotlivými komponenty (moduly, okna) aplikace, pod ním se zobrazují vlastnosti těchto komponentů. V pravé polovině je zobrazen buď zdrojový kód nebo tzv. "designer", tedy vizuální podoba okna aplikace. Pod ním (nebo vedle) bývá ještě plovoucí panel pro vkládání ovládacích prvků (tlačítka, popisky, přepínače, ...).
V hlavním menu vybereme Insert >> User form. Ve stromu se objeví další komponent s názvem UserForm1, v pravé polovině pak návrh dialogového okna (ve výchozí velikosti, bez ovládacích prvků). Do něj vložíme potřebné ovládací prvky a napíšeme potřebné funkce, které se jimi budou spouštět. Zdrojový kód formuláře zobrazíme tak, že klikneme pravým tlačítkem nad objektem formuláře ve stromu a z nabídky vybereme View code. Zpět na formulář se dostaneme stejným způsobem, ale vybereme View object.
Do okna vložíme nejprve rámeček (frame) a roztáhmene jej po obvodu okna (velikost okna lze upravit stejně jako ovládací prvky). Do rámečku pak umístíme rozbalovací seznam (combobox) a tlačítko (button). Aby makro správně fugovalo, je třeba tyto prvky přejmenovat. Název objektu lze změnit po jeho výběru v Properties. Názvy objektů budou následující:
Text na ovladácích prvcích (nebo záhlaví formuláře) se dají změnit ve vlastnosti Caption.
Dialogové okno s ovládacími prvky máme tedy vytvořené a můžeme se pustit do vlastního programování. Přepneme se do zdrojového kódu a vytvoříme tři programové bloky.
V editoru celý zápis vypadá takto:
Tím jsme dokončili vše, co se týká komponentu UserForm. Každému ovládacímu prvku je přiřazena funkce. Zbývá už jen poslední věc - zajistit, aby se námi vytvořené dialogové okno otevřelo při spuštění makra. CATIA totiž spouští makro SwitchWindow, které obsahuje programový blok CATMain, který je ale úplně prázdný. Dopíšeme do něj tedy řádek, který zajistí zobrazení našeho formuláře. Klikneme pravým tlačítkem na objekt SwitchWindow ve stromu a vybereme volbu View code. Celý kód pak bude vypadat:
V dalším kroku si do tohoto panelu vložíme naše makro, kterému ještě předtím přiřadíme nějakou vhodnou ikonu. Přepneme se do záložky Commands a v levém slouci vyberme položku Macros. V pravém sloupci by se měla objevit položka SwitchWindows *.
*) Seznam položek odpovídá vybrané knihovně maker v okně Macro libraries. Pokud je vybrán adresář, budou v seznamu položek např. všechny CATScripty v tomto adresáři, v případě VBA projektu všechny moduly v tomto projektu.
Vybereme naše makro, klikneme na Show properties a přiřadíme makru (funkci) ikonu ze seznamu (můžeme přiřadit i horkou klávesu). Posledním úkonem je přidání makra do vytvořeného panelu nástrojů.
To lze udělat dvěma způsoby:
1. způsob: v záložce Toolbars vybereme panel Moje makra a klikneme na tlačítko Add commands. V seznamu by mělo být i naše makro SwitchWindows - vybereme jej a potvrdíme.
2. způsob: v záložce Commands "chytneme" myší řádek s makrem (v pravém sloupci) a přetáhneme jej do panelu moje makra (viz videoukázka).
Tím jsme makro "integrovali" přímo do prostředí CATIA a můžeme jej spouštět jako jakoukoliv jinou funkci.
Příště: Příklady jednoduchých maker s popisem
Díky využití stejného API (Aplication programming interface) je v podstatě jedno, použijeme-li pro vytvoření makra CATScript nebo CATVBA, pokud ale makro vyžaduje větší interaktivitu s uživatelem, v zásadě je mnohem praktičtější použít CATVBA.
Vytvoření projektu a makra
Abychom mohli vytvořit CATVBA makro, je třeba nejprve založit VBA projekt. U CATScriptu stačilo vybrat adresář, do kterého se skripty ukládaly, u CATVBA není postup o mmoho složitější.Otevřeme dialogové okno pro editaci knihoven s makry (Tools >> Macro >> Macros) a klikneme na tlačítko Macro libraries, dále na Create new library. V posledním okně zadáme název nového projektu (adresář musí být vytvořen předem).
Po zadání názvu projektu zavřeme okno Macro libraries a v okně Macros vytvoříme samotné makro. Klikneme na tlačítko Create a v okně Create new macro zadáme název nového makra, v našem případě "SwitchWindow".
Poznámka: Jako názornou ukázku VBA aplikace jsem vybral jednoduché makro, které do rozbalovacího seznamu načte všechna otevřená okna v CATIA a po výběru některého z nich ho aktivuje. Odtud je odvozen i název makra.
Po vytvoření makra bychom v dialogovém okně Macros měli vidět to co je na obrázku. Kliknutím na Edit spustíme editor VBA. Tím je v podstatě další aplikace, které je integrovaná přímo do prostředí CATIA. V horní části je roletové menu, pod ním toolbar s ikonami příkazů. V levé částí pak strom s jednotlivými komponenty (moduly, okna) aplikace, pod ním se zobrazují vlastnosti těchto komponentů. V pravé polovině je zobrazen buď zdrojový kód nebo tzv. "designer", tedy vizuální podoba okna aplikace. Pod ním (nebo vedle) bývá ještě plovoucí panel pro vkládání ovládacích prvků (tlačítka, popisky, přepínače, ...).
Vložení dialogového okna
Podrobnějším popisem prostředí se nyní nebudeme zabývat a pustíme se do dalšího kroku. Tím je vytvoření dialogového okna (formuláře). Po spuštění editoru je ve stromu pouze tzv. modul SwitchWindow (podle názvu makra) a pravé části je zobrazen zdrojový kód, který by měl obsahovat jen toto:Sub CATMain()
End Sub
V hlavním menu vybereme Insert >> User form. Ve stromu se objeví další komponent s názvem UserForm1, v pravé polovině pak návrh dialogového okna (ve výchozí velikosti, bez ovládacích prvků). Do něj vložíme potřebné ovládací prvky a napíšeme potřebné funkce, které se jimi budou spouštět. Zdrojový kód formuláře zobrazíme tak, že klikneme pravým tlačítkem nad objektem formuláře ve stromu a z nabídky vybereme View code. Zpět na formulář se dostaneme stejným způsobem, ale vybereme View object.
Vložení ovládacích prvků
Pro naši ukázku budeme potřebovat dva ovládací prvky a jeden tzv. frame (rámeček s názvem). Vložení provedeme jednoduše tak, že klikneme na tlačítko s požadovaným ovládacím prvkem a pak někam do prostoru dialogového okna (formuláře). Ovládací prvek se vytvoří pod kurzorem, pouhým tažením myší lze měnit jeho velikost a pozici.Do okna vložíme nejprve rámeček (frame) a roztáhmene jej po obvodu okna (velikost okna lze upravit stejně jako ovládací prvky). Do rámečku pak umístíme rozbalovací seznam (combobox) a tlačítko (button). Aby makro správně fugovalo, je třeba tyto prvky přejmenovat. Název objektu lze změnit po jeho výběru v Properties. Názvy objektů budou následující:
- Okno formuláře: Main
- Rozbalovací seznam: WindowsCB
- Tlačítko: CloseBTN
Text na ovladácích prvcích (nebo záhlaví formuláře) se dají změnit ve vlastnosti Caption.
Dialogové okno s ovládacími prvky máme tedy vytvořené a můžeme se pustit do vlastního programování. Přepneme se do zdrojového kódu a vytvoříme tři programové bloky.
1. Načtení oken do seznamu
Tato část kódu se spouští automaticky po spuštění makra - událost Initialize. Načte kolekci všech otevřených oken v CATIA a naplní jimi rozbalovací seznam.Sub UserForm_Initialize()
Dim oWindows As Windows
Dim oWindow As Window
' nacteme vsechna otevrena okna
Set oWindows = CATIA.Windows
' pomoci cyklu For...Each naplnime rozbalovaci seznam
For Each oWindow In oWindows
WindowsCB.AddItem oWindow.Caption
Next
End Sub
2. Změna aktivního okna
Druhý blok zajišťuje změnu okna podle výběru ze seznamu. Funkce se spouští při změně hodnoty v seznamu - událost Change. Zjistí aktuální hodnotu v seznamu a aktivuje okno s příslušným názvem.Private Sub WindowsCB_Change()
Dim sWindowName As String
' zjistime nazev vybrane polozky v seznamu
sWindowName = WindowsCB.Value
' aktivuje okno s prislusnym nazvem
CATIA.Windows.Item(sWindowName).Activate
End Sub
3. Ukončení makra
Třetí blok obsahuje pouze jednu funkci, která makro ukončí. Vyvolá se kliknutím na tlačítko - událost Click.Private Sub CloseBTN_Click()
End
End Sub
V editoru celý zápis vypadá takto:
Tím jsme dokončili vše, co se týká komponentu UserForm. Každému ovládacímu prvku je přiřazena funkce. Zbývá už jen poslední věc - zajistit, aby se námi vytvořené dialogové okno otevřelo při spuštění makra. CATIA totiž spouští makro SwitchWindow, které obsahuje programový blok CATMain, který je ale úplně prázdný. Dopíšeme do něj tedy řádek, který zajistí zobrazení našeho formuláře. Klikneme pravým tlačítkem na objekt SwitchWindow ve stromu a vybereme volbu View code. Celý kód pak bude vypadat:
Sub CATMain()Makro je hotové a připravené k použití. Uložíme ho a zkusíme jej spustit (příkaz Run v liště s ikonami). Pokud makro nefunguje (objevuje se chyba), s největší pravděpodobností je špatně opsaný kód nebo nesprávně pojmenovaný některý ovládací prvek.
Main.Show
End Sub
Integrace makra do prostředí CATIA
Abychom mohli makro pohodlně spouštět, integrujeme ho do prostředí CATIA - vytvoříme si vlastní panel nástrojů a do něj umístíme ikonu pro spuštění makra. Tyto uživatelské úpravy se provádějí v okně Customize (v hlavním menu Tools >> Customize). Zde se přepneme do záložky Toolbars a klikneme na tlačítko New pro vytvoření nového panelu nástrojů. Do názvu zadáme např. "Moje makra" a potvrdíme. Na pracovní ploše se objeví nově vytvořený panel (jako plovoucí).V dalším kroku si do tohoto panelu vložíme naše makro, kterému ještě předtím přiřadíme nějakou vhodnou ikonu. Přepneme se do záložky Commands a v levém slouci vyberme položku Macros. V pravém sloupci by se měla objevit položka SwitchWindows *.
*) Seznam položek odpovídá vybrané knihovně maker v okně Macro libraries. Pokud je vybrán adresář, budou v seznamu položek např. všechny CATScripty v tomto adresáři, v případě VBA projektu všechny moduly v tomto projektu.
Vybereme naše makro, klikneme na Show properties a přiřadíme makru (funkci) ikonu ze seznamu (můžeme přiřadit i horkou klávesu). Posledním úkonem je přidání makra do vytvořeného panelu nástrojů.
To lze udělat dvěma způsoby:
1. způsob: v záložce Toolbars vybereme panel Moje makra a klikneme na tlačítko Add commands. V seznamu by mělo být i naše makro SwitchWindows - vybereme jej a potvrdíme.
2. způsob: v záložce Commands "chytneme" myší řádek s makrem (v pravém sloupci) a přetáhneme jej do panelu moje makra (viz videoukázka).
Tím jsme makro "integrovali" přímo do prostředí CATIA a můžeme jej spouštět jako jakoukoliv jinou funkci.
Videoukázka
V ukázce je předveden druhý způsob integrace makra do prostředí CATIA, na konci ukázky pak předvedení samotného makra - přepínání oken. Po výběru dokumentu v seznamu se aktivuje příslušné okno. Pokud pracujete s více než 10 otevřenými okny (editory) najednou, je přepínání v CATIA trochu těžkopádné - tohle řešení je efektivnější.Příště: Příklady jednoduchých maker s popisem