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

06/07/2021

Как выполнить расчленение группы примитивов при помощи .NET API

Следующий код показывает как можно расчленить группу, заданную её именем:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.EditorInput;
  4. using Autodesk.AutoCAD.Runtime;
  5.  
  6. // This line is not mandatory, but improves loading performances
  7. [assembly: CommandClass(typeof(Rivilis.GroupUtils))]
  8.  
  9. namespace Rivilis
  10. {
  11.   public class GroupUtils
  12.   {
  13.     [CommandMethod("GroupExplode")]
  14.     public void GroupExplodeHandler()
  15.     {
  16.       Document doc = Application.DocumentManager.MdiActiveDocument;
  17.       Editor ed = doc.Editor;
  18.       Database db = doc.Database;
  19.       PromptResult rs = ed.GetString("\nИмя группы для расчленения: ");
  20.       if (rs.Status == PromptStatus.OK)
  21.       {
  22.         string groupName = rs.StringResult;
  23.         using (OpenCloseTransaction tr = new OpenCloseTransaction())
  24.         {
  25.           ObjectId idGroupDict = db.GroupDictionaryId;
  26.           DBDictionary groupDict = tr.GetObject(idGroupDict, OpenMode.ForWrite) as DBDictionary;
  27.           if (groupDict.Contains(groupName))
  28.           {
  29.             ObjectId idGroup = groupDict.GetAt(groupName);
  30.             Group group = tr.GetObject(idGroup, OpenMode.ForWrite) as Group;
  31.             if (group != null)
  32.             {
  33.               if (group.NumEntities > 0) group.Clear();
  34.               group.Erase();
  35.             }
  36.           }
  37.           else
  38.           {
  39.             ed.WriteMessage("\nВ этом чертеже нет группы '{0}'", groupName);
  40.           }
  41.           tr.Commit();
  42.         }
  43.       }
  44.     }
  45.   }
  46. }

 

Автор: Александр Ривилис
Опубликовано 06.07.2021