SXF ファイルを作成する際、 SXF ファイル内に記録される座標系の尺度は自動的に計算されるのでこれが意図した縮尺になっていないことはまずない。
一方、縮尺を人間の目に見える形で記録している部分については、図面の初期作成の際に自動で計算されるものの、作図中に縮尺を変えるなどした場合に表記を修正し忘れるなどして計算上の縮尺と表記上の縮尺が異なる場合がある。
SXF ファイル内で表記上の縮尺を格納しているフィーチャと、座標系の縮尺を格納しているフィーチャを比較することでその差異を発見し、ミスを減らすことができる。
座標系の縮尺についてはsfig_locate_feature
に記録されている。
/*SXF
#%フィーチャナンバー% = sfig_locate_feature('%レイヤ%',\'%図形名%\','%配置位置X座標%','配置位置Y座標','回転角','X方向尺度','Y方向尺度')
SXF*/
なんらかの処理系でファイルを読み込み、sfig_locate_feature
が記録されている行を発見した後、必要な図形名
を持つフィーチャを発見できれば、その6番目と7番目の値から尺度=縮尺を読み取ることができる。
縮尺の表記は通常分数が使用されるが、フィーチャに記録されているのは分数を小数にした値であるため、値の逆数を取ると縮尺の分母を取り出すことができる。
縮尺の表記については場合にもよるが分子の1
、スラッシュ
、分母の数値
で記録されていたり、S=1:数値
で記録されているので、text_string_feature
を持つフィーチャの中から作図した位置の座標を持つフィーチャを探し、4番目の値を取り出して適宜の処理を行う(S=1:
を取り除くなど)ことで縮尺の分母部分を取り出せる。
取り出した二つの値を比較すれば論理縮尺と表示縮尺に齟齬がないかどうかを確認することができる。
比較するための PowerShell スクリプトを書いて Github に置いてあります → Chk-Scale