選択したオブジェクトの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 */任意のオブジェクトを選択して実行すると・・・
また、塗りの有無に関係なくオープンパスでも・・・
問題ありません。