ВЫЧЕРЧИВАНИЕ И НАСТРОЙКА РАЗМЕТКИ (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 SubViewportметод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 SubConfigName, но может быть переопределено методом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
Читать дальше - В начало - На главную