3

任何想法为什么有时当调用脚本运行时它会启动 ExtendScript Toolkit 并停止?我认为这可能是当有很多文本要通过时。不确定每次都是这样。见下图脚本。

如果它停止它就停止在行: var new_string = this_text_frame.contents.replace(search_string, replace_string);

    // Version 3

function myReplace(search_string, replace_string) {
    var active_doc = app.activeDocument;
    var text_frames = active_doc.textFrames;
    if (text_frames.length > 0)
    {
        for (var i = 0 ; i < text_frames.length; i++)
        {
            var this_text_frame = text_frames[i];
            var new_string = this_text_frame.contents.replace(search_string, replace_string);
            if (new_string != this_text_frame.contents)
            {
                this_text_frame.contents = new_string;
                }
            }
        }
    }
myReplace(/^PRG.*/i, "");
myReplace(/.*EBOM.*/i, "");
myReplace(/^PH.*0000.*/i, "");
myReplace(/^PH.*00\/.*/i, "");
//  N or W  &  6 #'s   &   -S_    EX. N123456-S_  REPLACE with:  N123456-S???    (THIS NEEDS TO BE ABOVE  _ REPLACED BY SPACE)
myReplace(/([NW]\d{6}-S)_/i, "$1??? ");

myReplace(/_/gi, " ");
//  6 #'s   &  - or no -  &  7 #'s   &  1 to 3 #'s   &  -    EX: 123456-1234567/123-  REPLACE with:  -123456-
myReplace(/(\d{6})-?\d{7}\/\d\d?\d?-/i, "-$1-");
myReplace(/(\d{6})-?\d{7}-\/\d\d?\d?-/i, "-$1-");

myReplace(/([NW]\d{6}-S)-INS-\d\d\/\d\d?-/i, "$1??? ");

myReplace(/-INS-\d\d\/\d\d?-/i, "* ");

//  -  That is only followed by one more -  &   Not having PIA   &  -  &   2 to 3 #'s   &   /   &   1 to 3 #'s   &   -      EX:   -7NPSJ_RH-001/9-   REPLACE with  * & Space
myReplace(/-[^-]*-\d\d\d?\/\d\d?\d?-/i, "* ");

myReplace(/ ?ASSEMBLY/gi, " ASY");
myReplace(/ ASS?Y+$| ASS?Y - | ASS?Y -| ASS?Y | ASS?Y- | ASS?Y-/gi, " ASY - ");

myReplace(/(MCA-|DS-?C1-?)/i, "-");

myReplace(/^DS-|^DI-|^PH-|MCA|^PAF-|^PAF|^FDR-|^FDR/i, "");

myReplace(/VIEW ([a-z])/i, "TTEMPP $1");

myReplace(/ ?\(?V?I?EW\)| ?\(?VIE[W)]?|^W\)| ?\(VI+$|^ ?\(VI| ?\(V+$|^ ?\(V| ?\(+$|^ ?\)/i, "");

myReplace(/TTEMPP ([a-z])/i, "VIEW $1");

myReplace(/([NW]\d{6}-S)-/i, "$1??? ");
myReplace(/([NW]\d{6}-S)\/.-/i, "$1??? ");

//   Needs to be in this order
myReplace(/ AND /i, "&");
myReplace(/WASHER/i, "WSHR");
myReplace(/BOLT/i, "BLT");
myReplace(/STUD/i, "STU");
myReplace(/([SCREW|SC|NUT|BLT|STU])&WSHR/i, "$1 & WSHR");
myReplace(/\?\?\? SCREW &/i, "??? SC &");
myReplace(/\?\?\? SC [^&]/i, "??? SCREW ");
myReplace(/(\?\?\? SC & WSHR).*/i, "$1");
myReplace(/(\?\?\? SCREW).*/i, "$1");
myReplace(/(\?\?\? NUT & WSHR).*/i, "$1");
myReplace(/\?\?\? NUT [^&].*/i, "??? NUT");
myReplace(/(\?\?\? BLT & WSHR).*/i, "$1");
myReplace(/\?\?\? BLT [^&].*/i, "??? BLT");
myReplace(/(\?\?\? STU & WSHR).*/i, "$1");
myReplace(/\?\?\? STU [^&].*/i, "??? STU");

myReplace(/--/gi, "-");


if ( app.documents.length > 0 && app.activeDocument.textFrames.length > 0 ) {
// Set the value of the word to look for
searchWord1 = "*";
//searchWord2 = "The";

// Iterate through all words in the document
// the words that match searchWord
for ( i = 0; i < app.activeDocument.textFrames.length; i++ ) {
textArt = activeDocument.textFrames[i];
for ( j = 0; j < textArt.characters.length; j++) {
word = textArt.characters[j];
if ( word.contents == searchWord1 ) {

word.verticalScale = 120;
word.horizontalScale = 140;
word.baselineShift = -3;
}
}
}
}

[img]http://i.imgur.com/9IRy9.jpg[/img]

调用此 javascript 以从 applescript 运行。

    set Apps_Folder to (path to applications folder as text)
set Scripts_Path to "Adobe Illustrator CS5:Presets.localized:en_US:Scripts:"
set JS_FileName to "Text Find & Replace.jsx"
--
try
    set JS_File to Apps_Folder & Scripts_Path & JS_FileName as alias
    tell application "Adobe Illustrator"
        do javascript JS_File show debugger on runtime error
    end tell
on error
    display dialog "Script file '" & JS_FileName & "' NOT found?" giving up after 2
end try
4

3 回答 3

1

它不是“MRAP”,而是“PARM”,但数字合适。

实际上,在 MacOS 上,“MRAP”是返回的正确句子。“PARM”适用于 Windows。

我对这个错误的经验:

我运行了 2 000 行的 javascript。

我必须检查 700 个文件夹,每个文件夹包含 1-15 个不同的 .ai 文件。

  • 在 MACOS 10.7 上,我在 15 个文件夹中收到了 2 次此错误,从来没有同一个文件。(CS6)

  • 在 Win8 上,我在 5 个文件夹中出现了 1 次此错误,而不是同一个文件。(CC 2014)

  • 在 win7 上,我在 100 个文件夹中出现了 1 次此错误,而不是同一个文件。(CC 2014 或 CS6)

  • 最后我在刚刚安装的win7上运行它,我没有收到任何错误,脚本运行了10个小时没有中断。(CC 2014 或 CS 6)

于 2014-12-13T00:28:44.673 回答
1

您是否搜索过您的错误代码?

1346458189 ('MRAP')  

它位于 ESTK 的底部。看看这里http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scripting/cs6/Readme.txt

它不是“MRAP”,而是“PARM”,但数字合适。

“发生 Illustrator 错误:1346458189 ('PARM')”警报 (1459349)
影响:JavaScript
问题:
当粗心编写的脚本
从 ExtendScript Toolkit 在 Illustrator 中重复运行时,可能会出现此警报。

每个脚本运行都在 Illustrator 中相同的持久 ExtendScript
引擎中执行。最终效果是
ExtendScript 引擎的状态在之前运行的所有脚本中是累积的

脚本代码的以下问题可能会导致此问题:

  • 读取未初始化的变量。
  • 全局命名空间冲突,例如来自不同
    脚本的两个全局变量具有相同名称。

在您的脚本中有一些未初始化的变量

searchWord1 = "*"; 

textArt = activeDocument.textFrames[i];

word = textArt.characters[j];
于 2012-12-20T13:28:57.733 回答
1

虽然我确信@fabianmoronzirfas 有技术上正确且最有可能的答案,但我最近遇到的错误1346458189似乎是 Illustrator 中的微软臭名昭著的“未知错误”。也就是说,对于 Adob​​e 没有为其编写更多信息的错误陷阱的任何内容,它似乎都是包罗万象的错误。

对我来说,这个无益的错误是由于试图将画板设置得太小(低于 1 分)造成的。显然,Illustrator 没有做足够的边界检查。对于其他人,据我通过搜索网络得知,它来自一些原因。可能包括 Illustrator 脚本处理器中的内存和其他错误,这将是在某些情况下解释其随机性的一种方法。然而,最有可能的是,我怀疑它通常可以通过更持久的代码来解决。

于 2017-09-25T23:15:08.213 回答