РАЗМЕРНОСТИ И ДОПУСКИ

Размерности представляют собой геометрические характеристики объектов - расстояния углы между ними. В Автокаде их три разновидности - линейные, радиальные (от слова радиус) и угловые. Они могут создаваться как для объектов (линий, мультилиний, дуг, окружностей, сегментов полилинии) так и самостоятельно. Каждая размерность имеет свой размерный стиль, включающий цвет, тип линий, стиль текста. Переменные определяющие вид размерностей: DIMAUNIT, DIMUPT, DIMTOFL, DIMFIT, DIMTIH, DIMTOH, DIMJUST, DIMTAD. Однострочный текст размерности использует текущий текстовый стиль. Ассациативные размерности это те, в которых все линии, стрелки, дуги и тексты рисуются как единый объект. По умолчанию системная переменная отвечающая за ассациативность размерностей DIMASO включена.

СОЗДАНИЕ РАЗМЕРНОСТЕЙ

Можно создавать линейные, радиальные, угловые и ординатные размерности. При этом используется активный размерный стиль. Линейные размеры могут вращаться и выравниваться. Они строятся параллельно измеряемой части объекта с использованием методов AddDimAligned, AddDimRotated, AddDim3PointAligned.

Для создания радиальных размеров дуг и окружностей есть метод AddDimRadial, пример построения радиальных размеров:

Sub CreateRadialDimension()
  Dim dimObj As AcadDimRadial
  Dim center(0 To 2) As Double
  Dim chordPoint(0 To 2) As Double
  Dim leaderLen As Integer
  
  center(0) = 0: center(1) = 0: center(2) = 0
  chordPoint(0) = 5: chordPoint(1) = 5: chordPoint(2) = 0
  leaderLen = 5
  
  Set dimObj = ThisDrawing.ModelSpace.AddDimRadial(center, chordPoint, leaderLen)
  ZoomExtents
End Sub
Пример создания угловых размеров
Sub CreateAngularDimension()
  Dim dimObj As AcadDimAngular
  Dim angVert(0 To 2) As Double
  Dim FirstPoint(0 To 2) As Double
  Dim SecondPoint(0 To 2) As Double
  Dim TextPoint(0 To 2) As Double
  
  angVert(0) = 0: angVert(1) = 5: angVert(2) = 0
  FirstPoint(0) = 1: FirstPoint(1) = 7: FirstPoint(2) = 0
  SecondPoint(0) = 1: SecondPoint(1) = 3: SecondPoint(2) = 0
  TextPoint(0) = 3: TextPoint(1) = 5: TextPoint(2) = 0
  
  Set dimObj = ThisDrawing.ModelSpace.AddDimAngular(angVert, FirstPoint, SecondPoint, TextPoint)
  ZoomAll
End Sub
Ординатные размеры измеряют перпендикулярное расстояние от заданной точки до измеремого объекта. Обычно используются, чтобы избежать ошибок взаимного положения объектов. Пример:
Sub CreatingOrdinateDimension()
  Dim dimObj As AcadDimOrdinate
  Dim definingPoint(0 To 2) As Double
  Dim leaderEndPoint(0 To 2) As Double
  Dim useXAxis As Long
  
  definingPoint(0) = 5: definingPoint(1) = 5: definingPoint(2) = 0
  leaderEndPoint(0) = 10: leaderEndPoint(1) = 5: leaderEndPoint(2) = 0
  useXAxis = 5
  
  Set dimObj = ThisDrawing.ModelSpace.AddDimOrdinate(definingPoint, leaderEndPoint, useXAxis)
  ZoomExtents
End Sub
Для редактирования размеров используется следующие свойства А в дополнение следующие методы Пример переопределения текста размера
Sub OverrideDimensionText()
  Dim dimObj As AcadDimAligned
  Dim point1(0 To 2) As Double
  Dim point2(0 To 2) As Double
  Dim location(0 To 2) As Double
  
  ' задаем размер
  point1(0) = 5#: point1(1) = 3#: point1(2) = 0#
  point2(0) = 10#: point2(1) = 3#: point2(2) = 0#
  location(0) = 7.5: location(1) = 5#: location(2) = 0#
  
  Set dimObj = ThisDrawing.ModelSpace.AddDimAligned(point1, point2, location)
  
  ' меняем текст
  dimObj.TextOverride = "Значение <>"
  dimObj.Update
End Sub

РАБОТА С РАЗМЕРНЫМИ СТИЛЯМИ

Именованный размерный стиль - группа настроек определяющих вид размеров. Создание нового стиля осуществляется методом Add, метод CopyFrom позволяет копировать стиль, при этом если копировать стиль не с объекта стиль а с объекта Document, то переносятся все переопределения стиля. Пример копирования стиля с переопределениями. Он создает три размерных стиля и копирует их при разных установках. Для его работы следует в новом рисунке создать линейный размер, изменить цвет на желтый, изменить значение системной переменной DIMCLRD на 5.
Sub CopyDimStyles()
  Dim newStyle1 As AcadDimStyle,newStyle2 As AcadDimStyle
  Dim newStyle3 As AcadDimStyle
  
  Set newStyle1 = ThisDrawing.DimStyles.Add ("Стиль 1 скопирован с dim")
  Call newStyle1.CopyFrom(ThisDrawing.ModelSpace(0))
  
  Set newStyle2 = ThisDrawing.DimStyles.Add ("Стиль 2 скопирован со Стиль 1")
  Call newStyle2.CopyFrom(ThisDrawing.DimStyles.Item ("Стиль 1 скопирован с dim"))
                  
  Set newStyle2 = ThisDrawing.DimStyles.Add ("Стиль 3 скопирован с настройками")
  Call newStyle2.CopyFrom(ThisDrawing)
End Sub
Открыть диалог DIMSTYLE должны появиться три разных стиля.

ПЕРЕОПРЕДЕЛЕНИЕ РАЗМЕРНОГО СТИЛЯ

Следующие свойства доступны для большинства размеров. Пример выровненного размера с суффиксом определенным пользователем
Sub AddTextSuffix()
  Dim dimObj As AcadDimAligned
  Dim point1(0 To 2) As Double
  Dim point2(0 To 2) As Double
  Dim location(0 To 2) As Double
  Dim suffix As String
  
  ' Определим размер
  point1(0) = 0: point1(1) = 5: point1(2) = 0
  point2(0) = 5: point2(1) = 5: point2(2) = 0
  location(0) = 5: location(1) = 7: location(2) = 0
  
  Set dimObj = ThisDrawing.ModelSpace.AddDimAligned(point1, point2, location)
  
  ThisDrawing.Application.ZoomExtents
  ' Позволим пользователю сменить суффикс
  suffix = InputBox("Новый суффикс для размера", "Set Dimension Suffix", ":SUFFIX")
  
  dimObj.TextSuffix = suffix
  ThisDrawing.Regen acAllViewports
End Sub

РАЗМЕРНОСТИ В ПРОСТРАНСТВЕ МОДЕЛИ И ПРОСТРАНСТВЕ ЛИСТА

Рисовать размерности можно как в пространстве модели, так и в пространстве листа, однако если фигуры в пространстве модели, то и размеры лучьше рисовать там же. Если же рисовать размер в пространстве листа, когда фигур нарисованы в пространстве модели, то они не меняются автоматически когда вы используете команды редактирования и увеличения. Если вы проставляете размеры в пространстве листа, и глобальный фактор масштабирования для линейных размеров меньше нуля, DIMLFAC измеренное расстояние умножается на абсолютное значение DIMLFAC. Если размеры в пространстве модели, то используется значение 1.0, даже если DIMLFAC меньше нуля.

СОЗДАНИЕ УКАЗАТЕЛЕЙ И ПРИМЕЧАНИЙ

Указатель - это линия соединяющая примечание с какой-либо частью рисунка. указатель связан с примечанием и меняется вместе с ним, если примечание отредактировать. Не путайте объект указатель с линией-указателем автоматически создаваемой Автокадом как часть размерной линии. Указатель может быть в форме прямого сегмента или кривой. Цвет его зависит от цвета текущих размерных линий. Масштаб его управляется общим масштабом размерностей, установленном в активном размерном стиле. Тип и размер стрелок, если они есть, управляется первой стрелкой определенной в активном размерном стиле. Малая линия, известная как крючок, обычно присоединена к примечанию, если у указателя нет примечания, то нет и крючка. Для создания указателя используется метод AddLeader, принимающий три параметра: массив координат в форме переменной типа Variant, собственно примечание, и тип определяющий форму - прямой или кривая, а так же есть у него стрелка или нет. Следующие константы определяют тип указателя: acLineNoArrow, acLineWithArrow, acSplineNoArrow, acSplineWithArrow.
Sub CreateLeader()
  Dim leaderObj As AcadLeader
  Dim points(0 To 8) As Double
  Dim leaderType As Integer
  Dim annotationObject As AcadObject
  
  points(0) = 0: points(1) = 0: points(2) = 0
  points(3) = 4: points(4) = 4: points(5) = 0
  points(6) = 4: points(7) = 5: points(8) = 0
  leaderType = acLineWithArrow
  Set annotationObject = Nothing
      
  Set leaderObj = ThisDrawing.ModelSpace.AddLeader(points, annotationObject, leaderType)
  ZoomExtents
End Sub

ДОБАВЛЕНИЕ ПРИМЕЧАНИЯ К УКАЗАТЕЛЮ

Примечание может быть в виде объектов Tolerance, MText, BlockRef и присоединяется к указателю только при его создании.

АССАЦИАТИВНОСТЬ УКАЗАТЕЛЕЙ

Примечание связывается с соответствующим указателем и при перемещении примечания конечная точка указателя перемещается с ним. Уничтожение обоих объектов методами Erase, Add (для блоков) и WBlock. При копировании примечания и указателя одной командой они становятся ассациативными в любом случае. Если ассациативность разрывается по любой причине, например если копируется отдельно указатель или удаляется примечание, то крючок тоже удаляется.
Sub AddAnnotation()
  Dim leaderObj As AcadLeader
  Dim mtextObj As AcadMText
  Dim points(0 To 8) As Double
  Dim insPoint(0 To 2) As Double
  Dim width As Double
  Dim leaderType As Integer
  Dim annotObj As Object
  Dim textString As String, msg As String
  
  textString = "Hello, World."
  insPoint(0) = 5: insPoint(1) = 5: insPoint(2) = 0: width = 2
  Set mtextObj = ThisDrawing.ModelSpace.AddMText(insPoint, width, textString)
  ' данные для указателя
  points(0) = 0: points(1) = 0: points(2) = 0
  points(3) = 4: points(4) = 4: points(5) = 0
  points(6) = 4: points(7) = 5: points(8) = 0
  leaderType = acLineWithArrow
     
  ' Создаем указатель и связываем с ним объект MText
  Set annotObj = mtextObj
  Set leaderObj = ThisDrawing.ModelSpace.AddLeader(points, annotObj, leaderType)
  ZoomExtents
End Sub

РЕДАКТИРОВАНИЯ АССАЦИАТИВНОСТИ УКАЗАТЕЛЯ

Исключая случая ассациативности указатель и его примечание являются отдельными объектами. Хотя текстовые примечания создаются с использованием системных переменных DIMCLRT, DIMTXT, DIMTXSTY определяющих их цвет, высоту и стиль они не могут быть изменены через эти переменные, т.к. на самом деле не являются объектами Размеры. Редактировать их следует теми же методами что и обычный мультитекст. Метод Evalute обновляет размеры указателя при изменении примечания, если это необходимо.

РЕДАКТИРОВАНИЕ УКАЗАТЕЛЕЙ

Любые изменения примечаний приводят к изменению конечной точки указателя. Для измения размера указателя его можно масштабировать, при этом размеры примечания остаются без изменения. Можно так же перемещать, вращать и зеркально отражать указатель.

СОЗДАНИЕ ГЕОМЕТРИЧЕСКИХ ДОПУСКОВ

Геометрические допуски показвают возможные отклонения форм, профилей и т.д. Для их создания есть метод AddTolerance, требующий три параметра - текстовая строка, расположение и направляющий вектор. Можно так же копировать, стирать, вращать, масштабировать допуски. Пример создания:
Sub CreateTolerance()
  Dim toleranceObj As AcadTolerance
  Dim textString As String
  Dim insPoint(0 To 2) As Double
  Dim direction(0 To 2) As Double
  
  ' Define the tolerance object
  textString = "Here is the Feature Control Frame"
  insPoint(0) = 5: insPoint(1) = 5: insPoint(2) = 0
  direction(0) = 1: direction(1) = 1: direction(2) = 0
  ' Create the tolerance object in model space
  Set toleranceObj = ThisDrawing.ModelSpace.AddTolerance(textString, insPoint, direction)
  ZoomExtents
End Sub

РЕДАКТИРОВАНИЕ ДОПУСКОВ

Допуски подвержены влиянию нескольких системных переменных: DIMCLRD, DIMCLRT, DIMGAP, DIMTXT, DIMTXTSTY
Читать дальше - В начало - На главную