Při vytvoření aplikace budeme využívat služby pomocníka ObjectARX 2000 AppWizard. Zadávané informace budou:
Otevřeme si okno s kódem souboru aplikace (testovaci1.cpp).
Dále je výhodné zjistit a zaznamenat tvar příkazů AutoCADu pro kreslení kružnic, obdelníků a n-úhelníků. V programech je výhodnější používat anglický tvar příkazu s podtržítkem (aplikace má pak lepší přenositelnost mezi různojazyčnými verzemi AutoCADu).
Postup přidání nové kružnice do výkresu:
_circle | enter |
Střed | (x y z) enter - souřadnice středu |
Rádius/diametr |
R enter - výběr poloměru |
číslo enter - zadání poloměru |
Postup přidání nového obdelníku do výkresu:
_rectangle | enter |
Bod1 | (x y z) enter - souřadnice prvního rohu |
Bod2 | (x y z) enter - souřadnice protilehlého rohu |
Postup přidání nového n-úhelníku do výkresu:
_polygon | enter |
Počet vrcholů | 6 enter - zadání počtu vrcholů |
Střed | (x y z) enter - souřadnice středu |
Vepsaná/opsaná kružnice |
_I enter - výběr typu konstrukce n-úhelníku |
Poloměr |
(x y z) enter - výběr druhého bodu, pomocí kterého se určí orientace a poloměr nn-úhelníku |
Tím jsme dokončili přípravné práce na projektu a můžeme začít psát kód programu.
V programu musíme nejprve dopsat hlavičky funkcí, které budeme používat v programu. V projektu budeme používat tři funkce:
Deklaraci hlaviček dopíšeme za deklarace funkcí InitAplication a UnloadApplication (vygenerované pomocníkem):
void InitApplication(); void UnloadApplication(); void kresliKruh(); void kresliObdelnik(); void kresliPolygon();
Dále musíme zajistit, aby aplikace zaregistrovala nové příkazy v AutoCADu. Registrace příkazů musí být umístěna ve funkci InitApplication, která je vyvolána při inicializaci aplikace. Postup dopsání kódu funkce InitApplication:
// inicializace aplikace, zaregistrování void InitApplication() { // registrace nového příkazu, který vyvolá // funkci pro kreslení kružnice acedRegCmds->addCommand("nove_prikazy", "_newCircle", "novaKruznice", ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, kresliKruh); // registrace nového příkazu, který vyvolá // funkci pro kreslení obdelníku acedRegCmds->addCommand("nove_prikazy", "_newRectangle", "novyObdelnik", ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, kresliObdelnik); // registrace nového příkazu, který vyvolá funkci // pro kreslení n-úhelníku acedRegCmds->addCommand("nove_prikazy", "_newPolygon", "novyPolygon", ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, kresliPolygon); // vypsání informaci jak spustit aplikaci ads_printf( "\nAplikaci spustíte příkazem\"novaKruznice\", \"novyObdelnik\" nebo \"novyPolygon\".\n" ); }
Každá aplikace nahraná do AutoCADu musí obsahovat funkci, která ošetří případné
odstanění aplikace z AutoCADu. V našem příkladě stačí při odstranění aplikace
odstranit skupinu nových příkazů:
// uvolnění aplikace, odregistrování void UnloadApplication() { // odstranění skupiny příkazů acedRegCmds->removeGroup("nove_prikazy"); }
Funkce je vyvolána, zadá-li uživatel do příkazového řádku AutoCADu
příkaz novaKruznice nebo _newCircle. Ve funkci nejprve voláme příkaz pro zadání
bodu, který uložíme do proměnné Bod1. Následně je vyvolán příkaz acedCommand,
který umožňuje vyvolání příkazu AutoCADu. AutoCADu jsou poslány potřebné hodnoty
pro vykreslení kružnice, kromě poloměru, který musí zadat uživatel.
void kresliKruh() { // zadání středu kružnice ads_point Bod1; //zadání prvního bodu od uživatele acedGetPoint(NULL, "\nVyber první bod: ", Bod1); acedCommand(RTSTR, "_circle", RTPOINT, Bod1, RTSTR, PAUSE, 0); }
Funkce je vyvolána, zadá-li uživatel do příkazového řádku AutoCADu příkaz novyObdelnik nebo _newRectangle. Ve funkci nejprve zjistíme souřadnice protějších rohů obdelníku. Následně je vyvolán příkaz acedCommand, který umožní vyvolání příkazu AutoCADu. AutoCADu jsou poslány potřebné hodnoty pro vykreslení obdelníku.
void kresliObdelnik() { // deklarace proměnných bodů obdelníku ads_point Bod1; ads_point Bod2; //zadání rohů obdelníku uživatelem acedGetPoint(NULL, "\nVyber první roh: ", Bod1); acedGetPoint(NULL, "\nVyber druhý roh: ", Bod2); acedCommand(RTSTR, "_rectangle", RTPOINT, Bod1, RTPOINT, Bod2, 0); }
Funkce je vyvolána, zadá-li uživatel do příkazového řádku AutoCADu příkaz novyPolygon nebo _newPolygon. Ve funkci nejprve zjistíme souřadnici středu n-úhelníku. Následně je vyvolán příkaz acedCommand, který umožní vyvolání příkazu AutoCADu. AutoCADu jsou poslány potřebné hodnoty pro vykreslení n-úhelníku, kromě poloměru opsané kružnice, který zadá uživatel.
void kresliPolygon() { // deklarace proměnné středu n_úhelníku ads_point Bod1; //zadání prvního bodu od uživatele acedGetPoint(NULL, "\nZadej střed: ", Bod1); acedCommand(RTSTR, "_polygon", RTSHORT, 6, RTPOINT, Bod1, RTSTR, "_I", RTSTR, PAUSE, 0); }
Zdrojový kód projektu je možné nahrát v zabaleném souboru testovaci1.zip. Nahraný kód musíte rozbalit a ve vývojovém prostředí Visual C++ otevřít soubor pracovního prostoru nebo projektu (testovaci1.dsw nebo testovaci1.dsp). Visual C++ poté načte celý projekt.
Doporučujeme Vám alespoň si vyzkoušet tvorbu projektu pomocí pomocníka a napsání několika řádek kódu, abyste poznali vývojové pomůcky prostředí Visual C++.