IGES_Parser.cpp

Summary
IGES_Parser.cpp
Functions
IGES_Parser_MainIGESパーサーのメイン
Optimize4OpenGL読み込んだIGESファイルをOpenGL用に最適化する
CheckDegenracy縮退チェック
ModifyParamConectパラメトリック平面内のトリム曲線同士のつながりをチェック、修正する
ChangeKnotVecRangeノットベクトルの範囲を0~valにする.
ChangeKnotノットベクトルの範囲変更関数ChangeKnotVecRange()のサブ関数
SearchMinVecRangeノットベクトル列から隣り合うノットベクトルの最小値を探索し返す
ExpandKnotRange隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する
CheckCWforTrimトリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する
ReverseCOMPELEMCOMPELEM配列を反転
ChangeEntityforNurbsNURBS曲線以外のエンティティをNURBS曲線に変換し、変換行列があれば座標変換を施す
GetParameterSectionパラメータ部の情報を読み込む
GetCirAParaType100 円・円弧を読み込む
GetConAParaType104 円錐曲線の読み込み(未実装)
GetLineParaType110 線分の読み込み
GetTMatParaType124 変換行列の読み込み
GetNurbsCParaType126 NRBS曲線の読み込み
GetNurbsSParaType128 NURBS曲面の読み込み
GetCompCParaType102 複合曲線の読み込み
GeConpSParaType142 面上線の読み込み
GetTrmSParaType144 トリム面の読み込み
GetDirectorySectionディレクトリ部読み込み
GetType各エンティティタイプの数を取得する
GetStatusNumberDE#9(ステータス)部の読み込み
GetGlobalSectionグローバル部読み込み
GetStartSectionスタート部読み込み
GetTerminateSectionターミネート部読み込み

Functions

IGES_Parser_Main

int IGES_PARSER::IGES_Parser_Main(BODY *body,
const char *IGES_fname)

IGESパーサーのメイン

Parameters

*body立体を構成するエンティティの集合オブジェクトへのポインタ
TypeNum[]各エンティティの数が格納される

Return

KOD_TRUE:読み込み成功 KOD_ERR:失敗

Optimize4OpenGL

int IGES_PARSER::Optimize4OpenGL(BODY *body)

読み込んだIGESファイルをOpenGL用に最適化する

Parameters

*bodyBODYへのポインタ

Return

KOD_TURE

CheckDegenracy

int IGES_PARSER::CheckDegenracy(BODY *body)

縮退チェック

Parameters

*bodyBODYへのポインタ

Return

KOD_TRUE

ModifyParamConect

int IGES_PARSER::ModifyParamConect(BODY *body)

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

Parameters

*bodyBODYへのポインタ

Return

KOD_TRUE

ChangeKnotVecRange

int IGES_PARSER::ChangeKnotVecRange(double Range[],
double Knot[],
int N,
int M,
int K,
double val)

ノットベクトルの範囲を0~valにする.

Parameters

Range[]ノットベクトルの範囲
Knot[]ノットベクトル
Nノットベクトルの数
M階数
Kコントロールポイント数
valノットベクトルの範囲の上限値

Return

KOD_TRUE

ChangeKnot

double IGES_PARSER::ChangeKnot(double Knot,
double M_,
double K_,
double val)

ノットベクトルの範囲変更関数ChangeKnotVecRange()のサブ関数

Parameters

Knot注目中のノット
M_Knot[階数-1]
K_Knot[K]
valノットベクトルの範囲の上限値

Return

範囲変更後のノット値

SearchMinVecRange

double IGES_PARSER::SearchMinVecRange(double Knot[],
int M,
int K)

ノットベクトル列から隣り合うノットベクトルの最小値を探索し返す

Parameters

Knot[]ノットベクトル
M階数
Kコントロールポイントの数

Return

最小値

ExpandKnotRange

int IGES_PARSER::ExpandKnotRange(BODY *body)

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

Parameters

*bodyBODYへのポインタ

Return

KOD_TRUE

CheckCWforTrim

int IGES_PARSER::CheckCWforTrim(BODY *body)

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

Parameters

*bodyBODYへのポインタ

Return

KOD_TRUE

ReverseCOMPELEM

void IGES_PARSER::ReverseCOMPELEM(COMPC *CompC)

COMPELEM配列を反転

Parameters

*CompCCOMPC配列

ChangeEntityforNurbs

int IGES_PARSER::ChangeEntityforNurbs(DirectoryParam *dpara,
BODY body,
int dline)

NURBS曲線以外のエンティティをNURBS曲線に変換し、変換行列があれば座標変換を施す

Parameters

*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体
dlineディレクトリ部のライン数

Return

KOD_TRUE:成功 KOD_ERR:失敗

GetParameterSection

int IGES_PARSER::GetParameterSection(FILE *fp,
DirectoryParam *dpara,
BODY body,
int dline)

パラメータ部の情報を読み込む

Parameters

*fp読み込んだIGESファイルへのポインタ
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体
dlineディレクトリ部のライン数

Return

KOD_TRUE:成功 KOD_ERR:失敗

GetCirAPara

int IGES_PARSER::GetCirAPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type100 円・円弧を読み込む

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE

GetConAPara

int IGES_PARSER::GetConAPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type104 円錐曲線の読み込み(未実装)

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE

GetLinePara

int IGES_PARSER::GetLinePara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type110 線分の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE

GetTMatPara

int IGES_PARSER::GetTMatPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type124 変換行列の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE

GetNurbsCPara

int IGES_PARSER::GetNurbsCPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type126 NRBS曲線の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE:成功 KOD_ERR:メモリー確保に失敗

GetNurbsSPara

int IGES_PARSER::GetNurbsSPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type128 NURBS曲面の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE:成功 KOD_ERR:メモリー確保に失敗

GetCompCPara

int IGES_PARSER::GetCompCPara(char str[],
int pD,
DirectoryParam *dpara,
int dline,
BODY body)

Type102 複合曲線の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE:成功 KOD_ERR:メモリー確保に失敗

GeConpSPara

int IGES_PARSER::GeConpSPara(char str[],
int pD,
DirectoryParam *dpara,
int dline,
BODY body)

Type142 面上線の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE

GetTrmSPara

int IGES_PARSER::GetTrmSPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)

Type144 トリム面の読み込み

Parameters

str[]文字列バッファ
pDディレクトリ部への逆ポインタの値
*dparaディレクトリ部のパラメータ構造体へのポインタ
bodyBODY構造体

Return

KOD_TRUE:成功 KOD_ERR:メモリー確保に失敗

GetDirectorySection

int IGES_PARSER::GetDirectorySection(FILE *fp,
DirectoryParam *dpara,
int TypeNum[],
int dline)

ディレクトリ部読み込み

Parameters

*fp読み込んだIGESファイルへのポインタ
*dparaディレクトリ部のパラメータ構造体へのポインタ
TypeNum[]BODYを構成する各エンティティの数
dlineディレクトリ部のライン数

Return

KOD_TRUE:成功 KOD_ERR:失敗

GetType

void IGES_PARSER::GetType(int type,
int entitynum[])

各エンティティタイプの数を取得する

Parameters

typeエンティティのタイプ
entitynum[]エンティティの数

GetStatusNumber

void IGES_PARSER::GetStatusNumber(char field[],
DirectoryParam *dpara)

DE#9(ステータス)部の読み込み

Parameters

field[]フィールド
*dparaディレクトリ部のパラメータ構造体へのポインタ

GetGlobalSection

int IGES_PARSER::GetGlobalSection(FILE *fp,
GlobalParam *gpara,
int gline)

グローバル部読み込み

Parameters

*fp読み込んだIGESファイルへのポインタ
*gparaグローバル部のパラメータ構造体へのポインタ
glineグローバル部のライン数

Return

KOD_TRUE:成功 KOD_ERR:失敗

GetStartSection

int IGES_PARSER::GetStartSection(FILE *fp,
int sline)

スタート部読み込み

Parameter

*fp読み込んだIGESファイルへのポインタ
slineスタート部のライン数

Return

KOD_TRUE:成功 KOD_ERR:失敗

GetTerminateSection

int IGES_PARSER::GetTerminateSection(FILE *fp)

ターミネート部読み込み

Parameter

*fp読み込んだIGESファイルへのポインタ

Return

KOD_TRUE

int IGES_PARSER::IGES_Parser_Main(BODY *body,
const char *IGES_fname)
IGESパーサーのメイン
int IGES_PARSER::Optimize4OpenGL(BODY *body)
読み込んだIGESファイルをOpenGL用に最適化する
int IGES_PARSER::CheckDegenracy(BODY *body)
縮退チェック
int IGES_PARSER::ModifyParamConect(BODY *body)
パラメトリック平面内のトリム曲線同士のつながりをチェック、修正する
int IGES_PARSER::ChangeKnotVecRange(double Range[],
double Knot[],
int N,
int M,
int K,
double val)
ノットベクトルの範囲を0~valにする.
double IGES_PARSER::ChangeKnot(double Knot,
double M_,
double K_,
double val)
ノットベクトルの範囲変更関数ChangeKnotVecRange()のサブ関数
double IGES_PARSER::SearchMinVecRange(double Knot[],
int M,
int K)
ノットベクトル列から隣り合うノットベクトルの最小値を探索し返す
int IGES_PARSER::ExpandKnotRange(BODY *body)
隣り合うノットベクトルの差がMIN_KNOT_RANGE以上になるよう範囲を変更する
int IGES_PARSER::CheckCWforTrim(BODY *body)
トリムに使われている複合曲線からなる多角形が時計回りか反時計回りかを調べ、外周トリムは反時計回り、内周トリムは時計周りになるように変更する
void IGES_PARSER::ReverseCOMPELEM(COMPC *CompC)
COMPELEM配列を反転
int IGES_PARSER::ChangeEntityforNurbs(DirectoryParam *dpara,
BODY body,
int dline)
NURBS曲線以外のエンティティをNURBS曲線に変換し、変換行列があれば座標変換を施す
int IGES_PARSER::GetParameterSection(FILE *fp,
DirectoryParam *dpara,
BODY body,
int dline)
パラメータ部の情報を読み込む
int IGES_PARSER::GetCirAPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type100 円・円弧を読み込む
int IGES_PARSER::GetConAPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type104 円錐曲線の読み込み(未実装)
int IGES_PARSER::GetLinePara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type110 線分の読み込み
int IGES_PARSER::GetTMatPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type124 変換行列の読み込み
int IGES_PARSER::GetNurbsCPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type126 NRBS曲線の読み込み
int IGES_PARSER::GetNurbsSPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type128 NURBS曲面の読み込み
int IGES_PARSER::GetCompCPara(char str[],
int pD,
DirectoryParam *dpara,
int dline,
BODY body)
Type102 複合曲線の読み込み
int IGES_PARSER::GeConpSPara(char str[],
int pD,
DirectoryParam *dpara,
int dline,
BODY body)
Type142 面上線の読み込み
int IGES_PARSER::GetTrmSPara(char str[],
int pD,
DirectoryParam *dpara,
BODY body)
Type144 トリム面の読み込み
int IGES_PARSER::GetDirectorySection(FILE *fp,
DirectoryParam *dpara,
int TypeNum[],
int dline)
ディレクトリ部読み込み
void IGES_PARSER::GetType(int type,
int entitynum[])
各エンティティタイプの数を取得する
void IGES_PARSER::GetStatusNumber(char field[],
DirectoryParam *dpara)
DE#9(ステータス)部の読み込み
int IGES_PARSER::GetGlobalSection(FILE *fp,
GlobalParam *gpara,
int gline)
グローバル部読み込み
int IGES_PARSER::GetStartSection(FILE *fp,
int sline)
スタート部読み込み
int IGES_PARSER::GetTerminateSection(FILE *fp)
ターミネート部読み込み