| Jw_cadのデータ形式 |
|
|
| ここでは、Jw_cadバージョン5.00aのデータ形式を解説する。データ形式は、将来予告なく変更されることがあるので注意してほしい。 |
| なお、ソースコードは、データ形式を説明するために、出力に相当する部分を抜き出して記述したものである。 |
| バージョンによって異なる部分は原則として解説の部分に記載し、一部を除いてソースコード内には記述していない。 |
|
|
| ◆ JWWのデータファイルの宣言 |
| ar.Write("JwwData.", 8); |
|
|
| ◆ バージョンNo. |
| ar << (DWORD)JW_DATA_VERSION; //Ver.5.0 の内部バージョンは 420 |
|
|
| ◆ ファイルメモ |
| ar << (CString)m_strMemo; |
|
|
| ◆ 図面サイズ |
| ● 0〜4 :A0〜A4 |
| ● 8 :2 A |
| ● 9 :3 A |
| ● 10 :4 A |
| ● 11 :5 A |
| ● 12 :10m |
| ● 13 :50m |
| ● 14 :100m |
|
|
| ar << (DWORD)m_nZumen; |
|
|
| ◆ レイヤグループ・レイヤ状態 |
| ● 書込レイヤグループ |
| ● レイヤグループ状態(0:非表示、1:表示のみ、2:編集可能、3:書込) |
| ● レイヤグループの書込レイヤ |
| ● レイヤグループの縮尺(の分母) |
| ● レイヤグループのプロテクト指定 |
| (0:無指定、1:表示状態変更可能プロテクト指定、2:表示状態固定プロテクト指定) |
| ● レイヤ状態(0:非表示、1:表示のみ、2:編集可能、3:書込) |
| ● レイヤのプロテクト指定 |
| (0:無指定、1:表示状態変更可能プロテクト指定、2:表示状態固定プロテクト指定) |
|
|
| ar << (DWORD)m_nWriteGLay; |
| for(nGLay=0;nGLay<16;nGLay++){ |
| ar << (DWORD )m_anGLay[nGLay]; |
| ar << (DWORD )m_anWriteLay[nGLay]; |
| ar << (double)m_adScale[nGLay]; |
| ar << (DWORD )m_anGLayProtect[nGLay]; |
| for(nLay=0;nLay<16;nLay++){ |
| ar << (DWORD)m_aanLay[nGLay][nLay]; |
| ar << (DWORD)m_aanLayProtect[nGLay][nLay]; |
| } |
| } |
|
|
| ◆ ダミー |
| for(i=0;i<14;i++){ ar << (DWORD)dummy; } |
|
|
| ◆ 寸法関係の設定 |
| 環境設定ファイルの「S_COMM_8」の③寸法設定が「10」または「11」になっていて、 |
| ファイルへの保存ができる場合に有効になり、 |
| それ以外は「m_lnSunpou1」〜「m_lnSunpou5」は「0」になる。 |
| ar << (DWORD)m_lnSunpou1; |
| ar << (DWORD)m_lnSunpou2; |
| ar << (DWORD)m_lnSunpou3; |
| ar << (DWORD)m_lnSunpou4; |
| ar << (DWORD)m_lnSunpou5; |
|
|
| ・m_lnSunpou1 |
| 一位:寸法線色(1〜9) |
| 十位:引出線色(1〜9) |
| 百位:寸法点色(1〜9) |
| 千位:寸法値の少数点以下の桁数(0〜3) |
| 万位:寸法単位(0:mm 、1:m) |
| 十万位:寸法線端部(0:点 、1:矢印 、2:逆矢印) |
| 百万位:寸法文字種(1〜10) |
|
|
| ・m_lnSunpou2 |
| 一位〜千位:寸法値の寸法線との離れ |
| 離れ(0〜99.9)×10、マイナスの場合は1000をプラスして整数化する |
| 万位〜千万位:寸法線の突出長さ |
| 長さ(0〜99.9)×10、マイナスの場合は1000をプラスして整数化し、更に10000倍する。 |
|
|
| ・m_lnSunpou3 |
| 一位〜百位:矢印長さ |
| 長さ(0〜99.9)×10として整数化する |
| 千位〜十万位:矢印角度 |
| 角度(0.1〜80.0)×10として整数化し、1000倍する |
| 百万位〜億位:逆矢印の出寸法 |
| 寸法(0〜99.9)×10として整数化すし、1000000倍する |
|
|
| ・m_lnSunpou4 |
| 一位:寸法値方向を補正しない(0:補正有 、1:補正無) |
| 十位:寸法値を全角にする(0:半角 、1:全角) |
| 百位:寸法値のカンマをスペースにする(0:カンマ 、1:スペース) |
| 千位:寸法値のカンマを全角にする(0:半角 、1:全角) |
| 万位:寸法値の少数点を全角にする(0:半角 、1:全角) |
| 十万位:寸法値に単位を表示する(0:表示無 、1:表示有) |
| 百万位:半径値に「R」を表示する(0:表示無 、1:前付表示有 、2:後付表示有) |
| 千万位:半径値にカンマを表示する(0:表示無 、1:表示有) |
| 億位:半径値に少数点の「0」を表示する(0:表示無 、1:表示有) |
|
|
| ・m_lnSunpou5 |
| 一位 :寸法値を斜め文字にする(0:通常文字 、1:斜め文字) |
| 十位 :寸法値を太文字にする(0:通常文字 、1:太文字) |
| 百位 :角度単位(0:度単位 、1:度分秒単位 、2:度単位で「゜」の表示なし) |
| 千位 :角度単位の少数点以下の桁数(0〜6) |
| 万位 :寸法図形にする(0:寸法図形にしない 、1:寸法図形にする) |
| 十万位:範囲選択のとき寸法図形を線色・種の属性で選択(0:選択しない 、1:選択する) |
| 百万位:表示小数点以下の処理(0:四捨五入 1:切捨 2:切上)(Ver.4.02以降) |
|
|
| ◆ ダミー |
| ar << (DWORD)dummy; |
|
|
| ◆ 線描画の最大幅 |
| 「線幅を1/100mm単位とする」が設定されているときは「-101」 |
| ar<< (DWORD)m_nMaxDrawWid; |
|
|
| ◆ プリンタ出力範囲の原点(X,Y) |
| ar << (double)m_DPPrtGenten.x; |
| ar << (double)m_DPPrtGenten.y; |
|
|
| ◆ プリンタ出力倍率 |
| ar << (double)m_dPrtBairitsu; |
|
|
| ◆ プリンタ90°回転出力、プリンタ出力基準点位置 |
| ●一位:プリンタ90°回転出力 |
| ●十位:プリンタ出力基準点位置の指定(0:無指定)(Ver.3.00以降) |
| 7:左上 8:中上 9:右上 |
| 4:左中 5:中中 6:右中 |
| 1:左下 2:中下 3:右下 |
| ar << (DWORD)m_nPrtSet; |
|
|
| ◆ 目盛設定モード |
| ● 一位(0:無指定、1:目盛表示) |
| ● 十位(0:図面寸法指定、1:実寸指定) |
| ● −値の時、目盛読取り不可 |
| ar << (DWORD)m_nMemoriMode; |
|
|
| ◆ 目盛表示最小間隔ドット |
| ar << (double)m_dMemoriHyoujiMin; |
|
|
| ◆ 目盛表示間隔(X,Y) |
| ar << (double)m_dMemoriX; |
| ar << (double)m_dMemoriY; |
|
|
| ◆ 目盛基準点(X,Y) |
| ar << (double)m_DpMemoriKijunTen.x; |
| ar << (double)m_DpMemoriKijunTen.y; |
|
|
| ◆ レイヤ名 |
| for(n=0; n<=15; n++){ |
| for(k=0; k<=15; k++){ |
| ar << (CString)m_aStrLayName[n][k]; |
| } |
| } |
|
|
| ◆ レイヤグループ名 |
| for(n=0; n<=15; n++){ |
| ar << (CString)m_aStrGLayName[n]; |
| } |
|
|
| ◆ 日影計算の条件 |
| ● 測定面高さ |
| ● 緯度 |
| ● 9〜15の測定の指定 |
| ● 壁面日影測定面高さ |
| ar << (double)m_dKageLevel; |
| ar << (double)m_dKageIdo; |
| ar << (DWORD )m_nKage9_15JiFlg; |
| ar << (double)m_dKabeKageLevel; |
|
|
| ◆ 天空図の条件(Ver.3.00以降) |
| ● 測定面高さ |
| ● 天空図の半径*2 |
| ar<< (double)(m_dTenkuuZuLevel ); |
| ar<< (double)(m_dTenkuuZuEnkoR * 2); |
|
|
| ◆ 2.5Dの計算単位(0以外はmm単位で計算) |
| ar << (DWORD)m_nMMTani3D; |
|
|
| ◆ 保存時の画面倍率(読込むと前画面倍率になる) |
| ar << (double)m_dBairitsu ; |
| ar << (double)m_DPGenten.x; |
| ar << (double)m_DPGenten.y; |
|
|
| ◆ 範囲記憶倍率と基準点(X,Y) |
| ar << (double)m_dHanniBairitsu; |
| ar << (double)m_DPHanniGenten.x; |
| ar << (double)m_DPHanniGenten.y; |
|
|
| ◆ マークジャンプ倍率、基準点(X,Y)およびレイヤグループ |
| if( nOldVersionSave >= 300 ){ //Ver.3.00以降 |
| for( n=1; n<=8; n++){ |
| ar << (double)m_dZoomJumpBairitsu[n]; |
| ar << (double)m_DPZoomJumpGenten[ n].x; |
| ar << (double)m_DPZoomJumpGenten[ n].y; |
| ar << (DWORD )m_nZoomJumpGLay[ n]; |
| } |
| }else{ |
| for( n=1; n<=4; n++){ |
| ar << (double)m_dZoomJumpBairitsu[n]; |
| ar << (double)m_DPZoomJumpGenten[ n].x; |
| ar << (double)m_DPZoomJumpGenten[ n].y; |
| } |
| } |
|
|
| ◆ 文字の描画状態(Ver.4.05以降) |
| if( nOldVersionSave >= 300 ){ //Ver.3.00以降 |
| ar<< (double)(dDm11); //ダミー |
| ar<< (double)(dDm12); //ダミー |
| ar<< (double)(dDm13); //ダミー |
| ar<< (DWORD )(lnDm1); //ダミー |
| ar<< (double)(dDm21); //ダミー |
| ar<< (double)(dDm22); //ダミー |
| ar<< (double)(m_dMojiBG);//(Ver.4.04以前はダミー) |
| //文字列範囲を背景色で描画するときの範囲増寸法 |
|
|
| ar<< (DWORD )(m_nMojiBG);//(Ver.4.04以前はダミー) |
| //十位:文字(寸法図形、ブロック図形)を最後に描画 |
| 一位:1 :輪郭・範囲を背景色で描画しない |
| 2 :文字の輪郭を背景色で描画する |
| 3 :文字列範囲を背景色で描画する |
| } |
|
|
|
|
|
|
| ◆ 複線間隔 |
| for( n=0; n<=9; n++){ |
| ar << (double)m_adFukusenSuuchi[n]; |
| } |
|
|
| ◆ 両側複線の留線出の寸法 |
| ar << (double)m_dRyoygawaFukusenTomeDe; |
|
|
| ◆ 色番号ごとの画面表示色、線幅 |
| ● 画面表示色(0:背景色、1〜8:線色、9:グレー色) |
| ● 線幅(1〜16) |
| for( n=0; n<=9; n++){ |
| ar << (DWORD)m_aPenColor[n]; |
| ar << (DWORD)m_anPenWidth[n]; |
| } |
|
|
| ◆ 色番号ごとのプリンタ出力色、線幅、実点半径 |
| ● プリンタ出力色(0:背景色、1〜8:線色、9:グレー色) |
| ● 線幅(1〜500) |
| ● 実点半径(0.1〜10) |
| for( n=0; n<=9; n++){ |
| ar << (DWORD )m_aPrtPenColor[n]; |
| ar << (DWORD )m_anPrtPenWidth[n]; |
| ar << (double)m_adPrtTenHankei[n]; |
| } |
|
|
| ◆ 線種番号2から9までのパターン、1ユニットのドット数、ピッチ、プリンタ出力ピッチ |
| for( n=2; n<=9; n++){ |
| ar << (DWORD)m_alLType[n]; |
| ar << (DWORD)m_anTokushuSenUintDot[n]; |
| ar << (DWORD)m_anTokushuSenPich[n]; |
| ar << (DWORD)m_anPrtTokushuSenPich[n]; |
| } |
|
|
| ◆ ランダム線1から5までのパターン、画面表示振幅・ピッチ、プリンタ出力振幅・ピッチ |
| for( n=11; n<=15; n++){ |
| ar << (DWORD)m_alLType[n]; |
| ar << (DWORD)m_anRandSenWide[n]; |
| ar << (DWORD)m_anTokushuSenPich[n]; |
| ar << (DWORD)m_anPrtRandSenWide[n]; |
| ar << (DWORD)m_anPrtTokushuSenPich[n]; |
| } |
|
|
| ◆ 倍長線種番号6から9までのパターン、1ユニットのドット数、ピッチ、プリンタ出力ピッチ |
| for( n=16; n<=19; n++){ |
| ar << (DWORD)m_alLType[n]; |
| ar << (DWORD)m_anTokushuSenUintDot[n]; |
| ar << (DWORD)m_anTokushuSenPich[n]; |
| ar << (DWORD)m_anPrtTokushuSenPich[n]; |
| } |
|
|
| ◆ 実点を画面描画時の指定半径で描画 |
| ar << (DWORD)m_nDrawGamenTen; |
|
|
| ◆ 実点をプリンタ出力時、指定半径で書く |
| ar << (DWORD)m_nDrawPrtTen ; |
|
|
| ◆ BitMap・ソリッドを最初に描画する |
| ar << (DWORD)m_nBitMapFirstDraw; //十位:ソリッド描画順 |
| //0:レイヤ順 (+1):色順 |
| //3:レイヤ逆順 (+2):色逆順 |
| //6:印刷出力設定順 |
| //一位: |
| //0:BitMap・ソリッドを最初に描画しない |
| //1:BitMap・ソリッドを最初に描画 |
| //2:ソリッドを最初に描画 |
| ◆ 逆描画 |
| ar << (DWORD)m_nGyakuDraw; |
|
|
| ◆ 逆サーチ |
| ar << (DWORD)m_nGyakuSearch; |
|
|
| ◆ カラー印刷 |
| ar << (DWORD)m_nColorPrint; |
|
|
| ◆ レイヤ順の印刷 |
| ar << (DWORD)m_nLayJunPrint; |
|
|
| ◆ 色番号順の印刷 |
| ar << (DWORD)m_nColJunPrint; |
|
|
| ◆ レイヤグループまたはレイヤごとのプリンタ連続出力指定 |
| ar << (DWORD)m_nPrtRenzoku; |
|
|
| ◆ プリンタ共通レイヤ(表示のみレイヤ)のグレー出力指定 |
| ar << (DWORD)m_nPrtKyoutsuuGray; |
|
|
| ◆ プリンタ出力時に表示のみレイヤは出力しない |
| ar << (DWORD)m_nPrtDispOnlyNonDraw; |
|
|
| ◆ 作図時間(Ver.2.23以降) |
| ar << (DWORD)m_lnDrawTime; |
|
|
| ◆ 2.5Dの始点位置が設定されている時のフラグ(Ver.2.23以降) |
| ● 一位:透視図の視点位置設定済みフラグ |
| ● 十位:鳥瞰図の視点位置設定済みフラグ |
| ● 百位:アイソメ図の視点位置設定済みフラグ |
| ar << (DWORD)nEyeInit; |
|
|
| ◆ 2.5Dの透視図・鳥瞰図・アイソメ図の視点水平角(Ver.2.23以降) |
| ar << (DWORD)(m_dEye_H_Ichi_1 * 100); |
| ar << (DWORD)(m_dEye_H_Ichi_2 * 100); |
| ar << (DWORD)(m_dEye_H_Ichi_3 * 100); |
|
|
| ◆ 2.5Dの透視図の視点高さ・視点離れ(Ver.2.23以降) |
| ar << (double)m_dEye_Z_Ichi_1; |
| ar << (double)m_dEye_Y_Ichi_1; |
|
|
| ◆ 2.5Dの鳥瞰図の視点高さ・視点離れ(Ver.2.23以降) |
| ar << (double)m_dEye_Z_Ichi_2; |
| ar << (double)m_dEye_Y_Ichi_2; |
|
|
| ◆ 2.5Dのアイソメ図の視点垂直角(Ver.2.23以降) |
| ar << (double)m_dEye_V_Ichi_3; |
|
|
| ◆ 線の長さ指定の最終値(Ver.2.25以降) |
| ar << (double)m_dSenNagasaSnpou; |
|
|
| ◆ 矩形寸法横寸法・縦寸法指定の最終値(Ver.2.25以降) |
| ar << (double)m_dBoxSunpouX; |
| ar << (double)m_dBoxSunpouY; |
|
|
| ◆ 円の半径指定の最終値(Ver.2.25以降) |
| ar << (double)m_dEnHankeiSnpou ; |
|
|
| ◆ ソリッドを任意色で書くフラグ、ソリッドの任意色の既定値(Ver.2.30以降) |
| ar << (DWORD)pGamen->m_nSolidNinniColor; |
| ar << (DWORD)pGamen->m_SolidColor; //RGB |
|
|
| ◆ SXF対応拡張線色定義(Ver.4.20以降) |
| ● 画面表示色 |
| ● 画面表示線幅 |
| ● 線色名 |
| ● プリンタ出力色 |
| ● プリンタ出力線幅 |
| ● 点半径 |
| for( n=0; n<=256; n++){ ////// 画面表示色 |
| n1 = n+SXCOL_EXT; //色番号のオフセット = +100 |
| ar << (DWORD)m_aPenColor[n1] |
| << (DWORD)m_anPenWidth[n1]; |
| } |
| for( n=0; n<=256; n++){ ////// プリンタ出力色 |
| ar << (CString)m_astrUDColorName[n]; |
| n1 = n+SXCOL_EXT; //色番号のオフセット = +100 |
| ar << (DWORD )m_aPrtPenColor[n1] |
| << (DWORD )m_anPrtPenWidth[n1] |
| << (double )m_adPrtTenHankei[n1] ; |
| } |
| ◆ SXF対応拡張線種定義(Ver.4.20以降) |
| ● パターン |
| ● 1ユニットのドット数 |
| ● ピッチ |
| ● プリンタ出力ピッチ |
| ● 線種名 |
| ● セグメント数 |
| ● ピッチ線分の長さ、空白長さの繰り返し |
| for( n=0; n<=32; n++){ ////// 線種パターン |
| n1 = n+SXLTP_EXT; //線種番号のオフセット = +30 |
| ar << (DWORD)m_alLType[n1] |
| << (DWORD)m_anTokushuSenUintDot[n1] |
| << (DWORD)m_anTokushuSenPich[n1] |
| << (DWORD)m_anPrtTokushuSenPich[n1]; |
| } |
| for( n=0; n<=32; n++){ ////// 線種パラメータ |
| ar << (CString)m_astrUDLTypeName[n] |
| << (DWORD )m_anUDLTypeSegment[n]; |
| for(j=1; j<=10; j++){ |
| ar << (double)m_aadUDLTypePitch[n][j]; |
| } |
| } |
|
|
| ◆ 文字種1から10までの文字幅、高さ、間隔、色番号 |
| for(i=1; i<=10; i++){ |
| ar << (double)m_adMojiX[i] << (double)m_adMojiY[i]; |
| ar << (double)m_adMojiD[i] << (DWORD)m_anMojiCol[i]; |
| } |
|
|
| ◆ 書込み文字の文字幅、高さ、間隔、色番号、文字番号 |
| ar << (double)m_dMojiSizeX << (double)m_dMojiSizeY; |
| ar << (double)m_dMojiKankaku; |
| ar << (DWORD)m_nMojiColor << (DWORD)m_nMojiShu; |
|
|
| ◆ 文字位置整理の行間、文字数 |
| ar << (double)m_dMojiSeiriGyouKan << (double)m_dMojiSeiriSuu; |
|
|
| ◆ 文字基準点のずれ位置使用のフラグ |
| ar << (DWORD)m_nMojiKijunZureOn; |
|
|
| ◆ 文字基準点の横方向のずれ位置左、中、右 |
| ar << (double)m_adMojiKijunZureX[0]; |
| ar << (double)m_adMojiKijunZureX[1]; |
| ar << (double)m_adMojiKijunZureX[2]; |
|
|
| ◆ 文字基準点の縦方向のずれ位置下、中、上 |
| ar << (double)m_adMojiKijunZureY[0]; |
| ar << (double)m_adMojiKijunZureY[1]; |
| ar << (double)m_adMojiKijunZureY[2]; |
|
|
| ◆ 図形データのリストの実体 |
| m_DataList.Serialize(ar); |
|
|
| ◆ ブロックデータの定義部のリスト |
| m_DataListList.Serialize(ar); |
|
|
| 図形データリスト、ブロックデータ定義部リスト、ドキュメントクラスの宣言は以下のとおり。 |
|
|
| class CMiniDoc : public CDocument |
| { |
| ・ |
| ・ |
| ・ |
| public: |
|
|
| CTypedPtrList<CObList,CData*> m_DataList; //図形データのリスト |
| CTypedPtrList<CObList,CDataList*>m_DataListList; //ブロックデータ定義部のリスト |
| ・ |
| ・ |
| ・ |
| }; |
|
|
| ブロックデータ定義部リストのクラスの宣言は以下のとおり。 |
|
|
| class CDataList : public CData{ |
| ・ |
| ・ |
| ・ |
| public: |
| INT m_nNumber; //通しNo |
| BOOL m_bReffered; //実際に参照されているか |
| CTime m_time; //作成された時刻を入れる |
| CString m_strName; //ブロックデータの名前 |
|
|
| CTypedPtrList<CObList,CData*>m_DataList; |
| ・ |
| ・ |
| ・ |
| }; |
|
|
| その他の各種図形データクラスは、CDataから派生している。 |
| 宣言は省略する。 |
|
|
| ◆ 各種データクラスシリアライズ関数 |
| 各種データクラスのシリアライズ関数は以下のとおり。ただし、出力部分のみを示す。 |
| ● 図形データ |
|
|
| 図形データの基底クラス |
| void CData::Serialize(CArchive& ar) { |
| if (ar.IsStoring()) { |
| ar << (DWORD)m_lGroup; //曲線属性番号 |
| ar << (BYTE )m_nPenStyle; //線種番号 |
| ar << (WORD )m_nPenColor; //線色番号 |
| if( nOldVersionSave >= 351 ){ //Ver.3.51以降 |
| ar << (WORD )m_nPenWidth;//線色幅 |
| } |
| ar << (WORD )m_nLayer; //レイヤ番号 |
| ar << (WORD )m_nGLayer; //レイヤグループ番号 |
| ar << (WORD )m_sFlg; //属性フラグ |
| } |
| } |
|
|
| ● 線データ |
| ● 曲線属性番号 |
| ● 線種番号 |
| ● 線色番号 |
| ● 線幅 |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 始点X座標、Y座標 |
| ● 終点X座標、Y座標 |
|
|
| void CDataSen::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| ar << (double)m_start.x << (double)m_start.x |
| << (double)m_end.x << (double)m_end.y; |
| } |
| } |
|
|
| ● 円弧データ |
| ● 曲線属性番号 |
| ● 線種番号 |
| ● 線色番号 |
| ● 線幅 |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 中心点X座標、Y座標 |
| ● 半径 |
| ● 開始角 |
| ● 円弧角 |
| ● 傾き角 |
| ● 扁平率 |
| ● 全円フラグ |
|
|
| void CDataEnko::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| double startX = m_start.x; |
| double startY = m_start.y; |
| ar << (double)m_start.x<< (double)m_start.y |
| << (double)m_dHankei |
| << (double)m_radKaishiKaku |
| << (double)m_radEnkoKaku |
| << (double)m_radKatamukiKaku |
| << (double)m_dHenpeiRitsu |
| << (DWORD )m_bZenEnFlg; |
| } |
| } |
|
|
| ● 点データ |
| ● 曲線属性番号 |
| ● ダミー |
| ● 点色番号 |
| ● 線幅 |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 点X座標、Y座標 |
| ● 仮点フラグ |
| ● m_nPenStyleが「100」のとき点コード(矢印・ポイントマーカー)、表示角、表示倍率 |
|
|
| void CDataTen::Serialize(CArchive& ar) |
| { |
| if (ar.IsStoring()) { |
| m_nPenStyle = 1; |
| if( nOldVersionSave >= 252 ){ //Ver.2.52以降 |
| if( 0 != m_nCode ){ m_nPenStyle = 100; } |
| } |
| } |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| ar << (double)m_start.x << (double)m_start.y; |
| ar << (DWORD)m_bKariten; |
| if( 100 == m_nPenStyle ){ |
| ar << (DWORD )m_nCode; |
| ar << (double)m_radKaitenKaku; |
| ar << (double)m_dBairitsu; |
| } |
| } |
| } |
|
|
| ● 文字データ |
| ● 曲線属性番号 |
| ● 基点位置 |
| ● 文字色番号 |
| ● 寸法値設定のフラグ |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 始点X座標、Y座標 |
| ● 終点X座標、Y座標 |
| ● 文字種(斜体文字は20000、ボールド体は10000を加えた数値) |
| ● 文字サイズ横、縦、文字間隔 |
| ● 角度 |
| ● フォント名 |
| ● 文字列 |
|
|
| void CDataMoji::Serialize(CArchive& ar) |
| { |
| if (ar.IsStoring()) { |
| m_nPenWidth = m_nSunpouFlg; // (寸法値設定のフラグ) |
| CData::Serialize(ar); |
| m_nPenWidth = 1; //文字枠幅を1 |
| if( m_sMojiFlg & 0x0001 ){ m_nMojiShu += 10000; } //斜体文字 |
| if( m_sMojiFlg & 0x0010 ){ m_nMojiShu += 20000; } //ボールド |
| ar << (double)m_start.x << (double)m_start.y |
| << (double)m_end.x << (double)m_end.y |
| << (DWORD)m_nMojiShu |
| << (double)m_dSizeX << (double)m_dSizeY |
| << (double)m_dKankaku |
| << (double)m_degKakudo |
| << (CString)m_strFontName |
| << (CString)m_string ; |
| m_nMojiShu = (m_nMojiShu % 10000); |
| } |
| } |
|
|
| 「寸法値設定のフラグ」は次のようになる |
| --------------------------------------------- |
| 0x0002 寸法の文字設定有のフラグ |
| 0x0008 全角文字 |
| 0x0010 寸法単位 |
| 0x0020 寸法単位追加 |
| 0x0040 3桁毎のカンマ表示 |
| 0x0080 少数点以下の0表示 |
| 0x0100 少数桁以下 切捨(切捨、切上指定以外は四捨五入) |
| 0x0200 少数桁以下 切上 |
| 0x0400 "φ" 、"R" 前付 |
| 0x0800 "φ" 、"R" 後付 |
| 0x1000 少数点以下の桁数 1 |
| 0x2000 少数点以下の桁数 2 |
| 0x3000 少数点以下の桁数 3 |
| --------------------------------------------- |
| |
| ● 寸法データ |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 線メンバ |
| ● 文字メンバ |
| ● SXFのモード |
| ● 補助線1,2、矢印(点)1,2、基準点1,2 |
|
|
| void CDataSunpou::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| m_Sen .Serialize(ar); |
| m_Moji.Serialize(ar); |
| if( theApp.m_nOldVersionSave >= 420 ){ //Ver.4.20以降 |
| ar << (WORD )m_bSxfMode; |
| m_SenHo1 .Serialize(ar); |
| m_SenHo2 .Serialize(ar); |
| m_Ten1 .Serialize(ar); |
| m_Ten2 .Serialize(ar); |
| m_TenHo1 .Serialize(ar); |
| m_TenHo2 .Serialize(ar); |
| } |
| } |
| } |
|
|
| ● ソリッドデータ |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● 色番号 |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 第1点X座標、Y座標 |
| ● 第4点4座標、Y座標 |
| ● 第2点X座標、Y座標 |
| ● 第3点X座標、Y座標 |
| ● 塗潰し色のRGB値(任意色の場合のみ) |
|
|
| void CDataSolid::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| ar << (double)m_start.x << (double)m_start.y |
| << (double)m_end.x << (double)m_end.y |
| << (double)m_DPoint2.x << (double)m_DPoint2.y |
| << (double)m_DPoint3.x << (double)m_DPoint3.y; |
| if( 10 == m_nPenColor ){ |
| ar << (DWORD)m_Color;//RGB |
| } |
| } |
| } |
|
|
| ● 円のソリッド |
| CDataSolidを流用し、m_nPenStyleが「101」以上のものを円のソリッドとして扱う。変数の対応は以下のとおり。 |
|
|
| m_start = pEnko->m_start; //中心 |
| m_end.x = pEnko->GetHankei(); //半径 |
| m_end.y = pEnko->GetHenpeiRitsu(); //扁平率 |
| m_DPoint2.x = pEnko->GetKatamukiKaku(); //傾き角 |
| m_DPoint2.y = pEnko->GetKaishiKaku(); //開始角 |
| m_DPoint3.x = pEnko->GetEnkoKaku(); //円弧角 |
| m_DPoint3.y = 0; //扇形、全円等の指定 |
|
|
| ・円ソリッド |
| m_nPenStyle = (101) --------円ソリッドの指定 |
| m_DPoint3.y = ( -1) --------外側円弧ソリッド |
| m_DPoint3.y = ( 0) --------扇形ソリッド |
| m_DPoint3.y = ( 5) --------弓形ソリッド |
| m_DPoint3.y = (100) --------全円ソリッド |
| (外側円弧ソリッドの円弧角は「PAI/2」以下) |
| ・円環ソリッド |
| m_nPenStyle = (105) --------円環ソリッド「1」の指定 |
| m_nPenStyle = (106) --------円環ソリッド「2」の指定 |
| m_DPoint3.y = (内側の円半径) |
| (円弧 と 全円 の違いのフラグ無し、円弧角のみでの違い) |
| (円環ソリッド「2」は楕円のとき、外円と内円の差が長軸と短軸で同じになる) |
| ・円周ソリッド |
| m_nPenStyle = (111) --------円周ソリッドの指定 |
| m_DPoint3.y = ( 0) --------円弧 |
| m_DPoint3.y = (100) --------全円 |
|
|
|
|
| ● ブロックデータ |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 基準点X座標、Y座標 |
| ● X方向の倍率 |
| ● Y方向の倍率 |
| ● 回転角 |
| ● ブロック定義データの通し番号 |
|
|
| void CDataBlock::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| ar <<(double)m_DPKijunTen.x <<(double)m_DPKijunTen.y |
| <<(double)m_dBairitsuX |
| <<(double)m_dBairitsuY |
| <<(double)m_radKaitenKaku |
| <<(DWORD)m_pDataList->m_nNumber;//ポインタでなく通し番号を保存する |
| } |
| } |
|
|
| ● ブロック定義データ |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● ダミー |
| ● レイヤ番号 |
| ● レイヤグループ番号 |
| ● 属性フラグ |
| ● 定義データの通し番号 |
| ● 参照されているかのフラグ |
| ● 定義された時間 |
| ● 定義データの名前 |
| ● 定義データの実体のリスト |
|
|
| void CDataList::Serialize(CArchive& ar) |
| { |
| CData::Serialize(ar); |
| if (ar.IsStoring()) { |
| ar <<(DWORD)m_nNumber |
| <<(DWORD)m_bReffered |
| <<m_time; |
| ar <<m_strName; //Ver.4.10 以降、名前の後ろに |
| //"@@SfigorgFlag@@"に続けて、複合図形種別フラグを付加 |
| //1:部分図(数学座標系)、2: 部分図(測地座標系)、 |
| //3:作図グループ、4:作図部品 |
| } |
| m_DataList.Serialize(ar); |
| } |
|
|
|
|
| ●属性フラグは各ビットごとに次の意味を持つ |
|
|
| データ 線 円 実点 文字 ブロック 寸法 ソリッド |
| ビット |
| (0x0010) 図形 図形 寸法値 |
| (0x0020)ハッチ ハッチ ハッチ 縦字 ハッチ |
| (0x0040) 寸法 寸法 真北 |
| (0x0080) 建具 建具 日影 |
| (0x0100) 半径寸法値 |
| (0x0200) 直径寸法値 |
| (0x0400) 角度寸法値 |
| (0x0800)図形 図形属性選択 図形 |
| (0x1000)建具 累計寸法値 建具 |
| (0x2000)寸法 建具 寸法 寸法 |
| (0x4000) 寸法 |
| (0x8000)包絡処理対象外の建具 2.5D |
|
|
|
|
|
|