Тема: Доступ к базе рисунка с класса диалога CAcUiDialog
Нужна помощь, подскажите пожалуйста!
ARX приложение содержит:
1) Точку входа EntryPoint
2) Диалоговое немодальное окно от CAcUiDialog
В точке входа на определенную команду описан метод который поднимает немодальное окно
static void AsdkArxProject1_My(void) { if (!m_Workdialog) { CAcModuleResourceOverride resOverride; m_Workdialog = new WorkDialog; m_Workdialog->Create(IDD_WORKDIALOG); m_Workdialog->ShowWindow(SW_SHOWNORMAL); } else { if (!m_Workdialog->IsWindowVisible() || m_Workdialog-> IsIconic()) { m_Workdialog->ShowWindow(SW_SHOWNORMAL); } } } ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, AsdkArxProject1, _My, My, ACRX_CMD_TRANSPARENT, NULL);
Нужно доступится к базе чертежа из этого диалогового класа с возможностью нарисовать, к примеру, примитив(линию). Вот как я реализовал но оно не работает
int WorkDialog::OnBnClickedButton1() { // Доступ к базе рисунка AcDbDatabase *pDb = new AcDbDatabase(); AcDbBlockTable *pBtbl; pDb->getSymbolTable(pBtbl, AcDb::kForRead); AcDbBlockTableRecord *pBtblRcd; pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd, AcDb::kForWrite); // Построение отрезка AcGePoint3d startPt(32,112.5,0); // 1-я точка в МСК AcGePoint3d endPt(161.2,140.8,0); // 2-я точка в МСК // Создание нового объекта класса AcDbLine // с динамическим выделением для него памяти AcDbLine* pLine = new AcDbLine(startPt,endPt); // Добавление к БД рисунка отрезка if ((es = pMS->appendAcDbEntity(pLine)) != Acad::eOk) { acutPrintf ("\nОшибка добавления к БД отрезка. ") ; return (RSRSLT); }; // Закрытие доступа к объекту pLine->close(); // Закрытие блока *Model_Space pMS->close(); // Закрытие таблицы блоков pBlockTbl->close(); }
Суть проблемы :
при попытке получить
AcDbBlockTableRecord *pBtblRcd;
pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd, AcDb::kForWrite);
ПОЛУЧАЮ pBtblRcd = NULL (0x0000000)
Если это сделать в точке входа все работает
В чем разница. И как добится выполнения такого кода в собственном диалоге????
Зарание благодарен!