21/11/2014
Как получить список всех масштабов аннотаций средствами .NET API?
Следующий код на C# показывает как это можно сделать:
Код - C#: [Выделить]
- using System;
- using Autodesk.AutoCAD.Runtime;
- using Autodesk.AutoCAD.ApplicationServices;
- using Autodesk.AutoCAD.DatabaseServices;
- using Autodesk.AutoCAD.Geometry;
- using Autodesk.AutoCAD.EditorInput;
- using AcRx = Autodesk.AutoCAD.Runtime;
- using AcAp = Autodesk.AutoCAD.ApplicationServices;
- using AcDb = Autodesk.AutoCAD.DatabaseServices;
- using AcGe = Autodesk.AutoCAD.Geometry;
- using AcEd = Autodesk.AutoCAD.EditorInput;
- [assembly: CommandClass(typeof(ListAnnoScale.MyCommands))]
- namespace ListAnnoScale
- {
- public class MyCommands
- {
- [CommandMethod("ListAnnoScale")]
- public void ListAnnoScale()
- {
- AcAp.Document doc = AcAp.Application.DocumentManager.MdiActiveDocument;
- if (doc == null) return;
- AcEd.Editor ed = doc.Editor;
- AcDb.Database db = doc.Database;
- AcDb.ObjectContextManager contextManager = db.ObjectContextManager;
- if (contextManager != null) {
- AcDb.ObjectContextCollection contextCollection =
- contextManager.GetContextCollection("ACDB_ANNOTATIONSCALES");
- if (contextCollection != null)
- {
- foreach (AcDb.ObjectContext elem in contextCollection)
- {
- AcDb.AnnotationScale annoScale = elem as AcDb.AnnotationScale;
- if (annoScale != null) {
- ed.WriteMessage("\nИмя масштаба: {0}\t" +
- "Единицы бумаги: {1}\tЕдиницы чертежа: {2}\t" +
- "Масштаб: {3}\tВременный: {4}",
- annoScale.Name, annoScale.PaperUnits, annoScale.DrawingUnits,
- annoScale.Scale, annoScale.IsTemporaryScale ? "Да" : "Нет");
- }
- }
- }
- }
- }
- }
- }
Результаты работы команды ListAnnoScale:
Автор: Александр Ривилис
Автор перевода: Александр Ривилис
Отредактировано 21.11.2014 в 15:49:16
Автор перевода: Александр Ривилис
Обсуждение: http://adn-cis.org/forum/index.php?topic=1096
Опубликовано 21.11.2014Отредактировано 21.11.2014 в 15:49:16