| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
11.02.2005, 13:00 | #1 | |
пакетная печать
Проектировщик ВК. LISP-любитель.
Москва
Регистрация: 15.12.2003
Сообщений: 1,190
|
||
Просмотров: 23128
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
А из-под какого када? Если 2002, то там есть т.н. "Batch plot", вызывается отдельно, находится в Пуск - Программы - AutoCAD 2002 - Patch plot utility. Ничего сложного в ней нет, просто добавляются файлы в список, определяется принтер, печатаемое пространство, стиль печати и т.п.
Для 2005 надо пользоваться командой _publish, но с ее настройкой до конца не разобался, сорри.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Бизнес-шмизнес Регистрация: 26.05.2004
Питер
Сообщений: 1,911
|
kpblc
Цитата:
как я понял надо "аутоматично " чтобы печатало ) мож наши гуры в программинге чо нить нам скажут? |
|||
|
||||
люблю мастерить Регистрация: 21.01.2005
Челябинск
Сообщений: 9,914
|
[quote="X-DeViL"]kpblc
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
ну ето да, один из минусов. Есть другие предложения (без прог)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Бизнес-шмизнес Регистрация: 26.05.2004
Питер
Сообщений: 1,911
|
KpbIc
Я нашел выход ))) Берешь студентку, практикантку, обещаешь ей небо и звезды, и сажаешь на распечатку )) Шампанское и шоколад добавлять по вкусу!! )) Тут сразу ДВА бонуса, и сам вроде не напрягаешься, и есть перспективка ))) ХЕХЕ |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
>All
Если бы не была так важна последовательность, и все листы были одинаково ориентированы, я бы временно их все скопировал в один каталог (в тотал ком. это элементарно) и оттуда распечатал batch plot без проблем, задав всем печать extens с вписанным в A4 масштабом. но в том то и проблема... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Ну а вообще на каждом файле настроено-то нормально? Чтобы открыл, сразу Ctrl+P, Enter? Если да, то попробуй мой вариант. Конечно, придется в каждый подкаталог заходить, но попробовать-то можно на 1-2 каталогах.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
считаем открыть папку 2сек + файл 2сек + ctrlP-enter 3 cek + процесс отправки 5 сек + закрыть файл - 2 сек = 14 сек.
14*600=8400сек = 2ч 20мин. непрерывного клацания по клавишам (недостижимый минимум), совершенно механической работы - я не возьмусь. Но в файлах ессесно ничего не настроено, так что это все теория... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Зачем так? Ctrl+O - все в каталоге -> Ctrl+P -> Ctrl+F4 - Tab - Enter
Но если все не настроено, то тогда совсем кисло По факту надо писать прогу, которая: 1. Откроет файл (автоматом определив его место) 2. Определит область печати (а если еще есть объекты, не попадающие в область печати, то веселухи будет...) 3. Настроит область печати в соответствии с требованиями (которые могут у пользователя в самый неподходящий момент измениться). 4. Закроет файл. 5. см. п.1 И так 600 (700, 800, 900...) раз.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Apelsinov
Если использовать DosLIB, то получить список файлов в желаемом вами порядке и без подвязки к "путям поддержки" очень просто. Ну со списком уже что душа пожелает... Код:
|
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
Я вот поздно отвечаю, но просто не было времени заниматься этой проблемой.
Fantomas, спасибо огромное! Функция замечательная! На ее основе постараюсь что нибудь сваять, это вроде не трудно. Но у меня вопрос: doslib - есть ли где описание, лучше, конечно на русском (англ с трудом), но даже если на англ, то все равно ... |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Скачивается вот тут свободно http://www.mcneel.com/download.htm . Правда требуют майл и шлют потом изредка (примерно раз в месяц или два) анонсы своих приложений.
Там инсталяция и прекрасный Help (на английском). Сама плагин представляет из себя Arx файл (два для R15 и R16). Ложить на "пути поддержки" его надо "руками". После инсталяции в Program Files появляется папка DOSLIB где они лежат вместе с Хелпом. После подгрузки этого *.Arx, начинают работать около 80 дополнительных функций. Впрочем я сейчас кину тебе на мейл.... |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Прошу прощения, только сейчас заметил что надо так:
Код:
|
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
Едем дальше, вопрос еще не решен, количество файлов выросло до 1000 :roll:
Есть список файлов с путями (Спасибо Fantomas'у) именно в нужной последовательности. Есть функция печати (defun apel-plot-extents (printer format tabulka /)...) арг-ты соотв-но - имя принтера, формат, табл. стилей. Печатает extents вписанным масштабом, автоматически выставляя ориентацию. Теперь необходимо: 1. открыть документ 2. применить к нему apel-plot-extents 3. закрыть. И так для каждого элемента списка. Открыть документ могу с помощью ф-ии Rucad: Код:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Думаю что это поможет, дочитай ддо конца эту тему: http://www.autocad.ru/cgi-bin/f1/board.cgi?t=8860rw . Сдесь конечно создавался новый документ, но не проблемма и открыть имеющийся. Это я к тому что для применения вашей функции печати нужно нужно иметь АКТИВНЫЙ документ.
Но можно печатать и неактивные документы. См. метод PlotToDevice, функцию печати естественно придется переписать... Извини сейчас нет больше времени. Намекну только что (ru-dwg-open-file должна возвращать VLA метку файла с которой потом и надо работать.... |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
> Fantomas
У меня кое что получилось, без переписывания функции, пытался так: Код:
В автозагрузке поместил такую функцию: Код:
Код:
пишет в ком строке какой-то Expression (?) и ждет. Если же файл закрыть вручную, то программа продолжается, открывает следующий, печатает и опять стопорится и т.д. Вопрос: Как можно закрыть файл? |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
К сожалению немогу полностью съемитировать ситуацию, нет у меня (apel-plot-extents. А если просто кидаю в командную строку (command "_.vbastmt" "ThisDrawing.Close False") то закрывает без вопросов... Может какой таймаут нужен, пока спулинг идет? Может создавать в документе реактор на событие EndPlot или просто после команды на печать создавать небольшую задержку с помощью (command "_.delay" xxxx
А ты молодец, лихо эту задачу решаешь. Однако я бы всё все таки обратил внимание на метод (vla-PlotToDevice и открывал документы неактивными и печатал их. Хотя сам я не пробывал, так теоретизирую... |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
>Fantomas
vla-PlotToDevice - это конечно, наверное, интересно, и может быть даже правильно. Как нибудь этим займусь и перепишу функцию печати. Но даже если я использую этот метод - проблема останется - документ после печати надо будет как-то закрыть. Как же закрыть неактивный документ? Если решить этот вопрос, то и без переписывания функии печати, можно будет сделать где-то так: Код:
автозагружаемой функции, а прямо из этой. и убрать закрытие из автозагружаемой: Код:
Код:
Собственно, проверить его неработоспособность можно подставив вместо apel-plot-extents любую функцию типа (princ "Ля-ля-ля")- все равно не закрывает. Если интересно, то вот функция печати: Код:
|
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
История продолжается...
Нашел как закрыть неактивный документ: Код:
Код:
Выходит все чего-то ждут - а работать никто не хочет, очень знакомая ситуация Все из-за невозможности открыть документ и сделать его неактивным, закончив в нем функцию. И даже написав функцию печати неактивного документа этой проблемы не решить - открыв документ надо будет сделать его неактивным. В общем я в ступоре Сама задача-то почти решена, не получается лишь полной автоматизации. В принципе запустив программу остается лишь нажимать ctrl + tab - 1000 раз...что уже не так плохо. Но жаль! |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Погоди немного.... У меня уже все печатает, правда "тормозной" метод vla-PlotToDevice вносит свои коррективы. Сейчас попробую заменить его на твою функцию. Идея у меня совсем другого плана. Нужно чтобы документ всегда был активным при печати- открываем вторую сессию AutoCAD из первой и открываем там по очереди все документы опять же из первой сессии. Вот только ждать пока vla-PlotToDevice отправит их на печать жутко долго...
Вот можешь пока поиграться с моими первыми опытами. Убери закоменченные строки печати, вставь задержку (command "_.delay.... возможно твоя функция печати будет работать из автозагрузки. А я пока с твоей функцией "добью" вариант со втрой сессией акада... Код:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
[sm158] [sm158] [sm158] Работает!!!!
Осталась толко одна проблемма, решение которй требует либо небольшого количества кода, либо остроумия. Состоит она в следующем. При работе с одной версией AutoCAD мы можем организовать "спусковой крючек" от состояния которого при загрузке нового файла функция (apel-plot-extents будет запущена на выподнение к примеру через внедукументное пространство. При работе со второй сессией, пройдут только ActiveX объекты. Моя идея состоит в том чтобы "поймать" первую сессию из второй с помощью (vlax-get-object, обратиться к активному документу и если там есть соответствующая метка (к примеру точка с соответствующими координатами) запустить (apel-plot-extents. Может есть другие идеи? А пока попробуй, но после работы acaddoc.lsp (или автозагрузку) придется почистить во избежании печати всех открываемых документов... В acaddoc.lsp у меня: Код:
Основная функция: Код:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Еще CMDECHO забыл отключить... И лазерник, почему то печатает не так быстро. Думаю чтобы "неповесить" сетку, задержку на печать надо побольше сделать, слишком быстро она их отправляет... а печатает медленее... :roll:
|
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
Ну проблемы админов оставим им самим, 34 файла в очереди это цветочки, я и вручную их порой отправлял забивая в очередь под сотню.
Но вообще мне совсем не нравится идея с delay. Но без нее тут никак, просто у меня принтеры разные по разному по сетке откликаются, не знаю от чего зависит. По поводу "крючка" - можно при запуске проги делать запись в файл, а в автозагрузке его читать. Затем по окончании, менять запись.Или просто созавать временный файл, и проверять его наличие. Разбираюсь с прогой - есть вопрос - что такое vlax-release-object? |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
Да, еще - есть способ проверить на наличие dos_lib кроме как на загруженные файлы arx?
Мне в принципе все равно, но уж если быть занудой то у меня dos_lib грузится из doslib2004.arx или doslib2k.arx.(себе я пока эту ф-ю вообще убрал) А по хорошему ее вообще надо в asmi-all-folder-dwgs, больше ведь нигде вроде не используется. |
|||
|
||||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Apelsinov
Цитата:
Цитата:
Цитата:
Цитата:
В общем требуются мелкие доработки, а так в общем даже очень ничего... >avd Цитата:
Строчку я эту из Хелпа читал, однако она не говорит о том что нельзя запустить печать одного файла из другого. И с переменной BACKGROUNDPLOT баловался. Вот то что (vla-PlotToDevice работает по лиспом полностью "тормознуто" и делает активным документ не из которого дана команда на печать, а печатаемый это точно... Хотя все решаемо и в одной сесси AutoCAD, можно таскать все туда-сюда через внедокументное пространство, я имею ввиду держать там список файлов, и флаги для переключения документов. Однако такой алгоритм мне нравится меньше, поскольку при любой ошибке "цепочка" оборвется. А с двумя сессиями, по крайней мере есть "главный" который "ведомого" контролирует... |
|||||
|
||||
Регистрация: 24.02.2005
Сообщений: 8
|
А стоит ли мучится с двумя сессиями. У меня работает как я писал - выбираю с помощью dos_getfilem, пишу имя файла в users, вызываю макрос VBA и печатаю. И ни каких тормозов. Конечно если не пользоваться гадким VBA из принципа тогда другое дело.
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>avd
Цитата:
Чтобы всякие VBAшники нос не задирали (шутка) |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,190
|
>all
Ну а мне вообще все паралельно, на чем эта штука будет написана, хоть на лиспе, хоть на VB, хоть на паскале или фортране - главное чтоб работала хорошо. Вот только писать я могу только на лиспе (и то коряво). Поэтому если кто-то напишет аналог на VB - дык флаг в руки, и немерянное СПАСИБО от меня |
|||
|
||||
Регистрация: 24.02.2005
Сообщений: 8
|
Прошу не бить ногами, это ведь я так только сказал, что всё прекрасно работает. Да работает, но заточено под свою задачу, делать в общем виде для любого пользователя нет времени.
На VBA это выглядит примерно так: Код:
Буду рад видеть усовершенствования этого "шедевра", я ведь сам VBA тоже почти не знаю. |
|||
|
||||
Регистрация: 24.02.2005
Сообщений: 8
|
Loading VBA Files тут http://www.afralisp.com/vl/vl-vba.htm
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Ты лучше скажи, как оно работает :?: Я там "спусковой крючек" написал и функцию задержки в зависимости от величины файла, только дома флешку забыл :cry: Переписывать не хочется, в понедельник проверю и тогда выложу. |
|||
|
||||
Инженер Регистрация: 24.01.2006
Подольский р-н, п.Поливаново
Сообщений: 28
|
Здравствуйте
Извените что вмешиваюсь. Меня интерисует один ворос: в AutoCAD 2007 есть или нету Batch Plot Utility, или может есть какая нибудь команда для пакетной печати из пространства листа. Целый проект в одном файле выполнен на листах, все настройки печати выполнены, печатать лень. Спсбо |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
_.publish либо Sheet set managet
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||