| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Последовательное применение lisp-функции к множеству файлов DWG

Последовательное применение lisp-функции к множеству файлов DWG

Ответ
Поиск в этой теме
Непрочитано 07.02.2009, 13:52
Последовательное применение lisp-функции к множеству файлов DWG
Apelsinov
 
Проектировщик ВК. LISP-любитель.
 
Москва
Регистрация: 15.12.2003
Сообщений: 1,186

Есть некая функция F0 , которая обрабатывает чертеж, необходимо применить ее к большому количеству файлов, находящихся в одной дирректории (с поддирректориями и т.д). То есть так: открываем файл, применяем F0 , сохраняем файл и закрываем его, открываем следующий...и т.д. как это можно автоматизировать?

Пока у меня есть только одна идея как это сделать - добавить F0 в автоисполнение при загрузке dwg, далее я указываю акаду на открытие файлов, он в каждом из них запускает F0 , в которой прописано сохранение и закрытие файла. Но этот метод мне не нравится по причине того, что прописывать F0 в автоисполнение придется в ручную.
Если же запускать F0 в автоисполнение по некоему флагу, который будет устанавливать функция запуска (хранить его можно, например, во внешнем файле) - то это решит проблему, но как то боязно, ибо сглючит что нибудь и не поменяется флаг на исходный, будет очень не приятно.

В идеале это все должно выглядеть так: запускае какую то программу (не обязательно на лиспе), она выдает окно для выбора дирректории, выбираем дирректорию, и жмем на старт - автокад начинает применять лисповую функцию последовательно к каждому файлу из этой дирректории, закрытие и сохранение файла можем отдать на откуп F0.
Просмотров: 22057
 
Непрочитано 04.11.2010, 10:44
#21
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


http://autolisp.ru/2010/04/08/procee...tive-document/ не подойдет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.11.2010, 10:40
#22
elena_k


 
Регистрация: 15.02.2008
Сообщений: 32


Добрый день!
VVA, kpblc спасибо. Знаний, наверное, пока малова-то . Надеялась, что смогу использовать готовый код, п.1 пост #4, только изменив функцию DOFILE. Но увы . Может быть дело в методе (vla-plottodevice (vla-get-plot curdoc ) printer_name)? другие-то работают.С ObjectDBX буду разбираться, сейчас текучки много. Еще раз большое спасибо.
elena_k вне форума  
 
Непрочитано 08.11.2010, 11:01
#23
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от elena_k Посмотреть сообщение
Может быть дело в методе (vla-plottodevice (vla-get-plot curdoc ) printer_name)? другие-то работают.
Вполне возможно, что так и есть. Программа ошибки или сообщения в командную строку выдает?
Do$ вне форума  
 
Непрочитано 25.10.2012, 10:21
#24
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
2. Если есть командные методы, то связка bat scr и lsp думаю актуальна до сих пор.
На сегодняшний день ничего не изменилось?
Нужно пакетно обработать файлы в определенной папке с учетом вложенных. Будут командные методы, а также подгрузка и выполнение лиспов. Пока лучше этого варианта ничего не могу найти/придумать.
Do$ вне форума  
 
Непрочитано 25.10.2012, 10:34
#25
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
На сегодняшний день ничего не изменилось?
Появился AcCoreConsole.exe - он подобного рода задачи выполняет гораздо быстрее, чем acad.exe. Насколько мне известно, на последнем слёте пионеров Евгений Елпанов на эту тему делал доклад. Однако продукт пока весьма кривой.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 25.10.2012, 10:49
#26
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
Насколько мне известно, на последнем слёте пионеров Евгений Елпанов на эту тему делал доклад.
Да, я присутствовал на этом докладе. Штука весьма интересная, но пока неприменимая для русскоязычных версий. К тому же, мне нужно работать пока с версией 2010 в основном.
Do$ вне форума  
 
Непрочитано 25.10.2012, 10:52
#27
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Do$, Ознакомься с докладом Евгения. Он обещал его выложить, но думаю в личку получится быстрее.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 25.10.2012 в 11:02. Причина: Орфография #28
VVA вне форума  
 
Непрочитано 25.10.2012, 10:59
#28
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Но обещал
"Но" => "Он"?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 25.10.2012, 11:01
#29
Klo

Инженер-конструктор
 
Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 266


Есть неплохое описание редактирования нескольких файлов в книжке "AutoCAD секреты, которые должен знать каждый пользователь" Дэн Эббот, глава "Редактирование тысяч чертежей" стр. 338. Там он создаёт командный файл (*.bat) в котором запускает выполнение скрипта (*.scr), третьим шагом из скрипта запускается лист (*.lsp).

Ой, не заметил, что ещё первая страница есть )

Последний раз редактировалось Klo, 25.10.2012 в 11:19. Причина: Ой, не заметил, что ещё первая страница есть )
Klo вне форума  
 
Непрочитано 25.10.2012, 11:02
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


hwd, Спасибо, исправил
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.10.2012, 11:06
#31
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Do$, Ознакомься с докладом Евгения. Он обещал его выложить, но думаю в личку получится быстрее.
VVA, см. #26
Klo, перечитай тему с самого начала
Do$ вне форума  
 
Непрочитано 25.10.2012, 11:18
3 | #32
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


а есть ещё такая штука, как ScriptPro 2.0, скачать можно с автодесковской странички.
Описание с этой же страницы
Цитата:
ScriptPro takes AutoCAD scripting to a new level with an easy-to-use interface, logging, reusable project files, enhanced scripting with new keywords and utilities, and robust error recovery. Using ScriptPro, you can apply a set of commands to multiple drawings by simply specifying a script file and the list of drawings that you would like to apply the script to.
Перевод самого главного:
Цитата:
Используя ScriptPro, вы можете применить набор команд к множеству чертежей просто указав файл скрипта и список чертежей.
bargool вне форума  
 
Непрочитано 25.10.2012, 11:33
#33
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


ИМХО: для пакетной обработки чертежей можно использовать ObjectDBX (но там есть некоторые ограничения).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.10.2012, 11:44
1 | #34
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Do$
На сегодняшний день ничего не изменилось?
тынц.

UPD
Как дополнительный вариант:
можно в автозагрузку AutoCAD засунуть плагин, который бы анализировал параметры строки запуска acad.exe и вытаскивал бы из них твои дополнительные параметры. Эти параметры игнорируются автокадом, но могут обрабатываться тобой. В обозначенном плагине ты можешь иметь XML файл, в настройках которого можно указывать, какие дополнительные параметры, каким образом следует обрабатывать.
Код:
[Выделить все]
// It's ain't working:
//Process proc = Process.GetCurrentProcess();
//String arguments = proc.StartInfo.Arguments;// empty string

// It's working:
String cmdLine = Environment.CommandLine;// full acad.exe command line string
Миниатюры
Нажмите на изображение для увеличения
Название: program.jpg
Просмотров: 869
Размер:	31.7 Кб
ID:	89177  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 25.10.2012 в 12:54.
hwd вне форума  
 
Непрочитано 25.10.2012, 13:01
#35
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Впечатляет. Спасибо, буду разбираться!
Do$ вне форума  
 
Непрочитано 25.10.2012, 13:08
#36
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


mulscr старинного индусского производства можно еще попробовать, есть в виде лиспа, есть в виде отдельного приложения
gomer вне форума  
 
Непрочитано 27.08.2013, 20:21
#37
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Apelsinov Посмотреть сообщение
из соображений совместимости больше всего понравилась "связка bat scr и lsp", посмотрел файлы по ссылке, там есть такой bat:
ECHO OFF
md GOTOVO
FOR %%A IN (*.DWG) DO "C:\Program Files\AutoCAD 2004\acad.exe" %%A /B layren.SCR
По своему незнанию лиспа и т.п. пытаюсь воспользоваться хотя бы этим вариантом.
У меня задача для каждого файла из набора создать новый файл на основе нужного шаблона, вставить в него данные из файла набора средствами Autocad Map 3D и т.п., сохранить файл. Сохранить лучше под новым именем или в другую папку. Т.е. сам файл из набора открывать не нужно - только данные из него вставить.
Скрипт я вроде бы написал, но для одного конкретного файла. Не могу сообразить, как в скрипте описать путь и название файла, т.е. как в скрипте указать вместо названия переменную?

Последний раз редактировалось АлексЮстасу, 27.08.2013 в 20:46.
АлексЮстасу вне форума  
 
Непрочитано 27.08.2013, 20:59
#38
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Сохранить лучше под новым именем или в другую папку. Т.е. сам файл из набора открывать не нужно - только данные из него вставить.
Скрипт я вроде бы написал, но для одного конкретного файла. Не могу сообразить, как в скрипте описать путь и название файла, т.е. как в скрипте указать вместо названия переменную?
По ссылке в #4 п.2 есть пример (файл layren.scr) Там и другой путь и "указать вместо названия переменную"
Код:
[Выделить все]
(getvar "DWGNAME")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.08.2013, 02:59
#39
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от VVA Посмотреть сообщение
По ссылке в #4 п.2 есть пример (файл layren.scr) Там и другой путь и "указать вместо названия переменную"
Код:
(getvar "DWGNAME")
Гут!
Но при запуске бат-файла открывается один из файлов папки. А в моем случае это не нужно - из активного файла вставка данных средствами Map 3D запрещена. Можно как-то сделать, чтобы запускался Autocad, но не с файлом из папки, а с новым файлом на основе нужного dwt-файла?
И (getvar "DWGNAME") после создания нового файла будет возвращать "Чертеж N", а мне нужно подключать файл с именем из папки. Т.е. как сохранить в начале скрипта имя текущего файла из папки?

Последний раз редактировалось АлексЮстасу, 28.08.2013 в 03:41.
АлексЮстасу вне форума  
 
Непрочитано 28.08.2013, 07:43
#40
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Как меня тут поправили :
Код:
[Выделить все]
 (command "_qnew")
(setq layer_name "Т_город_500.TAB")
(setq path1 <путь 1>)
(setq path2 <путь 2>)
(command "_ADESETCRDSYS" "с" "Pulkovo42.LL" "вЫход")
(command "-MapImport" "mapinfo" (strcat path1 layer_name) "Нет" "С" "У" "Т_город_500" "С" "Д" "Код" "Д" "С" "В" "В")
(command "_saveas" "2007" (strcat path2 layer_name) "_close")
Цитата:
на основе нужного dwt-файла
для _qnew dwt настраивается в настройках акад'а
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Последовательное применение lisp-функции к множеству файлов DWG

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DwgRuLispLib: Команда. Загрузка lisp файлов из указанной папки VVA Библиотека функций 7 15.02.2018 10:10
Грамотное открытие файлов DWG из макса (6,7,8) Chuma AutoCAD 11 03.02.2010 08:05
Где можно найти в инете обширную библиотеку DWG файлов для проектирования??? Romeo1786 Поиск литературы, чертежей, моделей и прочих материалов 7 28.05.2008 10:30
Программирование с использованием файлов DWG fiandy Программирование 3 22.03.2008 20:27