这是一个很长的镜头,但是有可能在Adobe Illustrator文件中存储JavaScript(或任何类型的可执行代码)吗?
我之所以这样问是因为我目前正在尝试自动化从Autodesk Maya导入渲染结果的过程。这个概念是,Maya完成渲染所有帧/层后,MEL脚本可以生成一个Illustrator可以打开并运行其中的命令的文件,将插图画家引导到渲染结果并开始导入它们。
最初的想法是通过MEL脚本发出一个系统命令,在渲染完成后立即启动Illustrator并以某种方式启动该过程。但是,由于这种自动化适用于不那么精通技术的人,因此要求启动另一个应用程序的应用程序会相当令人沮丧并且可能令人困惑。
让Maya生成一个可以在用户打开任务时完成任务的文件是一个非常优选的解决方案。为用户提供更多控制权,并且不会使已经忙于更多应用程序调用的系统过载。
将其视为.mel文件,在打开时,它会启动所需的应用程序(Maya),当应用程序准备就绪时,执行包含的命令(MEL)。有没有办法用Adobe应用程序,特别是Illustrator,文件自动被识别为Illustrator文件(例如.ai),启动应用程序然后运行其中包含的代码(例如JS)?
欢迎任何帮助,但我想避免使用Applecripts / VBS,因为它们是特定于平台的,并且很难在Mac / Windows之间进行管理。
感谢。
答案 0 :(得分:2)
这是一个相对广泛的问题,因为可以有很多方法来实现这一目标。 我会尝试在这里给你一个可能的解决方案,显然可能不是最好的。
您的需求:
解决方案:
总而言之,一旦渲染了帧,所有三个文件(.jsx,.bat,.command)将在与帧相同的文件夹中创建。 当您的艺术家想要创建他们的Illustrator场景时,他们只需双击.bat或.command文件即可自动运行Illustrator并导入渲染的帧并保存文件。
在Windows上的Illustrator(CS 5.1)上运行脚本的命令是,这将是.bat文件的内容:
"C:\Program Files (x86)\Adobe\Adobe Illustrator CS5.1\SupportFiles\Contents\Windows\Illustrator.exe" C:\Path\To\Script.jsx
您可以轻松地为.command文件创建一个等效文件。
Script.jsx可以是这样的:
// Get the fullpath of the script
var script_fullpath = $.fileName
// Only get the folder path
var script_folder = Folder(script_fullpath).path
// Get renderred frames
var rendered_frames = Folder(script_folder).getFiles("*.exr");
if(rendered_frames.length == 0){
alert("No images to import");
}else{
// Loop through all the images
// Create a new artbook
// Import Fram
// Then save the file here: script_folder + "/" + "illustratorFile"
}