【VB.NET】2次元配列を使ってSFCファイル内の四角形を特定してみた

前記事で紹介したツール

【実績】CAD図面内のオブジェクト数を出力(矩形編)

の開発にて、CAD図面データ(.jww)を
SCF形式のテキストファイルで保存し
図面内の矩形(正方形・長方形)の数を出力させました。

その際のポイントを備忘録として
残しておこうと思います。

MEMO
開発環境
Windows10 64bit
VisualStudio2019

SFCファイルの構造

「線」の形式

SFCファイル内ではこのように表記されていました。

調べてみると「line_feature」内の
後ろ4つの小数が、ある1直線の
始点x座標」「始点y座標」「終点x座標」「終点y座標
を表してるそうです。

つまりこのテキストファイルを読込み
「line_feature」の行に対して
これら4要素を取り出す事ができれば後は要らないですね!

line_featureの行は
カンマ区切りにすると8要素あるので
その分が入る配列に格納しておきましょう!
※line_feature(…) の部分は1行分の文字列を表してます

2次元配列で四角形を特定

2次元配列にxy終始点を格納

いま1行分のline_feature文字列が
arySplit配列に入っているので
そこから四角形の4点(xy終始点)を
抜き出して2次元配列に格納する。

4点(xy終始点)は
arySplit配列の4、5、6、7インデックスにあるので
それらを分けて2次元配列に格納します。

これでi行目の4点(xy終始点)は
xyProt(i,4) xyProt(i,5) xyProt(i,6) xyProt(i,7)
と表すことができますね!

矩形を定義する条件は何か

矩形」とは「正方形」「長方形」を指します。

正方形・長方形の条件
2本の対角線の長さが等しい四角形

ということなので

まず先ほど2次元配列に格納した4点の座標から
辺の長さを算出します。

後は三平方の定理(a^2 + b^2 = c^2)から
対角線の長さが出ます ので
矩形かどうか判断できますね!

これで矩形が特定できるので
あとは特定した件数を出力すると
それが矩形の数になりますね!

プログラムも大事ですけど
図形の考え方などはやはりその分野の知識が
ある程度必要になってきそうです!