Kirus пишет:Ясно.
Теперь ответьте мне на один вопрос.
Можно ли создать собственный объект не отрисовывая его графику программно, а например указать изображение которое было создано ранее.
Например:
1.Я нарисовал руками круг (Как это сделать я знаю)
2.С помощью С++, создал новый объект назвал его "Cad" (Как это сделать я знаю)
3.Каким то образом дал понять объекту "Cad" что при виде например сверху он будет выглядеть как ранее нарисованный мой круг.(Как это сделать я не знаю)
По-моему, достаточно доступно ответили.
По поводу пунктов:
1. "Нарисовать" это понятие растяжимое. Можно создать порт вывода OpenGL, можно в видепамятьпо адресу 0A0000h писать. А можно и на окне AutoCada при помощи BitBlt() :D.
За отрисовку объекта отвечает worldDraw(). Об этом можно прочитать в официальном мануале, который Вам, кстати, посоветовали в 5 пункте.
2. Создать объект можно, но надо, чтобы он ещё имел правильный класс, который создают при помощи разных визардов, а не пишут вручную.
3. Можно в каком-нибудь hex-редакторе написать программу в машкодах :) Вы будете гением просто, если успеете это за жизнь сделать.
А можно обратить внимание на советы и почитать доки от производителя. Там в
ObjectARX Developer's Guide (для 2008)->Entities->Entity Ownership есть изображение структуры хранения AcDbEntities. Посмотрите и многое станет ясно.
У меня тоже проблема при создании своего объекта. Я создал солюшн с двумя проектами: ARX и DBX.
DBX содержит класс, который наследуется от AcDbEntity. Вроде всё нормально, но приходится в Arx приложении дефайнить файлы DBX-приложения, а при линковке выводится сообщение об ошибке:
1>------ Build started: Project: Simple_ARX_Project1, Configuration: Debug Win32 ------
1>Compiling...
1>acrxEntryPoint.cpp
1>Linking...
1>acrxEntryPoint.obj : error LNK2001: unresolved external symbol "public: __thiscall ZLOI_CABLE::ZLOI_CABLE(void)" (??0ZLOI_CABLE@@QAE@XZ)
1>C:\Documents and Settings\Ustinov_UM\Мои документы\Visual Studio 2005\Projects\Simple_ARX_Project1\Win32\Debug/ZLOISimple_ARX_Project1.arx : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\Ustinov_UM\Мои документы\Visual Studio 2005\Projects\Simple_ARX_Project1\Simple_ARX_Project1\Win32\Debug\BuildLog.htm"
1>Simple_ARX_Project1 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
Не подскажете где копнуть?
З.Ы.
Да вот причина ошибки:
static void CSimple_ARX_Project1_MakeSomething(void)
{
MessageBoxA(0,"Сделаем ВСЕХ!!!!","Я ЗДЕСЬ БОГ!!!!!",64);
ZLOI_CABLE *ZC= new ZLOI_CABLE();
//ZLOI_Cable *ZC = new ZLOI_Cable();
//AcDbBlockTableRecordPointer pMS (ACDB_MODEL_SPACE, acdbHostApplicationServices()->workingDatabase(), AcDb::kForWrite) ;
//pMS->appendAcDbEntity(ZC);
//ZC->close();
}
} ;
//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CSimple_ARX_Project1App)
ACED_ARXCOMMAND_ENTRY_AUTO(CSimple_ARX_Project1App, CSimple_ARX_Project1, _MakeSomething, MakeSomething, ACRX_CMD_MODAL, NULL)