LoginSignup
0
0

More than 5 years have passed since last update.

指定行数に長体処理するIllustratorツールを作りました。

Posted at

先日の某セミナーで、隣に座った人と話した「こんなのあったらいいなぁ」を形にしてみました。

理想

・指定する行数に長体処理を行う。
・Illustratorで改段処理。

方法

テキスト原稿をマークダウンで記載し、それを手掛かりとして指定の行数になるように処理をする。
Illustratorでの改段は無理なので、これもマークダウン記載から段頭になるまで改行を入れる。

。。。色々試してみたが、テキストにマーク付けすること自体面倒くさそうだし、しかも正規表現で対象のテキストを取得しても、その文字が何行持っているかを取得できそうにない。
考えるのも面倒になったので、文字を選択しておいて、指定の行数になるようなシンプルな仕様にしました。
※探求心が足りない。。。

image.png
▲UIはこんな感じ。
 「取り消し」「やり直し」は編集メニューと同じ処理をします。

image.png
▲0.1%刻みで長体処理をするようにしました。
 文字多いと少し時間がかかる。。。

image.png
▲Illustratorのバージョンによって数値を書き換える必要がある。
 CC 2018は22。CC 2017は21。

コードは以下。

指定行に長体処理_ボタン版.jsx
#target illustrator-22
#targetengine main

/*//////////////////////////////////////////////////  変数定義  ////////////////////////////////////////////////////////////////////*/
var doc = app.activeDocument; //ドキュメント

/*/////////////////////////////////////////////// 入力ダイアログ表示 ////////////////////////////////////////////////////////*/
win = new Window("palette", "指定行数に長体処理", [200, 150, 350, 300]);
var para01Btn = win.add("button", [10, 10, 70, 30], "1行");
var para02Btn = win.add("button", [10, 35, 70, 55], "2行");
var para03Btn = win.add("button", [10, 60, 70, 80], "3行");
var para04Btn = win.add("button", [75, 10, 135, 30], "4行");
var para05Btn = win.add("button", [75, 35, 135, 55], "5行");
var para06Btn = win.add("button", [75, 60, 135, 80], "6行");
var unDoBtn = win.add("button", [10, 90, 70, 110], "取り消し");
var reDoBtn = win.add("button", [75, 90, 135, 110], "やり直し");
var cancelBtn = win.add("button", [10, 120, 135, 140], "キャンセル");

win.show(); //ウィンドウを表示
win.center(); //センターに表示  

/*//////////////////////////////////////////////////////////// 関数 //////////////////////////////////////////////////////////////*/
//▼1~6行のボタンが押されたとき
para01Btn.onClick = function () { //1行
    num = 1;
    btProcess();
};

para02Btn.onClick = function () { //2
    num = 2;
    btProcess();
};

para03Btn.onClick = function () { //3行
    num = 3;
    btProcess();
};

para04Btn.onClick = function () { //4行
    num = 4;
    btProcess();
};

para05Btn.onClick = function () { //5行
    num = 5;
    btProcess();
};

para06Btn.onClick = function () { //6行
    num = 6;
    btProcess();
};

//▼取り消しボタンが押されたとき
unDoBtn.onClick = function () {
    var bridgeTalk = new BridgeTalk(); //BridgeTalkを使用
    bridgeTalk.target = "illustrator-22";
    bridgeTalk.body = "undo();"
    bridgeTalk.send();
};

//▼やり直しボタンが押されたとき
reDoBtn.onClick = function () {
    var bridgeTalk = new BridgeTalk(); //BridgeTalkを使用
    bridgeTalk.target = "illustrator-22";
    bridgeTalk.body = "redo();"
    bridgeTalk.send();
};

//▼キャンセルボタンが押されたとき
cancelBtn.onClick = function () {
    win.close();
};

//▼長体処理関数 BridgeTalk
function btProcess() {
    var bridgeTalk = new BridgeTalk(); //BridgeTalkを使用
    bridgeTalk.target = "illustrator-22";
    bridgeTalk.body = "setBtnValue(num);"
    bridgeTalk.send();
}

//▼行数を指定する関数
function setBtnValue(num) {
    var sel=doc.selection;
    var paraLen = doc.selection.paragraphs.length; //選択している段落数
    //▼エラー処理
    if (paraLen > 1) {
        alert("選択している文字が段落に跨ってます。\r\nご確認ください。");
        return;
    }
    while (sel.lines.length > num) { //指定した行数になるまで-1づつ長体をかける
        sel.horizontalScale -= 0.1;
    }
}

//▼取り消し関数
function doUnDo() {
    undo();
}

//▼やり直し関数
function doReDo() {
    redo();
}

感想

はじめdropdownlistで作っていたがWindows10だと切れてしまったのでボタンにしました。
長体を100%に戻すボタン、長体率を上げるボタンなども設けてもいいかと思った。
関数周りをもう少しスマートに書けるようになりたい。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0