日曜日, 8月 11, 2024

JavaScriptでAI遊び 21 
選択オブジェクトを複合パスでドーナツ作成

選択したオブジェクトの50%複製を元のオブジェクトの中心に配置し、全体を選択して複合パスによりドーナツ形状を作成してみます。

/* composite_path.jsx */
#target illustrator
// ドキュメントの存在を確認
if (app.documents.length > 0) {
var doc = app.activeDocument;

// オブジェクトが選択されているかを確認
if (app.selection.length > 0) {
for (var i = 0; i < app.selection.length; i++) {
var selectedObject = app.selection[i];

if (selectedObject.typename == "PathItem") {
// オブジェクトの中心を計算
var centerX = selectedObject.position[0]
+ selectedObject.width / 2;
var centerY = selectedObject.position[1]
- selectedObject.height / 2;

// オブジェクトを複製して50%に縮小
var duplicatedObject = selectedObject.duplicate();
duplicatedObject.resize(50, 50);
                // 幅と高さを50%に縮小
                // 必要であれば、ここを好みの比率に変更

// 複製されたオブジェクトの中心を計算
var duplicatedCenterX = duplicatedObject.position[0]
+ duplicatedObject.width / 2;
var duplicatedCenterY = duplicatedObject.position[1]
- duplicatedObject.height / 2;

// 複製されたオブジェクトを元のオブジェクトの中心に配置
duplicatedObject.position = [centerX
- duplicatedObject.width / 2, centerY
+ duplicatedObject.height / 2];
// 元のオブジェクトと複製されたオブジェクトを選択
selectedObject.selected = true;
duplicatedObject.selected = true;

// 複合パスを作成
doc.selection = [selectedObject, duplicatedObject];
app.executeMenuCommand('compoundPath');
}
}
alert("変なドーナツが作成されました。");
} else {
alert("オブジェクトを選択してください。");
}
} else {
alert("ドキュメントが開かれていません。");
}
/* composite_path.jsx */

任意のオブジェクトを選択して実行すると・・・


上のパレットが表示されれば・・・

完了です。

もちろん自由形状でも・・・

大丈夫です。
 
また、塗りの有無に関係なくオープンパスでも・・・

問題ありません。