24/06/2014
					Вставка блока из другого DWG-файла с помощью .NET
С помощью метода WblockCloneObjects() можно скопировать блок из одного чертежа в другой. Код на C# показывает как можно использовать метод WblockCloneObjects чтобы скопировать определенный блок с именем "test" из чертежа, находящегося по пути "C:\TEMP\test.dwg".
Код - C#: [Выделить]
- [CommandMethod("InsertBlock")]
 - static public void InsertBlock()
 - {
 - Document doc = Application.DocumentManager.MdiActiveDocument;
 - using(Database OpenDb = new Database(false, true))
 - {
 - OpenDb.ReadDwgFile("c:\\temp\\test.dwg",
 - System.IO.FileShare.ReadWrite, true, "");
 - ObjectIdCollection ids = new ObjectIdCollection();
 - using (Transaction tr =
 - OpenDb.TransactionManager.StartTransaction())
 - {
 - // Для примера возьмем блок с именем "TEST"
 - BlockTable bt;
 - bt = (BlockTable)tr.GetObject(OpenDb.BlockTableId
 - , OpenMode.ForRead);
 - if (bt.Has("TEST"))
 - {
 - ids.Add(bt["TEST"]);
 - }
 - tr.Commit();
 - }
 - // Если нашли – добавим блок
 - if (ids.Count != 0)
 - {
 - // Получаем текущую базу чертежа
 - Database destdb = doc.Database;
 - IdMapping iMap = new IdMapping();
 - destdb.WblockCloneObjects(ids, destdb.BlockTableId
 - ,iMap,DuplicateRecordCloning.Ignore, false);
 - }
 - }
 - }
 
Источник: 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