Не рисуется свой объект AcDbEntity

Автор Тема: Не рисуется свой объект AcDbEntity  (Прочитано 3619 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ashtoneАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Добрый день! Я пытаюсь реализовать свой объект на основе AcDbEntity. Нашел несколько примеров по которым и реализовал свой класс наследованный от AcDbEntity. Дальше пытаюсь его вывести на экран, но ничего не выводится. Конструктор объекта вызывается, а вот метод subWorldDraw нет.

Код - C++ [Выбрать]
  1.        
  2. AcDbMyLine *pMyLine = new AcDbMyLine();
  3. pMyLine->setParam(param_1, param_2);
  4.        
  5. // Откроем таблицу
  6. AcDbBlockTable *pBlockTable =NULL;
  7. acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);
  8.  
  9. // Откроем пространство модели
  10. AcDbBlockTableRecord *pBockTableRecord = NULL;
  11. pBlockTable->getAt(ACDB_MODEL_SPACE,pBockTableRecord,AcDb::kForWrite);
  12. pBlockTable->close();
  13.  
  14.  
  15. // Добавим объект в пространство модели
  16. AcDbObjectId lineId = AcDbObjectId::kNull;
  17.        
  18. pBockTableRecord->appendAcDbEntity(lineId,pMyLine);
  19. pBockTableRecord->close();
  20. pMyLine->close();

В чем может быть проблема??
« Последнее редактирование: 03-06-2023, 17:55:16 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не рисуется свой объект AcDbEntity
« Ответ #1 : 03-06-2023, 17:56:56 »
Конструктор объекта вызывается, а вот метод subWorldDraw нет.
Возможно описание subWorldDraw не соответствует стандартному из AcDbEntity.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ashtoneАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Не рисуется свой объект AcDbEntity
« Ответ #2 : 03-06-2023, 18:26:30 »
Конструктор объекта вызывается, а вот метод subWorldDraw нет.
Возможно описание subWorldDraw не соответствует стандартному из AcDbEntity.

Путем проб и ошибок выяснил что проблема при добавлении в модель.
В этой строке:
       
 Nano::ErrorStatus et = pBockTableRecord->appendAcDbEntity(pMyLine);

При добавлении "et" выдает ошибку.

Насколько понимаю проблема с регистрацией класса.

П.С. Прошу строго не судить за "детские" вопросы. Изучением ObjectARX занимаюсь всего неделю.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не рисуется свой объект AcDbEntity
« Ответ #3 : 03-06-2023, 23:09:06 »
Nano
Речь идет о AutoCAD или NanoCAD? NanoCAD на этом форуме не обсуждается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ashtoneАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Не рисуется свой объект AcDbEntity
« Ответ #4 : 04-06-2023, 00:02:02 »
Nano
Речь идет о AutoCAD или NanoCAD? NanoCAD на этом форуме не обсуждается.

Изучаю по AutoCAD. Но поскольку мой код это уже большая солянка из всевозможных примеров из интернета, возможно что-то и из NanoCAD попало

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не рисуется свой объект AcDbEntity
« Ответ #5 : 04-06-2023, 15:41:51 »
При добавлении "et" выдает ошибку.

Насколько понимаю проблема с регистрацией класса.
Вполне возможно. Нужно анализировать код et. Для этой цели есть хорошая функция acadErrorStatusText(Acad::ErrorStatus) которая возвращает по коду ошибки ее символьное название.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение