選択されているオブジェクトの大きさに合わせたキャプション用テキストフレームを作成します。

起動するとフローティングパレットが表示されますので、キャプションを作成したいフレームを選択して「上」「下」「左」「右」というボタンを押して実行します。方向に応じて選択オブジェクトの幅、もしくは高さに揃ったテキストフレームが作成されます。ウィンドウを閉じるとスクリプトが終了します。

 

デフォルトでは「1(/単位)アキ」で「10(/単位)」の大きさ、また、塗りなどは現在の設定作成でされるようになっています。これらは冒頭にある設定値で変更可能になっています。

 

//選択されているオブジェクトにキャプション用テキストフレームを作成する
//(c)2016 Nakatoji 1000p

#target indesign
#targetengine 'cpMaker'

//-------------------------------------------------------
// 設定値(グローバル)
//-------------------------------------------------------
var g_gutter= 1; //アキ
var g_depth=10; //合わせないほうの幅
var g_fillColor= ''; //塗りの色(必要に応じて)
var g_strokeWeight= ''; //線の太さ(必要に応じて) ex. 1mm
var g_strokeColor= ''; //線の色(必要に応じて) ex. C=100 M=0 Y=0 K=0
var g_style= ''; //段落スタイル(必要に応じて) ex. 本文
var g_spacing= ''; //フレーム内マージン(必要に応じて) ex. 1mm

//-------------------------------------------------------
// 実作業
//-------------------------------------------------------
function cpMaker( dir ) {
    var y1, x1, y2, x2;
    var targetObj=[]; //処理対象収納変数リセット
    var selObj= app.activeDocument.selection; //選択されているオブジェクト
    //処理対象オブジェクトを抽出
    for (var i=0; i<selObj.length; i++) {
        var targetStr= 'Rectangle, Group, Oval, Polygon'; //対象とするオブジェクト名
        if ( ! targetStr.match(selObj[i].constructor.name) ) {break;} //対象外だった
        //指定された方向によって振り分ける
        switch ( dir ) {
        case 'T':
            y1= selObj[i].visibleBounds[0] -g_gutter -g_depth;
            x1= selObj[i].visibleBounds[1];
            y2= selObj[i].visibleBounds[0] -g_gutter;
            x2= selObj[i].visibleBounds[3];
            break;
        case 'B':
            y1= selObj[i].visibleBounds[2] +g_gutter;
            x1= selObj[i].visibleBounds[1];
            y2= selObj[i].visibleBounds[2] +g_gutter +g_depth;
            x2= selObj[i].visibleBounds[3];
            break;
        case 'L':
            y1= selObj[i].visibleBounds[0];
            x1= selObj[i].visibleBounds[1] -g_gutter -g_depth;
            y2= selObj[i].visibleBounds[2];
            x2= selObj[i].visibleBounds[1] -g_gutter;
            break;
        case 'R':
            y1= selObj[i].visibleBounds[0];
            x1= selObj[i].visibleBounds[3] +g_gutter;
            y2= selObj[i].visibleBounds[2];
            x2= selObj[i].visibleBounds[3] +g_gutter +g_depth;
            break;
        }
        var prop= {visibleBounds: [y1,x1,y2,x2]};
        if (g_fillColor !='') { prop.fillColor= app.activeDocument.swatches.item( g_fillColor ); } //塗り
        if (g_strokeWeight !='') { prop.strokeWeight= g_strokeWeight; } //線の太さ
        if (g_strokeColor !='') { prop.strokeColor= app.activeDocument.swatches.item( g_strokeColor ); } //線の色
        //テキストフレーム追加
        var tFlame= app.activeWindow.activePage.textFrames.add(undefined, undefined, undefined, prop); //テキストフレーム作成
        if (g_style !=''){ tFlame.parentStory.appliedParagraphStyle= app.activeDocument.paragraphStyles.item( g_style ); } //段落スタイル
        if (g_spacing != '') { tFlame.textFramePreferences.insetSpacing= g_spacing; } //フレーム内マージン
        if (g_strokeWeight !=''){ tFlame.visibleBounds= [y1,x1,y2,x2]; } //線の太さが設定されていたら再度大きさを調整
    } //<--for i
//$.writeln ('end');
}

//-------------------------------------------------------
// ウィンドウ作成関数
//-------------------------------------------------------
function constWindow() {
    var newWnd= new Window ('palette', 'cpMaker', undefined, {closeButton: true});
    newWnd.margins= [10,5,10,5]; //[L, T,  R, B]
    newWnd.orientation= 'row';
    newWnd.spacing= 0;
    var btA= newWnd.add('button', {x:0, y:0, width:22, height:22}, '左');
    btA.onClick= function () { cpMaker('L'); }
    var gpObj= newWnd.add ('group');
    gpObj.orientation= 'column';
    gpObj.spacing= 0;
    var btB= gpObj.add('button', {x:0, y:0, width:22, height:22}, '上');
    btB.onClick= function () { cpMaker('T'); }
    var btC= gpObj.add('button', {x:0, y:0, width:22, height:22}, '下');
    btC.onClick= function () { cpMaker('B'); }
    var btD= newWnd.add('button', {x:0, y:0, width:22, height:22}, '右');
    btD.onClick= function () { cpMaker('R'); }
    return newWnd;
}

//-------------------------------------------------------
// メイン
//-------------------------------------------------------

var wnd= constWindow();
wnd.show ();

 

 

Joomla templates by a4joomla