|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Печать из модели по выбору объекта
Остекляем!!! Алюминим!!!
Москва
Регистрация: 21.02.2005
Сообщений: 3,917
|
||
Просмотров: 75447
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Так это тебе фактически надо через vla-getBoundingBox получить границы объектов. Правда, есть одно "но": блоки с атрибутами обрабатываются не всегда корректно. На форуме, насколько я помню, была подобная тема (автор работающего лиспа, кажется, VVA; но могу и ошибаться).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Кулик Алексей aka kpblc, насколько понял из того, что нашел там основная мысль в предварительной прорисовке рамки либо спецблока. Не то что хотелось-бы.
ps на первых порах атрибуты можно и не учитывать.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Nike, так понимаю сие определяет координаты для печати, вопрос а что с ними дальше делать??
Offtop: ps ссори за мой французский, но в программировании не силен.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
ну а дальше эти координаты в (command "_.plot" подставлять
например как уменя: Код:
Последний раз редактировалось Nike, 21.10.2009 в 14:59. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Offtop: Nike, знаю, но твой код больше смахивает на макрос на кнопку,
здесь http://dwg.ru/art/8 как-то по другому описано. Если не трудно распиши как и что.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Offtop: zenon, это не макрос на кнопку, а фрагменты программы печати, которые интересуют, как я думаю, автора темы - код определения области печати по габаритам выбираемого объекта и собственно функция печати этой области. Помимо этого там еще куча вспомогательных замороченных функций, определяющих параметры печати. Это к теме не относится..
|
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
ну вот например, для печати выбранного объекта на принтер HP CLJ 5550N PCL 6 A4.pc3 (надо подставить свой) на листе А4:
Код:
Цитата:
Последний раз редактировалось Nike, 21.10.2009 в 15:30. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Nike, программа загрузилась, при загрузке появился запрос на выбор объекта, отправило на печать все хорошо, как повторно запустить прогу?? опять через загрузку??
вот что выдает на ввод Цитата:
Цитата:
ps хотелось-бы создать кнопку с макросом типа Цитата:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: Последний раз редактировалось zenon, 21.10.2009 в 15:39. Причина: добавил |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
ну так засунь этот код в функцию, например
(defun c:zenon () <вышеприведенный код> ) Сохрани в zenon.lsp и создавай свою кнопку: ^C^C(if (null C:zenon)(load "zenon"));zenon; Это же все описано в http://dwg.ru/art/8, почитае еще внимательнее |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Цитата:
![]() ![]() можно еще потретирую?? 1 - выбрать 2 тип (сплайн), то почему-то габариты больше чем у требуемого прямоугольника, если это не лечится то и фиг с ним. 2 - что очень желательно, можно ли как-то заставить программу автоматически выставлять требуемую конфигурацию листа, скажем если габарит ширины требуемой области печати > габарита высоты, то ориентация листа горизонтально, иначе вертикально. ![]() PSS Да вот еще с динамическими блоками ведет себя странно, так при наличии параметра видимость в блоке, выбор происходит по габариту наибольшего из объектов блока, даже если он в данном вхождении и не отображается.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: Последний раз редактировалось zenon, 21.10.2009 в 16:39. Причина: нашел еще багу |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
А саму сообразить
![]() это ж элементарно Например так: Код:
Код:
Код:
С динамическими блоками тоже такую фигню видел. Как лечить - хз. Крыса & co надо в помощь.. Последний раз редактировалось Nike, 21.10.2009 в 17:12. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Nike, большой тебе спасиб
![]() Offtop: а насчет Крыса, придется наверно позвать ДЕ-ДУ-ШКА МО-РОЗ эээ тоисть Кулик Алексей aka kpblc
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Я попытался "нарисовать" код, который для сплайна будет выдавать данные по другому алгоритму, но не преуспел. Кто может - добейте:
Код:
Насчет дин.блоков... Там по идее надо точно так же, как и для обычных блоков (скажу честно, подобными задачами не занимался, подробный код сейчас сотворить не в силах ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Вот насочинял чуть-чуть, чтоб со сплайном по-корректнее было
![]() Код:
__________________
Почему все вдруг становятся умными, когда уже не надо? Последний раз редактировалось Disney, 22.10.2009 в 09:43. |
||||
![]() |
|
||||
Цитата:
Код:
|
||||
![]() |
|
||||
Похоже
![]() зелёным - vla-GetBoundingBox для сплайна красным - сплайн синим - полилиния, сглаженная сплайном с лева ручки включены у полилинии, с право у сплайна. Ну, если честно, я в ручную подгонял, так чтоб и полилиния совпадала со сплайном, и чтоб ручки совпадали с габаритом.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Погодите, святой отец
![]() Во вложении файл. Сплайны нарисованы вручную, прямоугольная рамка вокруг них - это результат GetBoundingBox при помощи кода из #26. Полилинии построены по контрольным точкам спланов, при помощи кода: Код:
![]() По поводу динамических блоков с параметром видимости - вполне логично, что границы блока будут браться по наибольшему примитиву, даже если он не виден. Я так думаю, что самый простой вариант - взрывать блок, создавать из "осколков" новый и прогонять через программу. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Зачем? На уровне идеи: не проще ли будет получать описание блока через (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-name block_reference) и исключать из обработки примитивы, у которых visible = false?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 22.10.2009 в 10:41. |
|||
![]() |
|
||||
Да уж хитрый сплайн, попробовал его так
Код:
![]() Цитата:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
|
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Объектную привязку забыл снести
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Да действительно со спалйном не лады у getbounbox'а - но intersectionwith работает правильно - если кому принципиально можно "намолевать" рекурсивный аналог getbounboxa с заданной точностью ну скажем до 0.000001 при помощи "золотого сечения" (для незнающих наберите в гуле "метод золотого сечения"). Самому совсем не как сейчас.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Дай пример
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Цитата:
Temp.dwg
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Сделать корректно работающий код не получилось даже для тепличных условий. Явно где-то в логике ошибка
![]() Для тех, кто захочет "добить до ума": Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ну, у меня фантазий сдох окончательно и бесповоротно
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Offtop: Е-мое... Ну надо же было так лажануться! Что значит копи-паст кода.
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Это не всегда оправдано, тут еще больше телодвижений чем при печати из модели
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
|
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Согласен, при достаточно большом количестве иттераций рекурсивной функции (в данном примере ф-ция test1 имеет 30738 иттераций) и возникает эта ошибка...
Какой предел иттераций, от чего он зависит лично я не знаю, хотя на простом примере наверно это можно вычислить: Код:
Ну и теперь новый вариант ф-ции rec-boundingBox - рекурсия заменена циклом, ну и небольшие изменения, направленные на увеличение скорости Код:
|
|||
![]() |
|
||||
С одной "т" пишется
![]() Цитата:
![]() А вот со сплайном, полученным из сглаженной полилинии не подружилась. И все же, метод бисекции довольно небыстр в плане сходимости. Поэтому предлагаю вариант, основанный на методе Ньютона: Код:
![]() P.S. Выложенный ранее код не прошел тестирования ![]() Последний раз редактировалось Do$, 26.10.2009 в 14:50. Причина: Исключил Fitpoints из расчета - не обрисовывались некоторые сплайны. |
||||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
>Do$
1. На сглаженной полилинии ф-я test выдает Код:
Цитата:
Код:
Код:
Исправленный вариант Код:
|
|||
![]() |
|
||||
Цитата:
![]() |
||||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Парни я честно говоря не вник о чём писали ранее, поэтому извените если повторился в чём то. Вот мой код для печати по динамическим блокам из 2-х точек. У меня всё работает. Первые 2 функции для отображения этих самых точек, последние (px и py) вспомогательные. Основной код NPr. Покритикуйте плиз, хочеться оптимизировать свой процесс програмирования
![]() Блок с точками: Print_block.dwg Код:
Последний раз редактировалось Колька, 06.11.2009 в 14:45. Причина: переделал для российского пользователя |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Проблема номер раз: не будет работать в официальных локализациях.
Проблема номер два: печать сделана под определенный плоттер и на другой машине, скорее всего, работать не будет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Колька код из поста 55 печатает по выбору объекта пример см пост 1. То бишь просто выбираешь объект, а прога определяет сама границы печати и отправляет на принтер. Все настройки делаются в самой программе, тама все понятно.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
В русской версии не пробовал, но думаю нижние слеши спасут. А насчёт определённого плоттера, так ведь здесь все пишут под определённый, там где нужно поменять так и написанно "ВАШ ПРИНТЕР". Да кстати там же можно и бумагу менять и др. параметры.
Это я понял, только ведь если много чертежей в моделе то придётся помучаться выбирая объекты, а здесь просто всё выделяем и чепятаем ![]() Ладно, не понравилась так фиг с ней. У меня по этой теме вопрос. Кто нибудь знает как вытащить имена принтеров в лиспе? А то при установки проги приходиться их вручную забивать. Последний раз редактировалось Колька, 06.11.2009 в 13:51. Причина: прочитал дальше:) |
|||
![]() |
|
||||
Цитата:
![]() Код:
|
||||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Цитата:
![]() Спасибо за код, завтра на работе попробую! |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Сначала нужно окошко создать.
Это файл PrintW.dcl : Код:
Далее лисп: Код:
![]() Последний раз редактировалось Колька, 12.11.2009 в 15:11. Причина: исправлен для др языков |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А чего там проверять? Я уже говорил, что в официальных локализация этот код работать не будет. И причину указывал, насколько я помню...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
может я чего не так делаю?
сначала запихал файл PrintW.pcl в C:\Program Files\AutoCAD 2007\Support и прописал в автокаде (путь доступа к вспомогательным файлам) путь к папке с этим файлом. Подгрузил в автокаде лисп NPr.lsp Для пробы взял динамический блок - лист формата А3 (горизонтальный). Вставил твой блок с точками "Print_block" и поставил точки по углам этого листа А3. Ввел в ком. строке NPr и ничего не произошло |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
код тупо скопировал из поста 65...
Сейчас скопировал код из файла на своем компе //Диалоговое окно PrintW : dialog {label = "Окно выбора" ; :list_box{label = "Список"; key="lb_Subjects"; multiple_select = false; fixed_width_font=true; width=32; height=20; }//конец list_box :row{ fixed_width=true; alignment = right; ok_cancel; } //конец row } //конецPrintW Может я путь не там прописал? Где в автокаде его надо прописывать? |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Расширение исправил. Путь к файлу проверил.
Запускаю прогу, пишет: Команда: npr Неизвестная команда "UCS". Для вызова справки нажмите F1. Неизвестная команда "WORLD". Для вызова справки нажмите F1. Выберите объекты: найдено: 1 Выберите объекты: Неизвестная команда "PLOT". Для вызова справки нажмите F1. Неизвестная команда "Y". Для вызова справки нажмите F1. Неизвестная команда "NPR". Для вызова справки нажмите F1. Неизвестная команда "XEROX WORKCENTRE PRO 133 PCL 6". Для вызова справки нажмите F1. Неизвестная команда "A3". Для вызова справки нажмите F1. Неизвестная команда "MILLIMETERS". Для вызова справки нажмите F1. Неизвестная команда "LANDSCAPE". Для вызова справки нажмите F1. Неизвестная команда "NO". Для вызова справки нажмите F1. Неизвестная команда "WINDOW". Для вызова справки нажмите F1. Неизвестная команда "FIT". Для вызова справки нажмите F1. Неизвестная команда "CENTER". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "MONOCHROME.CTB". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "AS DISPLAYED". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "Y". Для вызова справки нажмите F1. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
жду
А если у меня один лист А3 горизонтальный и я его обрамил этими точками. Выделять нужно все объекты, которые попадают в рамку листа? И сразу второй вопрос: На каждый лист нужно каждый раз точки ставить, или можно все листы одним блоком точки обрамить? |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
не работает
![]() Команда: npr Выберите объекты: Противоположный угол: найдено: 7 Выберите объекты: Противоположный угол: найдено: 0, всего: 7 Выберите объекты: Неизвестная команда "MILLIMETERS". Для вызова справки нажмите F1. Неизвестная команда "LANDSCAPE". Для вызова справки нажмите F1. Неизвестная команда "NO". Для вызова справки нажмите F1. Неизвестная команда "WINDOW". Для вызова справки нажмите F1. Неизвестная команда "FIT". Для вызова справки нажмите F1. Неизвестная команда "CENTER". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "MONOCHROME.CTB". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "AS". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "Y". Для вызова справки нажмите F1. |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
все равно не хочет...
Команда: npr Выберите объекты: Противоположный угол: найдено: 7 Выберите объекты: Неизвестная команда "MILLIMETERS". Для вызова справки нажмите F1. Неизвестная команда "LANDSCAPE". Для вызова справки нажмите F1. Неизвестная команда "NO". Для вызова справки нажмите F1. Неизвестная команда "WINDOW". Для вызова справки нажмите F1. Неизвестная команда "FIT". Для вызова справки нажмите F1. Неизвестная команда "CENTER". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "MONOCHROME.CTB". Для вызова справки нажмите F1. Неизвестная команда "YES". Для вызова справки нажмите F1. Неизвестная команда "AS". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "N". Для вызова справки нажмите F1. Неизвестная команда "Y". Для вызова справки нажмите F1. 1 файлик прилагаю |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
АА понял, мой косяк. у тебя на принтере бумага по другому называеться.
можешь точно прислать те форматы которыми ты пользуешься я тебе их пропишу. набери (command "_plot" "_y" "" "XEROX WORKCENTRE PRO 133 PCL 6" "?") и пришли результат Последний раз редактировалось Колька, 12.11.2009 в 13:26. |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Команда: (command "_plot" "_y" "" "XEROX WORKCENTRE PRO 133 PCL 6" "?")
Доступные форматы носителя. "Польз. 20 (210x297 мм)" "Польз. 19 (210x297 мм)" "Польз. 18 (210x297 мм)" "Польз. 17 (210x297 мм)" "Польз. 16 (210x297 мм)" "Польз. 15 (210x297 мм)" "Польз. 14 (210x297 мм)" "Польз. 13 (210x297 мм)" "Польз. 12 (210x297 мм)" "Польз. 11 (210x297 мм)" "Польз. 10 (210x297 мм)" "Польз. 9 (210x297 мм)" "Польз. 8 (210x297 мм)" "Польз. 7 (210x297 мм)" "Польз. 6 (210x297 мм)" "Польз. 5 (210x297 мм)" "Польз. 4 (210x297 мм)" "Польз. 3 (210x297 мм)" "Польз. 2 (210x297 мм)" "Польз. 1 (210x297 мм)" "16K (195 x 270 мм)" "16K (194 x 267 мм)" "8K (270 x 390 мм)" "8K (267 x 388 мм)" "Обложка Letter (9 x 11")" "Обложка А4 (223 х 297 мм)" "Youkei 0 (235 х 120 мм)" "Открытка с маркой горизонтальна\" "Японска\ открытка (100x148 мм)" "Photo 2L (5 x 7")" "Postcard (4 x 6")" "11 x 15" (279,4 x 381,0 мм)" "215 x 315 мм (8,46 x 12,4")" "8 x 10" (203,2 x 254,0 мм)" "С4 (229 х 324 мм)" "C5 (162 x 229 мм)" "DL (110 x 220 мм)" "Com 10 (4.125 x 9.5")" "Monarch (3.875 x 7.5")" "Ledger (11 x 17")" "Folio (8.5 x 13")" "Legal (8.5 x 14")" "Letter (8.5 x 11")" "Executive (7.25 x 10.5")" "Statement (5.5 x 8.5")" "В6 (128 х 182 мм)" "А6 (105 х 148 мм)" "A5 (148 x 210 мм)" "B5 (182 x 257 мм)" "A4 (210 x 297 мм)" "B4 (257 x 364 мм)" "A3 (297 x 420 мм)" "A2 (420 x 594 мм)" "A1 (594 x 841 мм)" Я пользуюсь только форматами А3 и А4 "A4 (210 x 297 мм)" "A3 (297 x 420 мм)" |
|||
![]() |
|
||||
Насколько я понял, тут без вариантов. Сперва задаешь текущий плоттер, потом можно уже получить список его листов. Получить список листов другим способом нереально. Можно, конечно, сделать перебор: делаешь текущим первый плоттер из списка - считываешь его форматы - сохраняешь данные - делаешь текущим следующий плоттер - ... Но этот процесс очень небыстрый.
|
||||
![]() |
|
||||
Код:
Цитата:
Последний раз редактировалось Do$, 12.11.2009 в 14:48. |
||||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Всё супер
![]() ![]() я там свою прогу подправил теперь можно пользоваться. Do$ ты просто гений, я там пока в этих vla- в справке ковырялся чуть голову не сломал ![]() Кстати JokerrSergh что бы точки делать видимыми и не видимыми можешь в код добавить: Код:
Последний раз редактировалось Колька, 12.11.2009 в 15:22. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Цитата:
![]() Получилось хоть у кого нить прогу то запустить? Последний раз редактировалось Колька, 16.11.2009 в 06:55. |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Колька, получилось запустить, все работает и печатает
![]() Теперь вопросы: 1. После запуска проги нужно каждый раз устанавливать принтер и бумагу? Или можно сделать чтобы при первом запуске проги выбрал принтер, а при остальных запусках он уже был установлен. 2. Хотелось бы иметь возможность менять масштаб печати, ибо "вписать" не всегда устраивает. В остальном меня все устраивает ![]() |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Всю автоматичность можно задать в строчке (command "_plot"...
например если хочешь что бы был принтер XEROX WORKCENTRE PRO 133 PCL 6 и масштаб 1:100 пишешь так: Код:
Код:
![]() |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Благодарствую, все стало именно так, как мне нужно
![]() И еще вопрос: Я так понял, что за один запуск проги, можно напечатать листы только одного формата. Можно ли как-нибудь одновременно (при одном запуске проги) печатать несколько форматов листов (например А3 и А4)? Т.е. запускаешь прогу и выделяешь лист формата А3 и лист формата А4, и прога печатает лист А3 и лист А4. Было бы здорово чтобы прога умела сама определять нужный формат листа по соотношению сторон этого листа (при условии, что сам лист начерчен правильно: т.е. А4=210х297, или 2100х2970 и т.п.) Последний раз редактировалось JokerrSergh, 16.11.2009 в 07:58. |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
пардон, у меня что то оповещение не дошло.
Я над этим думал, но проблема в том что листы не всегда в одном масштабе рисуют, в следствии чего по размеру лист не опознать, по пропорциям тоже не катит(они все одинаковые) единственное что приходит в голову сделать у моего блока атрибут и по нему проверять, что за лист. Короче надо думать чем жертвовать временем при распечатке или при расстановке блоков. |
|||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Цитата:
1)В твой блок с точками запихать атрибут, отражающий масштаб листа. По умолчанию задать масштаб 1, или 1:1 (зависит от формы отображения масштаба). Если какой-нибудь лист нарисован в отличном от 1:1 масштабе, то во время расстановки этих блоков юзер изменяет значение атрибута на нужный масштаб. 2)После ввода в ком. строку NPr прога должна взять Х distance и Y distance из твоего блока с точками и сравнить их значения с некой базой, в которой заложены размеры листов (с учетом масштаба). Результатом сравнения должен быть формат листа, который подается на принтер. |
|||
![]() |
|
||||
Регистрация: 19.04.2007
Сообщений: 196
|
Попробывал твою прогу. Все нормально запустилось. Но действительно было бы удобно, если бы она сама распознавала формат листа.
Цитата:
Есть ли возможность определять формат по названию параметра видимости динамического блока? И возможно ли тогда будет в блок вставить рамку, или здесь и возникают ошибки о которых ты писал? |
|||
![]() |
|
||||
Регистрация: 26.07.2009
Сообщений: 31
|
Мысли хорошие, только мешает одна весч, у всех принтеров по разному называються форматы и что хуже того одни и те же форматы могут быть разные по размерам(оверсайс там и всё такое). Действительно унверсальную прогу можно сделать если только что то подготовительное делать что б адаптировать её для принтера
![]() |
|||
![]() |
|
||||
Как альтернативу, выложу бета-версию программы, в которой я попытался по максимуму уйти от коммандных методов.
Печатает варианты:
![]() У программы есть особенности:
Код:
|
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Поскольку предыдущая тема Печать из модели по выбору объекта, по вине несознательных товарищей была закрыта, а суть вопроса до конца не раскрыта, создаю новую тему.
Итак, с темой вопроса прошу ознакомится в приведенной выше ссылке, сегодня имеем программку товарища Do$ Цитата:
Но лисп работает некорректно. Печатает четвертями, а то и восьмушками, причем только правый нижний угол.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: Последний раз редактировалось Кулик Алексей aka kpblc, 23.11.2009 в 11:30. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Тема открыта. Прошу прощения, что сразу не сделал.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Это то, о чем писал Алексей:
В приложенном чертеже блоки растянуты, а печатает, как будто масштаб блока 1:1. |
||||
![]() |
|
||||
Лечится, только сразу не смогу сказать как. Подумать надо.
Обновление: Вопрос масштаба решил. Поворот и атрибуты пока не трогал (может и не буду). По идее, с немировой системой координат тоже проблем не должно быть. Код:
Последний раз редактировалось Do$, 23.11.2009 в 15:37. |
||||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Do$, прожка нормально работает, как и упоминал поворот блока и атрибуты не обрабатываются.
ps А вот поворот Мтекста отлично обрабатывается. pss а можно запрос при выборе Цитата:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Я думаю, что если глубже копнуть, то с мтекстом будут нелады. Например, если междустрочный интервал увеличить...
Не совсем понял насчет правой кнопки мыши. Сделать контекстное меню при нажатии ПКМ из пунктов "Несколько" и "Блок"? А не проще дин. ввод включить? ![]() |
||||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
три движения лишних
переключить язык ввести букву нажать ентер да и привык уже к ПКМ,автоматом жму. ан нет ![]()
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
При дин. вводе можно пункты выбирать мышкой (см. рис.).
Если динамический ввод принципиально не нравится - тогда не обязательно язык переключать, команды дублируются на английском: "Несколько": _m (_Multy) "Блок": _b (_Block) "Имя": _n (_Name) Как контекстное меню на ПКМ повесить пока не представляю. Предполагаю, что нужно делать реактор на это событие, а дальше - ![]() Если б был какой-то пример программы на LISP с обработкой нажатия ПКМ и выводом контекстного меню... ![]() А попроще - может написать макрокоманду и повесить на кнопку? |
||||
![]() |
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
Цитата:
|
|||
![]() |
|
||||
Опишу как я себе это представляю:
Получается, что программа должна сама определять мало того, что формат листа, так еще и принтер, куда нужно печатать. Ведь вряд ли кто-то печатает А4 и А3 на плоттере, а А1 и А0 на принтере. То есть надо будет сделать предварительную настройку: для каждого формата задать принтер/плоттер, формат/размер листа в форме диалога. Далее, четко размеры выдерживать не стоит. Мне думается, что все, что по размерам входит в габарит 297х210*1.5 печатать на А4, далее - от 297х210*1.5 до 420х297*1.5 печатать на А3 и т.д. То есть в любом случае на чем-нибудь напечатается. Разграничение форматов по габаритам: до 297х210*1.5 - А4 от 297х210*1.5 до 420х297*1.5 - А3 от 420х297*1.5 до 594х420*1.5 - А2 от 594х420*1.5 до 840х594*1.5 - А1 свыше 840х594*1.5 - А0 |
||||
![]() |
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
В принципе об этом шла речь... Типа, выбираем чертежи формата А4 и устанавливаем для них принтер ХХ, затем выбираем чертежи формата А3 и для них назначаем принтер ХХ и т.д.
|
|||
![]() |
|
||||
давно делал такое на ВБА. именно сначало задаём что и где печатаем, а уже потом все разносится по принтерам само в зависимости от размера форматки.
http://dwg.ru/dnl/126 работает и сейчас на ура. |
||||
![]() |
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
Цитата:
![]() Последний раз редактировалось Nikolay 2, 15.03.2010 в 13:09. |
|||
![]() |
|
||||
http://forum.abok.ru/index.php?showtopic=28075
в последнем посте есть немного видео по макросу |
||||
![]() |
|
||||
![]() ![]() если нарисовать саму форматку в листе, а потом её вставить в модель... все работает. просто так же исторически... в модели лежит модель... в листах сами чертежи. что бы не было соблазна у сослуживцев ![]() а если ещё точнее... то поиск формата происходит по объёкту полилиния на слое 0 и со скейл фактором 211175. любой объект подошедший под описание рассматривается как лист. потом с него просто берутся габаритные размеры и посылаются на принтер, которому данные размеры сопоставлены. при настройке программа просто редактирует пейдж сетап (всмысле человек его редактирует как надо), потом ему присваивается имя понятное программе, и потом она посылает лист на печать с настройками этого пейдж сетапа меняя лишь граници печатаемой области для каждого нового листа т.е. если рамку сделать полилинией как надо... то впринципе, рисовать форматки программой не обязательно. так же понятно, что области печати можно просто копировать единственно, что у меня не получилось сделать совсем красиво, это надо при настройке вручную создавать этот пейд сетап с именем 1. вероятно можно победить, и скорее всего не так сложно, но... почему то у меня не получилось. а так, один раз в шаблон сохраняем все принтеры, и каждый новый файл уже настроен и все листы посылаются куда надо Последний раз редактировалось ssn, 16.03.2010 в 17:41. |
||||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Вопрос от чайника: Как изменить масштаб печати? По умолчанию в лиспе стоит "вписать", а мне нужно чтобы можно было установить другой масштаб. Как это сделать? Где и что поменять в лиспе?
|
|||
![]() |
|
||||
Собсна, идея программы тогда теряется... Но если надо, то меняй строчки:
Код:
Кстати, раз уж тему подняли... У программы обнаружился баг, по крайней мере у меня возникает: Если печатать из файла, с которого еще не проводилась печать стандартными средствами, то иногда листы печатаются с серой надписью [none] по диагонали. Достаточно один раз использовать команду PLOT, после этого печатается без лишних надписей. Может кто подскажет, в чем может быть дело? Последний раз редактировалось Do$, 06.05.2010 в 11:02. |
||||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
|
|||
![]() |
|
||||
Таких масштабов не существует. Это наподобие 1км = 3 литра. Единицы чертежа какие?
Вот блин, а ведь действительно при печати есть такие масштабы, вот ведь бред... Тогда значит так: Вместо Код:
Код:
Код:
Код:
Код:
![]() Последний раз редактировалось Do$, 06.05.2010 в 12:29. |
||||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Программа просто супер, очень доволен её работой и создателю огромный респект!!!
За время эксплуатации обнаружился один баго и возникла пара вопросов: Баг: иногда распечатываются пустые листы. Наблюдается в файлах, в которых работали несколько человек (сначала строители, потом технологи и энергетики). У всех свои слои и стандарты оформления чертежей- наверное из-за перенасыщенности вылазиет баг. Если листы скопировать в новый файл и печатать из него, то всё печатается нормально. Автокад 2007 русский пиратский ![]() Опыт показывает, что пользователь использует при печати всего два-три типа принтера и два-три формата бумаги. В связи с чем возникают вопросы: 1) Как убрать ненужные принтеры из списка? Или вернее, как оставить только 2-3 нужных принтера в списке? 2) Как оставить только нужные форматы? Просьба объяснить подробно для чайника, не ориентирующегося в тексте лиспа. Лисп прилагается (там установлен масштаб печати 1:1.02 согласно инструкции из поста #139)
__________________
Вагоны, они ведь умнее паровоза, потому что они его толкают... когда он тормозит |
|||
![]() |
|
||||
Прикладывайте чертеж с подробным описанием действий, при котором этот баг проявляется, буду разбираться.
Программа и так отбрасывает все конфигурации принтеров/плоттеров (pc3), оставляя только установленные в системе принтеры/плоттеры. Форматы тоже фильтруются и остаются только те, которые имеют в названии обозначения стандартных форматов (А4,А3,А2 и т.п.). Неужели их так много? Чтож, можно будет, наверное, добавить какие-то настройки по умолчанию... А вообще, пользуйтесь лучше листами, пакетной печатью и подшивками ![]() |
||||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
Было бы очень здорово!
Только нужно сделать, чтобы эти настройки вылазили не при каждом нажатии на кнопку печать, например, отдельным лиспом эти настройки сделать. Хочу изменить принтер, или формат - запускаю лисп и изменяю умолчания. Там обязательно должен быть выбор масштаба, т.к. при печати на бумаге через принтер и при печати через Adobe PDF нужно устанавливать разные коэффициенты масштабирования. Там обязательно должен быть выбор принтера и форматов бумаги по умолчанию. А для полного счастья можно сделать чтобы программа запоминала бы несколько конфигураций по умолчанию (четырех будет достаточно: например 1) принтер 1 формат, А3, масштаб 1:1.02 2) принтер 1 формат, А3, масштаб 1:1 3) принтер 2 формат, А3, масштаб 1:1.02 4) принтер 2 формат, А3, масштаб 1:1) и при нажатии на кнопку печать спрашивала бы какую из них нужно использовать. при нажатии на кнопку печать - имеется в виду печать через Lisp Чертеж приложил. Подробное описание действий: 1. Открываю файлик. 2. Печатаю с использованием лиспа Easyplot. 3. Из принтера вылазиют пустые листы. P.S. Чистка командой _purge не решает проблему. Печать стандартной командой _plot перед использованием лиспа тоже не помогает. Помогает лишь копирование всех листов из этого файла в новый девственно чистый файл.
__________________
Вагоны, они ведь умнее паровоза, потому что они его толкают... когда он тормозит Последний раз редактировалось JokerrSergh, 28.04.2011 в 10:41. |
|||
![]() |
|
||||
Какая-то, видимо, тонкость с заданием свойств печати... В программе ошибки не нашел - все работает как и было задумано. А вот в файле явно что-то надо искать такое, что влияет на печать: какую-нибудь системную переменную хитрую или может в словарях что-то зарыто коварное...
Пока откопать ничего не удалось. Может кто подскажет, в чем может быть дело? Или хотя бы направление, куда нужно копать? |
||||
![]() |
|
||||
Регистрация: 01.10.2008
Сообщений: 136
|
По переменным и словарям я не помощник, могу лишь описать манипуляции, производимые с файлом.
Изначально файл либо с нуля создается, либо открывается какой-либо шаблон (на этом этапе из пустого файла и из шаблона всё печатается нормально). Затем в этот файл может добавляться (как правило, копироваться) из других файлов всё, что угодно: изображения jpg, объекты СПДС разных версий и т.п. В результате такой работы (файлом по сети поочередно пользуются несколько человек) происходит этот баг. При чем не всегда происходит. Пытался найти закономерность его появления - не смог. Описал всё, что мог
__________________
Вагоны, они ведь умнее паровоза, потому что они его толкают... когда он тормозит Последний раз редактировалось JokerrSergh, 29.04.2011 в 12:02. |
|||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 2
|
Ребята, не поверите, но чтобы варианты ответов на запросы появлялись в контекстном меню достаточно указать варианты в квадратных скобках.
Пример: Заменить строку: "\nУкажите объект для печати, или:[Несколько/ Блок]" на строку: "\nУкажите объект для печати, или [Несколько/Блок]:" Пробуйте и совершенствуйте свою программу. Я начал ее использовать=) Вам всем спасибо! |
|||
![]() |
|
||||
Цитата:
Кажется понял о чем речь - имеется в виду контекстное меню по ПКМ. Действительно, с исходной строкой его нет, с исправленной - есть. RiderPSV, ![]() |
||||
![]() |
|
||||
Регистрация: 13.11.2010
Сообщений: 2
|
Кстати, хотел скачать текст скрипта из сообщения #120, но так его там и не нашел. В итоге пришлось брать текст из сообщения #142 и переделывать обратно. Чтобы люди не мучались выложите LISP файл с текстом программы, в которой не задан масштаб 1.02, а стоит "Вписать".
P/S листом начал интересоваться только первый день, так что если что не так сказал - извиняйте. И еще заметил проблему (по-моему): Программа отображает список принтеров, НО(!) она не показывает в этом списке принтеры с расширением *.pc3 Это как-то можно исправить? Do$, спасибо тебе и другим авторам текста за программу! |
|||
![]() |
|
||||
Так специально сделано в программе, потому что были сложности с pc3 конфигурациями. Печать осуществляется командным методом и альтернативы этому нет, а некоторые pc3 плоттеры имеют отличный от стандартного набор команд для печати. Поэтому не стал разбираться с каждым индивидуально, а просто их отфильтровал.
|
||||
![]() |
|
||||
инженер систем безопасности Регистрация: 07.10.2011
Сообщений: 33
![]() |
День добрый! Спасибо огромное Вам за программу, очень нужная штука, и работает прекрасно. Только можно было бы включить в диалог с параметрами печати поле для ввода количества копий для распечатки? Очень облегчило бы работу.
![]() |
|||
![]() |
|
||||
Чесслово, устал я уже открещиваться от этой программы
![]() Дело в том, что ни я, ни мои коллеги ею не пользуемся. Поэтому, учитывая, что времени катострофически ни на что не хватает ![]() ![]() Если вдруг кто другой захочет в ней поковыряться - я обеими руками за, при необходимости могу разъяснить что к чему в ней. Прошу понять и простить ![]() |
||||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Добрый день! Может, кто подскажет можно ли посредствам Autolisp (автоматически) назначить имя файла (в окне сохранения PDF) при выводе на печать через PDF из пространства модели или листа. У меня есть программа, которая нормально печатает листы из пространства модели и листа, но одно но. При печати в PDF приходится для каждого листа прописывать имя файла в окне сохранения PDF вручную. Я хочу автоматизировать полностью этот процесс и от этого уйти, но пока не знаю как. Если кто знает решение данного вопроса, прошу помочь.
|
|||
![]() |
|
||||
Цитата:
Печать выполняется командными методами? Скорее всего да. Команда печати _.-PLOT? Наверное так. Тогда не понятно в чем проблема, имя файла указывается на соответствующий запрос и все. |
||||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Спасибо за ответ! Но, к сожалению, в командной строке автокад не запрашивает имя файла, а выдает окно, где предлагает выбрать место и имя сохранения файла.
Вот такой порядок выводит акад в командной строке при печати: Команда: 'VLIDE _.plot Выполнить детальное задание конфигурации? [Да/Нет] <Нет>: Выполнить детальное задание конфигурации? [Да/Нет] <Нет>: Д Имя листа или [?] <Модель>: Имя устройства вывода или [?] <Adobe PDF.pc3>: Adobe PDF Формат листа бумаги или [?] <A3>: Единицы измерения размеров листа [Дюймы/Миллиметры] <Миллиметры>: Ориентация чертежа [Книжная/Альбомная] <Книжная>: А Перевернуть чертеж? [Да/Нет] <Нет>: Печатаемая область [Экран/Границы/Лимиты/Вид/Рамка] <Рамка>: Левый нижний угол рамки <1144.727941,-688.015360>: Правый верхний угол рамки <2035.727941,-268.015360>: Масштаб печати (Миллиметры чертежа=Единицы чертежа) или [Вписать] <Вписать>: Смещение от начала (x,y) или [Центрировать] <Центрировать>: Учитывать стили печати? [Да/Нет] <Да>: Имя таблицы стилей печати или [?] (. если нет) <monochrome.ctb>: Учитывать веса линий? [Да/Нет] <Да>: Режим вывода тонированных ВЭ [Обычный/Каркас из предыдущих версий/Скрытие линий из предыдущих версий/Визуальные стили/с вИзуализацией] <Как на экране>: О Запись чертежа в файл [Да/Нет] <Н>: Сохранить изменения параметров листа [Да/Нет]? <Н> Перейти к печати [Да/Нет] <Д>: После этого он выдает окно сохранения файла. Печать идет через команду _.plot. И еще в дополнение, как назначить путь сохранения посредством Autolisp? |
|||
![]() |
|
||||
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
![]() |
ну так перед началом -plot выставь filedia в 0, а потом верни обратно
А, я не обратил внимание, что печать идёт на Adobe PDF.pc3, тут уж настраивай сам pc3-файл, там есть соответствующие настройки. А чем не устраивает штатный пдф-принтер (там filedia в 0 сработает, в отличие от Adobe PDF.pc3)? Последний раз редактировалось bargool, 04.10.2012 в 09:56. |
|||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Печатаю я через стандартный принтер Adobe PDF, это он изначально предлагает Adobe PDF.pc3.
Даже изменение системной переменной filedia в 0 не дает никакого результата. Как появлялось окно с запросом так и появляется. Может имя файла сохраняемого документа в PDF прописывается в кокой-нибудь системной переменной? Хотя просмотрев список переменных я не нашел ничего похожего. |
|||
![]() |
|
||||
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
![]() |
Adobe PDF - это не стандартный автокадовский пдф-принтер. Стандартный - DWG to PDF.pc3, с ним будет работать переменная filedia. И я всегда рекомендую использовать именно его, если, конечно, у вас автокад более новой версии, чем 2008 (там ещё подглючивает).
Если вы всё ещё хотите использовать Adobe PDF - залезьте в настройки данного конктернтго pc3, в Custom properties (как они там по-русски значатся), там есть пункт про "спрашивать имя файла" |
|||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Вариант DWG to PDF.pc3 в моем случае не подходит.
Я вкратце объясню весь процесс, который я хочу запустить. При работе в автокаде мне и моим коллегам приходится создавать большое количество листов в пространстве листа. Поясню почему. Мы используем поля для ссылок между схемами и планами. Поэтому получается, что в пространстве листа находится до 70 листов различного формата. Сами листы выполнены блоками с атрибутом (формат листа). Я написал программку (что-то нашел в нете, а что-то дописал сам) в Lispe по распечатке листов как с пространства модели так и с пространства листа. Так вот при распечатке в PDF (хотя можно печатать на любой принтер, установленный на комп) для каждого листа выскакивает окно сохранения файла. Я хочу уйти от этого. В моих планах добавить в блоки листов атрибуты "Шифр проекта" и "Номер листа", которые и будут заноситься в имя файла автоматом, но как это провернуть я пока ума не приложу. Подскажите, как это выполнить? P.S. Работу в пространстве листа с одним листом рассматривали не однократно и отметали как неудобную в нашем случае. Все благодаря полям, которые мы широко используем в своих проектах. А они не работают между пространствами Модель-Лист или Лист-Лист. |
|||
![]() |
|
||||
Работают как миленькие. Ссылка в поле, я так понимаю, на объект идет. У объекта есть уникальный ID не зависимо от того в модели он или в листе. Другое дело, что пока переключаешься между вкладками прерывается выполнение любых команд, поэтому сослаться полем на объект другой вкладки бесхитростно не получается. Ctrl+C и Ctrl+V тут очень помогают
![]() Так и осталось загадкой, чем не устраивает DWGtoPDF. |
||||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Всем привет! Спасибо за дискуссию по моему вопросу. Программу свою я сделал и как раз через принтер DWG to PDF.pc3. За это вам спасибо. Прога работает полностью как хотел, если не брать в расчет некоторые косяки , которые предстоит исправить. Но это в процессе.
Возникла еще такая проблема. Сделал рамки листов динамическими, но проблема программы с определением координат рамки выделения листа при печати через команду "vla-getboundingbox". Эта функция каждый раз задает размеры наибольшего из листов в динамическом блоке. Как с этим бороться подскажите кто-нибудь пожалуйста. |
|||
![]() |
|
||||
Посмотри код из #120, там есть функция по определению границ динамического блока, которую написал Кулик Алексей. Суть в том, что проверяются все объекты внутри блока на предмет видимости и граница определяется только по видимым объектам. У vla-getboundingbox есть еще другие проблемы - со сплайнами, с мультитекстом...
|
||||
![]() |
|
||||
Регистрация: 03.10.2012
Сообщений: 6
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 17.09.2012
Сообщений: 9
|
Чтоб не создавать новую тему напишу вопрос здесь по DWG to PDF.
Каким-нибудь параметром можно отключить открытие созданного файла в pdf, то есть возможность тихой печати.
__________________
Код порою получается жутковат, конешно, и убиться об его можно, да ведь все под богом ходим... |
|||
![]() |
|
||||
Регистрация: 17.09.2012
Сообщений: 9
|
А ведь достаточно было залезть в "Дополнительные свойства". Спасибо, помогло.
__________________
Код порою получается жутковат, конешно, и убиться об его можно, да ведь все под богом ходим... |
|||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Регистрация: 02.07.2016
Сообщений: 251
|
А я не могу понять как получить текущий принтер?
Ну или вообще как не задавать его, что бы отправляло на печать в тот принтер, который для данного чертежа установлен в окне печати? В идеале бы научиться получать все те параметры, которые в окне печати установлены в данном чертеже и вставлять их в программе в команду _plot |
|||
![]() |
|
||||
Цитата:
Можно изменить его под свои нужды или просто использовать как шпаргалку.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 02.07.2016
Сообщений: 251
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 02.07.2016
Сообщений: 251
|
Написал программку для личных нужд для печати из модели. Использовал коды приведённые в этой теме.
Программка удобная, но работает только с моим блоком рамки (берёт из него формат - аттрибут FORMAT и размеры листа - атрибуты W и H, без всяких GetBoundingBox) При запуски командой printAll просит выбрать все печатаемые рамки. Перед печатью для каждого формата из выбранных листов предлагается выбрать принтер. Листы сортируются по вертикале и горизонтали (на примере с блоками рамки видно) Прикладываю лисп и свой блок рамки. Тестировалось на Autocad 2016 |
|||
![]() |
|
||||
Регистрация: 05.11.2014
Сообщений: 944
|
Цитата:
НО см. : ГОСТ Р 21.1101-2013 Приложение Ж (обязательное). Основные надписи и дополнительные графы к ним а именно размер и расположение графы "Согласовано" |
|||
![]() |
|
||||
Подниму тему, потому что более релевантной моим запросам темы поиск не выдал.
Задача печати плоских объектов из пространства модели передо мной не стоит, пользуюсь листами и вьюпортами и горя не знаю. Но сейчас встала проблема автоматизации при создании таблиц-спецификаций с эскизами деталей в ячейках. Вручную при этом используется "плоский снимок", но у него есть куча недостатков: 1. Снимок получается 1:1, то есть блок эскиза выходит огромных размеров. Таблица его изначально ужимает до размеров ячейки, но потом при переоткрытии файла параметр "вписывание блока" ломается и таблицу разносит, как Халка при трансформации. Исправления этих косяков занимают много рабочего времени. 2. Снимок никаким образом нельзя автоматизировать, т.к. при выполнении команды вылезает диалоговое окно, которое обламывает выполнение скрипта и никакими программными методами это пока не решено (по крайней мере в лиспе и вба, в более сложные дебри типа шарпея я пока залезать не планирую). 3. Снимок не отображает данные о цвете и вообще неспособен выдать никаких стилей отображения кроме каркаса. Отсюда возникла мысль создавать миниатюры путем печати выделенного 3D-объекта из пространства модели, точнее сохранения всего этого добра в отдельные PDF, которые потом можно запихнуть в таблицу тем или иным способом. Принцип, вроде, тот же - getboundingbox и т.д. Но вот беда, для 3D-объектов, тем более взятых из ракурса, отличного от вида top, приведенный здесь код неприменим. Нужно брать не две точки, а целых 8, и по ним как-то вычислять границы блока, либо вообще самостоятельно выбирать рамку объекта для печати. Короче, нужна модификация приведенного макроса, которая: 1. Печатает 3D-объект по рамке, выбранной вручную, либо определенной более хитрым алгоритмом. 2. Сохраняет результат печати в PDF, думаю, где-то в формате А6. 3. Выдергивает этот PDF назад в чертеж, создает на его основе блок. В блоке миниатюра масштабируется до нужного размера. Размер миниатюры должен задаваться в макросе и потом подгоняться под реальные нужды. 4. Обзывает блок исходя из названия фотографируемого блока. Например, из блока "Деталь1" получается блок "ЭскизДеталь1". Чтобы потом в таблице блоков не ломать голову, где искать результат. Думаю, под это дело можно модифицировать текущий макрос, но я пока не знаю всех подводных камней: 1. Кто знает готовое решение по печати посредством рамки, киньте ссылку, если не сложно. 2. Кто знает, как более изящно решить первый пункт макроса, т.е. создать рамку, исходя из getboundingbox в трехмерном пространстве? При этом вид на модель должен быть с произвольной "нормалью". 3. Задача предполагает обращение к файловой системе (причем, дважды). Есть уже готовые решения для этого дела на лиспе? |
||||
![]() |
|
||||
Чё ? Это по какому такому нормативу ?
Цитата:
Отсюда остальное описанное не требуется. Скорее это уже в Поиск исполнителей, с полным ТЗ и примером конечного результата. Я конечно отдалённо понял чего требуется и сделать можно, но сложно, это серьёзный проект получится. |
||||
![]() |
|
||||
Цитата:
Нет, исполнителей я не ищу. Я сам это все скомпоную в рабочую версию. Просто, если люди в теме и более информированы, чем я, то могут подсказать, куда копать насчет последних трех пунктов. |
||||
![]() |
|
|||||
Цитата:
1. Выяснить причину глюков со сбросом размеров блоков в таблице. И тогда Цитата:
2. Про Цитата:
Цитата:
И ещё, я не зря писал как надоест грабли ломать - пишите, задача решается в обход стандарта и на другом языке программирования. |
|||||
![]() |
|
||||
Пока что, сложив А и Б, из ваших слов выходит, что на команду "плоский снимок" есть открытый код на лиспе?
Последний раз редактировалось pant-79, 02.05.2017 в 13:41. |
||||
![]() |
|
||||
Вот вот. Так я и думал, что нет там никаких достоинств с точки зрения автоматизации.
Достоинство - это то, что расширяет возможности, а не ограничивает. Пока у команды "плоский снимок" есть неубиваемое диалоговое окно, которое блокирует все возможности автоматизации использования этой команды, ни о каких достоинствах при программировании говорить не приходится. Отпадает эта команда для программиста. Просто отпадает. И приходится искать альтернативы. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Опять про печать из модели нескольких листов | gizmo_zx | Программирование | 2 | 28.09.2010 12:33 |
Автоматическая печать из пространства модели | Дмитрий_В | AutoCAD | 9 | 19.04.2006 16:52 |
Печать из модели | Eugenius | AutoCAD | 11 | 03.11.2004 18:26 |
Печать 3-х мерной модели | Лариса | AutoCAD | 5 | 09.06.2004 19:57 |