Изменение формата листа

Автор Тема: Изменение формата листа  (Прочитано 6816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Изменение формата листа
« : 22-05-2017, 10:06:03 »
Добрый день,
Подскажите, можно ли как то через API менять положение и размеры границ листа на вкладке "Лист"?
Т.е. планируется чтобы при вставке форматки во вкладке листа под ним автоматически была область печати.

Отмечено как Решение Elfilagas 23-05-2017, 09:02:00

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Изменение формата листа
« Ответ #1 : 22-05-2017, 10:09:20 »
Это относится к настройкам печати для листа. Начните отсюда и далее по накатанной - по запросу в гугле C# autocad layout plot settings можно найти много информации

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #2 : 22-05-2017, 16:46:08 »
Спасибо, что-то получается, но возник вопрос, можно ли задать произвольный размер области печати?
Пока получается только выбрать формат листа для определенного принтера и вписать все что есть на листе в этот формат.
Смог считать размеры печати, но задать их не получается:
Код - vb.net [Выбрать]
  1.             Dim doc As Document = Application.DocumentManager.MdiActiveDocument
  2.             Dim db As Database = doc.Database
  3.             Dim ed As Editor = doc.Editor
  4.  
  5.             Dim layout As Layout
  6.             Using Tx As Transaction = db.TransactionManager.StartTransaction()
  7.                 Dim layoutMgr As LayoutManager = LayoutManager.Current
  8.                 layout = TryCast(Tx.GetObject(layoutMgr.GetLayoutId(layoutMgr.CurrentLayout), OpenMode.ForWrite), Layout)
  9.                 Tx.Commit()
  10.             End Using
  11.  
  12.             MsgBox(layout.PlotPaperSize.X & " --- " & layout.PlotPaperSize.Y)
« Последнее редактирование: 22-05-2017, 16:57:56 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #3 : 22-05-2017, 16:58:47 »
Elfilagas
Прочитай пожалуйста по поводу форматирования кода у нас на форуме (у меня в подписи) и придерживайся этого правила.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #4 : 22-05-2017, 17:00:08 »
можно ли задать произвольный размер области печати?
А в AutoCAD'е вручную ты можешь это задать? Если нет, то и через API ты это не сделаешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #5 : 23-05-2017, 11:07:44 »
К этой же теме. Попробовал создать виртуальный принтер и задать нестандартные форматы нужного размера, чтобы затем применить к листам. Но при попытке применить по имени формата - выдает ошибку что параметр задан не верно:
Код - vb.net [Выбрать]
  1. ' Set the Plotter and page size
  2. acPlSetVdr.SetPlotConfigurationName(acPlSet, _
  3.                                  "NewVirtPlot.pc3", _
  4.                                  "A4Vert")
Стандартные форматы применяет корректно:
Код - vb.net [Выбрать]
  1. ' Set the Plotter and page size
  2. acPlSetVdr.SetPlotConfigurationName(acPlSet, _
  3.                                  "NewVirtPlot.pc3", _
  4.                                  "ISO_expand_A3_(297.00_x_420.00_mm)")
В чем может быть причина?

И еще один вопрос, для расширенных полей название "ISO_expand_A3", а как будет для стандартных форматов без полей? (нет англ. версии и нагуглить не выходит)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #6 : 23-05-2017, 11:12:28 »
И еще один вопрос, для расширенных полей название "ISO_expand_A3", а как будет для стандартных форматов без полей? (нет англ. версии и нагуглить не выходит)
Вообще-то у каждого плоттера (в том числе и виртуального) могут быть свои наименования форматов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #7 : 23-05-2017, 11:23:43 »
(нет англ. версии и нагуглить не выходит)


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #8 : 23-05-2017, 11:35:48 »
Вообще-то у каждого плоттера (в том числе и виртуального) могут быть свои наименования форматов.
"Expand" , работает вроде на всех, где есть такой формат, думал и для "без полей" тоже как то одинаково будет.
Интересует для стандартного плоттера "DWF6 ePlot".

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #9 : 23-05-2017, 11:41:47 »
Александр, так форматы, которые Вы прислали - это наоборот с максимальными полями, у expand поля поменьше, а вот как будет "без полей"?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #10 : 23-05-2017, 11:53:21 »
Александр, так форматы, которые Вы прислали - это наоборот с максимальными полями, у expand поля поменьше, а вот как будет "без полей"?
Совсем без полей я не нашёл. Вот с минимальными полями:


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #11 : 23-05-2017, 12:23:33 »
Спасибо большое, это то что нужно.
Тогда остался один вопрос, почему программно не применяются нестандартные форматы:
К этой же теме. Попробовал создать виртуальный принтер и задать нестандартные форматы нужного размера, чтобы затем применить к листам. Но при попытке применить по имени формата - выдает ошибку что параметр задан не верно:
Код - vb.net [Выбрать]
' Set the Plotter and page size
acPlSetVdr.SetPlotConfigurationName(acPlSet, _
                                 "NewVirtPlot.pc3", _
                                 "A4Vert")
Стандартные форматы применяет корректно:
Код - vb.net [Выбрать]
' Set the Plotter and page size
acPlSetVdr.SetPlotConfigurationName(acPlSet, _
                                 "NewVirtPlot.pc3", _
                                 "ISO_expand_A3_(297.00_x_420.00_mm)")
В чем может быть причина?
Попробовал уже разные имена для нестандартных форматов на разных языках и даже только из цифр, все равно не применяется программно. Хотя в списке форматов они появляются и вручную их можно применить.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #12 : 23-05-2017, 12:41:32 »
Почитай эту тему: http://adn-cis.org/forum/index.php?topic=7795.0
Скорее всего тебе нужно будет задать:
Код - vb.net [Выбрать]
  1. acPlSetVdr.SetPlotConfigurationName(acPlSet, "NewVirtPlot.pc3", Nothing)
  2. acPlSetVdr.SetCanonicalMediaName(acPlSet, "A4Vert")

 
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #13 : 23-05-2017, 13:53:16 »
Так тоже ошибка InvalidInput.

Попробовал вывести весь список форматов для виртуального принтера через:
Код - vb.net [Выбрать]
  1. acPlSetVdr.GetCanonicalMediaNameList(acPlSet)
И выяснилось что все нестандартные форматы, не зависимо от того какое имя им задавать имеют имя "UserDefinedMetric" с указанием размера, например: "UserDefinedMetric (210.00 x 297.00мм)".
Соответственно с таким именем работает:
Код - vb.net [Выбрать]
  1. acPlSetVdr.SetPlotConfigurationName(acPlSet, "NewVirtPlot.pc3", "UserDefinedMetric (210.00 x 297.00мм)")
Спасибо за помощь.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #14 : 23-05-2017, 14:23:11 »
И выяснилось что все нестандартные форматы, не зависимо от того какое имя им задавать имеют имя "UserDefinedMetric" с указанием размера, например: "UserDefinedMetric (210.00 x 297.00мм)".
А если получить для него свойство acPlSetVdr.GetLocaleMediaName(acPlSet,номер_пользовательского_формата_листа)? Не будт ли "A4Vert"?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Изменение формата листа
« Ответ #15 : 24-05-2017, 10:21:49 »
Да, возвращает "A4Vert".

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение формата листа
« Ответ #16 : 24-05-2017, 10:25:58 »
Да, возвращает "A4Vert".
О! Значит то, что мы видим в настройках печати - это LocaleMediaName и соответственно если ты создал специфическое имя для формата листа (например, "A4Vert"), то ты можешь найти по LocaleMediaName его CanonicalMediaName и задать это каноническое имя.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение