任意の長さ以下のポリラインを消去する

//
// 任意の長さ以下のポリラインを消去する
// RunOver: Primitives
//
float threshold = 100;
float curveLength = primintrinsic(0, "measuredperimeter", @primnum);
if(curveLength < threshold)
   removeprim(0, @primnum, 1);

他のポリラインとのつながりがないという条件をつける場合

//
// 他のポリラインとのつながりもない場合で
// 任意の長さ以下のポリラインを消去する
// RunOver: Primitives
//
float threshold = 1000;

int flag = -1; // ひとつでもつながりのあるポイントがあればフラグを立てる
int pts[] = primpoints(0, @primnum);
for(int i = 0; i < len(pts); i++)
{
    int connectPt[] = pointprims(0, pts[i]);
    if(len(connectPt) > 1)
    {
        flag = 1;
        break;
    }
}

if(flag < 0)
{
    float curveLength = primintrinsic(0, "measuredperimeter", @primnum);
    if(curveLength < threshold)
       removeprim(0, @primnum, 1);
}
タイトルとURLをコピーしました