Вы хотите, чтобы программа сама распознавала - где нужное, а где ненужное?
хех)) конечно программа знать не может, что нам нужно...
Например flatten или overkill, могут и делов наделать, но на то мы и человеки, что бы решать когда и что делать программе))
В идеале да, но я понимаю что нюансов много) поэтому какое-то универсальное решение, хорошо если подойдет для чистки 70-80% чертежей
Такое решение есть уже давно
bat+scrПлюс такого подхода...
1.
*.bat - позволяет производить пакетную обработку файлов (в т.ч. и во вложенных каталогах)
2.
*.scr - позволяет выполнять команды АК в открытом файле напрямую, либо подгружать лиспы *.dvb, NETсборки и выполнять команды из них.
3. Нет никакого программирования, все просто и прозрачно, из инструментов нужны интернет с гуглом и блокнот)))
4. Пользователь всегда может добавить нужные ему сейчас команды в скрипт, либо закомментировать ненужные.
-------------
Минусы конечно есть... нужно разбираться и понимать, как это работает.
Кому лениво, есть AutoScript, ScriptPro так же этим вопросом занимался крыс и другие Гуру AutoCAD, но если мы не хотим ни от кого зависеть, то лучше процесс взять в свои руки
Итак поехали...
--------------
Сам скрипт, максимально упростил
(setvar "LAYEREVAL" 0)(setvar "LAYEREVALCTL" 0)(setvar "LAYERNOTIFY" 0) - процедура лисп, согласовывает слои
EXPLODEALLPROXY - разбивает прокси объекты (разработка А. Ривилиса, NET сборку можно скачать с его странички, один раз загрузить в АК, потом будет подгружаться сам при вызове команды.)
(load "d:\\!clean\\clean.LSP") - подгружаем лисп программу в текущий чертеж.
ВАЖНО!! путь необходимо изменить на свой.DR - команда из подгруженной выше лисп программы (от уважаемого крыс и VVA) удаляет словари которые не АК, делает очистку чертежа (purge), делает проверку чертежа (audit)
WBOUT - команда из подгруженного лисп, сохраняет ВЕСЬ ЧЕРТЕЖ ПБЛОК (wblock) в папку ТЕМП
_qsave - сохраняемся
_QUIT - закрываемся
[/list]
(setvar "LAYEREVAL" 0)(setvar "LAYEREVALCTL" 0)(setvar "LAYERNOTIFY" 0)
EXPLODEALLPROXY
(load "d:\\!clean\\clean.LSP")
DR
WBOUT
_qsave
_QUIT
В этот скрипт каждый по желанию и необходимости по аналогии может добавить нужные лично ему команды и (или) процедуры.
-----------------
собственно *.bat файл
В цикле поочередно перебираем файлы с расширением
*dwg и параметром запуска этот путь передаем АК.
Параметр
/r (рекурсия) читать файлы в подпапках, если убрать будет открывать файлы только в текущем каталоге.
/b "d:\!clean\clean.scr" - путь к файлу сценария, который разобрали выше.
ВАЖНО необходимо путь изменить на свой, путь и имя файла не должен содержать символов кириллицы!!!!ВАЖНО! путь к AutoCAD нужно изменить на свойВАЖНО профиль АК /p "Spds 12" нужно изменить на свойт.к.
WBOUT положил ПБЛОК в папку темп, надо его оттуда вернуть в исходную директорию, этим и занимается строка
move /Y "%temp%\%%~nxA" "%%A"pause - ниче не делает, вернее не дает закрыть окно консоли, чисто потом посмотреть чего этот батник делал.
@ECHO OFF
FOR /r %%A IN (*dwg) DO (
echo Processing %%A
"c:\Program Files\Autodesk\AutoCAD 2016\acad.exe" "%%A" /language "ru-RU" /product "ACAD" /p "Spds 12" /nologo /b "d:\!clean\clean.scr"
echo Moving "%%A"
move /Y "%temp%\%%~nxA" "%%A"
)
pause
------------------
если АК старше 2015, т.е. 2014,2013 и т.д. команда purge не сможет очистить файл от непривязанных данных (DGN)
---------
Как использовать.. Распаковываем архив, папку
!clean закидываем в любое удобное место (см. рекомендации по кириллице выше)
В файлах
чистка.bat и
clean.scr исправляем пути в соответствии с местными условиями.
Закидываем файл
чистка.bat в директорию в которой будем чистить
dwg, запускаем и идем пить кофе)))
Думаю излишне напоминать, что стоит попробовать на небольшом количестве файлов, так ли все работает и не удаляет чего лишнего)). В любом случае оригиналы из *.BAK никуда не делись))
Ну и код и идея As Is, пользователь применяет на свой страх и риск.
------
хех объемненько получилось, ну форум жэж, что непонятно спрашиваем.
один раз настроить и потом вычищать 100500 файлов автоматом... думаю стоит того))