Тема: Как программно указать размер бумаги?
он печатаыет А4 как мне указат формат фаыла, чтоби печатал А3
ThisDrawing.Plot.PlotToDevice \\ba3\cadprn
Спасибо
Предупреждение! Помещайте транслит между тагами [rus] и [/rus].
/Администратор./
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как программно указать размер бумаги?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
он печатаыет А4 как мне указат формат фаыла, чтоби печатал А3
ThisDrawing.Plot.PlotToDevice \\ba3\cadprn
Спасибо
Предупреждение! Помещайте транслит между тагами [rus] и [/rus].
/Администратор./
Document.PlotConfigurations
PlotConfiguration :
GetCanonicalMediaNames - список доступных размеров бумаги для устройства
CanonicalMediaName - текущий размер бумаги
[rus]
yesli dokumentaciya, kak pechatac? ili mojeteli rasshirenno obyasnit process.
spasibo
[/rus]
Совет - перед этим надо поставить принтер в текущий.
НЕ все бумаги прописаны под все принтера....
Вообще эта тема в vba гючна - я просто писал
модуль для выставления в layoutах одного принтера и pape-сайза.
А как можно указать размер листа Layuot-a (просто задать размеры правильные, я пока не хочу ничего печатать)? Я сделала, как советовали в какой-то теме этого форума, но присвоить в ThisDrawing.ActiveLayout.CanonicalMediaName ничего не получается. Мой код:
Dim Layout As AcadLayout, mediaNames As Variant, x As Integer, OK As Boolean Set Layout = ThisDrawing.ModelSpace.Layout Layout.RefreshPlotDeviceInfo mediaNames = Layout.GetCanonicalMediaNames() OK = False For x = LBound(mediaNames) To UBound(mediaNames) If PaperSizeComboBox.Value = Layout.GetLocaleMediaName(mediaNames(x)) Then ThisDrawing.ActiveLayout.CanonicalMediaName = mediaNames(x) OK = True End If Next
В результате, если верить Debuger-у, то CanonicalMediaName как был равен "А4" по умолчанию, так и остаётся...
Заметила ещё одну не понятную мне особенность. Список допустимых размеров получается разный в зависимости от того, где я его пытаюсь получить.
1) У меня есть формочка, в ней - список доступных притеров. Когда пользователь выбирает принтер, для него появляется список допустимых форматов (получаю его с помощью GetCanonicalMediaNames()).
2) в обработчике формы пытаюсь создать Layuot с нужными размеранми листа. К большому сожалению, строчка
ThisDrawing.ActiveLayout.CanonicalMediaName = MyCanonicalMediaName
не решает проблему, ибо среди CanonicalMediaName-ов для ActiveLayout-а может не оказаться выбранного пользователем! Команда
ThisDrawing.ActiveLayout.GetCanonicalMediaNames()
возвращет совсем не тот список форматов, который был в формочке, даже если в ConfigName установлен правильный (выбранный пользователем) принтер.
Почему так? Что я неправильно делаю?
P.S. при очень счастливом стечении обстоятельств, если выбранный формат оказывается в списке п.2, лист создаётся нормально.
[rus]Ja ne uveren, no poprobuj pered ustanovkoj bumagi sdelat'
[/rus]
Layout.RefreshPlotDeviceInfo()
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как программно указать размер бумаги?
Форум работает на PunBB, при поддержке Informer Technologies, Inc