Пакетная печать

Автор Тема: Пакетная печать  (Прочитано 4047 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Пакетная печать
« : 08-12-2017, 15:05:00 »
Мне нужно программно сделать пакетную печать pdf

Подскажите  с чего начать?
Первое это наверное получить список конфигураций печати
выбрать нужный и назначить его текущим.

По условию задачи я  заранее знаю имя конфигурации для печати


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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Пакетная печать
« Ответ #1 : 08-12-2017, 15:11:05 »
Я бы начал отсюда

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Пакетная печать
« Ответ #2 : 08-12-2017, 19:15:07 »
Еще вариант: http://adn-cis.org/forum/index.php?topic=1692.0
Поискам у нас на форуме находится еще не один вариант.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Пакетная печать
« Ответ #3 : 12-12-2017, 09:37:06 »
Что не совсем понятно что нужно подключить чтобы были доступны функции
acedTrans(p1.ToArray(), rbFrom.UnmanagedObject, rbTo.UnmanagedObject,  0, p1res);
acedTrans(p2.ToArray(), rbFrom.UnmanagedObject, rbTo.UnmanagedObject,  0, p2res);
Они же хранятся в файле
acedads.h
Это если на С++ писать
А на  C#?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Пакетная печать
« Ответ #4 : 12-12-2017, 09:59:21 »
Алексей (IdeaSoft), посмотрите код внимательней. Это импорт методов из COM-библиотек
Код - C# [Выбрать]
  1. [DllImport("accore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "acedTrans")]
  2.       static extern int acedTrans13(double[] point, IntPtr fromRb,  IntPtr toRb, int disp, double[] result);
  3.       [DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl, EntryPoint = "acedTrans")]
  4.       static extern int acedTrans12(double[] point, IntPtr fromRb, IntPtr toRb,  int disp, double[] result);
  5.       static int acedTrans(double[] point, IntPtr fromRb, IntPtr toRb, int disp, double[] result)
  6.       {
  7.         return Application.Version.Major > 12 ?
  8.           acedTrans13(point, fromRb, toRb, disp, result) :
  9.           acedTrans12(point, fromRb, toRb, disp, result);
  10.       }

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Пакетная печать
« Ответ #5 : 12-12-2017, 11:17:47 »
Еще вариант: http://adn-cis.org/forum/index.php?topic=1692.0

Использую AutoCAD  Civil 3d 2018

Добавил код этого теста в проект
В результате
Появляется пустой лист формата pdf

Почему пустой понять не могу?
Я же нарисовал прямоугольник (0,0, 210, 297) и диагональные линии
по прямоугольнику чтобы наверняка попали они в область печати.

В командной строке пишет
Печатная область чертежа: ширина - 295.41; высота - 208.41

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Пакетная печать
« Ответ #6 : 12-12-2017, 13:40:43 »
Это импорт методов из COM-библиотек
DllImport - импорт из COM? Оговорка? Используется пространство имён System.Runtime.InteropServices, но этот атрибут, вроде как, не относится к COM Interop.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Пакетная печать
« Ответ #7 : 12-12-2017, 13:41:24 »
Они же хранятся в файле
acedads.h
Нет. Хранятся они в accore.dll в версиях начиная с AutoCAD 2013 и в acad.exe в более старых версиях.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Пакетная печать
« Ответ #8 : 12-12-2017, 13:42:21 »
Это импорт методов из COM-библиотек
К COM это не имеет никакого отношения. Это "native" (иногда "mixed") dll-файлы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Пакетная печать
« Ответ #9 : 12-12-2017, 13:44:22 »
Еще вариант: http://adn-cis.org/forum/index.php?topic=1692.0

Использую AutoCAD  Civil 3d 2018

Добавил код этого теста в проект
В результате
Появляется пустой лист формата pdf

Почему пустой понять не могу?
Я же нарисовал прямоугольник (0,0, 210, 297) и диагональные линии
по прямоугольнику чтобы наверняка попали они в область печати.

В командной строке пишет
Печатная область чертежа: ширина - 295.41; высота - 208.41

Использовал мой код: http://adn-cis.org/forum/index.php?topic=1692.msg6306#msg6306 ?
Там заданы точки рамки:
Код - C# [Выбрать]
  1. Point3d p1 = new Point3d(0.126985232607694, -0.501646732562222, 0);
  2. Point3d p2 = new Point3d(10500.1269852326, 14849.4983532674, 0);
Тебе нужно поменять на твои.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Пакетная печать
« Ответ #10 : 12-12-2017, 14:12:49 »
Использовал мой код

Да я твой код использовал все как есть ни чего не менял

Не понятно зачем 

var scale = 50;

И выходит пустой белый лист pdf формата A4

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Пакетная печать
« Ответ #11 : 12-12-2017, 14:30:45 »
Дмитрий Загорулькин, Александр Ривилис, да, я неправильно сказал. В этой теме не силен, а dllimport вообще стараюсь избегать максимально

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Пакетная печать
« Ответ #12 : 12-12-2017, 17:13:18 »
Да я твой код использовал все как есть ни чего не менял

Не понятно зачем

var scale = 50;

И выходит пустой белый лист pdf формата A4
Не нужно уж так незадумываясь копипастить. Если у тебя масштаб 1:1, то поставь scale = 1. Ну и задай правильно точки рамки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение