'1. Печать в пдф при помощи выбора нижней левой и верхней правой точек
Sub PlotByPoints()
' Декларируем
Dim Layout As AcadLayout
Dim pt1 As Variant, pt2 As Variant
' Устанавливаем
Set Layout = ThisDrawing.ActiveLayout
' Получаем первую точку рамки
pt1 = ThisDrawing.Utility.GetPoint(, "Выберите нижний левый угол")
' Переводим координаты из WCS в DCS
pt1 = ThisDrawing.Utility.TranslateCoordinates(pt1, acWorld, acDisplayDCS, False)
ReDim Preserve pt1(0 To 1) ' Приводим массив к 2д виду, удаляем z координату
' Получаем вторую точку
pt2 = ThisDrawing.Utility.GetPoint(, "Выберите правый верхний угол")
' Переводим координаты из WCS в DCS
pt2 = ThisDrawing.Utility.TranslateCoordinates(pt2, acWorld, acDisplayDCS, False)
ReDim Preserve pt2(0 To 1) ' Приводим массив к 2д виду, удаляем z координату
' Настройка печати
Layout.ConfigName = "PDFCreator"
' Обновим текущую плот-информацию
Layout.RefreshPlotDeviceInfo
' Печатаем на формат A0
Layout.CanonicalMediaName = GetCanonicalFromLocalName(Layout, "A0")
Layout.CenterPlot = True
Layout.PlotRotation = ac90degrees
Layout.StandardScale = acScaleToFit
Layout.StyleSheet = "acad.ctb"
' Устанавливаем рамки окошка
Layout.SetWindowToPlot pt1, pt2
Layout.PlotType = acWindow
' Отправляем на печать
ThisDrawing.Regen acAllViewports
ThisDrawing.Plot.PlotToDevice
End Sub
' Функция преобразует из локального имени в каноническое
Function GetCanonicalFromLocalName(Layout As AcadLayout, lName As String) As String
Dim cNames As Variant
cNames = Layout.GetCanonicalMediaNames()
Dim cName As String
cName = Layout.CanonicalMediaName
For i = LBound(cNames) To UBound(cNames)
sName = Layout.GetLocaleMediaName(cNames(i))
If lName = sName Then
cName = cNames(i)
Exit For
End If
Next
GetCanonicalFromLocalName = cName
End Function