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

21/11/2014

Как получить список всех масштабов аннотаций средствами .NET API?

Следующий код на C# показывает как это можно сделать:

Код - C#: [Выделить]
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.ApplicationServices;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. using Autodesk.AutoCAD.Geometry;
  6. using Autodesk.AutoCAD.EditorInput;
  7. using AcRx = Autodesk.AutoCAD.Runtime;
  8. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  9. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  10. using AcGe = Autodesk.AutoCAD.Geometry;
  11. using AcEd = Autodesk.AutoCAD.EditorInput;
  12.  
  13. [assembly: CommandClass(typeof(ListAnnoScale.MyCommands))]
  14.  
  15. namespace ListAnnoScale
  16. {
  17.   public class MyCommands
  18.   {
  19.     [CommandMethod("ListAnnoScale")]
  20.     public void ListAnnoScale()
  21.     {
  22.       AcAp.Document doc = AcAp.Application.DocumentManager.MdiActiveDocument;
  23.       if (doc == null) return;
  24.       AcEd.Editor ed = doc.Editor;
  25.       AcDb.Database db = doc.Database;
  26.       AcDb.ObjectContextManager contextManager = db.ObjectContextManager;
  27.       if (contextManager != null) {
  28.         AcDb.ObjectContextCollection contextCollection =
  29.           contextManager.GetContextCollection("ACDB_ANNOTATIONSCALES");
  30.         if (contextCollection != null)
  31.         {
  32.           foreach (AcDb.ObjectContext elem in contextCollection)
  33.           {
  34.             AcDb.AnnotationScale annoScale = elem as AcDb.AnnotationScale;
  35.             if (annoScale != null)  {
  36.               ed.WriteMessage("\nИмя масштаба: {0}\t" +
  37.                               "Единицы бумаги: {1}\tЕдиницы чертежа: {2}\t" +
  38.                               "Масштаб: {3}\tВременный: {4}",
  39.                 annoScale.Name, annoScale.PaperUnits, annoScale.DrawingUnits,
  40.                 annoScale.Scale, annoScale.IsTemporaryScale ? "Да" : "Нет");
  41.             }
  42.           }
  43.         }
  44.       }
  45.     }
  46.   }
  47. }

Результаты работы команды ListAnnoScale:

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

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

Опубликовано 21.11.2014
Отредактировано 21.11.2014 в 15:49:16