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