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