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

16/01/2014

Параметры чертежа DWG

В отличие от чертежа AutoCAD, чертеж Civil 3D имеет ряд дополнительных параметров, таких как масштаб чертежа, настройки единиц измерения и другие:
Параметры чертежа DWG
Все эти настройки можно получить и задать с помощью функций .NET API.

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

Код - VB.NET: [Выделить]
  1. Imports Autodesk.AutoCAD.ApplicationServices
  2. Imports Autodesk.AutoCAD.EditorInput
  3. Imports Autodesk.AutoCAD.Geometry
  4. Imports Autodesk.AutoCAD.Runtime
  5. Imports Autodesk.Civil.ApplicationServices
  6. Imports Autodesk.Civil
  7.  
  8. Public Class DWGSettingsClass
  9.  
  10.    <CommandMethod("AOC_DWGSettings")> Public Sub AOC_DWGSettings()
  11.  
  12.       Dim a_CivilDoc As CivilDocument
  13.       a_CivilDoc = CivilApplication.ActiveDocument
  14.  
  15.       'Единицы измерения и зоны
  16.       With a_CivilDoc.Settings.DrawingSettings
  17.  
  18.          'Единицы угловой меры
  19.          .UnitZoneSettings.AngularUnits = AngleUnitType.Degree
  20.  
  21.          'Единицы чертежа
  22.          .UnitZoneSettings.DrawingUnits = Settings.DrawingUnitType.Meters
  23.  
  24.          'Масштаб
  25.          .UnitZoneSettings.DrawingScale = 1
  26.  
  27.          'Система координат
  28.          .UnitZoneSettings.CoordinateSystemCode = "Pulkovo42.GK3d/CM-30E"
  29.  
  30.          'Преобразование британской системы единиц в метрическую
  31.          .UnitZoneSettings.ImperialToMetricConversion = Settings.ImperialToMetricConversionType.InternationalFoot
  32.  
  33.          'Масштабировать объекты, вставленные из других чертежей
  34.          .UnitZoneSettings.ScaleObjectsFromOtherDrawings = False
  35.  
  36.          'Установить соответствующие переменные AutoCAD
  37.          .UnitZoneSettings.MatchAutoCADVariables = False
  38.  
  39.       End With
  40.  
  41.       'Преобразование
  42.       With a_CivilDoc.Settings.DrawingSettings
  43.  
  44.          'Применить параметры преобразования
  45.          .ApplyTransformSettings = True
  46.  
  47.          'Применить масштабный коэффициент уровня моря
  48.          .TransformationSettings.ApplySeaLevelScaleFactor = True
  49.  
  50.          'Отметка
  51.          .TransformationSettings.SeaLevelScaleElevation = 3
  52.  
  53.          'Масштабный коэффицент сетки
  54.          .TransformationSettings.GridScaleFactorComputation = Settings.GridScaleFactorType.UserDefined
  55.  
  56.          'Масштабный коэффициент
  57.          .TransformationSettings.GridScaleFactor = 1.102
  58.  
  59.          'Локальное положение опорной точки
  60.          .TransformationSettings.LocalReferencePoint = New Point2d(100200)
  61.  
  62.          'Положение опорной точки в координатах сетки
  63.          .TransformationSettings.GridReferencePoint = New Point2d(112265)
  64.  
  65.          'Локальное положение центра поворота
  66.          .TransformationSettings.LocalRotationPoint = New Point2d(5075)
  67.  
  68.          'Положение центра поворота в координатах сетки
  69.          .TransformationSettings.GridRotationPoint = New Point2d(305150)
  70.  
  71.          'Указать угол поворта сетки
  72.          .TransformationSettings.SpecifyRotationType = Settings.SpecifyRotationType.GridRotationAngle
  73.  
  74.          'К северу
  75.          .TransformationSettings.RotationToGridNorth = -44.8
  76.  
  77.          'Азимут
  78.          .TransformationSettings.RotationToGridAzimuth = 259.7
  79.  
  80.       End With
  81.  
  82.       'Слои объекта (только чтение)
  83.       With a_CivilDoc.Settings.DrawingSettings
  84.  
  85.          Dim a_ed As Editor
  86.          a_ed = Application.DocumentManager.MdiActiveDocument.Editor
  87.  
  88.          Dim q_LayerSettings As Autodesk.Civil.Settings.SettingsObjectLayer
  89.  
  90.          q_LayerSettings = .ObjectLayerSettings.GetObjectLayerSetting(Settings.SettingsObjectLayerType.TinSurface)
  91.          a_ed.WriteMessage(vbLf & "Объект: Поверхность TIN")
  92.          a_ed.WriteMessage(vbLf & "Слой: " & q_LayerSettings.LayerName)
  93.          a_ed.WriteMessage(vbLf & "Модификатор: " & q_LayerSettings.Modifier.ToString)
  94.          a_ed.WriteMessage(vbLf & "Значение: " & q_LayerSettings.ModifierValue)
  95.          a_ed.WriteMessage(vbLf & "Заблокировано: " & q_LayerSettings.Locked.ToString)
  96.  
  97.       End With
  98.  
  99.       'Перечень сокращений
  100.       With a_CivilDoc.Settings.DrawingSettings.AbbreviationsSettings
  101.  
  102.          'Текст для точки геометрии трассы
  103.          'Начало трассы
  104.          .AlignmentGeoPointText.SetAlignmentAbbreviation(Settings.AbbreviationAlignmentType.AlignmentBeginning"НТ")
  105.  
  106.          'Конец трассы
  107.          .AlignmentGeoPointText.SetAlignmentAbbreviation(Settings.AbbreviationAlignmentType.AlignmentEnd"КТ")
  108.  
  109.          'Пересечение прямых участков
  110.          .AlignmentGeoPointText.SetAlignmentAbbreviation(Settings.AbbreviationAlignmentType.TangentTangentIntersect"ТТ")
  111.  
  112.       End With
  113.  
  114.       'Параметры среды
  115.       With a_CivilDoc.Settings.DrawingSettings
  116.  
  117.          'Площадь
  118.          'Единица
  119.          .AmbientSettings.Area.Unit.Value = AreaUnitType.SquareMeter
  120.  
  121.          'Точность
  122.          .AmbientSettings.Area.Precision.Value = 2
  123.  
  124.          'Округление
  125.          .AmbientSettings.Area.Rounding.Value = RoundingType.Normal
  126.  
  127.          'Знак
  128.          .AmbientSettings.Area.Sign.Value = SignType.Negative
  129.  
  130.       End With
  131.  
  132.    End Sub
  133.  
  134. End Class

Автор: Алексей Терно
Автор перевода: Алексей Терно

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

Опубликовано 16.01.2014
Отредактировано 16.01.2014 в 01:42:33