Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: Эд от 18-09-2018, 07:39:53

Название: Сбой при копировании в буфер примитивов в "referenc"
Отправлено: Эд от 18-09-2018, 07:39:53
Добрый день! Пробовал разобрать пример из objectarx 2014 "referenc". Все получается успешно пока не начинаю копировать эти объекты в буфер - происходит исключение. Мне кажется, что то не так с кодом subWblockClone. Уже в начальных строках появляется переменная pspace и инициализируется на AcDbObjectId::kNull, а потом появляется оператор  if (pspace == AcDbObjectId::kNull), хотя переменная итак kNull.
Хотел понять как работает эта функция.


Название: Re: Сбой при копировании в буфер примитивов в "referenc"
Отправлено: Александр Ривилис от 18-09-2018, 08:58:51
Все получается успешно пока не начинаю копировать эти объекты в буфер - происходит исключение
Какое?
Мне кажется, что то не так с кодом subWblockClone.
Запусти под отладчиком и проверь там ошибка или нет.
Уже в начальных строках появляется переменная pspace и инициализируется на AcDbObjectId::kNull, а потом появляется оператор  if (pspace == AcDbObjectId::kNull), хотя переменная итак kNull.
Хотел понять как работает эта функция.
Хотя это и не совсем логично, но эта часть работает правильно. И переменная static, т.е. инициализируется только один раз, т.е. при втором вызове этого метода присвоение AcDbObjectId::kNull не происходит.

Название: Re: Сбой при копировании в буфер примитивов в "referenc"
Отправлено: Александр Ривилис от 18-09-2018, 09:17:52
Посмотрел я внимательнее код. Там есть ошибка, которая приводит к бесконечной рекурсии. Нужно заменить:
Код - C++ [Выбрать]
  1. = AcDbEllipse::wblockClone(pOwnerObject,
на
Код - C++ [Выбрать]
  1. = AcDbEllipse::subWblockClone(pOwnerObject,
Я смотрел в ObjectARX 2019, но думаю что в 2014 та же ошибка.
Название: Re: Сбой при копировании в буфер примитивов в "referenc"
Отправлено: Эд от 18-09-2018, 21:23:56
Спасибо!
Теперь работает.