CAD SFCファイルの生成

目 次

CADってなに?
SFCファイルってなに?
SFCファイルの構造
どんな利用方法がある?
SFC生成マクロ
現況測量(ベータ版)   (光波での測量結果から平面図や横断図を自動作成する)

レーシック fx

Returan Top Page

CADってなに?

コンピューターで図面を描くためのツールです。
寸法や角度、曲線を正確に描くことができます。

近年は、CADデータから直接物を作ることができるようになりました。(3次元CAD)
土木・建設業の分野でも重機にGPSアンテナを背負わせて、丁張もなしにいきなり切盛り土を行い仕上げてしまう IT施工というのが登場しています。

フリーソフトでは、JW-CADHO-CAD等があります。
私のお薦めはIts Cad Max。 4800円の超廉価版CAD。

目 次 へ


SFCファイルってなに?

前建設省(現 国土交通省)の時代にCADデータファイルのやり取りを行うため、互換性の高いファイル形式を作成しています。
sfc形式と、p21形式の2種類有り、現在はSXF Ver3.0。
SFCファイルは簡易版で、軽いのが特徴。
我々施工ユーザーにとっては、まともな図面が手にはいるようになるのが一番ありがたい。
CAD製図基準(案)にはついていけない.....)   詳しくはこちら

目 次 へ


SFCファイルの構造

私もそれほど詳しい訳ではありませんが、調べてみました。

ワードバッドなどで開いてみるとわかりますが、こんな順番で記述されています。
ヘッダー部分
使用色宣言
フォント宣言
使用線種宣言
使用線幅宣言
図形記述
座標系宣言
用紙サイズ宣言
レイヤー宣言
終了コード

ヘッダー部分の記述

コード
説明
ISO-10303-21; 
HEADER;ヘッダー宣言
FILE_DESCRIPTION(('SCADEC level2 feature_mode'),このCADはVer2.0(レベル2)です。
    '2;1'); 
FILE_NAME('\X2\51684F535E73976256F3\X0\.sfc', ファイル名(全体平面図.sfcと書いてある)
FILE_NAME('ABC.sfc', と書くこともできます。
    '2007-5-8T16:54:35',最終更新日時
    (''), 
    (''), 
    'SCADEC_API_Ver2.02', 
    'It''s Super CAD 2',作成CADの名前です
    ''); 
FILE_SCHEMA(('ASSOCIATIVE_DRAUGHTING')); 
ENDSEC;ヘッダー部終了
DATA;以下はデータ。

使用色宣言

記載例
コード
説明
 空白行
/*SXFSXF要素のタグ?
#10 = pre_defined_colour_feature(\'red\')pre_defined_colour=既定色
SXF*/SXF要素のタグ?
 空白行
/*SXF 
#20 = user_defined_colour_feature('255','192','203')user_defined_colour=ユーザー定義色(ピンク)
SXF*/ 
規定値は図形コードで下表の番号で指定します。
ユーザー定義色は図形コードで宣言順に17,18 と番号で指定します。
定義色一覧(pre_defined_colour_feature)
No
色コード
色見本
1(\'black\') 
2(\'red\') 
3明るい緑(\'green\') 
4(\'blue\') 
5(\'yellow\') 
6(\'magenta\') 
7水色(\'cyan\') 
8(\'white\') 
9牡丹(\'deeppink\') 
10(\'brown\') 
11オレンジ(\'orange\') 
12薄緑(\'lightgreen\') 
13明青(\'lightblue\') 
14青紫(\'lavender\') 
1525%灰色(\'lightgray\') 
16暗灰(\'darkgray\') 

フォント宣言

記載例
#110 = text_font_feature(\'MS ゴシック\')
図形コードで宣言順に1,2 と番号で指定します。
(変更の必要性を感じていないので、まだ追求していません)

使用線種宣言

記載例(SXFタグは省略)
コード
説明
#20 = pre_defined_font_feature(\'continuous\')pre_defined=既定線種(実線)
#30 = user_defined_font_feature(\'点線\','2','(1.000000,1.000000)')user_defined=定義線種
既定の場合、線名(下表 Name)のみでデータの記述は必要ない
定義の場合線名と区切データ数、区切データを記述する。
上の例で行くと 線名:点線、区切データ数:2、区切データ実線部:1.0、区切データ空白部:1.0
また、線種は32種まで(そんなには必要ないが)しか宣言できない。

規定値は図形コードで下表の番号で指定します。
ユーザー定義は図形コードで宣言順に17,18 と番号で指定します。
規定値一覧
 線種
Name
データ
1実線continuous 
2破線dashed6,1.5
3跳び破線dashed spaced6,6
4一点長鎖線 long dashed dotted12,1.5,0.25,1.5
5二点長鎖線long dashed double-dotted12,1.5,0.25,1.5,0.25,1.5
6三点長鎖線long dashed triplicate-dotted12,1.5,0.25,1.5,0.25,1.5,0.25,1.5
7点線dotted0.25,1.5
8一点鎖線chain12,1.5,3.5,1.5
9二点鎖線chain double dash12,1.5,3.5,1.5,3.5,1.5
10一点短鎖線dashed dotted6,1.5,0.25,1.5
11一点二短鎖線double-dashed dotted6,1.5,6,1.5,0.25,1.5
12二点短鎖線dashed double-dotted6,1.5,0.25,1.5,0.25,1.5
13二点二短鎖線double-dashed double-dotted6,1.5,6,1.5,0.25,1.5,0.25,1.5
14三点短鎖線dashed triplicate-dotted6,1.5,0.25,1.5,0.25,1.5,0.25,1.5
15三点二短鎖線double-dashed triplicate-dotted6,1.5,6,1.5,0.25,1.5,0.25,1.5,0.25,1.5
16未使用(予備)  

使用線幅宣言

記載例(SXFタグは省略)
#40 = width_feature('0.250000')  :0.25mmの線幅を宣言します
図形コードで宣言順に1,2 と番号で指定します。
線幅規定値
No
幅(mm)
1
0.13
2
0.18
3
0.25
4
0.35
5
0.5
6
0.7
7
1
8
1.4
9
2
10未使用(予備)
※規定値とありますが、利用方法はまだ調べていません。

図形記述

図  形 (たくさんあるので代表的なものだけ)
図形
種類
コ  ー  ド  例 (SXFタグは省略)
宣  言  項  目
直線#100 = line_feature('1','1','1','3','73.727870','141.066170','348.179546','141.066170')
ペン,LayerNo,線種,線太,起点座標X,起点座標Y,終点座標X,終点座標Y
#50 = point_marker_feature('1','1','73.783784','235.849589','7','0.00000000000000','1.00000000000000')
LayerNo,ペン,座標X,座標Y,点タイプ,回転角(0≦),尺度(1≦)
点タイプ(1〜7)1:*、2:○or●、3:・、4:+、5:□、6:△、7:×
#60 = circle_feature('1','1','1','3','100.000000','49.500000','20.000000')
レイヤーNo,ペン色,線種,ペン,中心X座標,中心Y座標,半径
円弧#40 = arc_feature('1','2','1','11','100.000000','49.500000','20.000000','0','0.00000000000000','90.0000000000000')
レイヤーNo,ペン色,線種,ペン,中心X座標,中心Y座標,半径,向きフラグ(0or1),開始角度,終了角度
塗りつぶしの場合は別途コードあり
文字#40 = text_string_feature('1','1','1',\'ABC\','67.075085','79.071672','2.500000','3.750000','0.000000','0.00000000000000','0.00000000000000','1','1')
レイヤーNo,ペン色,フォント,文字,書込みY座標,書込みX座標,高さ,総幅,間隔,角度,スラント角度(イタリック),貼付位置,縦書き横書き(1or2)
貼付位置 1:左下 2:下 3:右下 4:左 5:中心 6:右 7:左上 8:上 9:右上
改行ごとに別の文字として記入する
座標値は小数点以下6桁まで指定できます。

座標系宣言

    未調査 ごめんなさい。

用紙サイズ宣言

記載例(SXFタグは省略)
#120 = drawing_sheet_feature(\'sheet\','9','1','420','297')

\'sheet\',不明(9),1-横 0-縦,横寸法,縦寸法

用紙 A3横 420×297drawing_sheet_feature(\'sheet\','9','1','420','297')
用紙 A3縦 420×297drawing_sheet_feature(\'sheet\','9','0','297','420')
用紙 A0横 1189×841drawing_sheet_feature(\'sheet\','9','1','1189','841')

レイヤー宣言

記載例(SXFタグは省略)
#150 = layer_feature(\'Layer01\','1')
レイヤー名、表示:1/非表示:0

レイヤー名(文字の量) SXFレベル1 32バイト以下、レベル2 256バイト以下

終了コード

ENDSEC;
END-ISO-10303-21;

これでおしまい。

目 次 へ


どんな利用方法がある?

真っ先に私ら現場屋がやりたいと思うのは、現況測量結果のCAD図面へのプロット作業。
平面図への位置プロット、地盤高表示、横断図の生成でしょう。
他はあなたのアイディア次第。

目 次 へ


SFC生成マクロ

簡単なものであれば、各種宣言部分を定型化して、図形部分のみ記述すればできてしまいます。
図面上のプロット位置は、計算してやる必要があります。(この部分が結構大変)


SFC コードサンプル

目 次 へ

Returan Top Page