Applescript, чье расширение - DWG / STEP - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужен скрипт для чтения каждого .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 Ответ

0 голосов
/ 17 ноября 2018

Ваша основная проблема - использование оператора 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
...