火曜日, 8月 15, 2023

JavaScriptでAI遊び 08 
選択したオブジェクトにハンドルを追加

前回の逆で、オブジェクトからアンカーポイントのハンドルを削除するためのJavaScriptスクリプトを作ってみました。複数オブジェクトに対応。ただしハンドルの角度は固定です。もっとも、あとの修正が必須なので問題なし? 

/* add_handle.jsx */
// アクティブなドキュメントを取得
var aadoc = app.activeDocument;

// アクティブな選択項目を取得
var selection = aadoc.selection;

// オブジェクトの存在を確認
if (selection.length > 0) {
// 選択したオブジェクトに対して処理を実行
for (var i = 0; i < selection.length; i++) {
var item = selection[i];
// パスアイテムであることを確認
if (item.typename === "PathItem") {
var pathPoints = item.pathPoints;
// アンカーポイントにハンドルを追加
// ハンドルは各アンカーポイントの左側と右側に
// 30ポイント離れた位置に設定
// ↑つまり長さ30ポイントのハンドル
for (var j = 0; j < pathPoints.length; j++) {
var anchor = pathPoints[j].anchor;
var leftHandle = [anchor[0] - 30, anchor[1]];
var rightHandle = [anchor[0] + 30, anchor[1]];
pathPoints[j].leftDirection = leftHandle;
pathPoints[j].rightDirection = rightHandle;
}
}
}
alert("オブジェクトにハンドルを追加しました");
} else {
alert("オブジェクトが選択されていません");
}
/* add_handle.jsx */
上は左が元データ(※)、右が処理結果です
※JavaScriptでAI遊び07の処理結果