ВЫЧЕРЧИВАНИЕ И НАСТРОЙКА РАЗМЕТКИ (LAYOUTS)
Понятие пространства модели и пространства листа: в пространстве модели обычно вычерчивают в реальных мировых единицах. Пространство листа представляет модель в том виде в котором она выходит на печать. В пространстве листа можно настраивать различные видовые экраны и показывать модель или ее детали в произволном масштабе. Для одного чертежа может существовать много пространств листов.Вся геометрия рисунка содержится в макетах. Геометрия пространства модели содержится на на одном макете называемом
Model
. Его нельзя переименовать, но можно создать еще один. В одном рисунке может быть только одно пространство модели.
Геометрия пространства листа также содержится на макетах. Может быть много различных макетов пространства листа, каждый из которых представляет свою конфигурацию для печати.
В ActiveX-автоматизации объектModelSpace
содержит всю геометрию макета пространства модели. А т.к. пространств листов много, то объектPaperSpace
указывает на последний активный.Содержимое любого макета распределено между двумя различными объектами ActiveX
Layout и Block
. ОбъектLayout
содержит настройки печати и визуальные свойства появляющиеся в интерфейсе пользователя. ОбъектBlock
содержит геометрию макета. Каждый объектLayout
ассоциируется только с одним объектомBlock
. Для доступа к объекту используется свойствоBlock
, а для доступа из блока кLayout
используется соответствующее свойство блока. ОбъектPlotConfiguration
подобен объектуLayout
отличаясь тем, что не имеет связи с конкретным объектомBlock
, а является именованной коллекцией настроек плоттера.Настройки макета управляют окончательной печатью. Они затрагивают - размер бумаги, масштаб вычерчивания, область вычерчивания, начало координат вычерчивания и устройство печати. Все настройки
Layout
доступны через его свойства и методы.Для выбора размера бумаги и единиц следует обращаться к каноническому имени принтера, можно также указать единицы используя свойство
PaperUnits
, которое принимает одно из трех значений:acInches, acMillimeters, acPixels
. Для установки начала координат плоттера есть свойство CenterPlot, (по умолчанию оно равно FALSE)Чтобы задать область вычерчивания есть свойство
PlotType
, которое может принимать одно из следующих значений: acDisplay - печатать все содержимое пространства модели (недоступно при печати из пространства листа), acExtents - печатать все что находится внутри границ, acLimits - печатать все внутри пределов, acView - печатать видовой экран заданныйViewToPlot
, acWindow - печатать содержимое выбранного методомSetWindowToPlot
окна, acLayout - печатать содержимое в границах пространства листа (недоступно при печати из пространства модели).Чтобы задать масштаб вычерчивания есть два метода - стандартный масштаб установив свойство
UseStandardScale
в значение TRUE, после чего задать значение свойстваStandardScale
. Более гибкий метод - ввод пользовательского масштаба черезUseStandardScale
= FALSE и далее методомSetCustomScale
указываем нужный масштаб. Можно также использовать значениеacScaleToFit
свойстваStandardScale
для подгонки изображения под размер листа. Для управления масштабированием веса линий свойствоScaleLineweights
следует установить = TRUE.Имя устройства печати задается свойством
ConfigName
, если его не трогать то печать будет идти на устройство по-умолчанию.ВИДОВЫЕ ЭКРАНЫ
Для одновременного отображения нескольких частей рисунка, в т.ч. в разных масштабах существуют видовые экраны (ViewPorts). Они могут быть как "впритык" друг к другу, так и плавающими. Рисовать примечания можно непосредственно в пространстве листа не затрагивая пространства модели. Нельзя редактировать модель из пространства листа. Для доступа к модели в объектеPViewport
следует переключиться из пространства листа в пространство модели через свойствоActiveSpace
. При работе вPViewport
объекте возможности редактирования почти такие же как и вViewport
, однако в первом случае более удобна работа с отдельными видами. К примеру, можно заморозить или отключить слои на некоторых видовых экранах не затрагивая остальные. Можно включить и выключить весь видовой экран. Можно так же выравнивать виды по видовым экранам. При работе с объектомViewPort
свойствоActiveSpace
должно быть установлено вacModelSpace
. При работе с объектомPViewport
свойствоActiveSpace
можно установить как в значениеacModelSpace
так и вacPaperSpace
, то есть переключаться по мере необходимости.Свойство
Тип видового экрана Состояние Применение PViewport ActiveSpace = acPaperspace Упорядочивание лэйаутов созданием плавающих видовых экранов, редактирование не затрагивает модель PViewport ActiveSpace = acModelspace Работа с плавающими видовыми экранами для редактирования модели Viewport ActiveSpace = acModelspace Разбивка экрана на пристыкованные блоки и редактирование модели ActiveSpace
меняет значение системной переменнойTILEMODE
.
УстановкаThisDrawing.ActiveSpace = acModelSpace
эквивалентнаTILEMODE = on
, и установкаThisDrawing.ActiveSpace = acPaperSpace
эквивалентнаTILEMODE = off
.
Так же свойствоMSpace
является эквивалентом командMSpace и PSpace
. УстановкаThisDrawing.MSpace = TRUE
то же самое что использование командыMSPACE
, а установкаThisDrawing.MSpace = FALSE
эквивалентна командеPSPACE
то есть переключает в пространство листа. В дополнение к сказанному требуется использование методаDisplay
перед установкой свойстваMSpace = TRUE
, т.к. он инициализирует определенные графические установки, которые должны быть установлены перед переключением в пространство модели. Однако в ActiveX автоматизации установку этих настроек возлагают на программиста. Запомните: следует включить display методомDisplay
по крайней мере для одного объектаPViewport
перед тем как устанавливать свойствMSpace = TRUE
ПЕРЕКЛЮЧЕНИЕ В ЛЭЙАУТЫ ПРОСТРАНСТВА ЛИСТА
Переключиться из пространства модели в последний активный лэйаут пространства листа можно так:1. ThisDrawing.ActiveSpace = acPaperSpace
.
2. ThisDrawing.MSpace = FALSE
Когда вы находитесь в пространстве листа автокад отображает иконку ПСК в нижнем левом углу графической области. Перекрестие указывает, что область пространства листа может быть редактирована. (не виды в видовых экранах)ПЕРЕКЛЮЧЕНИЕ В ПРОСТРАНСТВО МОДЕЛИ
Из пространства листа можно переключаться в плавающие или закрепленные стык в стык видовые экраны пространства модели. Для переключения в плавающий видовой экран инициализируем дисплейThisDrawing.ActivePViewport.Display=TRUE
и переключаемсяThisDrawing.MSpace = TRUE
. Для переключения к состыкованным видовым экранам нужно выполнить дополнительный шагThisDrawing.MSpace = TRUE
СОЗДАНИЕ ВИДОВЫХ ЭКРАНОВ ПРОСТРАНСТВА ЛИСТА
Видовые экраны пространства листа создаются методомAddPViewport
. Метод требует указания центральной точки а также ширины и высоты. Перед применением метода следует установить пространство листа текущим, обычноTILEMODE = 0
.
После создания объектаPViewport
можно устанавливать свойстваDirection, LensLength, GridOn, Layer, Linetype, LinetypeScale
.
Пример переключений между пространствами и создания плавающего видового экранаПорядок шагов в вышеприведенном коде очень важен! Для того чтобы менять значения свойств объектаSub SwitchToPaperSpace() ' Установка активным пространства листа ThisDrawing.ActiveSpace = acPaperSpace ' Создание видового экрана листа Dim newVport As AcadPViewport Dim center(0 To 2) As Double center(0) = 3.25 : center(1) = 3 : center(2) = 0 Set newVport = ThisDrawing.PaperSpace.AddPViewport(center, 6, 5) ' Изменим направление вида Dim viewDir(0 To 2) As Double viewDir(0) = 1 : viewDir(1) = 1 : viewDir(2) = 1 newVport.direction = viewDir ' Включим видовой экран newVport.Display True ' Обратно в пространство модели ThisDrawing.MSpace = True ' Сделаем вид активным ' (не всегда нужно, но неплохая идея) ThisDrawing.ActivePViewport = newVport ZoomExtents ' Отключим редактирование ThisDrawing.MSpace = False ' ZoomExtents в пространстве листа ZoomExtents End Sub
Viewport
методDisplay
д.б. отключен, а перед тем как делать видовой экран текущим методDisplay
включить.
Пример создания плавающего видового экрана. Использует предыдущий пример и устанавливает для четырех видовых экранов вид сверху, спереди, справа и изометрический соответствующим образом. Чтобы увидеть результаты следует создать сферу 3DSolid.Sub FourPViewports() Dim topVport, frontVport As AcadPViewport Dim rightVport, isoVport As AcadPViewport Dim pt(0 To 2) As Double Dim viewDir(0 To 2) As Double ThisDrawing.ActiveSpace = acPaperSpace ThisDrawing.MSpace = True ' Возьмем существующий PViewport и сделаем его topVport pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0 Set topVport = ThisDrawing.ActivePViewport ' Нет необходимости указывать направление для вида с верху topVport.center = pt topVport.width = 2.5 topVport.height = 2.5 topVport.Display True ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = topVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace ' Создадим и настроим фронтальный вид frontVport pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0 Set frontVport = ThisDrawing.PaperSpace.AddPViewport(pt, 2.5, 2.5) viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0 frontVport.direction = viewDir frontVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = frontVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace ' А теперь вид с права rightVport pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0 Set rightVport = ThisDrawing.PaperSpace.AddPViewport(pt, 2.5, 2.5) viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0 rightVport.direction = viewDir rightVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = rightVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace ' И наконец изометрический isoVport pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0 Set isoVport = ThisDrawing.PaperSpace.AddPViewport(pt, 2.5, 2.5) viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1 isoVport.direction = viewDir isoVport.Display acOn ThisDrawing.MSpace = True ThisDrawing.ActivePViewport = isoVport ZoomExtents ZoomScaled 0.5, acZoomScaledRelativePSpace ThisDrawing.Regen True End Sub
ИЗМЕНЕНИЕ ВИДА И СОДЕРЖИМОГО ВИДОВЫХ ЭКРАНОВ
Чтобы изменить вид объектаViewPort
надо находиться в пространстве модели и видовой экран должен быть активен. Для редактирования в плавающем видовом экране в пространстве модели сделайте видовой экран активным установкой свойстваActiveViewport
следующим образомThisdrawing.ActiveViewport = MyViewportObject
и редактируйте. Можно также создавать объекты такие как примечания, размерности и др. в пространстве листа. Однако для этого следует установитьActiveSpace в состояние FALSE
и включить пространство листа через свойствоMSpace
. Объекты создаваемые в пространстве листа только там и видны.
Масштабирование видов относительно пространства листа.
Перед печатью можно подобрать точный масштаб для каждой секции чертежа, (видового экрана). Масштабирование видов относительно пространства листа основывается на последовательном изменении масштаба каждого видового экрана. При работе в пространстве листа масштаб представляет собой отношение размера листа к реальному размеру вычерчиваемого объекта отображаемого в видовых экранах. МетодZoomScaled
, масштабирует видовые экраны относительно пространства листа. Он принимает три параметра: видовой экран, фактор масштабирования, и тип масштабирования. Третий параметр необязателен, он позволяет выбрать масштабирование относительно границ рисунка, относительно текущего вида, относительно единиц пространства листа (acZoomScaledRelativePSpace
). Дробные значения фактора масштаба уменьшают изображение.Масштабирование образцов типов линий в пространстве листа
В пространстве листа любой тип линий может масштабироваться двумя путями. Основываясь на единицах вычерчивания пространства в котором объект создавался или в универсальной форме основываясь на единицах пространства листа. Системная переменнаяPSLTSCALE
позволяет содержать различные масштабы типов линий для объектов отображаемых в различных масштабах и в разных видовых экранах. Это так же затрагивает линии в 3D-видах.Скрытие линий в видовых экранах
Если чертеж содежит трехмерные объекты, то можно убрать скрытые линии с заданного видового экрана перед тем как выводить на печать, для этого используется свойствоRemoveHiddenLines
для заданного видового экрана, которое принимает значение TRUE или FALSE. Для отмены вывода на печать скрытых линий видовых экранов пространства модели есть свойствоPlotHidden
объектаLayout
.ПЕЧАТЬ ЧЕРТЕЖЕЙ
Печатать чертеж можно в том виде в котором он представлен в пространстве модели или в виде подготовленном для печати через пространство листа. Печать из пространства модели часто предпочтительна когда хочется распечатать черновик для предварительного просмотра-проверки. Когда же модель готова можно печатать из пространства листа. Печать задействует два объекта ActiveXLayout и Plot
первый содержит настройки печати для данного лэйаута, второй методы и свойства для запуска и отслеживания процесса печати.ВЫПОЛНЕНИЕ БАЗОВЫХ ОПЕРАЦИЙ
ОбъектомPlot
обладает следующими свойствами и методами:PlotToFile, PlotToDevice, DisplayPlotPreview, SetLayoutsToPlot, StartBatchMode, QuietErrorMode, NumberOfCopies, BatchPlotProgress
(получить состояние или прервать печать). МетодSetLayoutsToPlot
, следует вызывать перед каждым методомPlotToDevice и PlotToFile
. В противном случае будет печататься активный лэйаут.
Если свойствоNumberOfCopies
не переустановлено, то будет использовано значение от предыдущего задания. Перед началом пакетной печати установитеQuietErrorMode=TRUE
, чтобы печать шла непрерывно. Далее методStartBatchMode
начинает печать.ПЕЧАТЬ ИЗ ПРОСТРАНСТВА МОДЕЛИ
Обычно при печати больших чертежей указывается масштаб преобразования из единиц вычерчивания в единицы печати. Однако, при печати из пространства модели используются следующие умолчания: печать на системный принтер, текущего дисплея, масштабируется так чтобы полностью уместилось, вращение 0 и смещение 0, 0. Для изменения умолчаний - измени свойство объектаLayout
ассоциированного с пространством модели. Пример печати границ активного лэйаута.Имя устройства печати задается с помощьюSub PrintModelSpace() ' Проверим что активно пространство модели If ThisDrawing.ActiveSpace = acPaperSpace Then ThisDrawing.MSpace = True ThisDrawing.ActiveSpace = acModelSpace End If ' Зададим границы и масштаб печатаемой области. ThisDrawing.ModelSpace.Layout.PlotType = acExtents ThisDrawing.ModelSpace.Layout.StandardScale = acScaleToFit ' И число копий ThisDrawing.Plot.NumberOfCopies = 1 ' Запустим печать ThisDrawing.Plot.PlotToDevice End Sub
ConfigName
, но может быть переопределено методомPlotToDevice
с указанием файла PC3ПЕЧАТЬ ИЗ ПРОСТРАНСТВА ЛИСТА
В любой момент времени можно распечатать сразу несколько лэйаутов, указав их имя. Пример печати двух таких на плотере по умолчанию:Sub PrintPaperSpace() ' Установим лэйауты пространства листа которые будем печатать Dim strLayouts(0 To 1) As String Dim varLayouts As Variant strLayouts(0) = "Layout1" strLayouts(1) = "Layout2" varLayouts = strLayouts ThisDrawing.Plot.SetLayoutsToPlot varLayouts ' Число копий ThisDrawing.Plot.NumberOfCopies = 1 ' Печать ThisDrawing.Plot.PlotToDevice End Sub
Читать дальше - В начало - На главную