忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[イラレ]
無変換キー押下中に線幅・効果・パターンの拡大縮小をONにする(AutoHotkey)

イラレでページアイテムの四隅をドラッグして変形するとき、Shiftを押しながらだと縦横比保持とか、Alt押しながらだと中心位置を保持とかっていう機能がありますが、そんな感じで無変換キーを押してると線幅・効果・パターンも変形されるようにしてみましょう。日本語キーボードの負の遺産、無変換キーを有効活用できるというのもAutoHotkeyの大きな利点です。

環境設定の「パターンも変形する」「線幅と効果も拡大縮小」をONにするExtendScriptはこうです。trueをfalseにしたらOFFになります。
app.preferences.setBooleanPreference("transformPatterns",true);
app.preferences.setBooleanPreference("scaleLineWeight",true);

あとはこれを無変換キー+左クリック押し始めに実行して、放した瞬間にOFFの方を実行する、というのをAHKスクリプトで書きます。vk1Dsc07Bというのが無変換キーを表す文字列。キーボードやマウスの入力はAutoHotkeyがホットキーとして受け取るとイラレ側には送られないので、左クリックだけはちゃんとSendコマンドで送ってやります。

vk1Dsc07B & LButton::
    js=
    (
    app.preferences.setBooleanPreference("transformPatterns",true);
    app.preferences.setBooleanPreference("scaleLineWeight",true);
    )
    app:=ComObjActive("Illustrator.Application")
    app.DoJavaScript(js)
    Send, {LButton down}
Return

vk1Dsc07B & LButton Up::
    Send, {LButton up}
    js=
    (
    app.preferences.setBooleanPreference("transformPatterns",false);
    app.preferences.setBooleanPreference("scaleLineWeight",false);
    )
    app:=ComObjActive("Illustrator.Application")
    app.DoJavaScript(js)
Return

できあがりー

追記:
上記のスクリプトでは、自由変形ツールでShiftやAltキーと無変換キーを組み合わせて使った場合にShift、Altが無効化されてしまうことがわかりました(選択ツールだと大丈夫なのに…)。
で、下記のようにマウスの左ボタンを放すときに押されてるキーも一緒に送ってやれば大丈夫そう。

vk1Dsc07B & LButton::
    js=
    (
    app.preferences.setBooleanPreference("transformPatterns",true);
    app.preferences.setBooleanPreference("scaleLineWeight",true);
    )
    app:=ComObjActive(AiProgId)
    app.DoJavaScript(js)
    Send, {LButton down}
Return
vk1Dsc07B & LButton Up::
    if (GetKeyState("Shift")=1)
    {
        if(GetKeyState("Alt")=1)
            Send, !+{LButton up}
        else
            Send, +{LButton up}
    }
    else
    {
        if(GetKeyState("Alt")=1)
            Send, !{LButton up}
        else
            Send, {LButton up}
    }
    js=
    (
    app.preferences.setBooleanPreference("transformPatterns",false);
    app.preferences.setBooleanPreference("scaleLineWeight",false);
    )
    app:=ComObjActive(AiProgId)
    app.DoJavaScript(js)
Return
PR

[イラレ]
テキストエリアを文字サイズの整数倍にするスクリプト

長方形のエリアテキストを選択して実行すると、テキストエリアの横幅(縦組みなら縦幅)を1文字目の文字サイズ×水平比率(縦組みなら垂直比率)の整数倍にします。
エリア内文字オプションの段組みやオフセットにも対応してます。

※回転とかシアーがかかってるとダメです

[ダウンロード]

[イラレ]
イラレで「プレーンテキストとしてペースト」と「現在のレイヤーにペースト」(AutoHotkey)

「プレーンテキストとしてペースト」の方は前回ちょっと書いたんですが、今回はやり方をかえて、ExtendScriptっぽくcontentsにぶっこんじゃいましょう。これならクリップボードも書き換えずに済みます。
^!v::
    app:=ComObjActive("Illustrator.Application")
    sel:=app.Selection
    If (ComObjType(sel,"Name")="TextRange"){
        cc=%clipboard%
        If cc!=
        {
            sel.Contents:=cc
        }
    }
Return

んで、これは基本的にテキスト選択時に使用するものってことにする。そうじゃないときは、この同じCtrl+Alt+Vのコマンドを別のペーストに使いましょう。限りあるキーコマンドを大切に。

他にペースト系でキーボードショートカットが欲しかったのと言えば、「現在のレイヤーにペースト」です。私は普段、レイヤーパネルメニューにある「コピー元のレイヤーにペースト」をONにして作業してるので、これをOFFにして、ペーストして、またONに戻すって操作を一発でやりたい。
これをExtendScriptで書くとこんな感じ

    app.preferences.setBooleanPreference("layers/pastePreserve",false);
    app.paste();
    app.preferences.setBooleanPreference("layers/pastePreserve",true);

これをAutoHotkeyスクリプトに書き換えようと思ったのですが、COMオブジェクトにもSetBooleanPreferenceメソッドはたしかにあるのですが、第2引数がBoolean型じゃないと受け付けてくれない(0も"False"もダメ)。そしてなんとAHKスクリプトにはBoolean型が存在しない!

しかたないのでまたDoJavaScriptに登場してもらいます。


^!v::
    app:=ComObjActive("Illustrator.Application")
    sel:=app.Selection
    If (ComObjType(sel,"Name")="TextRange"){
        cc=%clipboard%
        If cc!=
        {
            sel.Contents:=cc
        }
    }
    Else
    {
    js=
    (
    app.preferences.setBooleanPreference("layers/pastePreserve",false);
    app.paste();
    app.preferences.setBooleanPreference("layers/pastePreserve",true);
    )
   app.DoJavaScript(js)
    }
Return


できあがりー
これでCtrl+Alt+Vがテキスト選択時には「プレーンテキストとしてペースト」、テキスト非選択時には「現在のレイヤーにペースト」になりました。

[イラレ]
AutoHotkeyでイラレのスクリプトにショートカットキーを割り当ててみる(2)

前回の続きー

2つのページアイテムが選択されているとき、それらの位置を入れ替えるというスクリプトを考えてみます。

まずExtendScriptで書くとこんな感じ

var sel=app.selection;
if (sel.constructor.name!="TextRange" && sel.length==2) {
    var pos0=sel[0].position;
    sel[0].position=sel[1].position;
    sel[1].position=pos0;
}

これを「Ctrl+F1」に登録して実行するには、前回やった方法では、上記のスクリプトをjsxファイルとして保存し、AutoHotkey.ahkに次のように書き加えます。

^F1::
    app:=ComObjActive("Illustrator.Application")
    app.DoJavaScriptFile("D:\場所入れ替え.jsx")
Return

jsxファイルをいちいち用意しなきゃいけないのはめんどくさい!と思う方は、次のように書くこともできます。スクリプトをファイルじゃなく文字列で渡すようにしただけです。

^F1::
    irekaeScript=
    (
    var sel=app.selection;
    if (sel.constructor.name!="TextRange" && sel.length==2) {
        var pos0=sel[0].position;
        sel[0].position=sel[1].position;
        sel[1].position=pos0;
    }
    )
    app:=ComObjActive("Illustrator.Application")
    app.DoJavaScript(irekaeScript)
Return

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

5つの「く」

ハタハタのすばらしさをまとめました。