Napsání kódu aplikace

Přehled informací

Postup tvorby aplikace

K napsání kódu aplikace můžeme použít libovolný textový editor, který umožňuje uložit soubor ve formátu ASCII s koncovkou .java. Aplikaci můžeme vytvořit také v libovolném vývojovém balíku např. Visual J++.

Na začátku funkce nejprve importujeme všechny potřebné balíky tříd:

  import acad.*;
  import com.ms.com.*;

Dále je deklarována veřejná třída priklad1 a metoda main:

  public class priklad1
  {
    public static void main(String args[])
    {

Aby program mohl vykreslovat objekty v AutoCADu, musíme si nejdříve zpřístupnit objekty Application, ActiveDocument a ModelSpace:

      // deklarace objektu Application, objektu Active Document a
      // objektu Model Space
      IAcadApplication IApp = (IAcadApplication) new AcadApplication();
      IApp.putVisible(true);
      IAcadDocument IDoc = (IAcadDocument) IApp.getActiveDocument();
      IAcadUtility IUtil = (IAcadUtility) IDoc.getUtility();
      IAcadModelSpace IMSpace = (IAcadModelSpace) IDoc.getModelSpace();

V kódu si všimněte zviditelnění aplikace, pokud by byl pouze vytvořen objekt Application, AutoCAD by nebyl viditelný, proto musíme zavolat příkaz objekt Application.putVisible(true). Jakmile máme všechny objekty vytvořené (máme přístup k modelovému prostoru AutoCADu), můžeme již přidávat objekty do výkresu AutoCADu.

V kódu programu vytvoříme dva objekty typu Variant - vPt1 a vPt2 pro uložení souřadnic bodu. Objekty následně vymažeme.

      Variant opt = new Variant();
      opt.VariantClear();
      opt.noParam();
      Variant vPt1 = new Variant(); // vytvoření objektu pro zadaní bodu1
      Variant vPt2 = new Variant(); // vytvoření objektu pro zadaní bodu2
      vPt1.VariantClear();          // vymazání objektu pro zadáni bodu
      vPt2.VariantClear();          // vymazání objektu pro zadáni bodu
      int hr = 0;                   // pomocná proměnná, kontrolující 
                                       // jestli došlo k chybě
      Variant prompt = new Variant();

V další části kódu musíme ošetřit přerušení zadání bodu uživatelem. Přerušení zadání bodu vygeneruje chybu, která musí být odchycena. Kód programu, který potenciálně může vygenerovat chybu napíšeme do bloku try. V našem příkladě bude blok try obsahovat vyvolání metody pro zadání bodu. Za blokem try následuje blok kódu, který se vykonná v případě vygenerování chyby - blok catch. Blok catch bude reagovat na chybu typu ComException - chyba vygenerovaná rozhraním ActiveX. Pokud se chyba vyskytne, je do pomocné proměnné hr přiřazena hodnota různá od 0. Hodnota v proměnné je využita pro test zda se má zadávat další bod nebo ne (byla vygenerována výjimka). Následuje obdobný úsek kódu pro zadání druhého bodu.

      try       // blok kódu, v kterém se kontroluje výskyt chyby
      {         // zadání prvního bodu
        prompt.putString("Zadej první bod ===>");
        vPt1 = IUtil.GetPoint(opt, prompt);
      }              // odchycení vygenerované chyby
      catch (ComException e)
      {              // nastavení pomocné proměnné
        hr = e.getHResult();
      }
      if (hr == 0)
      {
        try          // blok kódu, v kterém se kontroluje výskyt chyby
        {            // zadání druhého bodu
          prompt.putString("Zadej druhý bod ===>");
          vPt2 = IUtil.GetPoint(vPt1, prompt);
        }            // odchycení vygenerované chyby
        catch (ComException e)
        {            // nastavení pomocné proměnné
          hr = e.getHResult();
        }
      }

Máme-li zadány oba dva body, musíme nejprve deklarovat proměnné pro jednotlivé vkládané objekty. Pak můžeme přistoupit k vykreslení jednotlivých objektů.

      IAcadLine ILine;  // objekt čára
      IAcadCircle ICir; // objekt kružnice
      IAcadArc IArc;    // objekt výseč
      if (hr == 0)      // nebyli vygenerovány žádné výjimky, 
      {                 // můžeme kreslit objekty 
        ILine = (IAcadLine) IMSpace.AddLine(vPt1, vPt2); 
                        // vykreslení čáry
        ILine.putColor(2);  // nastavení barvy
        ICir = (IAcadCircle) IMSpace.AddCircle(vPt1, 2.5);
                            // vykreslení kružnice
        ICir.putColor(3);   // nastavení barvy
        IArc = (IAcadArc) IMSpace.AddArc(vPt2, 2.5, 0.707, 1.414);
                            // vykreslení výseče
        IArc.putColor(4);   // nastavení barvy
      }
    }
  }

Tím máme aplikaci ukončenou. Můžeme ji uložit pod jménem priklad1.java. Pozor jméno souboru se musí shodovat se jménem veřejné třídy, jinak při kompilaci dojde k chybě.

Zdrojový kód procedury

Zdrojový kód projektu je uveden v souboru prikad1.java.