CorelDRAW a skripty (1) - Ulehčete si praci - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Vektory

CorelDRAW a skripty (1) - Ulehčete si praci

corel

5. srpna 2002, 00.00 | V prvním díle tohoto seriálu si předvedeme, jak si lze pomocí skriptů v CorelDRAW zjednodušit rutinní úkony. Nakreslíme si skriptem obdélník kolem aktuálně vybraného objektu.

Od Corelu verze 6 je součástí instalačního balíku také vlastní skriptovací jazyk zvaný CorelSCRIPT, ve kterém si lze naprogramovat jednoduché, ale i značně složité operace, které mohou při běžné práci ušetřit mnoho času. Od verze 9 je do celého balíku také přidán skriptovací jazyk Visual Basic for Application (VBA), tak jak jej znáte z programů od Microsoftu, nejčastěji Excel nebo Word. V tomto seriálu se budeme zabývat jazykem CorelSCRIPT, především ve verzi 9.

V zásadě existují dva způsoby, jak si vytvořit svůj skript.
Prvním je takzvaný záznam toho, co uživatel dělá. Na první pohled je jasné, že touto metodou lze vytvořit jen značně primitivní a nepříliš účinné skripty. Také celé ovládání záznamu je jednoduché a nedovoluje uživateli prakticky žádnou volbu. Schází možnost, zda se nové objekty kreslí relativně k objektu vybranému, nebo absolutně (od středu stránky). Nemožnost vypnout některý ze zaznamenaných příkazů, intuitivní přehled příkazů, tak jak jej prezentuje např. Adobe Photoshop nebo Corel PhotoPaint.
Druhým způsobem je napsat si svůj vlastní, a to přímo ve Script Editoru. Není sice součástí standardní instalace, ale pokud jste instalovali s volbou vlastní instalace, nejspíš jej máte nainstalován. Dá se spustit buď z nabídky Start, nebo přímo v CorelDRAW.

Dnešním cílem je nakreslit skriptem obdélník kolem aktuálně vybraného objektu. Toho lze využít například k vytvoření obrysu okolo objektu, který tuto možnost standardně nemá (bitmapa, OLE objekt, skupina objektů). Možností použití je více, záleží na potřebách a zvyklostech každého, kdo s Corelem dělá. Následující ukázka nám nakreslí obdélník 100 × 50 mm, přímo uprostřed stránky. Zeleně označený text začínající jednoduchou uvozovkou ( ' ) jsou komentáře k jednotlivým příkazům, nejsou nutné pro běh skriptu.

'označení objektu (aplikace), se kterým budeme pracovat
WITHOBJECT "CorelDRAW.Automation.9"

    ' nastavení proměnných jednotlivých hran,
    ' údaje jsou v desetinách mikronu

    ' levá hrana, -50 mm od středu stránky
    x1& = -500000
    ' horní hrana, 25 mm od středu stránky
    y1& =  250000
    ' pravá hrana, 50 mm od středu stránky
    x2& =  500000
    ' dolní hrana, -25 mm od středu stránky
    y2& = -250000
    
    ' nakreslí obdélník, argumenty jsou:
    ' Y levého horního rohu
    ' X levého horního rohu
    ' Y dolního pravého rohu
    ' X dolního pravého rohu
    .CreateRectangle y1&, x1&, y2&, x2&

' ukončí práci s objektem (aplikace)
END WITHOBJECT

Vytvořený skript si uložte. Nejlépe do adresáře C:\Program Files\Corel\Graphics9\Draw\Scripts, za předpokladu, že jste instalovali Corel do tohoto umístění. Otevřete v CorelDRAW nový dokument, aby skript měl kam kreslit a spusťte jej. Buď pomocí Správce skriptů a předvoleb, poklepáním na jeho ikonu, nebo příkazem Spustit skript. Obojí v nabídce Nástroje -> Corel SCRIPT, viz obrázek výše. Abychom mohli skriptem nakreslit obdélník velikosti aktuálně vybraného objektu, musíme si nejprve zjistit všechny 4 potřebné hodnoty. K tomu využijeme funkci GetPosition, která vrátí X a Y referenčního bodu u vybraného objektu a funkci SetReferencePoint, pomocí které si nastavíme referenční bod doleva nahoru a doprava dolů.

WITHOBJECT "CorelDRAW.Automation.9"

    ' nastavíme referenční bod vybraného objektu
    ' doleva nahoru
    .SetReferencePoint 3

    ' proměnným x1& a y1& přiřadíme hodnoty
    ' odpovídající levému hornímu rohu
    ' vybraného objektu
    .GetPosition x1&, y1&

    ' nastavíme referenční bod vybraného objektu
    ' doprava dolu
    .SetReferencePoint 7

    ' proměnným x2& a y2& přiřadíme hodnoty
    ' odpovídající pravému dolnímu rohu
    ' vybraného objektu
    .GetPosition x2&, y2&
    
    ' a nakreslíme obdélník
    .CreateRectangle y1&, x1&, y2&, x2&

END WITHOBJECT

Vytvořený skript si opět uložte a spusťte jej. Pozor, aby skript mohl fungovat, musíte mít v Corelu otevřený dokument a vybraný nějaký objekt, nejlépe elipsu, mnohoúhelník apod. (obdélník nakreslený přes obdélník není na první pohled vidět). Případně lze ikonu našeho skriptu ve Správci skriptů a předvoleb přetáhnout na nějaký objekt v dokumentu.

Tento skript funguje se všemi typy objektů. Pokud je vybráno více objektů, pracuje pouze s referenčním objektem, tj. naposledy přidaným do výběru. Bohužel pracuje i s vodícími linkami, což je velmi nebezpečné, protože vodící linka vede "odnikud nikam". V praxi skript vytvoří 45 metrů vysoký a 0 široký obdélník, který je pochopitelně k ničemu.

Ošetřujeme možné chyby
Náš skript, stejně jako každý program, je náchylný k chybám. Pokud nemá to co potřebuje, jednoduše nefunguje. Je vhodné tyto stavy ošetřit. Když není v Corelu otevřen žádný dokument, nebo když není vybrán žádný objekt nemáme kolem čeho kreslit obdélník. Mohli bychom to ošetřit pomocí funkcí IsDocument() a IsSelection(), ale je to celkem zbytečné, protože Corel v takovém případě zobrazí chybové hlášení i s důvodem chyby a skript ukončí. My bychom udělali vlastně totéž. Je tu ale jedna záludnost, kterou za nás Corel nevyřeší. Vodící linky. K tomu použijeme funkci .GetObjectType(), která na to ale není přímo určena. Vrací číslo typu objektu (1 = obdélník, 2 = elipsa, 3 = křivka atd.), bohužel vodící linka mezi hodnotami není. Ale pokud je vybrána, tato funkce vrací nulu, což je podle dokumentace hodnota rezervovaná pro budoucí využití. Nicméně podle mých zkušeností ji vrací jen a pouze vodící linka, čehož také využijeme.
Výsledný skript s ošetřenou chybou vypadá následovně:

WITHOBJECT "CorelDRAW.Automation.9"

    ' pokud je vybrána vodící linka
    if .GetObjectType() = 0 then
        ' oznámíme to uživateli, dvě zpětná lomítka znamenají
        ' pokračování příkazu na dalším řádku
        ' funkce chr(13) vrací znak enter, aby se zalomil
        ' text v dialogovém okně
        MessageBox "Vybraný objekt je nejspíš vodící linka," \\
          + chr(13) + "nelze kolem ní nakreslit obdélník.", \\
          "Corel", 48
        ' a ukončíme skript
        stop
    ' pokud nebyla splněna podmínka, pokračujeme dál
    endif

    .SetReferencePoint 3
    .GetPosition x1&, y1&

    .SetReferencePoint 7
    .GetPosition x2&, y2&

    .CreateRectangle y1&, x1&, y2&, x2&

END WITHOBJECT 

Jiné verze Corelu
Pokud chcete použít tento skript i v jiných verzích Corelu, stačí jen změnit definici objektu, se kterým pracujeme. Takže pro verzi 8 je to objekt CorelDRAW.Automation.8, pro verzi 10 CorelDRAW.Automation.10.

Ukázka použití

Zde si můžete stáhnout hotový skript pro CorelDRAW8, CorelDRAW9, nebo CorelDRAW10. Použijte pravé tlačítko myši a volbu uložit cíl jako.

Dovětek
V komentářích k článku Corel v praxi - Problém s rohy obdélníka jsem uvedl ukázku podobného skriptu, která ovšem nepracuje příliš korektně. Ke zjištění šířky objektu je použita funkce GetSize, která vrací šířku objektu včetně obrysu, což není zrovna ideální. Navíc funkce GetPosition bez definice referenčního bodu může zlobit.

Jak vidíte, vytvořit si jednoduchý a účinný skript není nic složitého. V příštím díle tohoto seriálu si povíme několik základních věcí kolem jazyka Corel Script, které je vhodné znát.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Go verze  

 » Rubriky  » Vektory  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: