20/08/2016
Как перенести примитив из одного блока в другой
Можно использовать метод AssumeOwnershipOf для изменения владельца примитивов. Используя этот метод вы можете назначить владельцем примитивов любой блок. Это наиболее эффективный метод для переноса примитивов из одного блока в другой.
Следующий код переносит примитивы из Пространства Модели в блок с именем "TEST".
Код - C#: [Выделить]
- [CommandMethod("MoveEntToBlock")]
- static public void MoveEntToBlock()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptSelectionOptions opts =
- new PromptSelectionOptions();
- opts.MessageForAdding = "Выберите примитивы: ";
- PromptSelectionResult result = ed.GetSelection(opts);
- if (result.Status != PromptStatus.OK)
- return;
- using (Transaction Tx = db.TransactionManager.StartTransaction())
- {
- BlockTable blockTable = Tx.GetObject(db.BlockTableId,
- OpenMode.ForRead) as BlockTable;
- // Проверяем есть ли блок TEST
- if (!blockTable.Has("TEST"))
- {
- return;
- }
- BlockTableRecord record = Tx.GetObject(blockTable["TEST"],
- OpenMode.ForRead) as BlockTableRecord;
- ObjectIdCollection ids =
- new ObjectIdCollection(result.Value.GetObjectIds());
- record.AssumeOwnershipOf(ids);
- Tx.Commit();
- }
- ed.Regen();
- }
Источник: http://adndevblog.typepad.com/autocad/2013/01/move-entities-between-block-table-records.html
Автор перевода: Александр Ривилис
Отредактировано 20.08.2016 в 23:47:39
Обсуждение: http://adn-cis.org/forum/index.php?topic=7277
Опубликовано 20.08.2016Отредактировано 20.08.2016 в 23:47:39