Applescript“其扩展名是” DWG / STEP

时间:2018-11-16 15:04:07

标签: python applescript rhino3d

我需要一个脚本来读取所选文件夹中的每个.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 :(得分:1)

您的主要问题是在括号内使用prometheus.yml运算符,该运算符是在两个字符串值上执行的。这对AppleScript没有意义,也不应该。正确的表达式是:

or

尽管 Finder 确实可以让您将这些谓词组合到一个列表中,使其可以共同操作:

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

此外,在声明...whose name extension is in {"DWG", "STEP"} 变量之后,将最后的end tell移至紧随其后的位置-无需(并且具有积极性)将 System Events 操作包含在 Finder 块。

因此,您的 Finder 命令应该看起来像这样:

MyFiles

由于某种无法解释的原因,我将其强制为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 的结尾,因为它会加快处理时间。


您的脚本的最后一部分是在不了解此应用程序“ Rhinoceros”的情况下无法提供太多了解的内容。我做了一个快速的Google,但找不到任何东西。

但是,如果它能够理解alias list命令,则表明它是可编写脚本的,并且可能附带了open命令。

从不尝试通过单击坐标来完成任务-它会以最小的插针破坏。如果该程序不可编写脚本,则可能会用save命令引发错误,在这种情况下,最好的办法是编写其应用程序脚本并访问菜单open

但是我认为无论采用哪种方式,您都将很难成功地实现此目标。


如何 ,如果您想要的只是将这些文件保存在单个文件夹中,则无需尝试使用 Rhinoceros 。而是使用 Finder 将文件save(或duplicate)移到新位置:

move

tell app "Finder" to duplicate MyFiles to MyFolder

这可以全部压缩为一行,因此您的整个脚本(如果您确实希望得到这样的结果)将变得简单:

tell app "Finder" to move MyFiles to MyFolder