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

05/11/2015

Копирование размерных стилей между чертежами при помощи C#

Этот пример показывает, как использовать метод WblockCloneObjects для копирования объектов между чертежами – в данном случае это набор размерных стилей. Он так же демонстрирует малоизвестный метод для получения последних (до 6 штук) использованных размерных стилей – GetDimRecentStyleList (по крайней мере, я раньше не натыкался на него).

Небольшое замечание. Распространенная ошибка многих людей для клонирования DBObjects использовать метод Clone. Его следует использовать осторожно, так как он производит лишь «поверхностное» копирование. В зависимости от того, зачем вам нужны клоны как правило лучше использовать WblockClone или DeepClone вместо обычного Clone.

Код - C#: [Выделить]
  1. [CommandMethod("ImportStyles")]
  2. static public void importStyles()
  3.  {
  4.    Database db = new Database(false, false);
  5.    db.ReadDwgFile("C:\\Styles.dwg", System.IO.FileShare.Read, true, "");
  6.    // Получаем до 6 последних использованных размерных стилей
  7.    ObjectIdCollection dimStyles = db.GetDimRecentStyleList();
  8.    Database destDb =
  9.            Application.DocumentManager.MdiActiveDocument.Database;
  10.    ObjectId destDictId = destDb.DimStyleTableId;
  11.    IdMapping iMap = new IdMapping();
  12.    // Копируем с заменой всех существующих стилей
  13.    destDb.WblockCloneObjects(dimStyles, destDictId, iMap,
  14.                            DuplicateRecordCloning.Replace, false);
  15. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/06/copying-dimstyles-between-drawings-using-c.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=3186

Опубликовано 05.11.2015
Отредактировано 09.11.2015 в 14:20:48