BTOOLSPLOT - это дополнение к Autocad2020, которое позволяет используя специальные блоки листов и штампов автоматически преобразовать их содержимое в PDF.
Работает в пространстве модели и в пространстве листа
ВНИМАНИЕ! Самое главное написано в последнем пункте
Разобраться в cuix – сил не хватило:pensive:, рассчитываю на помощь других :relaxed:. Поэтому, делаем следующее, вводим netload, далее выбираем нужную нам dll (BTOOLSPLOT/bin/Debug/BTOOLS_PLOT.dll)
Есть две команды:
- 1я – BTOOLSPLOTALL – алгоритм рассматривает весь лист целиком, ищет на нем листы и печатает их
- 2я – BTOOLSPLOTAREA – алгоритм после запуска предложить вам выбрать то, где Вы хотите найти и распечатать листы
Перед запуском модуля обязательно все сохранить. 😔
- 1й баг – ИСПРАВЛЕНО!
autocad не отпускает распечатанные листы. После отработки алгоритм сложит листы в нужную папку, но не отпустит их, они так и будут висеть в очереди на печать принтера. Решается закрытием autocad. Для меня не критично, решить баг не смог, если кто подскажет с радостью устраню; - 2й не баг – все листы печатаются в формате postscript (расширение ps), что бы их посмотреть их надо распечатать PDF принтером, типа PDF24, PDF creator, тупо перетянув их в область для печати. Нашел модуль на GitHub PS2PDF, в описание все описано как сделать что бы из PS сделать PDF. Сложного ничего нет. Еще был обноружен код на С#, который так же способен PS превратить в PDF и добавить закладку с именем файла, так что данный модуль может и развиться дальше (мне пока лень). Принтер Microsoft PDF печатает сразу PDF;
- 3й баг – странный, почти не проявляет себя. Был связан со старым текстом или старым шрифтом, или возможно со старыми файлами, не пропечатывались буквы (половина буквы есть, а второй половины нет, одной буквы на целый лист), в случайных словах не на всех листах, последнее полгода его не вижу.
Долго печатается, решается просто:
Надо в AutoCAD ввести следующую команду, BACKGROUNDPLOT и дать ему новое значение 0
Когда я хочу распечатать нестандартный лист, я вижу в списке листов следующее: А0,А1,А2,А3,А4, листов нестандартных форматов нет (А1х2,А3х3,А4х7).
Было найдено решение: Добавить нестандартные форматы в локальный "сервер печати", 3й ответ ссылка на яндекс диск, автор tereami.
Данная программа очень просто добавляет все нужные нам форматы листов, разобраться как она работает нет проблем. Добавляет она их к PDFCreator, но в Windows 10 что то идет не так, и форматы листов добавляются ко всем виртуальным принтерам, кроме Microsoft PDF.
Проверено мной только в Windows 10
Данную задачу я решал 3-и раза!!! Вначале (1я и 2я попытка) была задумка создать дополнение, которое автоматически на чертежах находила нужные для печати листы и их отправляла на принтер. Все сводилось к тому, чтобы перебрать все линии, найти точки, где они соединены, найти линии, которые давали нам искомые размеры листов. Изначально, все кажется логичным, но на по факту получалось что каждый 10й лист не получалось определить. Много моментов и проблем, в общем 3я попытка оказалось самой простой к реализации, итак что имеем:
Идея очень проста имеем шаблон форматов: BTOOLSPLOT/bin/Debug/sheetsFormats.dwg
Внутри него располагаются уже заготовленные блоки листов со специфичными именами(не все, если кто доработает и создаст все листы буду рад обновить файл) и блоки штампов с специфичными именами
Разберем имена, они самое главное для работы алгоритма.
Имена листов, на примере листа А3 горизонтального a3_0_297_420_progSheetFormat
- а3 – это имя листа, на самом деле оно не несет никакой программной информации, поэтому на этом месте может быть все что угодно. Поэтому, когда лист пустышка, написано а3null
- 0 – это означает что лист расположен по горизонтали (альбомный), другое значение 1 – это по вертикали (портрет)
- 297 – высота листа по вертикали, для режима, когда лист по горизонтали (альбомный)
- 420 - ширина листа по горизонтали, для режима, когда лист по горизонтали (альбомный)
- progSheetFormat – специальная кодовая фраза, которое дополнение видит и начинает это обрабатывать как лист (не изменять!)
Имена блоков штампов, здесь веселее: BS_120_55_0_45_35_25_20_15_shprogSheetFormat
- BS – имя которое ничего не значит, но нужно когда на листе есть куча штампов, заполненных по разному,
- 120 – Х верхняя левая точка поиска шифра штампа, от нуля блока,
- 55 - Y верхняя левая точка поиска шифра штампа, от нуля блока,
- 0 – Х правая нижняя точка поиска шифра штампа, от нуля блока,
- 45 – Y правая нижняя точка поиска шифра штампа, от нуля блока,
- 35 – Х верхняя левая точка поиска номера листа в штампе, от нуля блока,
- 25 - Y верхняя левая точка поиска номера листа в штампе, от нуля блока,
- 20 – Х правая нижняя точка поиска номера листа в штампе, от нуля блока,
- 15 – Y правая нижняя точка поиска номера листа в штампе, от нуля блока,
- shprogSheetFormat - – специальная кодовая фраза, которое дополнение видит и начинает это обрабатывать как штамп (не изменять!)
Все понятно со штампом взглянув на картинку и совместив с цифрами в имени штампа
Важная особенность, дополнение ищет текст (мтекст) внутри областей поиска текста, поэтому текст должен быть чистый от внутреннего форматирования, если вы не понимаете о чем речь, то лучше пользуйтесь однострочным текстом.
Во время поиска шифра алгоритм заглядывает во внутрь блока, и если найдет текст внутри блока, то запишем его первым, а вторым запишется текст, который не внутри блока. Это сделано для того что бы обеспечить когда внутри блока штампа прописан раздел «ЭС», а снаружи блока при оформлении спецификации добавляется текст «.С». В результате алгоритм запишет это в одно слово «ЭС.С»
Во время поиска номера листа, алгоритм внутрь блока не лезет, хватает что-то одно расположенное в зоне поиска.
В проекте много листов черно-белых, но некоторые должны быть цветными, это тоже решено с помощью кодовой фразы RGB, расположенной в нужном месте. Смотрим картинку:
Зона поиска отмечена красным цветом, важно, чтобы фраза не вылазила за зону поиска.
Бывает, когда Вам достался проект и люди используют свои блоки (СПДС или что-то еще) и данный модуль ничего в них не поймет. Для этого сделаны листы пустышки, которые надо разложить поверх существующих блоков. Можно попробовать получить шифр и номер листа расчленив блоки (но это как повезет, люди это тоже по-разному заполняют), для этого тоже есть специальный код фраза, в специальном месте.
Смотрим, зона поиска:
Работает так же, как имя блока штампа, только точка отсчета становится ноль блока листа.
Программа считывает масштабы спец блоков, поэтому если в пространстве модели есть листы А3, в разных масштабах, он разберется и должен сделать все как надо. Тоже самое и со штампами
Вот и все. Все кажется очень страшным и ужасным, но на самом деле во время работы, Вы об этом даже и не вспомните. Один раз сделал и катаешься*
Настройки лежат рядом с dll, если их удалить они создадутся заново и будут по умолчанию.
- < waysavetopdf >D:\plot2pdf\PS< /waysavetopdf > - путь куда будут складываться распечатанные файлы
- < waysavetoext >.ps< /waysavetoext > - расширение у печатаемых файлов. Microsoft PDF может печатать сразу PDF
- < colorWB >monochrome.ctb< /colorWB > - название таблицы чернобелых цветов, как это указано в autocad е при печати
- < colorRGB >acad.ctb< /colorRGB > - - название таблицы цветных цветов, как это указано в autocad е при печати
- < specTextColor >RGB< /specTextColor > - кодовая фраза определяющая что данный лист надо печатать цветным
- < listFS > - список листов какой лист на чем печатать
- < setSheet > - начало листа
- < height >210< /height > - высота листа (если лист расположен альбомном виде)
- < weight >297< /weight > - ширина листа (если лист расположен альбомном виде)
- < printPortrait >PDF24< /printPortrait > - принтер для печати листов в расположенных в портретном режиме
- < printLandscape >PDF24< /printLandscape > - принтер для печати листов в расположенных в альбомном режиме
- < nameSheet >A4< /nameSheet > - название листа
- < weightPlot >-1< /weightPlot > - здесь была попытка сделать так что бы не стандартные листы вписывались в стандартные габариты, не реализовано
- < heightPlot >-1< /heightPlot > - здесь была попытка сделать так что бы не стандартные листы вписывались в стандартные габариты, не реализовано
- < /setSheet >
- < setSheet > - начало листа
Вот и все настройки.
Данная программа/модуль распространяется бесплатно!
Вы можете использовать, копировать, создавать новые версии, изучать код программы, изменять код программы.
Программа поставляется по принципу "AS IS" ("как есть"). Никакие гарантии не прилагаются и не предусматриваются. Вы используете данную программу/модуль на свой страх и риск. Автор программы не будет отвечать ни за какие потери или искажения данных, нарушения работоспособности других программ и системы, а также за любую упущенную выгоду в процессе использования или неправильного использования данного программного продукта.
Все права, не предоставленные здесь явно, сохраняются за автором.
Установка и использование программы/модуля означает, что вы понимаете положения настоящего лицензионного соглашения и согласны с ними.
Если почему-либо вы не согласны с этим лицензионным соглашением, Вам необходимо удалить файлы дистрибутива данной программы/модуля с ваших устройств хранения информации и прекратить использование программы/модуля.