Добавление ассоциацивного массива в болок.

Автор Тема: Добавление ассоциацивного массива в болок.  (Прочитано 4373 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 2
Мне нужно добавить существующий ассокиативный массив в новый блок так, чтобы сохранилась его ассоциативность. Проблема в том, что при клонировании он превращается в обычный блок. Какие есть варианты?
Код - C# [Выбрать]
  1. else if(isArray)
  2.     {              
  3.         Entity entityCopy = blockRef.Clone() as Entity;
  4.         blockDef.AppendEntity(entityCopy);
  5.         tr.AddNewlyCreatedDBObject(entityCopy, true);
  6.         blockRef.Erase();
  7.     }
  8.  
« Последнее редактирование: 24-11-2023, 22:40:56 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Ihar,
Попробуй Database.DeepCloneObjects
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 2
Похоже, что deepcopy сразу в DB добавляет. Ловлю исключение при добавлении в блок 'eAlreadyInDb'. Пробовал entity.DeepClone, но тогда ассоциативность нарушается.

Отмечено как Решение Ihar 30-11-2023, 19:12:20

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Похоже, что deepcopy сразу в DB добавляет.
Не знаю что такое deepcopy. А DeepCloneObjects конечно сразу добавляет в базу.
Код - C# [Выбрать]
  1. public void DeepCloneObjects(
  2.     ObjectIdCollection identifiers,
  3.     ObjectId id,
  4.     IdMapping mapping,
  5.     [MarshalAs(UnmanagedType.U1)] bool deferTranslation
  6. );
Указывай в качестве id ObjectId блока, в который ты хочешь добавить свой ассоциативный блок.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение