Программно осуществить перевод выбранной рамки-блока в pdf-файл

Автор Тема: Программно осуществить перевод выбранной рамки-блока в pdf-файл  (Прочитано 24015 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Эксперты, доброго дня!
Win 8 x64, AutoCAD 2015, VBA Enabler
Мая задача: в пространстве модели есть несколько рамок в виде блоков. Необходимо выгружать, печатать, экспортировать выбранную рамку в pdf-файл. Пока речь идет об одной рамке. Команда должна выполняться по кнопке из пользовательской панели .mnu - это уже готово.
Знаю о возможности экспорта в pdf или печати с помощью DWG to PDF.pc3. Главным является публикация именно рамки с учетом ее размеров.

Прошу подсказать как лучше реализовать данную задачу? К примеру достаточно ли будет вызова команды:
Достаточно ли будет передать в командную строку команду типа

Код - Visual Basic [Выбрать]
  1. str_cmd = "(command ""_plot"" ""Y"" ""Model"" """ & pname & """ """ & FA & """ ""M"" """ & AorK & """ " _
  2.                 & " ""N"" ""Р""  """ & strPt1 & """ """ & strPt2 & """ " _
  3.                 & " ""В"" ""Ц"" ""Д"" """ & CTB & """ ""Д"" ""О"" ""Н"")" & " "
У меня на руках чужой dvb проект, в котором реализована выгрузка рамки в pdf и использованием PDFCreator. Но пока столкнулся с проблемой передачи команды печати в командную строку. Подобная проблема обсуждалась здесь. Своей наверно посвящу отдельную тему, если не решу.


Заранее премного благодарен
« Последнее редактирование: 16-05-2015, 18:37:48 от Александр Ривилис »
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
1) Печать осуществляется из VBA внутри AutoCAD или из внешнего приложения, которое использует ActiveX/COM модель AutoCAD?
2) Рамка в модели или в листе?
3) Почему не попытаться обойтись без команд? Есть же в объектной модели возможность прямой печати в файл.
Например: http://www.cadtutor.net/forum/showthread.php?54518-Using-VBA-to-export-a-Pdf-File-from-AutoCAD
Только нужно указать что печатать рамку и задать углы рамки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Александр, благодарю за скорый ответ.

1. Предполагаю, что в последствии буду обращаться к COM-объекту AutoCAD из внешнего приложения. Пока текущую задачу хочу реализовать внутри AutoCAD'a в DVB приложении;
2. Рамка в модели;
3. Благодарю за идею по сути это мне и было нужно. Буду экспериментировать. Прошу подсказать ссылку на материал или пункт в API, где подробно описаны необходимые методы, начиная с "ThisDrawing.PlotConfigurations", по сути конфигурацию процесса прямой печати в файл?

Еще раз благодарю за скорые и точные ответы
« Последнее редактирование: 17-05-2015, 20:00:44 от Дамир »
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Дамир 17-05-2015, 19:58:32

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Забыл уточнить. Координаты рамки следует преобразовать из МСК (WCS) в ДСК (DCS):
Код - Visual Basic [Выбрать]
  1. ' Преобразование угловых точек окна из WCS в DCS:
  2. p1 = ThisDrawing.Utility.TranslateCoordinates(p1, acWorld, acDisplayDCS, False)
  3. p2 = ThisDrawing.Utility.TranslateCoordinates(p2, acWorld, acDisplayDCS, False)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Александр, благодарю. Буду разбираться. По результатам доложу
Сколько голов, столько умов. Но голов больше

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Вернулся к данной теме. Сейчас получилось кодом вывести одну pdf соответствующую одной выбранной рамке в модели. Новый вопрос: а как сформировать собранный pdf-файл из нескольких рамок модели? К примеру выделены несколько рамок. Заранее премного благодарен!

Код - Visual Basic [Выбрать]
  1. Sub Fer()
  2.     Dim block As AcadBlockReference
  3.     Dim pt As Variant
  4.     Dim PlotConfig As AcadPlotConfiguration
  5.     Dim PtObj As AcadPlot
  6.     Dim BackPlot As Variant
  7.     Dim point1 As Variant, point2 As Variant
  8.     Dim config As AcadPlotConfiguration
  9.    
  10.     point1 = ThisDrawing.Utility.GetPoint(, "Л-Н")
  11.     ReDim Preserve point1(0 To 1)
  12.     point2 = ThisDrawing.Utility.GetPoint(, "П-В")
  13.     ReDim Preserve point2(0 To 1)
  14.    
  15.     Set PtObj = ThisDrawing.Plot
  16.    
  17.     Set Plotlayout = ThisDrawing.ModelSpace.Layout
  18.     With Plotlayout
  19.         .ConfigName = "DWG To PDF.pc3"
  20.         .SetCustomScale 1, 1
  21.         ThisDrawing.Regen acActiveViewport
  22.         .CanonicalMediaName = "ISO_A0_(841.00_x_1189.00_MM)"
  23.         .CenterPlot = True
  24.         .StyleSheet = "Acad.ctb"
  25.         .SetWindowToPlot point1, point2
  26.         .PlotType = acWindow
  27.         .PlotRotation = ac0degrees
  28.     End With
  29.     PtObj.PlotToFile Replace(ThisDrawing.FullName, "dwg", "pdf")
  30. End Sub
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Новый вопрос: а как сформировать собранный pdf-файл из нескольких рамок модели?
В смысле каждая рамка - отдельная страница в pdf-файле или несколько рамок на одной странице?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
в модели 3 рамки, в итоге получаем один файл pdf состоящий из 3-ех страниц, соответствующих рамкам модели (1 страница = первая рамка, 2 страница - вторая рамка и т.д.)
Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я могу ошибаться, но мне кажется так сделать средствами AutoCAD API нельзя. Я бы посоветовал бы какую-нибудь стороннюю программу, которая бы объединяла бы кучу pdf-файлов в один. Насколько я знаю есть такие бесплатные.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Александр, благодарю. Есть 2 платные библиотеки. Поищу бесплатные программы с API. Отпишу по результатам.

Сколько голов, столько умов. Но голов больше

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Поищу бесплатные программы с API
Вроде PDFCreator это делает:
Цитировать
PDFCreator comes with a COM interface that allows you to control it from your application or script. You can wait for a print job, define where it will be saved, merge it with other print jobs and much more. As far as we know, we are the only PDF converter freeware that allows you to go this far.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Да, с него и начал. Пока не наше нужного метода (задал вопрос на форуме), но еще поищу.
Сколько голов, столько умов. Но голов больше

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

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Хочу уточнить: знаю, что вручную AutoCAD позволяет собирать единую pdf из листов. Что, если рамки находятся в листах. Получится ли программно вывести единую pdf. Возможно вызовом команды в командной строке или еще как-то?
« Последнее редактирование: 18-06-2015, 09:39:33 от Александр Ривилис »
Сколько голов, столько умов. Но голов больше

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!