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