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

24/06/2014

Вставка блока из другого DWG-файла с помощью .NET

С помощью метода WblockCloneObjects() можно скопировать блок из одного чертежа в другой. Код на C# показывает как можно использовать метод WblockCloneObjects чтобы скопировать определенный блок с именем "test" из чертежа, находящегося по пути "C:\TEMP\test.dwg".

Код - C#: [Выделить]
  1. [CommandMethod("InsertBlock")]
  2. static public void InsertBlock()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     using(Database OpenDb = new Database(false, true))
  6.     {
  7.         OpenDb.ReadDwgFile("c:\\temp\\test.dwg",
  8.             System.IO.FileShare.ReadWrite, true, "");
  9.  
  10.         ObjectIdCollection ids = new ObjectIdCollection();
  11.         using (Transaction tr =
  12.                 OpenDb.TransactionManager.StartTransaction())
  13.         {
  14.              // Для примера возьмем блок с именем "TEST"
  15.              BlockTable bt;
  16.              bt = (BlockTable)tr.GetObject(OpenDb.BlockTableId
  17.                                             , OpenMode.ForRead);
  18.  
  19.              if (bt.Has("TEST"))
  20.              {
  21.                  ids.Add(bt["TEST"]);
  22.              }
  23.              tr.Commit();
  24.         }
  25.  
  26.         // Если нашли – добавим блок
  27.         if (ids.Count != 0)
  28.         {
  29.             // Получаем текущую базу чертежа
  30.             Database destdb = doc.Database;
  31.             IdMapping iMap = new IdMapping();
  32.             destdb.WblockCloneObjects(ids, destdb.BlockTableId
  33.                    ,iMap,DuplicateRecordCloning.Ignore, false);
  34.         }
  35.     }
  36. }

Источник: http://adndevblog.typepad.com/autocad/2012/05/insert-block-from-a-different-dwg-using-net-.html

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

Опубликовано 24.06.2014