IGES_Parser.h

Summary
IGES_Parser.h
Constants
General Defines
GlobalParamグローバル部の必要パラメータ構造体
DirectoryParamディレクトリ部の必要パラメータ構造体
IGES_PARSERIGESパーサー用クラス
Functions
IGES_PARSERIGES_PARSERクラスのコンストラクタ
IGES_Parser_MainIGESファイルのパーサmain
Optimize4OpenGL読み込んだIGESファイルをOpenGL用に最適化する(ExpandKnotRange(), ModifyParamConect(), CheckDegenracy(), CheckCWforTrim()を実行)
ExpandKnotRange隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する
ModifyParamConectパラメトリック平面内のトリム曲線同士のつながりをチェック、修正する
CheckDegenracy縮退(2Dパラメトリック曲線の始点と終点が一致しているか)のチェック
CheckCWforTrimトリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する
NormalizeKnotRangeノットベクトルの範囲を0~valへ(ノットの正規化)
GetSectionLine各セクションのライン数を調べる
GetStartSectionスタート部の読み込み
GetGlobalSectionグローバル部の読み込み
GetDirectorySectionディレクトリ部の読み込み
GetStatusNumberディレクトリ部の情報#9を取得
GetParameterSectionパラメータ部の読み込み
GetTerminateSectionターミネート部の読み込み(スケルトン)
GetType各エンティティタイプの数を記憶する
GetCirAParaType100 円・円弧の読み込み
GetCompCParaType102 複合曲線の読み込み
GetConAParaType104 円錐曲線の読み込み
GetLineParaType110 線分の読み込み
GetTMatParaType124 変換行列の読み込み
GetNurbsCParaType126 NRBS曲線の読み込み
GetNurbsSParaType128 NRBS曲面の読み込み
GeConpSParaType142 面上線の読み込み
GetTrmSParaType144 トリム面の読み込み
CatchStringIカンマまでの数値を読み込んで返す(int)
CatchStringDカンマまでの数値を読み込んで返す(double)
ChangeEntityforNurbsエンティティを全てNURBSへ変更する
SearchMaxCoord全てのエンティティにおける座標値の最大値を調べる
GetDEPointerDE部へのポインタが示す実際の構造体へのポインタを返す
SearchEntTypeDE部へのポインタの値からエンティティのタイプを調べて返す
InitDisplayStat各エンティティの表示属性を設定
TransformNurbsCNURBS曲線を座標変換する
ChangeKnotVecRangeノットベクトルの正規化sub1
ChangeKnotノットベクトルの正規化sub2
SearchMinVecRangeノットベクトルの最小間隔を探索
ReverseCOMPELEMCOMPELEM配列を反転
Variables
*body(private)BODYクラスへのポインタ(IGESデータはこのBODY構造体に全て格納される)
NFunc(private)NURBS_Funcクラスのインスタンス
*TypeNum(private)どのBODYオブジェクトが幾つあるかを示す
buf[COLUMN_MAX_](private)汎用文字列バッファ
entity[ALL_ENTITY_TYPE_NUM](private)エンティティの番号を格納した配列
TypeCount[ALL_ENTITY_TYPE_NUM](private)各エンティティタイプの正常メモリー確保数を格納

Constants

General Defines

#define SECTION_NUMセクションの数(S,G,D,P,T)(5)
#define COLUMN_MAX_1行のカラム数(‘\n’と’\0’を含む)(82)
#define COLUMN_MAX1行のカラム数(‘\n’と’\0’は含まない)(80)
#define COL_CHARセクション判別文字のカラム(73)
#define COL_P_DIRECTORYパラメータ部でのディレクトリ部への逆ポインタがあるカラム(65)
#define GLOBALPARAMNUMグローバル部のパラメータ数(25)
#define FIELD_NUMディレクトリ部の1フィールドの文字数(8)
#define DIRECTORYPARANUMディレクトリ部のパラメータ数(20)
#define SECTION_STARTスタートルセクション判別用シンボル(0)
#define SECTION_GLOBALグローバルセクション判別用シンボル(1)
#define SECTION_DIRECTORYディレクトリセクション判別用シンボル(2)
#define SECTION_PARAMETERパラメータセクション判別用シンボル(3)
#define SECTION_TERMINATEターミネートセクション判別用シンボル(4)
#define MAIN_ENTITY_TYPE_NUM読み込み対象となるエンティティタイプの数(9)
#define NRBS_PARAM_MAXNRBS曲面・曲線で定義されるパラメータの最大値(200)

GlobalParam

グローバル部の必要パラメータ構造体

Variables

double scaleモデルのスケール
int unit_flag単位フラグ
double space_sizeモデル空間の大きさ

DirectoryParam

ディレクトリ部の必要パラメータ構造体

Variables

int entity_type要素番号
int entity_count何番目のentity_typeかを表す
int p_paramパラメータ部へのポインタ
int p_tmマトリックスへのポインタ
int blank_stat表示属性
int subordinate_stat従属属性
int useflag_statentity使用意図
int seq_numシーケンス番号
int param_line_countパラメータ部のライン数

IGES_PARSER

class IGES_PARSER

IGESパーサー用クラス

Summary
Functions
IGES_PARSERIGES_PARSERクラスのコンストラクタ
IGES_Parser_MainIGESファイルのパーサmain
Optimize4OpenGL読み込んだIGESファイルをOpenGL用に最適化する(ExpandKnotRange(), ModifyParamConect(), CheckDegenracy(), CheckCWforTrim()を実行)
ExpandKnotRange隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する
ModifyParamConectパラメトリック平面内のトリム曲線同士のつながりをチェック、修正する
CheckDegenracy縮退(2Dパラメトリック曲線の始点と終点が一致しているか)のチェック
CheckCWforTrimトリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する
NormalizeKnotRangeノットベクトルの範囲を0~valへ(ノットの正規化)
GetSectionLine各セクションのライン数を調べる
GetStartSectionスタート部の読み込み
GetGlobalSectionグローバル部の読み込み
GetDirectorySectionディレクトリ部の読み込み
GetStatusNumberディレクトリ部の情報#9を取得
GetParameterSectionパラメータ部の読み込み
GetTerminateSectionターミネート部の読み込み(スケルトン)
GetType各エンティティタイプの数を記憶する
GetCirAParaType100 円・円弧の読み込み
GetCompCParaType102 複合曲線の読み込み
GetConAParaType104 円錐曲線の読み込み
GetLineParaType110 線分の読み込み
GetTMatParaType124 変換行列の読み込み
GetNurbsCParaType126 NRBS曲線の読み込み
GetNurbsSParaType128 NRBS曲面の読み込み
GeConpSParaType142 面上線の読み込み
GetTrmSParaType144 トリム面の読み込み
CatchStringIカンマまでの数値を読み込んで返す(int)
CatchStringDカンマまでの数値を読み込んで返す(double)
ChangeEntityforNurbsエンティティを全てNURBSへ変更する
SearchMaxCoord全てのエンティティにおける座標値の最大値を調べる
GetDEPointerDE部へのポインタが示す実際の構造体へのポインタを返す
SearchEntTypeDE部へのポインタの値からエンティティのタイプを調べて返す
InitDisplayStat各エンティティの表示属性を設定
TransformNurbsCNURBS曲線を座標変換する
ChangeKnotVecRangeノットベクトルの正規化sub1
ChangeKnotノットベクトルの正規化sub2
SearchMinVecRangeノットベクトルの最小間隔を探索
ReverseCOMPELEMCOMPELEM配列を反転
Variables
*body(private)BODYクラスへのポインタ(IGESデータはこのBODY構造体に全て格納される)
NFunc(private)NURBS_Funcクラスのインスタンス
*TypeNum(private)どのBODYオブジェクトが幾つあるかを示す
buf[COLUMN_MAX_](private)汎用文字列バッファ
entity[ALL_ENTITY_TYPE_NUM](private)エンティティの番号を格納した配列
TypeCount[ALL_ENTITY_TYPE_NUM](private)各エンティティタイプの正常メモリー確保数を格納

Functions

IGES_PARSER

IGES_PARSER()

IGES_PARSERクラスのコンストラクタ

IGES_Parser_Main

int IGES_Parser_Main(BODY *,
const char *)

IGESファイルのパーサmain

Optimize4OpenGL

int Optimize4OpenGL(BODY *)

読み込んだIGESファイルをOpenGL用に最適化する(ExpandKnotRange(), ModifyParamConect(), CheckDegenracy(), CheckCWforTrim()を実行)

ExpandKnotRange

int ExpandKnotRange(BODY *)

隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する

ModifyParamConect

int ModifyParamConect(BODY *)

パラメトリック平面内のトリム曲線同士のつながりをチェック、修正する

CheckDegenracy

int CheckDegenracy(BODY *)

縮退(2Dパラメトリック曲線の始点と終点が一致しているか)のチェック

CheckCWforTrim

int CheckCWforTrim(BODY *)

トリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する

NormalizeKnotRange

int NormalizeKnotRange(BODY *,
 double)

ノットベクトルの範囲を0~valへ(ノットの正規化)

GetSectionLine

void GetSectionLine(FILE *,
int [])

各セクションのライン数を調べる

GetStartSection

int GetStartSection(FILE *,
 int)

スタート部の読み込み

GetGlobalSection

int GetGlobalSection(FILE *,
GlobalParam *,
 int)

グローバル部の読み込み

GetDirectorySection

int GetDirectorySection(FILE *,
DirectoryParam *,
int [],
 int)

ディレクトリ部の読み込み

GetStatusNumber

void GetStatusNumber(char [],
DirectoryParam *)

ディレクトリ部の情報#9を取得

GetParameterSection

int GetParameterSection(FILE *,
DirectoryParam *,
 BODY,
 int)

パラメータ部の読み込み

GetTerminateSection

int GetTerminateSection(FILE *)

ターミネート部の読み込み(スケルトン)

GetType

void GetType( int,
int [])

各エンティティタイプの数を記憶する

GetCirAPara

int GetCirAPara(char [],
 int,
DirectoryParam *,
 BODY)

Type100 円・円弧の読み込み

GetCompCPara

int GetCompCPara(char [],
 int,
DirectoryParam *,
 int,
 BODY)

Type102 複合曲線の読み込み

GetConAPara

int GetConAPara(char [],
 int,
DirectoryParam *,
 BODY)

Type104 円錐曲線の読み込み

GetLinePara

int GetLinePara(char [],
 int,
DirectoryParam *,
 BODY)

Type110 線分の読み込み

GetTMatPara

int GetTMatPara(char [],
 int,
DirectoryParam *,
 BODY)

Type124 変換行列の読み込み

GetNurbsCPara

int GetNurbsCPara(char [],
 int,
DirectoryParam *,
 BODY)

Type126 NRBS曲線の読み込み

GetNurbsSPara

int GetNurbsSPara(char [],
 int,
DirectoryParam *,
 BODY)

Type128 NRBS曲面の読み込み

GeConpSPara

int GeConpSPara(char [],
 int,
DirectoryParam *,
 int,
 BODY)

Type142 面上線の読み込み

GetTrmSPara

int GetTrmSPara(char [],
 int,
DirectoryParam *,
 BODY)

Type144 トリム面の読み込み

CatchStringI

int CatchStringI(char **)

カンマまでの数値を読み込んで返す(int)

CatchStringD

double CatchStringD(char **)

カンマまでの数値を読み込んで返す(double)

ChangeEntityforNurbs

int ChangeEntityforNurbs(DirectoryParam *,
 BODY,
 int)

エンティティを全てNURBSへ変更する

SearchMaxCoord

int SearchMaxCoord(BODY *,
int [])

全てのエンティティにおける座標値の最大値を調べる

GetDEPointer

void *GetDEPointer(int ,
 BODY)

DE部へのポインタが示す実際の構造体へのポインタを返す

SearchEntType

int SearchEntType(DirectoryParam *,
 int,
 int)

DE部へのポインタの値からエンティティのタイプを調べて返す

InitDisplayStat

void InitDisplayStat(DispStat *)

各エンティティの表示属性を設定

TransformNurbsC

int TransformNurbsC(int,
int,
BODY)

NURBS曲線を座標変換する

ChangeKnotVecRange

int ChangeKnotVecRange(double [],
double [],
 int,
 int,
 int,
 double)

ノットベクトルの正規化sub1

ChangeKnot

double ChangeKnot(double ,
double ,
 double,
 double)

ノットベクトルの正規化sub2

SearchMinVecRange

double SearchMinVecRange(double [],
 int,
 int)

ノットベクトルの最小間隔を探索

ReverseCOMPELEM

void ReverseCOMPELEM(COMPC *)

COMPELEM配列を反転

Variables

*body

BODY *body

(private)BODYクラスへのポインタ(IGESデータはこのBODY構造体に全て格納される)

NFunc

NURBS_Func NFunc

(private)NURBS_Funcクラスのインスタンス

*TypeNum

int *TypeNum

(private)どのBODYオブジェクトが幾つあるかを示す

buf[COLUMN_MAX_]

char buf[COLUMN_MAX_]

(private)汎用文字列バッファ

entity[ALL_ENTITY_TYPE_NUM]

int entity[ALL_ENTITY_TYPE_NUM]

(private)エンティティの番号を格納した配列

TypeCount[ALL_ENTITY_TYPE_NUM]

int TypeCount[ALL_ENTITY_TYPE_NUM]

(private)各エンティティタイプの正常メモリー確保数を格納

class IGES_PARSER
IGESパーサー用クラス
IGES_PARSER()
IGES_PARSERクラスのコンストラクタ
int IGES_Parser_Main(BODY *,
const char *)
IGESファイルのパーサmain
int Optimize4OpenGL(BODY *)
読み込んだIGESファイルをOpenGL用に最適化する(ExpandKnotRange(), ModifyParamConect(), CheckDegenracy(), CheckCWforTrim()を実行)
int ExpandKnotRange(BODY *)
隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する
int ModifyParamConect(BODY *)
パラメトリック平面内のトリム曲線同士のつながりをチェック、修正する
int CheckDegenracy(BODY *)
縮退(2Dパラメトリック曲線の始点と終点が一致しているか)のチェック
int CheckCWforTrim(BODY *)
トリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する
int NormalizeKnotRange(BODY *,
 double)
ノットベクトルの範囲を0~valへ(ノットの正規化)
void GetSectionLine(FILE *,
int [])
各セクションのライン数を調べる
int GetStartSection(FILE *,
 int)
スタート部の読み込み
int GetGlobalSection(FILE *,
GlobalParam *,
 int)
グローバル部の読み込み
int GetDirectorySection(FILE *,
DirectoryParam *,
int [],
 int)
ディレクトリ部の読み込み
void GetStatusNumber(char [],
DirectoryParam *)
ディレクトリ部の情報#9を取得
int GetParameterSection(FILE *,
DirectoryParam *,
 BODY,
 int)
パラメータ部の読み込み
int GetTerminateSection(FILE *)
ターミネート部の読み込み(スケルトン)
void GetType( int,
int [])
各エンティティタイプの数を記憶する
int GetCirAPara(char [],
 int,
DirectoryParam *,
 BODY)
Type100 円・円弧の読み込み
int GetCompCPara(char [],
 int,
DirectoryParam *,
 int,
 BODY)
Type102 複合曲線の読み込み
int GetConAPara(char [],
 int,
DirectoryParam *,
 BODY)
Type104 円錐曲線の読み込み
int GetLinePara(char [],
 int,
DirectoryParam *,
 BODY)
Type110 線分の読み込み
int GetTMatPara(char [],
 int,
DirectoryParam *,
 BODY)
Type124 変換行列の読み込み
int GetNurbsCPara(char [],
 int,
DirectoryParam *,
 BODY)
Type126 NRBS曲線の読み込み
int GetNurbsSPara(char [],
 int,
DirectoryParam *,
 BODY)
Type128 NRBS曲面の読み込み
int GeConpSPara(char [],
 int,
DirectoryParam *,
 int,
 BODY)
Type142 面上線の読み込み
int GetTrmSPara(char [],
 int,
DirectoryParam *,
 BODY)
Type144 トリム面の読み込み
int CatchStringI(char **)
カンマまでの数値を読み込んで返す(int)
double CatchStringD(char **)
カンマまでの数値を読み込んで返す(double)
int ChangeEntityforNurbs(DirectoryParam *,
 BODY,
 int)
エンティティを全てNURBSへ変更する
int SearchMaxCoord(BODY *,
int [])
全てのエンティティにおける座標値の最大値を調べる
void *GetDEPointer(int ,
 BODY)
DE部へのポインタが示す実際の構造体へのポインタを返す
int SearchEntType(DirectoryParam *,
 int,
 int)
DE部へのポインタの値からエンティティのタイプを調べて返す
void InitDisplayStat(DispStat *)
各エンティティの表示属性を設定
int TransformNurbsC(int,
int,
BODY)
NURBS曲線を座標変換する
int ChangeKnotVecRange(double [],
double [],
 int,
 int,
 int,
 double)
ノットベクトルの正規化sub1
double ChangeKnot(double ,
double ,
 double,
 double)
ノットベクトルの正規化sub2
double SearchMinVecRange(double [],
 int,
 int)
ノットベクトルの最小間隔を探索
void ReverseCOMPELEM(COMPC *)
COMPELEM配列を反転
BODY *body
(private)BODYクラスへのポインタ(IGESデータはこのBODY構造体に全て格納される)
NURBS_Func NFunc
(private)NURBS_Funcクラスのインスタンス
int *TypeNum
(private)どのBODYオブジェクトが幾つあるかを示す
char buf[COLUMN_MAX_]
(private)汎用文字列バッファ
int entity[ALL_ENTITY_TYPE_NUM]
(private)エンティティの番号を格納した配列
int TypeCount[ALL_ENTITY_TYPE_NUM]
(private)各エンティティタイプの正常メモリー確保数を格納