[AI]アフィン変換の活用[AI]

アフィン変換の活用Illustratorはいくつかのオブジェクトがmatrixプロパティを持ちます。そして、appクラスには各種matrix操作メソッドがあり、それを利用することによって色々と出来ることがあります。例えば、

スクリーンショット 2018-02-21 12.31.58

こちらのようにinverseMatrixを利用して回転角・縮尺をリセットするような操作が可能です。もっと単純に処理できるのはテキストオブジェクトでスケール等の情報が全て級数や長平体に移行されるためmatrixが回転角のみとなります。その為matrixの一部の数値からasinを利用して回転角を計算することが可能です。

var m = app.selection[0].matrix;
alert(-Math.asin(m.mValueC)/Math.PI*180);

メソッドが返すのはラジアンですから上の様にdgreeに変換する必要があります。とまあ、こんな感じで上手く使うと非常に便利なアフィン変換のマトリクスですが、なんだかなぁ〜って思っている方に以下のブツをおすすめします。

var $_affine={
var $_affine={
 win:function(){
 var w = new Window ('dialog', "affine matrix", undefined);
 var p1 = w.add('panel',undefined,"a"); p1.size = [100,45];
 var tx1 = p1.add('edittext',undefined,'1',{multiline:false});
 tx1.characters = 5;
 var p2 = w.add('panel',undefined,"b");
 p2.size = [100,45];
 var tx2 = p2.add('edittext',undefined,'0',{multiline:false});
 tx2.characters = 5;
 var p3 = w.add('panel',undefined,"c");
 p3.size = [100,45];
 var tx3 = p3.add('edittext',undefined,'0',{multiline:false});
 tx3.characters = 5;
 var p4 = w.add('panel',undefined,"d");
 p4.size = [100,45];
 var tx4 = p4.add('edittext',undefined,'1',{multiline:false});
 tx4.characters = 5;
 var cl = w.add('button', undefined, 'cancel', {name:'cancel'});
 var bt = w.add('button', undefined , 'apply', {name:'ok'});
 bt.onClick = function (){
 $_affine.applyTransform(tx1.text,tx2.text,tx3.text,tx4.text);
 } w.show();
 },
 applyTransform:function(a,b,c,d){
 var tm = new Matrix();
 tm.mValueA = Number(a);
 tm.mValueB = Number(b);
 tm.mValueC = Number(c);
 tm.mValueD = Number(d);
 tm.mValueTX = 0;
 tm.mValueTY = 0;
 //alert(tm.mValueA+tm.mValueB+tm.mValueC+tm.mValueD);
 app.selection[0].transform(tm,true,true,true,true,1);
 app.redraw();
 }
 }
$_affine.win();

スクリーンショット 2018-02-21 12.40.07
ScriptUIで各パラメータを入力して選択したオブジェクトを回したり拡大したりと試せるようになっています。一度使ってみてください。

広告

manifest.xmlの仕様についてxsdに記述されているREから解説を試みる

先日Adobe公式ユーザーフォーラムのブログにてmanifest.xmlをXSDファイルを利用して検証する方法を書いたのですが、それに関連してもうひとつ踏み込んだ事を書いておきます。
もう、そのまんまなのですが、manifest.xml用のXSDファイルにはValidater通す時のために正規表現による定義が施されているプロパティが幾つかあります。それらに関して仕様は英語でクソ丁寧に書かれていますが、空気を読まずに正規表現から読み解くなんて事をやります。

続きを読む

新しい所でブログ書いています。

皆様、いかがお過ごしでしょうか。年度末も近づき多忙な日々をお過ごしになっている方も多いかと存じます。

わたしもこの所、ろくに記事を書いておりませんが忙しいとか何とかではありません。別な所で書いているだけです。

アプリケーション自動化総合コミュニティフォーラム (Japan)

こちらのAdobe社公式フォーラムの「アプリケーション自動化総合コミュニティフォーラム(Japan)」ですが、Blogインターフェースを増設してもらいました。という事で基本的な物とか、広く一般に周知したいような内容はそちらに書きます。もちろん、こちらも放置する訳ではなくて、ニッチなものから高度な内容に関しては引き続き殴り書きする予定です。双方ともご愛顧頂けますようお願い申し上げます。

もちろん、ExtendScriptとかAppleScript等、自動処理関連でお困りの節は前述のフォーラムで質問して下さい。アプリケーションは問いません。手捏ね引いて待っています(^-^)/

 

 

FrameMakerのQRコードビルダーについて

ご無沙汰しています。こちらで書くのは久しぶりなのですがAdobeのユーザーフォーラムにブログを設けましたので今後はそちらの記事が多くなる予定です。自動化全般について取り扱うスタイルは今までと変わりありませんので定期的にチェックしてみて下さい。

https://forums.adobe.com/community/international_forums/japanese/automation/overview

ところで、昨年末から個人的にFrameMakerを仕入れて色々とテストしています。

fm

これもExtendScriptをサポートするのですが、随分と毛色が違っていて思うように動かす事ができません。UI絡みなんてとても変です。というか、まともにScriptUIが使えないw

それは多分どうでもいいんです。今回はまたもやBUGを踏み抜いてしまったようなので、その顛末を残しておきます。

続きを読む

AI rotaterの新版などを…

あけおめ、どぞよろ(^-^;
という事で、リクエスト来てたローテーターのアップデートです。
zxpパッケージは以下のリンクから
https://drive.google.com/open?id=1qwRLfqrMp9hdjUesZ_ArFzXkDxswo-3o

ZXP Installer等を利用してインストールして下さい。対応はver.17以降を全てサポートしています。

利用方法
このツールは曲線中のアンカーポイントにおける接線に対して平行にオブジェクトを自動的に配置するためのものです。平たく言うと選択したアンカーポイントを見て良い感じに一緒に選択したオブジェクトを回してくれるというものです。
例えは、以下のようにテキストとアンカーポイントを選択しておきます。

airotaterbefore

この状態からボタンをワンクリックで設定したオフセット位置に角度を合わせた状態に回転して配置し直してくれる優しい子です。

airotaterafter

もう一例挙げておきましょう。

airotaterrailway

この様に路線に対して駅の四角を手早く配置する際に便利です。

[AI]消費税を8→10%に変更するスクリプト

さて、皆様におかれましてはご清祥の事とお慶び申し上げます。中には本年中のお仕事も納まってしまって年越しの準備を進められている方も多いかと存じます。
皆様はどんな一年だったでしょうか?良かった人も散々だった人もいらっしゃることとは思いますが、良かった人はそれなりに、悪かった人もそれなりに適当に新年を迎えればよろしいかと思いますです。

そんなこんなで、わたしも来年の準備をやってみました。来年は消費税の増税があります。恐らく既存データの流用等がたくさんあるはずで、ある日を境に全て数字を変更しなければならない様な羽目になるわけですが、それを少しだけ楽にします。

続きを読む

Crerative Suite 6のエクステンションに関する問題について

現在、CS6以前のアプリケーションにおいて、Adobe社純正エクステンション(Mini BridgeやKuler)が動作を停止しています。これ、はエクステンション読み込み時の検証に失敗するためです。以下、技術的詳細となります。

エクステンションは、読み込み時にそれが正しいものかをチェックします。この時にチェックされる項目に、タイムスタンプのチェックがあるのですが、この時に利用されるタイムスタンプサーバーが2017.10.31いっぱいで廃止されたようです。

※実はフォーラムの方で日付を2017.10.30以前に戻せば動作するという報告が複数上がってきています。ここから分かることはサーバーを停止させたと言うことではなくて、エクステンションを作成する時に使われた証明書の失効が疑わしくなります。

この事により、一連のエクステンションは全てが起動時の検証でエラーを生じ、パネルが開くものの中身が表示されない状態となります。これを直すには、Adobe社がタイムスタンプサーバーを用意してエクステンションを再度パッケージし直す等の処理が必要となります。しかし、CS6以前のアプリケーションというのは既にサポートが終わっている製品ですから対応されることは無いでしょう。つまり、この先これらのエクステンションが正常に動作することは望めないのです。
しかしながら、これらのエクステンションに関してはPlayerDebugModeを設定して上記の検証処理自体を回避する手段が利用可能です。弊害として、どんなエクステンションでも動いてしまうようになるので、サードパーティ製の良くわからないエクステンションの導入には注意が必要でしょう。特に野良エクステンションの導入はご一考いただきたいと思います。
これらを理解した上で以下の情報をご利用下さい。

設定方法
Macの場合/ターミナルから以下のコマンドを実行
defaults write ~/Library/Preferences/com.adobe.CSXS.3.plist PlayerDebugMode 1

Windowsの場合/コマンドプロンプトから以下のコマンドを実行
reg add HKEY_CURRENT_USER\SOFTWARE\Adobe\CSXS.3 /t REG_SZ /v PlayerDebugMode /d 1 /f

CS5ファミリーの場合は上記の「CSXS.3」の部分をCS5の場合は「CSXS.2」に、CS5.5の場合は「CSXS2.5」にそれぞれ書き換えて実行して下さい。
また、Windowsの場合は再起動が必要かもしれません。

追記

この問題はBridgeCS6の機能拡張まわり(エクスポートパネル等)にも影響を与えます。