Aby byla aplikace funkční musíme do ní doplnit následující úseky kódu:
Na začátek souboru za deklaraci funkcí InitApplication a UnloadApplication doplníme deklaraci funkce, která bude později vykreslovat kružnici pomocí příkazu AutoCADu _circle:
void kresliKruh();
Každá aplikace nahraná do AutoCADu musí registrovat příkazy, které definuje, v AutoCADu. Pokud bychom příkazy neregistrovali, nedaly by se v AutoCADu vyvolat. Registrace příkazů se uvádí v části funkce acrxEntryPoint vyvolané zprávou kInitAppMsg poslanou AutoCADem do aplikace ObjectARX. V našem příkladě je při inicializaci vyvolaná funkce InitApplication(). Doplníme tedy do ní kód pro inicializaci nového příkazu v AutoCADu:
// inicializace aplikace, zaregistrování void InitApplication() { // zaregistrování nového příkazu acedRegCmds->addCommand("novyKruh", "_newCircle", "novaKruznice", ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, kresliKruh); // zobrazení informace o spuštění ads_printf("\nFunkce se spouští pomocí příkazu \"novaKruznice\" napsaného do příkazového řádku."); }
Ve funkci použijeme k registraci příkazu funkci addComand. Jak jsme uvedli v předešlém příkladě, vytiskneme při inicializaci funkce, do příkazového řádku informaci, jakým způsobem spustit nahranou aplikaci.
Aplikace ObjectARX, musí po dokončení své činnosti (při odstranění z AutoCADu) odstranit všechny příkazy a třídy, které během své činnosti v AutoCADu vytvořila. Naše aplikace přidala do AutoCADu pouze nový příkaz, proto stačí odstranit pouze tento příkaz, případně celou skupinu příkazů. K tomuto účelu slouží funkce pro odstranění skupiny příkazů removeGroup. Do aplikace doplníme následující kód funkce UnloadApplication():
// uvolnění aplikace, odregistrování void UnloadApplication() { // odstranění skupiny příkazů acedRegCmds->removeGroup("novyKruh_skupina"); }
Posledním krokem k dokončení aplikace, je dopsání kódu funkce kresliKruh(). Na konci souboru vykresleniKruhu.cpp dopíšeme kód funkce:
void kresliKruh() { // zadání středu kružnice ads_point Bod1; // zadání prvního bodu od uživatele acedGetPoint(NULL, "\nZadej střed kružnice: ", Bod1); // zavolání příkazu AutoCADu pro kreslení kružnice acedCommand(RTSTR, "_circle", RTPOINT, Bod1, RTSTR, PAUSE, 0); }
Ve funkci kresliKruh() jsme použili funkci pro získání hodnoty bodu od uživatele acedGetPoint(). Do příkazového řádku funkce vypíše dotaz na zadání bodu "Zadej střed kružnice: ". Jakmile uživatel potvrdí zadání bodu, je hodnota souřadnice uložena do proměnné Bod1. Více o funkcích vstupu od uživatele se můžete dozvědět v kapitole Zadávání příkazů AutoCADu.
Dále je zavolána funkce acedCommand(...), který umožňuje vyvolat příkaz AutoCADu. Více o funkci acedCommand() se dozvíte v kapitole Zadávání příkazů AutoCADu.
Zdrojový kód projektu je možné nahrát v zabaleném souboru vykresleniKruhu.zip. Nahraný kód musíte rozbalit a ve vývojovém prostředí Visual C++ otevřít soubor pracovního prostoru nebo projektu (vykresleniKruhu.dsw nebo vykresleniKruhu.dsp). Visual C++ poté načte celý projekt.
Doporučujeme Vám vyzkoušet si alespoň tvorbu projektu pomocí pomocníka a napsání několika řádek kódu, abyste poznali vývojové pomůcky prostředí Visual C++.