神速シリーズで紹介されました。
ごごごごごごぶさたしております。
1月15日(水)に発売される「神速Illustrator[グラフィックデザイン編]」にて何点かスクリプトの紹介を頂きました。
のでこちらでも紹介させていただきます。
イラストレーターを使ってるかたは一度手に取ってみてください。
神速Illustrator [グラフィックデザイン編] CC対応
- 作者: 五十嵐華子,尾花暁,川端亜衣,金山達矢,茄子川導彦,ヤマダジュンヤ
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/01/11
- メディア: 大型本
- この商品を含むブログ (3件) を見る
- 作者: 森裕司,尾花暁,たけうちとおる,宮地知,今関洋一,結城しおり
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/09/27
- メディア: 大型本
- この商品を含むブログ (3件) を見る
- 作者: 浅野桜,石嶋未来,加藤才智,服部紗和,ハマダナヲミ
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/01/09
- メディア: 大型本
- クリック: 40回
- この商品を含むブログ (2件) を見る
「スクリプトが動かないよー」とかいう質問が大量にくると困るので補足ページを貼っておきます。
スクリプトの紹介ページ
イラストレーターのテキストフレームを行ごとに分割したり統合したり
イラストレーターでブラシをランダムに適用する
正規表現を使ってテキストをいじる3.0
補足ページ:
doEx.jsxについての簡単な説明
doEx.jsxについての簡単な説明2
doEx.jsxのチートシート
BridgeTalkのonReceiveの正体がようやく判ったよ
夏の暑さも和らいで かなり過ごしやすくなってきた今日この頃
みなさまはいかがお過ごしでしょうか。
さてデバックが面倒で敬遠されがちなBridgeTalk。
いままで気になってはいたのですがようやくBridgeTalk.onReceive関数の使い方が判りました。
いままで、BridgeTalkといえば見送ったあとはonResult関数で帰還を待つしか手段がないと思っておりました
が…実はonReceive関数で何度も顔を覗きに戻ってこれるようなのです。
実際のソースは以下の通り。
InDesign側からBridgeTalkを一回だけ投げたあとは、
Photoshop側から何度もBridgeTalkでInDesign側に顔を出す仕掛けです。
そこで重要になるのがonReceive関数。
あっちにいったりこっちにいったりとなかなか落ち着きのない子なのですが
使い方によっては面白いことが出来るかもしれません。
#target 'indesign'; // var data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; //photoshop側の処理をまとめたもの var PS = { "init" : function() { PS.RECEIVE(); /*indesignへBridgeTalkで返信*/ return "ID.end()"; /* InDesign側のbt.onResult関数に値が渡る */ }, "RECEIVE": function (){ var bt = new BridgeTalk(); bt.target = "indesign"; bt.onResult = function(rbt){ /* InDesign側のonReceive関数から返値が来る */ try{ /* 結果にtrueが帰ってきたら。続けて返信 */ if(eval(rbt.body)){ PS.RECEIVE(); }else{ }; }catch(e){ } }; bt.onError = function(ebt){PS.DEBUG("PS Error : "+ebt.body)}; bt.onTimeout = function(){PS.DEBUG("timeout...")} bt.body = "ID.getDATA()"; bt.send(20); /* InDesign側のonReceive関数に送信される */ }, /* 何かの処理 true か false を返す*/ "EXE" : function (d){ d || d = false; $.sleep(300); PS.DEBUG(d); return d ? true : false; }, /* */ "DEBUG" : function(mes){ $.writeln(mes); } }; //BridgeTalk先からさらきBridgeTalkで返信が来た場合の処理; BridgeTalk.onReceive = function( msg ) { try{ return eval(msg.body);}catch(e){return e;} } //InDesign側の処理をまとめたもの var ID = { "init" : function(){ /* PhotoShopへBridgeTalk */ var bt = new BridgeTalk(); bt.target = "photoshop"; bt.body = "eval('var PS = "+PS.toSource()+"');PS.init();"; /* PSオブジェクトを渡して PS.initを実行 */ bt.onResult = function( bt ) {return eval(bt.body);}; bt.onError = function( bt ) {ID.DEBUG("ID Error : " + bt.body );}; bt.onTimeout = function(){ID.DEBUG("timeout..")}; bt.send(30000); }, /* dataを返す */ "getDATA" : function(){ $.sleep(500); return "PS.EXE("+data.shift().toSource()+");"; }, /* 最後の一言 */ "end" : function(){ID.DEBUG("終了"); }, "DEBUG" : function(mes){ $.writeln(mes); } } ID.init();
JSONP風味な感じでやりとりするのがマイブームだったりします。
けっこう読みやすくてイケてるような気がするのですがどうでしょうか?
doEx.jsxのチートシート
コメントを頂いたので追記:
Startup Scriptsフォルダに起動時に見込みたいファイルをコピー(エイリアスも可)することで
#includepathと#includeが必要なくなります。
"CS6"の部分はバージョン名で置き換えて下さい。
Windowsの場合
"C:\Program Files\Adobe\Adobe Illustrator CS6\Startup Scripts\doEx.jsx"
MacOSXの場合
"/Library/Application\ Support/Adobe/Startup\ Scripts\ CS6/Illustrator/"
大量のアンドゥが発生して嫌なスクリプトはラッパを作って幸せになろう計画
夏休みが終わってしまいました。
あれほど子供の時は長く感じた夏休みも大人になってしまえば「あ」っという間です。
子供に「宿題は終わったのか?」「進んでいるのか?」と夏休み中、何度も何度も言ってしまいました。
あれ程、子供の頃は五月蠅く感じた親の言葉をついつい口走っている自分。
ようやくあの時の親の気持ちが判りかけてきましたw
ってまだ宿題が全部終わってないとは…やれやれです。
蛙の子はやはり蛙の子なのでしょうか。
さて話は変わりますがInDesignでスクリプトはみなさんお使いでしょう。
通常スクリプトを実行するだけだとスクリプトの命令毎にアンドゥが発生してしまいます。
いざスクリプト実行前の状態に戻そうと思ってもなかなか大変だったりしませんか?
大変ですよね?
ということで、インデザインCS4から実装されたUndoModesを使ってアンドゥ回数を制御するスクリプトを作ってみようと思ったのですが…
これdoScriptを絡ませないといけないみたいで、これまたいちいちスクリプト毎に書くのが面倒くさい…
のでラッパースクリプトを生成するスクリプトを作りました。
たぶんこれで幸せになれるはず。
ダウンロード
使い方:
1.実行すると実行したスクリプトを聞いてくるので選択。
2.選択したスクリプトが実行されます。
3.「FAST_ENTIRE_SCRIPT」というフォルダが作られます。
4.その中にラッパースクリプトが生成されます。
5.次からはそのラッパースクリプトを使えば幸せに。
6.そんな感じ。