Тема: Как программно указать размер бумаги?

он печатаыет А4 как мне указат формат фаыла, чтоби печатал А3
ThisDrawing.Plot.PlotToDevice \\ba3\cadprn
Спасибо
Предупреждение! Помещайте транслит между тагами [rus] и [/rus].
/Администратор./

Re: Как программно указать размер бумаги?

Document.PlotConfigurations
PlotConfiguration :
GetCanonicalMediaNames - список доступных размеров бумаги для устройства
CanonicalMediaName - текущий размер бумаги

Re: Как программно указать размер бумаги?

[rus]
yesli dokumentaciya, kak pechatac? ili mojeteli rasshirenno obyasnit process.
spasibo
[/rus]

Re: Как программно указать размер бумаги?

Совет - перед этим надо поставить принтер в текущий.
НЕ все бумаги прописаны под все принтера....
Вообще эта тема в vba гючна - я просто писал
модуль для выставления в layoutах одного принтера и pape-сайза.

Re: Как программно указать размер бумаги?

А как можно указать размер листа 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" по умолчанию, так и остаётся...

Re: Как программно указать размер бумаги?

Заметила ещё одну не понятную мне особенность. Список допустимых размеров получается разный в зависимости от того, где я его пытаюсь получить.
1) У меня есть формочка, в ней - список доступных притеров. Когда пользователь выбирает принтер, для него появляется список допустимых форматов (получаю его с помощью GetCanonicalMediaNames()).
2) в обработчике формы пытаюсь создать Layuot с нужными размеранми листа. К большому сожалению, строчка

ThisDrawing.ActiveLayout.CanonicalMediaName = MyCanonicalMediaName

не решает проблему, ибо среди CanonicalMediaName-ов для ActiveLayout-а может не оказаться выбранного пользователем! Команда

ThisDrawing.ActiveLayout.GetCanonicalMediaNames()

возвращет совсем не тот список форматов, который был в формочке, даже если в ConfigName установлен правильный (выбранный пользователем) принтер.
Почему так? Что я неправильно делаю?
P.S. при очень счастливом стечении обстоятельств, если выбранный формат оказывается в списке п.2, лист создаётся нормально.

Re: Как программно указать размер бумаги?

[rus]Ja ne uveren, no poprobuj pered ustanovkoj bumagi sdelat'
[/rus]

 Layout.RefreshPlotDeviceInfo()