土曜日, 11月 23, 2024

JavaScriptでAI遊び 30 
視点と終点の不明なオープンパスをクローズパスへ変更

視点と終点の不明なオープンパスをクローズパスへ変更させます。ただし、接点がチョット怪しいです。難しい・・・(>_<)

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

// 選択されているアイテムがあるか確認
if (doc.selection.length > 0) {
for (var i = 0; i < doc.selection.length; i++) {
var selectedItem = doc.selection[i];

// 選択されているアイテムがパスか確認
if (selectedItem.typename
            == "PathItem" && !selectedItem.closed) {
// パスの最初のアンカーポイントと
            // 最後のアンカーポイントを取得
var firstAnchor
                = selectedItem.pathPoints[0];
var lastAnchor
                = selectedItem.pathPoints
                    [selectedItem.pathPoints.length - 1];

// パスをクローズ
selectedItem.closed = true;

// 始点と終点を結ぶ
selectedItem.pathPoints.add();
var newPoint
                = selectedItem.pathPoints
                    [selectedItem.pathPoints.length - 1];
newPoint.anchor = lastAnchor.anchor;
newPoint.leftDirection = lastAnchor.leftDirection;
newPoint.rightDirection = lastAnchor.rightDirection;

selectedItem.pathPoints
                [selectedItem.pathPoints.length - 2].rightDirection
                = firstAnchor.leftDirection;
selectedItem.pathPoints
                [selectedItem.pathPoints.length - 2].anchor
                = firstAnchor.anchor;
}
}
alert("オープンパスをクローズパスに変更しました。");
} else {
alert("パスが選択されていません。");
}

視点と終点の不明なオープンパスに実行するとクローズパスになりますが、接点はチョット怪しい各科になって居ます。ただし、上の様に視点と終点の不明な場合は「怪しい部分」がよく分かりません。

そこで大きく空いている状態で処理すると、明らかに変な状態になって居ることが確認できます。

拡大すると、処理後に意味不明な?ねじれ状態になって居ます。コレについては今後の課題です。