Тема: Как узнать координаты диагонали прямоугольника?
Есть чертеж (предположим А3).
Как программно узнать координаты левой нижней и правой верхней точек прямоугольника, в котором находится запечатываемая область? Может есть специальные методы?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как узнать координаты диагонали прямоугольника?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть чертеж (предположим А3).
Как программно узнать координаты левой нижней и правой верхней точек прямоугольника, в котором находится запечатываемая область? Может есть специальные методы?
Вобщем нужны координаты эффективной площади.
Это немного модифицированный пример из Help'a. Программа корректно определяет координаты эффективной области печати только в том случае, если настройки листа соответствуют свойствам одного из системных принтеров. Немного сумбурно, но это легче увидеть, чем объяснить. Поэкспериментируйте, установив View - Display - UCS Icon - Origin
, и Вы поймете, что я имею в виду. В это случае координаты нижнего верхнего угла определяются свойством PlotOrigin
(если оно не изменялось вручную, то - 0,0). А координаты верхнего правого угла будут определяться длиной и шириной области печати.
Option Explicit Option Compare Text Option Base 0 Sub Example_GetPaperMargins() Dim Layout As ACADLayout Dim msg, Measurement As String Dim originalValue, marginLowerLeft, marginUpperRight As Variant Dim PaperHeight As Double Dim PaperWidth As Double Dim PlotHeight As Double Dim PlotWidth As Double On Error GoTo Exit_Error msg = vbCrLf & vbCrLf ' Получаем информацию обо всех листах текущего чертежа For Each Layout In ThisDrawing.Layouts ' Пропускаем пространство модели If Layout.Name <> "Model" Then ThisDrawing.ActiveLayout = Layout msg = msg & "Лист: наименование - " & Layout.Name & ", формат - " & Layout.CanonicalMediaName & vbCrLf & vbCrLf ' Получаем информацию о координатах области печати и размерах листа Layout.GetPaperMargins marginLowerLeft, marginUpperRight Layout.GetPaperSize PaperWidth, PaperHeight originalValue = Layout.PlotOrigin PlotWidth = PaperWidth - marginUpperRight(0) - marginLowerLeft(0) PlotHeight = PaperHeight - marginUpperRight(1) - marginLowerLeft(1) ' Еденицы измерения If Layout.PaperUnits = acInches Then Measurement = " дюймов" Else If Layout.PaperUnits = acMillimeters Then Measurement = " миллиметра" Else Measurement = "" End If End If msg = msg & vbTab & "Размеры листа: " & Format(PaperWidth, "0") & " х " & Format(PaperHeight, "0") & Measurement & vbCrLf msg = msg & vbTab & "Эффективная область печати: " & Format(PlotWidth, "0.0000") & " х " & Format(PlotHeight, "0.0000") & Measurement & vbCrLf & vbCrLf msg = msg & vbTab & "Координаты области печати: " & vbCrLf & _ vbTab & vbTab & "Нижний левый угол: " & vbTab & Format(originalValue(0), "0.0000") & "," & Format(originalValue(1), "0.0000") & vbCrLf & _ vbTab & vbTab & "Верхний правый угол: " & vbTab & Format(PlotWidth, "0.0000") & "," & Format(PlotHeight, "0.0000") & vbCrLf & vbCrLf msg = msg & vbTab & "Отступы от границ листа: " & vbCrLf & _ vbTab & vbTab & "слева: " & vbTab & Format(marginLowerLeft(0), "0.0000") & Measurement & vbCrLf & _ vbTab & vbTab & "справа: " & vbTab & Format(marginUpperRight(0), "0.0000") & Measurement & vbCrLf & _ vbTab & vbTab & "сверху: " & vbTab & Format(marginUpperRight(1), "0.0000") & Measurement & vbCrLf & _ vbTab & vbTab & "снизу: " & vbTab & Format(marginLowerLeft(1), "0.0000") & Measurement & vbCrLf & vbCrLf msg = msg & "_____________________" & vbCrLf MsgBox "Информация о листах текущего чертежа: " & msg Else GoTo Next_Layout End If Next_Layout: msg = vbCrLf & vbCrLf Next GoTo Exit_Here Exit_Error: MsgBox Err.Description & " - " & Err.Number Err.Clear GoTo Exit_Here Exit_Here: Set Layout = Nothing Set originalValue = Nothing Set marginLowerLeft = Nothing Set marginUpperRight = Nothing End Sub
Спасибо. Поразбираюсь...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как узнать координаты диагонали прямоугольника?
Форум работает на PunBB, при поддержке Informer Technologies, Inc