|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Пакетная обработка чертежей
C, C++, C#
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762
|
||
Просмотров: 7744
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
В теме Последовательное применение lisp-функции к множеству файлов DWG посмотри пост #4
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Впрямую. Код будет работать в том документе, откуда его запустил. В посте 4 описываются варианты как выполнить lisp в других документах, в частночти пп. 3 и 4.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Код:
Последний раз редактировалось hwd, 03.06.2010 в 16:12. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Sorry, ссылку не смотрел. Хотя по той же ссылке п.3 (Execute commands on all open drawings) использовалясь связка vba+scr (по моему).
Код перенесен на Exchange (OpenDwgsCmds) Может удасться почерпнуть идеи оттуда
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
дело в том, что мною обрабатываются не открытые на данный момент файлы, а выполняется последовательное открытие/закрытие файлов.
Спасибо, гляну, хотя vba - это далеко не C#... |
||||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
http://through-the-interface.typepad...ch_processing/ (мои наработки остались на старом компьютере, так что временно они недоступны - я постараюсь выслать их потом) ![]() ~'J'~ |
|||
![]() |
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Вроде эта проблема решена давно.EZSCRIPT-PRO
|
|||
![]() |
|
||||
Цитата:
Мне важно разобраться что не так в моём коде, дабы в дальнейшем не наступать на те же грабли. Кроме того, мой менеджер пакетной обработки сможет (в теории, после тестирования и завершающей отладки) вызывать код любой логики программной логики (которую невозможно реализовать scr-файлами). Единственное условие - эта логика должна быть инкапсулирована в классах, реализующих несложный интерфейс (IDwgOperation). Последний раз редактировалось hwd, 04.06.2010 в 13:22. |
||||
![]() |
|
||||
проектировщик газопроводов Регистрация: 04.08.2005
Петербург
Сообщений: 327
|
Решения по редактированию множества чертежей встретил в книге Дэн Эбботт "AutoCAD: секреты, которые должен знать каждый пользователь". Он предлагает использовать связку из командного файла (.bat), файла пакета (.scr) и файла autolisp.
Вот краткая выписка из его книги о командном файле: FOR %%f in (C:\Sybex\DWG\*.dwg) DO START /WAIT C:\"Program Files"\"AutoCAD 2007"\acad.exe "%%f" /b C:\Sybex\wbout.scr Описание данного командного файла: FOR (Для) каждого файла, представленного замещаемым параметром %%f, находящегося в папке C:\Sybex\DWG, DO (Проделать) следующее: START (Запустить) приложение Windows и WAIT (Ждать) завершения его работы, прежде чем продолжить для следующего файла в директории. Приложением Windows является программа acad.exe. Когда она запускается, загружается файл чертежа, имя которого представлено замещаемым параметром %%f, и выполняется файл пакета wbout.scr, находящийся в папке C:\Sybex\ |
|||
![]() |
|
||||
Цитата:
![]() Но всё же вынужден повториться - меня интересует решение указанной мною проблемы активации файла в разрезе .net-программирования (т.е. мне важно понять, где ошибка в моём коде). Применительно к предлагаемому вами решению: лисп и бат-файлы это конечно хорошо, однако во первых - в указанном вами варианте не проходит рекурсивного поиска файлов по подкаталогам, во вторых - если вы захотите обработать все файлы, входящие в состав подшивки - этот метод не сработает, т.к. не факт, что все файлы находятся в указанном вами каталоге. Более того - со временем проект разрастается, появляются новые каталоги и файлы - каждый раз переписывать бат-файл, указывая ему доп. каталоги - это не удобно. Проще указать dst-файл подшивки, программно проанализировав который можно было бы извлечь информацию о том, какие файлы входят в состав подшивки. Кроме того, недостатком предложенного выше решения является постоянный запуск/закрытие приложения (на это тратится изрядное время). п.с. Я сильно упростил пример интересующего меня кода, дабы выделить только проблемный момент и опубликовал код здесь. Некоторое время спустя... Вопрос насчёт ошибки при активации документа снят... Ежели кому интересно, то дело оказывается вот в чём: если acad.DocumentManager.MdiActiveDocument уже назначена ссылка на некоторый объект Document, то при попытке назначения ему новой ссылки, которая будет указывать на тот же самый экземпляр Document, автокад выдаёт ошибку. В моём случае получалось, что метод Open не только открывал документ, но и устанавливал его активным. AutoCAD не способен обработать верно повторную инициализацию свойства acad.DocumentManager.MdiActiveDocument тем объектом, которым он уже инициализирован - поэтому и вылетала ошибка (eInvalidInput). Т.о. нужно выполнять такое действие: Код:
Код:
Последний раз редактировалось hwd, 04.06.2010 в 16:39. |
||||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой метод получения чертежей выбрать, работая в Tekla Structures ? | pdimav | Tekla | 15 | 12.01.2018 09:12 |
Стандарты оформления чертежей (бумага) | Sleekka | AutoCAD | 23 | 01.12.2011 14:00 |
Пакетная обработка файлов, содержащих поля | florbel | Программирование | 2 | 17.02.2009 21:16 |
Современные обозначения для чертежей электроосвещения | Баркова Татьяна | Поиск литературы, чертежей, моделей и прочих материалов | 0 | 05.08.2008 16:47 |