直線長をスクリプト検査を用いてチェック後にcsvに出力

形状抽出の結果をMENOU-TEのスクリプト検査を用いて、値をチェック後にcsvに出力する例を紹介します。

ネジの長さを測定してスクリプト検査で値をチェック後に長さと位置をcsvに出力する例

画像

タスクコネクション

  1. ネジ検出の結果

  2. ネジの直線長測定

  3. ランタイム評価画面でスクリプト検査設定でスクリプトを記述後にスクリプト検査をチェックして実行

スクリプト

using System.Text;

// 最小長
const int minLength = 50;

// 検査をしない場合はnull 条件に一致する場合はtrue 条件に一致しない場合はfalse
bool? result = null;

// ネジ輪郭情報
var screwContours = GetContourOutputs("ネジの直線長測定");

// 結果が存在する時
if (screwContours?.Any() == true)
{
    // csv書き込み
    using var sw = new StreamWriter("D:/work/debug/length.csv", false, Encoding.UTF8);

    // ヘッダー(不要であれば削除,必要に応じて変更)
    sw.WriteLine("直線長,始点X,始点Y,終点X,終点Y");
    foreach (var screwContour in screwContours)
    {
        // 無効な輪郭は見ない
        if (!screwContour.IsEnabled)
        {
            continue;
        }

        // 直線長が最小長より長いとき
        if (screwContour.LineLength.Length > minLength)
        {
            // 直線長書き込み
            sw.Write(screwContour.LineLength.Length + ",");
            // 座標0(始点)のX書き込み
            sw.Write(screwContour.LineLength.Point0.X + ",");
            // 座標0(始点)のY書き込み
            sw.Write(screwContour.LineLength.Point0.Y + ",");
            // 座標1(始点)のX書き込み
            sw.Write(screwContour.LineLength.Point1.X + ",");
            // 座標1(始点)のY書き込み
            sw.WriteLine(screwContour.LineLength.Point1.Y + ",");
        }
    }
    // nullの時はfalseにして検出失敗とする
    result = true;
}

// resultは必ず最後の行に記述してください
result

実行すると以下のようなcsvが出力されます。
image

直線長や位置情報のチェックを足して頂いたり、不要な部分は除外して使って頂ければと思います。

「いいね!」 4