このサイトはアフィリエイト広告を利用してます

寸法を自動で追加してくれるIllustratorスクリプト

図面作成の革命!寸法追加の手間を軽減するIllustratorスクリプト

【2023/12/16 更新】
いつも訪問していただきありがとうございます。

  • 図面に寸法を追加するのに手間がかかる
  • 都度、サイズを確認するのに時間がかかる
  • ラインツールとテキストツールを切替えるのが大変

図面作成において、寸法の追加は不可欠な作業です。ただし、寸法を追加するには、オブジェクトのサイズを確認したり、ラインツールとテキストツールを切り替えるなど、時間と労力がかかってきました。

そこで、選択したオブジェクトのサイズを自動で計測し、寸法線と寸法値を追加するIllustratorスクリプトを紹介します。このスクリプトを使えば、今までの寸法追加にかかっていた手間が軽減されます。

サンプルもダウンロードできますので、ぜひご活用ください。

Profile
この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自分の業務で必要になったものを自ら作成し、デザイン作業の効率化を図っています。
最近では、当ブログでも自作スクリプトを公開しています。


それでは、どうぞ

「クリエイティブ」がわかる転職エージェント

●「量より質」を重視した求人のご紹介
●「クリエイティブがわかっている」
●「求人企業を深く知る・密接な関係」

【自動で寸法を追加する】スクリプトの概要

概要
このスクリプト(スクリプト名: 寸法表示00.jsx)は、私がJavaScriptベースで自作したIllustrator用のスクリプトです。まず、このセクションではスクリプトの要点や使い方について解説いたします。

スクリプトのポイント

本スクリプトのポイントは4つあります。

・選択したオブジェクトやパスのサイズを計測してくれる
・計測したサイズを指定した位置に寸法値として追加してくれる
・計測した数値に合わせて寸法線の作成してくれる
・同時に複数のオブジェクトの寸法を追加してくれる

スクリプトの入手方法

本スクリプトは、以下からサンプルとしてダウンロードすることができます。
ダウンロードと使用については「注意事項と免責事項」に記載していますので、必ずお読みください

DL:寸法表示00.jsx

スクリプトの使い方

本スクリプトは、下記の5STEPで使うことができます。

  • STEP1.オブジェクトを選択
  • STEP2.スクリプトを起動
  • STEP3.計測する箇所と表示位置を選択
  • STEP4.フォントサイズ・引き出し距離・縮小率を入力
  • STEP5.【寸法表示】ボタンをクリック

寸法を入力する画像
なお、次の記事ではそもそもIllustratorスクリプトってどう使うのか、活用事例を交えて紹介しているので良ければ参考にしてください。

次のセクションでは、スクリプトのソースコードを公開します。

2.【自動で寸法を追加する】スクリプトのソースコード

スクリプトのソースコード
このセクションでは、本スクリプトの処理条件や文法などをコメントアウトで解説します。

なお下記の記事では、Illustratorスクリプトを自作する方法についてスクリプトコードの事例を交え解説しているのでよければ参考にしてください。


//ウインドウパネルの設定
var win = new Window('dialog','サイズ',[100,100,275,350]);//dialogタイプのウィンドウを選択
var chkBox01 = win.add("checkbox",[10,10,80,30],"ヨコ寸法");
var btn01 = win.add("radiobutton",[90,10,140,30],"上");
var btn02 = win.add("radiobutton",[130,10,170,30],"下");
var chkBox02 = win.add("checkbox",[10,35,80,55],"タテ寸法");
var btn03 = win.add("radiobutton",[90,35,125,55],"左");
var btn04 = win.add("radiobutton",[130,35,165,55],"右");
win.add("statictext",[10,80,115,110],"フォントサイズ:");
var font = win.add("edittext",[115,85,145,110],"10");
win.add("statictext",[150,85,180,110],"pt");
win.add("statictext",[10,110,120,130],"引出し距離:");
var drawer = win.add("edittext",[90,110,120,130],"7");
win.add("statictext",[130,110,170,130],"mm");
win.add("statictext",[10,135,70,150],"縮尺率:");
var btn07 = win.add("radiobutton",[60,135,110,150],"原寸");
var btn08 = win.add("radiobutton",[115,135,170,150],"1/10");
var btn09 = win.add("radiobutton",[10,160,170,175],"その他:1/");
var scale = win.add("edittext",[100,160,170,180],"");
var clickBtn = win.add("button",[10,190,160,230],"寸法表示");

//初期設定ここから
chkBox01.value = true;
btn01.value = true;
btn02.value = false;
chkBox02.value = true;
btn03.value = false;
btn04.value = true;
btn07.value = true;
btn08.value = false;
btn09.value = false;
//初期設定ここまで
//ウインドウパネルの設定ここまで

clickBtn.onClick = function(){
 { win.close(); }//ダイアログを閉じる
    var docObj = activeDocument;
    var selObj = docObj.selection;
    var aLayerObj = docObj.activeLayer;

    for(var i=0; i 0){
                var txtObjW = aLayerObj.textFrames.add();
                txtObjW.contents = (wMM * rate()) + "mm";   //rate() 関数
                if(btn01.value === true){
                    txtObjW.position = [x1 + (width / 2),y1 + (dtp + 25)];
                } else {
                    txtObjW.position = [x1 + (width / 2),y2 - (dtp + 10)];
                };
                txtObjW.paragraphs[0].justification = Justification.CENTER;     //文字のセンター揃え
                txtObjW.paragraphs[0].fillColor = setCMYKColor(0,0,0,80);       //塗り指定
                txtObjW.paragraphs[0].size = fontSize;                          //文字サイズ
                txtObjW.note = "横 寸法";                                       //属性
                
                var lineObjW = aLayerObj.pathItems.add();
                if(btn01.value === true){
                    lineObjW.setEntirePath([[x1,y1 + dtp],[x1,y1 + (dtp + 8.5)],[x2,y1 + (dtp + 8.5)],[x2,y1 + dtp]]);
                } else {
                    lineObjW.setEntirePath([[x1,y2 - dtp],[x1,y2 - (dtp + 8.5)],[x2,y2 - (dtp + 8.5)],[x2,y2 - dtp]]);
                };
                lineObjW.filled = false;
                lineObjW.stroked = true;
                lineObjW.strokeWidth = 0.283;
                lineObjW.strokeColor = setCMYKColor(0,0,0,80);
                lineObjW.note = "横 引き出し線";
            };
        };
        //横幅の設定ここまで
       //縦幅の設定ここから
        if(chkBox02.value === true){
            if(hMM > 0){
                var txtObjH = aLayerObj.textFrames.add();
                txtObjH.contents = (hMM * rate()) + 'mm';
                if(btn03.value === true){
                    txtObjH.position = [x1 - (dtp + 15),y1 - (height/2.2)];
                    txtObjH.paragraphs[0].justification = Justification.RIGHT;
                }else {
                    txtObjH.position = [x2 + (dtp + 15),y1 - (height/2.2)];
                    txtObjH.paragraphs[0].justification = Justification.LEFT;
                };
                txtObjH.paragraphs[0].fillColor = setCMYKColor(0,0,0,80);
                txtObjH.paragraphs[0].size = fontSize;
                txtObjH.note = '縦 寸法';

                var lineObjH = aLayerObj.pathItems.add();
                if(btn03.value === true){
                    lineObjH.setEntirePath([[x1 - dtp,y1],[x1 - (dtp + 8.5),y1],[x1 - (dtp + 8.5),y2],[x1 - dtp,y2]]);//右に表示
                }else{
                    lineObjH.setEntirePath([[x2 + dtp,y1],[x2 + (dtp + 8.5),y1],[x2 + (dtp + 8.5),y2],[x2 + dtp,y2]]);//左に表示
                };
                lineObjH.filled = false;
                lineObjH.stroked = true;
                lineObjH.strokeWidth = 0.283;
                lineObjH.strokeColor = setCMYKColor(0,0,0,80);
                lineObjH.note = '縦 引き出し線';
            };
        };//縦幅の設定ここまで
    };//for
};//function

//小数点第3位まで表示する計算式
function point(num){
    return Math.round(num * 1000) / 1000;
};

//CMYKの設定
function setCMYKColor(c,m,y,k){
    var CMYK = new CMYKColor();
    CMYK.cyan = c;
    CMYK.magenta = m;
    CMYK.yellow = y;
    CMYK.black = k;
    return CMYK;
};

//縮尺率の計算式
function rate(){
    if(btn07.value === true){
        var ed = 1;
    }else {
        if(btn08.value === true){
            var ed = 10 ;
        } else {
            if(btn09.value === true){
                var ygyg = eval(scale.text);
                var ed = ygyg;
            }else{};
        };
    };
    return ed ;
};
win.show();//windowを表示



3.注意事項と免責事項

注意している女性
本記事に記載してあるスクリプトを実行した結果生じるトラブルに関しては一切の責任を負いません。ご利用は自己責任にてお願いいたします。

またIllustratorのアップデートにより動作が変わってしまう可能性もあります。アップデートによる動作の不具合に関しては、対処しかねるので予めご理解ください。

最後に本記事で配布しているスクリプトを無断で転送・販売・配布することは禁止いたします。



【自動で寸法を追加する】スクリプトのまとめ

SUMMARY
本記事では、選択したオブジェクトに自動で寸法を追加してくれるIllustratorスクリプトを紹介しました。

今回紹介したスクリプトのポイントは以下のとおりです。

・選択したオブジェクトやパスのサイズを計測してくれる
・計測したサイズを指定した位置に寸法値として追加してくれる
・計測した数値に合わせて寸法線の作成してくれる
・同時に複数のオブジェクトの寸法を追加してくれる

このスクリプトを使えば、今までの寸法追加にかかっていた手間が軽減されるのでIllustratorで図面を作成するさいは、ぜひこのスクリプトを活用してください。

なお、Illustratorスクリプトについて学んでみたいと思った方は、次の記事でおすすめの書籍とWEBサイトについて紹介しているので良ければ参考にしてください。

というわけで今回は以上です。
『図面作成の革命!寸法追加の手間を軽減するIllustratorスクリプト』を最後までお読みいただきありがとうございました。

ブログランキング・にほんブログ村へにほんブログ村 人気ブログランキング


ガネメ現役サラリーマン

投稿者の過去記事

◇このブログでは、15年以上DTPデザイナーとして、学んできたデザインやパソコンのセキュリティ知識・参考になった書籍などを紹介しています。
たまに、脇道にそれることもあります。

◇このブログはアフィリエイト広告を利用しています

◇取得資格
・情報セキュリティマネジメント
・ITパスポート
・色彩検定 2級
・色彩検定 UC級
・屋外広告士
・第2種電気工事士
その他・・・・

プロフィール

face

ガネメ
鹿児島県在住
現役サラリーマン

◇このブログでは、15年以上DTPデザイナーとして、学んできたデザインやセキュリティ知識、参考になった書籍などを紹介しています。
たまに、脇道にそれることもあります

◇取得資格
・情報セキュリティマネジメント
・ITパスポート
・色彩検定 2級
・色彩検定 UC級
・屋外広告士
・第2種電気工事士
その他・・・・

詳しいプロフィールはこちら

アーカイブ

カテゴリー

使用中のレンタルサーバー

ピックアップ記事

  1. Illustratorの便利機能
    Illustratorの作業を自動化したい EXCELのマクロみたいな機能を探し…
  2. 三角関数や円周率を使ってサッカーボールの作成 Illustratorスクリプト
    ・図形の座標を取得したい ・三角関数のコードについて学びたい ・プログ…
  3. includeを使う方法
    Illustratorスクリプトのライブラリを作りたい 関数を外部ファイルとして…




PAGE TOP