Настройка печати всех листов текущего чертежа на "Встроенный PDF-принтер"

Olga94
отредактировано 14 июн Раздел: API

Здравствуйте Уважаемые специалисты nanoCAD!

Код ниже позволяет задать всем листам активного чертежа принтер "Встроенный PDF-принтер". Поделитесь Вашими комментариями.

public partial class Commands
{
  [Teigha.Runtime.CommandMethod("PlotDocument")]
  public void PrintDocument()
  {
    // Получение ссылки на активный документ
    HostMgd.ApplicationServices.Document doc = 
     HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    nanoCAD.Document comDoc = doc.AcadDocument as nanoCAD.Document;
    // Получение ссылки на редактор активного документа
    HostMgd.EditorInput.Editor ed = doc.Editor;
    // Получение ссылки на активный лист документа
    OdaX.AcadLayout activeLayout = comDoc.ActiveLayout;
    // Получение ссылки на свойство Plot активного документа
    nanoCAD.Plot plot = (nanoCAD.Plot)comDoc.Plot;
    // Назначение принтера всем листам документа.
    foreach (OdaX.IAcadLayout layout in comDoc.Layouts)
    {
      nanoCAD.InanoCADPlotCustomParams customPlotSettings = 
       plot.CustomPlotSettings[layout];
      layout.ConfigName = "Встроенный PDF-принтер";
      // Передаем измененные пользовательские настройки в лист
      plot.CustomPlotSettings[layout] = customPlotSettings;
    }
    // Сообщение пользователю
    ed.WriteMessage("Листы {0} и {1} были установлены для печати на [Встроенный PDF-принтер]");
  }
}

Теги темы:

Ответы

  • Добрый день! К сожалению, конкретно по вашему вопросу не подскажу, но возникает встречный вопрос: а почему вы не решаете эту задачу через пакетную публикацию (команда командной строки: Публ)?

  • Olga94
    отредактировано 4 апр

    Потому что хотелось бы просто сохранить настройки для листов (изменив имя плоттера).

    А при пакетной печати, это смена принтера на момент самой печати.

  • Olga94
    отредактировано 8 апр

    В архиве скомпилированный ogPrintDocument.dll. Команда для запуска PlotDocument. (обновлено)

  • Не совсем понятна эта конструкция

    Или после назначения принтера могло что-то переопределиться и требуется снова эти параметры назначить?

    Ну и на старом добром лиспе как-то покомпактнее выглядит

    (vl-load-com)
    (defun c:ttt ( / doc name vb)
    (setq doc (vla-get-activedocument (vlax-get-acad-object)))
    (setq name "Встроенный PDF-принтер")
    (vlax-for vb (vla-get-Layouts doc) (vla-put-ConfigName vb name))
    )

  • Не совсем понятна эта конструкция - не обязательно!