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

14/08/2013

Изменение определения блока для одного вставленного блока

Ниже код, который меняет определение блока у конкретной вставки блока. Код просит у пользователя указать вставку блока и изменяет определение блока так, что вставка блока становится вставкой нового определения блока.

Код - C#: [Выделить]
  1. [CommandMethod("chageBlock")]
  2. public static void chageBlock()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     PromptEntityOptions options =
  9.         new PromptEntityOptions("\nУкажите вставку блока: ");
  10.     options.SetRejectMessage("\nГодится только вставка блока ");
  11.     options.AddAllowedClass(typeof(BlockReference), false);
  12.  
  13.     PromptEntityResult acSSPrompt = ed.GetEntity(options);
  14.  
  15.     if (acSSPrompt.Status != PromptStatus.OK)
  16.         return;
  17.  
  18.     using (Transaction Tx = db.TransactionManager.StartTransaction())
  19.     {
  20.         // Получаем вставку блока
  21.         BlockReference blockRef = Tx.GetObject(acSSPrompt.ObjectId,
  22.                                OpenMode.ForRead) as BlockReference;
  23.  
  24.         // запись таблицы блоков...
  25.         BlockTable blockTable = Tx.GetObject(db.BlockTableId,
  26.                                     OpenMode.ForRead) as BlockTable;
  27.  
  28.         // установим блок с именем “TEST” если блок с таким именем есть
  29.         // в текущей базе
  30.         if (blockTable.Has("TEST"))
  31.         {
  32.             blockRef.UpgradeOpen();
  33.             // устанавливаем ObjectId блока с именем “TEST”
  34.             blockRef.BlockTableRecord = blockTable["TEST"];
  35.         }
  36.  
  37.         Tx.Commit();
  38.     }
  39. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/07/changing-block-definition-of-an-block-reference.html

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

Опубликовано 14.08.2013
Отредактировано 19.08.2013 в 14:41:40