Applescript, чье расширение - DWG/STEP

Мне нужен скрипт для чтения каждого.dwg/.step в выбранной папке и ее подпапках, затем выполняется последовательность нажатий, чтобы сохранить файлы в той же папке, а затем закрыть ее.

Вот что у меня есть, Applescripts не распознает инструкцию расширения.dwg/.step.

set MyFolder to (choose folder)

tell application "Finder"
set MyFiles to every file of entire contents of MyFolder whose name extension is ("DWG" or "STEP")
return MyFiles -- this doesn't return anything

repeat with aFile in MyFiles
    tell application "Rhinoceros"
        open aFile
        activate
        delay 1
    end tell
    tell application "System Events" -- the instruction is given 'manually'
        click at {150, 1}
        delay 1
        click at {150, 180}
        delay 1
        click at {680, 335}
        delay 1
        click at {600, 495}
        delay 1
        click at {900, 510}
    end tell

    delay 1

end repeat
end tell

Я новичок в AppleScript, но это приложение сэкономит кучу часов! Заранее спасибо за помощь:)

1 ответ

Ваша главная проблема заключается в использовании or оператор внутри которого выполняется над двумя строковыми значениями. Это не имеет смысла для AppleScript, и не должно. Правильное выражение будет:

...whose name extension is "DWG" or name extension is "STEP"

хотя Finder позволяет объединять эти предикаты в список, с которым он может работать совместно:

...whose name extension is in {"DWG", "STEP"}

Кроме того, перенести свой финал end tell только после объявления вашего MyFiles переменная - нет необходимости (и это активно препятствует) заключать операции системных событий в блок Finder.

Таким образом, ваша команда Finder должна выглядеть примерно так:

tell application "Finder" to set MyFiles to (every file of the entire contents of ¬
    (choose folder) whose name extension is in {"DWG", "STEP"}) as alias list

Я привел его к alias list в конце, потому что это ускорит время обработки по какой-то необъяснимой причине.


Последняя часть вашего сценария - это то, что я не могу представить слишком подробно, не зная больше об этом приложении "Носорог". Я сделал быстрый Google, но ничего не смог найти.

Но если он в состоянии понять open команда, которая подразумевает, что это сценарий и, вероятно, имеет save Команда, которая идет вместе с ним. НИКОГДА не пытайтесь делать что-либо, нажимая на координаты - это сломается с малейшим падением булавки Если программа не поддерживает скрипты, она, вероятно, выдаст ошибку с open команда, в этом случае вам лучше всего написать сценарий процесса подачи заявки и получить доступ к меню save команда.

Но я думаю, что вам будет трудно реализовать это успешно, в зависимости от того, как вы идете.


ОДНАКО, если все, что вы хотите, это, как вы заявили, сохранить эти файлы в одной папке, то вам вообще не нужно пытаться использовать Rhinoceros. Вместо этого используйте Finder для duplicate (или же move) файлы в новом месте:

tell app "Finder" to duplicate MyFiles to MyFolder

или же

tell app "Finder" to move MyFiles to MyFolder

Все это может быть сведено в одну строку, поэтому весь ваш сценарий (если вы действительно хотите, чтобы результат был) просто стал бы:

set myfolder to (choose folder)

tell application "Finder" to move (every file of the entire contents of myfolder ¬
    whose name extension is in {"DWG", "STEP"}) as alias list to myfolder
Другие вопросы по тегам