![]()
Výkres AutoCADu se skládá ze souboru objektů, které jsou uloženy v databázi. Databáze obsahuje:
Všechny objekty vytvořené v AutoCADu jsou automaticky přidány i do správného kantejnerového objektu. Entity jsou přidány do záznamu tabulky symbolů, záznam je poté vložen do tabulky symbolů. Ostatní objekty jsou přidány do slovníků nebo objektů, které vlastní jiné objekty.
Aby byla výkresová databáze použitelná musí obsahovat minimálně:
![]()
Každý objekt vytvořený v AutoCADu (libovolným způsobem) má vlastní manipulátor (handle) a identifikátor ID. Manipulátor jednoznačně určuje objekt z pohledu jednotlivé databáze, zatím co ID jednoznačně určuje objekt ve všech databázích nahraných v jednom okamžiku v AutoCADu. ID objektu je platné pouze pro aktuální editovací seanci. Manipulátor je platný po celou dobu existence objektu ve výkresu (je uložen s výkresem). Pomocí ID objektu můžeme s objektem manipulovat. Získání ID objektu je možné několika způsoby:
V AutoCADu se entity vložené do výkresu výkresu ukládají zároveň do tzv. výkresové databáze. Grafické objekty ve výkresu leží v tzv. modelovém prostoru. Modelový prostor je ve výkresové databázi umístěn v tzv. tabulce bloků v záznamu *MODEL_SPACE.
 
Čáry do modelového prostoru v AutoCADu vložíme například příkazy:
    _line 2,2 10,7
    _line 3,3 5,5
Zadání čár se projeví ve výkresové databázy přidáním dalších položek. Po zadání obou čar bude tabulka bloků obsahovat následující položky:

Standardní nastavení AutoCADu je takové, že vkládané entity jsou automaticky umístěny do modelového prostoru.
![]()
  AcDbObjectId vytvorCaru()
  {
    AcGePoint3d startBod(2.0, 2.0, 0.0);
        // zadání souřadnic počátečního a koncového bodu
    AcGePoint3d endBod(10.0, 7.0, 0.0);
    AcDbLine *pCara = new AcDbLine(startBod, endbod);
        // vytvoření pointru na nový objekt typu AcDbLine
    AcDbBlockTable *pBlockTable;
        // vytvoření ukazatele na objekt AcDbBlockTable
    acdbCurDwg()->getBlockTable(pBlockTable, AcDb::kForRead);
        // otevření tabulky bloků výkresu pro čtení 
        // a předání ukazatele na ní
    AcDbBlockTableRecord *pZaznamBlockTable;
        // vytvoření ukazatele na objekt AcDbBlockTableRecord
    acdbCurDwg()->getAt(ACDB_MODEL_SPACE, 
                           pZaznamBlockTable, AcDb::kForWrite);
        // otevření záznamu tabulky bloků výkresu pro zápis
        // a předání ukazatele na ní
    pBlockTable->close(); // zavření tabulky bloků
    AcDbObjectId IDCary;
        // vytvoření proměnné pro uchování ID čáry
    pZaznamBlockTable->appendAcDbEntity(IDCary, pCara);
        // přidání entity čára do modelového prostoru
    pZaznamBlockTable->close(); // uzavření modelového prostoru
    pCara->close();    // uzavření objektu čára
    return IDCary;             // vrácení hodnoty ID čáry
  }
Druhá čára by se vytvářela analogicky.
![]()
V aplikacích budeme často potřebovat editovat (pracovat s) již jednou vytvořenou entitou. Práce s objekty v AutoCADu předpokládá, že objekty jsou uloženy někde na disku. Pouze při práci s objekty jsou přesunuty do operační paměti a po skončení manipulace s nimi jsou opět uloženy na disk. Tomuto schématu odpovídá i práce s objekty pomocí funkcí ObjectARX. Schéma práce s objekty v prostředí ObjectARX:
![]()
K otevření objektu potřebujeme znát ID objektu, jinak se k němu nedostaneme. Objekt se dá otevřít pro:
Příkaz otevření má syntaxi:
acdbOpenObject(pObject, object, způsob_otevření)
![]()
Po skončení práce s objektem nesmíme zapomenout uzavřít objekt příkazem:
pObject->close();
![]()
Příklad ilustruje změnu již jednou vytvořeného objektu. Vytvářená funkce změní barvu entity na novou hodnotu.
  Acad::ErrorStatus zmenBarvu
       (AcDbOjectId idObjektu, Adesk::UInt16 novaBarva)
  {
    AcDbEntity *pEntita;
      // vytvoření ukazatele typu AcDbEntity
    acdbOpenObject(pEntita, idObjektu, AcDb::kForWrite);
      // otevření objektu idObjektu pro zápis, nastavení ukazatele
    pEntita->setColorIndex(novaBarva);
      // změna barvy na novou
    pEntita->close();     // uzavření objektu
    return Acad::eOK;     // vrácení návratové hodnoty
  }
![]()