Перенос стилей из внешнего *.DWG файла.

Автор Тема: Перенос стилей из внешнего *.DWG файла.  (Прочитано 12314 раз)

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

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Это ранний склероз называется.
Как-то это неожиданно :o. Я надеялся, что это попозже случится...
У меня просто в этот раз помутнение случилось (тоже, кстати, ничуть не лучше склероза) и я стал искать в документации по слову "Import", а надо было "Export". Но! У меня есть оправдание! Очень загружен работой, вот :)


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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
Попробовал экспортировать списки элементов (PartsList). Они тоже наследуются от StyleBase. Для напорных трубопроводов получилось. Для безнапорных списки получаются пустыми.
Как корректно перенести семейства и типоразмеры?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Может их просто программно создать?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Списки элементов безнапорной сети даже с помощью стандартных команд экспорта-импорта стилей не переносятся. Приходится делать драг-дропом между параметрами чертежей. Так что, могу допустить, что и в API нет нормального инструмента для их переноса. Вот интересно, какой механизм используется при драг-дропе? Возможно, что получится с помощью клонирования объектов между БД через AutoCAD API.

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
"Не выходит каменный цветок..."
Клонированием удалось кое-что перенести, но не все и не туда...
Если применять WblockClone, то новые списки полностью уничтожают имеющиеся  (через некоторое время Standard самовозрождается, как птица Феникс :) ). 
Наиболее приемлемый вариант - применение CloningHelper. Все работает, пока не встречаются одинаковые имена. При перезаписи получаем гибрид старого и нового. При переименовании - пустой переименованный список и гибрид под старым именем.
Пробовал добавлять семейства в новые списки "вручную", но получил исключение - "It's not a valid part family guid for the current active catalog." В обеих базах прописаны одинаковые пути к каталогу.
Чего еще не хватает?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Пробовал добавлять семейства в новые списки "вручную", но получил исключение - "It's not a valid part family guid for the current active catalog." В обеих базах прописаны одинаковые пути к каталогу.
Это как? Путь к каталогу задаётся на уровне приложения и не сохраняется в БД чертежа. Вполне может быть так, что списки элементов содержат ссылки на семейства, которых нет в каталоге. Возможно потому и возникает это исключение?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
А семейства колодцев в списке элементов обрабатывается? Если да, то надо не забыть сделать особую обработку нулевых колодцев - возможно, что на них спотыкается программа.

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
А семейства колодцев в списке элементов обрабатывается? Если да, то надо не забыть сделать особую обработку нулевых колодцев - возможно, что на них спотыкается программа.
Спасибо, Дмитрий! Почти получилось. Самым сложным оказалось немного приблизиться к пониманию того, как это все устроено :) . Проверка показала, что в моем случае очень многие семейства в каталоге были отредактированы после вставки списков в исходный чертеж (кстати, при драг-дропе все перетаскивается без проверки валидности).
Осталось "побороть" нулевые колодцы. При копировании списков методом StyleBase.ExportTo() получаем совсем пустые списки, даже без Null Structure. Их можно как-нибудь добавить "вручную"?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Честно говоря, не знаю. Я программно списки элементов не редактировал, только читал из них данные. Я даже не знал до этого момента, что может существовать список без нулевого колодца. Если вручную создать пустой список, то он в нём уже будет. AUDIT чертежа не ругается на такие списки? Аки феникс нулевой колодец не появляется? :)