Сбой при копировании в буфер примитивов в "referenc"

Автор Тема: Сбой при копировании в буфер примитивов в "referenc"  (Прочитано 6116 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Добрый день! Пробовал разобрать пример из objectarx 2014 "referenc". Все получается успешно пока не начинаю копировать эти объекты в буфер - происходит исключение. Мне кажется, что то не так с кодом subWblockClone. Уже в начальных строках появляется переменная pspace и инициализируется на AcDbObjectId::kNull, а потом появляется оператор  if (pspace == AcDbObjectId::kNull), хотя переменная итак kNull.
Хотел понять как работает эта функция.



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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Все получается успешно пока не начинаю копировать эти объекты в буфер - происходит исключение
Какое?
Мне кажется, что то не так с кодом subWblockClone.
Запусти под отладчиком и проверь там ошибка или нет.
Уже в начальных строках появляется переменная pspace и инициализируется на AcDbObjectId::kNull, а потом появляется оператор  if (pspace == AcDbObjectId::kNull), хотя переменная итак kNull.
Хотел понять как работает эта функция.
Хотя это и не совсем логично, но эта часть работает правильно. И переменная static, т.е. инициализируется только один раз, т.е. при втором вызове этого метода присвоение AcDbObjectId::kNull не происходит.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Александр Ривилис 18-09-2018, 21:24:56

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Посмотрел я внимательнее код. Там есть ошибка, которая приводит к бесконечной рекурсии. Нужно заменить:
Код - C++ [Выбрать]
  1. = AcDbEllipse::wblockClone(pOwnerObject,
на
Код - C++ [Выбрать]
  1. = AcDbEllipse::subWblockClone(pOwnerObject,
Я смотрел в ObjectARX 2019, но думаю что в 2014 та же ошибка.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Спасибо!
Теперь работает.