はじめに
最近、展開接続図をテキストベースで書けないかなあ、と思い構文解析器を作っているのですが、いくら元ネタをテキストベースで記述したところで最後は図面に起こさないといかんね、となっています。
SVGならあまり勉強せずとも使えそうだなと思いつつ、流石に提出図面がSVGなのはナンセンスかなと。
SVGからCADに変換するウェブツールとかもあるみたいですが、あまり幸せじゃなさそうなので却下。
バイナリベースは無理なので却下。
テキストベースと言えばDXFがあるなあ、と思いつつDXFの変換事故に関する話題は事欠かないよなあと思い却下。
そんな中で見つけたのがSFCでした。
SFCとは
SXF(エス・エックス・エフ)は、CADデータ交換標準コンソーシアム (SCADEC) が提唱する、異なるCAD間でデータをやりとりする際に使用する中間ファイル形式である。Scadec data eXchange Formatの略。図面の電子納品における標準ファイルとして扱われる。
国土交通省の主導で、1999年3月に設立されたCADデータ交換標準コンソーシアム (SCADEC) が開発。
STEPの規格の一つであり、「Part21 交換構造のクリアテキスト符号化 (Clear text encoding of the exchange structure) 」に準拠している。
(中略)
物理ファイルはSFC(フィーチャコメントファイル)とP21(STEPファイル)の2種類がある。 P21はSTEP/AP202に準拠した国際的に通用する形式。SFC(Scadec Feature Comment file)はCADデータ交換用の形式で、P21よりもファイルサイズが小さい。
Wikipediaからの引用ですが、要するに国際規格のstepから必要そうな要素すっぱ抜いてstepの形式でまとめたのがp21、実装簡単にデータ読みやすく独自文書で保存したのがsfc、みたいな認識です。
Wikipedia読んでると、リンク先に仕様書があるよって書いてあって嘘ではないのですが、リンク先のどこからそのページにたどり着けるのか全然わかんないんですよね。
下記から仕様書関連資料をDLすると幸せになれます。
https://www.cals-ed.go.jp/sxf_ver3-1_specification_draft/
SFCの仕様書の読み方
仕様書ファイルが多すぎてどこからどう読めばいいのか分かりづらいですが、SFXはともかくSFCをちょっと描けるようになりたいくらいであれば必要な資料は非常に少ないです。
- SXF Ver.3.1仕様書・同解説附属書SFC編(第2版).pdfの総則
- SXF Ver.3.1仕様書・同解説フィーチャ仕様編(第2版).pdfのpp.1-10
- SXF Ver.3.1仕様書・同解説附属書SFC編(第2版).pdfのp.99
- SXF Ver.3.1仕様書・同解説附属書SFC編(第2版).pdfの1-2節で描きたい図形分の資料
- SXF Ver.3.1仕様書・同解説附属書SFC編(第2版).pdfのサンプル部分
このくらいで良さげ。
SFCの仕様はかなりシンプルで、BNFを雰囲気読めれば数時間である程度理解できると思います。
ざっくり書き方
ヘッダ部分とかはBNFかサンプルの最初の方と最後数行を見てもらうとして。
データ部分についてクセのある部分をいくつか紹介します。
- 色、線種、線太さの定義
- 既定義とユーザー定義とありますが、既定義でも使う分は記述が必要
- またユーザー定義は(既定義番号の後から)出現順に番号が振られますが、既定義はどんな順番で定義しても既定義の番号でアクセスします
- サンプルコードのカラー定義1つ目は既定義Redですが、ここだけをコピペして色指定に1と書くと描画されません(1はBlack、Redは2)
- 複合図形定義は、必ず用紙よりも前に記述する。
- シンボルみたいなモノだと理解していますが、グループ化した絵を使いまわしたい、みたいな場合複合図形定義を用います。
- 定義を宣言するより前に描いた分の図形がその定義に含まれる図形になります。
現状、自分もまだ円を書いてtfas viewerで眺めてできたーってなってるだけなのでとりあえずこの辺で。
ところでSFCって自分は全然知らなかったんですが標準的に使われてるんですか?
どうでもいいけど、この資料誤字多すぎる。分量が多いから仕方ない側面あるとは思うけれど・・。
最終目標がレベル4であるのにH21.6の最終更新?時点でレベル2までしか達成していないの見るにもしかして終わったコンテンツなのでは・・?
仕様を追従する必要がないという点において平和な可能性よりも、その辺のCADソフトから見限られる可能性の方を心配した方がいいのか・・?