Не копируются объекты вида "Повернутый размер"

Автор Тема: Не копируются объекты вида "Повернутый размер"  (Прочитано 8427 раз)

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

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Как следует из заголовка, по неизвестной мне причине WblockCloneObjects не желает переносить объект по ID из одного чертежа в другой. Пробовал скопировать сначала сам объект, к которому применены объекты типа "Повернутый размер", после докинуть его размеры - не помогло. В чем может быть проблема?

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

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

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Александр Ривилис,
Код остался практически без изменений из моего предыдущего вопроса: https://adn-cis.org/forum/index.php?topic=10936
Проблемный объект прилагаю:

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Как следует из заголовка, по неизвестной мне причине WblockCloneObjects не желает переносить объект по ID из одного чертежа в другой

Данный размер ассоциативный.
Попробуй снять ассоциативность, например скопируй размер, а старый удали, а потом попробуй склонировать. Если ошибка пропала то проблема скорее всего в ассоциативности.
Тогда возможное решение, снимать ассоциативность перед клонированием, а потом создавать по новой, если нужно.

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Привалов Дмитрий, Есть ли пример того, как это можно сделать кодом?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
sided,
Попробуй такой вариант:
Код - C# [Выбрать]
  1. [CommandMethod("WBD")]
  2. public void WBDhandler() // This method can have any name
  3. {
  4.   Document doc = Application.DocumentManager.MdiActiveDocument;
  5.   Database currentDb = doc.Database;
  6.   ObjectIdCollection copiedIds = new ObjectIdCollection();
  7.   Database tempDb = null;
  8.   using (Database srcDb = new Database(false, false))
  9.   {
  10.     srcDb.ReadDwgFile("C:\\srcDwg.dwg", FileShare.Read, false, "");
  11.     using (Transaction tr = srcDb.TransactionManager.StartTransaction())
  12.     {
  13.       BlockTableRecord ms = tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(srcDb), OpenMode.ForRead) as BlockTableRecord;
  14.       foreach (ObjectId id in ms)
  15.       {
  16.           copiedIds.Add(id);
  17.       }
  18.       tr.Commit();
  19.       tempDb = srcDb.Wblock(copiedIds, Point3d.Origin);
  20.     }
  21.  
  22.     if (tempDb != null)
  23.    {
  24.      currentDb.Insert(Matrix3d.Identity, tempDb, true);
  25.      tempDb.Dispose();
  26.    }
  27.   }
  28. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение