ループ状ポリラインの開始点を変更する

ループ状のポリラインの開始点をインデックスで指定する。

矢印の座標を開始地点にする。

ポリラインのポイントの並びを変え、Sort SOPのPoint Sort: By Vertex Orderで整えたもの。

//
// 連環するポリラインの特定の場所を始点とする
// input0: polyline
// input1: point等
// RunOver: Primitives
//

// 始点とする座標
vector pos = point(1, "P", 0);
int npt = nearpoint(0, pos);

// 最初のインデックスにするポイントを探す
int startIndex = -1;

int pts[] = primpoints(0, @primnum);
for(int i = 0; i < len(pts); i++)
{
    if(pts[i] == npt)
        startIndex = i;
}

// 頂点をポリラインからすべて除外する
int vertices[] = primvertices(0, @primnum);
for(int i = 0; i < len(vertices); i++)
    removevertex(0, vertices[i]);

// ポリラインを再構成する
for(int i = startIndex; i < len(pts); i++)
{
    addvertex(0, @primnum, pts[i]);
}

for(int i = 0; i <= startIndex; i++)
{
    addvertex(0, @primnum, pts[i]);
}
タイトルとURLをコピーしました