//************************************************************************** //Skeleton of trsave.dll(ワークデータ保存) //************************************************************************** // #include #include #include #include #include //外部参照(DLL)関数の定義 #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 extern "C" { #endif __declspec(dllexport) void TRSAVESUFFIX(char*); __declspec(dllexport) void TRSAVEINIT(int*); __declspec(dllexport) void TRSAVEKIND(int*,char*); __declspec(dllexport) void TRSAVEPARAMETER(int*); __declspec(dllexport) void TRSAVEGETSAVELEVEL(int*); __declspec(dllexport) void TRSAVEGETBASICMODEL(float*); __declspec(dllexport) void TRSAVESAVEWORK(char*,double*,double*,double*, int*,int*,float*,unsigned char*,int*); __declspec(dllexport) void TRSAVEFREE(); #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 } #endif //もしTRSAVEPARAMETER などでダイアログを表示する場合は、以下のDllMain関数で //インスタンスをグローバル変数(hInst)に保存しておいて下さい。それ以外はDllMain関数は、 //不要です。 HINSTANCE hInst; BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,LPVOID lpvReserved) { hInst=hinstDll; return TRUE; } //本DLL内でのグローバル変数を定義 // //DLL内でローカルに使用する関数を記述 //(これらの関数を後ろのほうで記述する場合や、別ファイルで記述する場合は、 //それらの関数のプロトタイプ宣言を記述) //************************************************************************** //外部参照(DLL)関数の引数説明 //[I -] 入力のみ(関数内では参照するだけにして下さい) //[- O] 出力のみ(参照時は未定義になっています。必ず値を返して下さい。) //[I O] 入出力 // // //====================================================================== void TRSAVESUFFIX(char *suffix) //[- O] 拡張子文字 // 機能:対象ファイルの拡張子の定義 // 説明:TRYCUT起動直後の、引数解析処理前に参照されます。 // 本関数は必ず用意して下さい。 { strcpy(suffix,".???"); } //====================================================================== void TRSAVEINIT(int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:処理の初期化 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 作業エリアの確保などに利用しますが、特に必要ない場合は、 // 本関数自体の省略も可です。 // 初期化が正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数省略時は、*irc=TRUE とみなします。 // *irc=FALSEで返した場合DLLは動作しませんので、各種プロテクト処理は、 // ここで行なって下さい。 { *irc=TRUE; } //====================================================================== void TRSAVEKIND(int *lang, //[I -] =0 標準時 =1 他言語時 char *item) //[- O] 項目名 // 機能:ファイルダイアログ内の種類の項目名定義 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 本関数は省略不可です。 { if( *lang ) { strcpy(item,"???????(*.???)"); //他言語モード(TRYCUT.MESインストール) } else { strcpy(item,"???????(*.???)"); //標準(日本語)モード } } //====================================================================== void TRSAVEPARAMETER(int *irc) //[- O] Return Code // 機能:ファイルダイアログ内の種類の項目名定義 // 説明:ファイルダイアログで対象ファイルを選択後「OK」を指示 // したタイミングで参照されます。 // 処理に関連するパラメータを設定するI/Fで、ダイアログ // などを表示する処理などに利用して下さい。 // 正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数自体は省略可で、その場合*irc=TRUE とみなします。 { *irc=TRUE; } //====================================================================== void TRSAVEGETSAVELEVEL(int *savelevel) //[I -] 保存レベル =1:形状のみ // =2:ペン、ペンキ、 // 切削方向含む // =3:切削行番号含む // 機能:保存レベルを取得します // 説明:TRYCUTのポップアップメニューより指定する「保存レベル」を // 取得します。*savelevelの値をTRSAVESAVEWORK関数内で利用することを // 想定したものです。この値を本DLL内のグローバル変数に保存して // お使い下さい。 // 本関数は、ファイルダイアログで対象ファイルを選択後「OK」を指示した // タイミングで参照されます。本関数は参照にのみ利用するものです。 // もちろん省略可です。 { } //====================================================================== void TRSAVEGETBASICMODEL(float *topb) //[I -] 基準形状のZ値先頭アドレス // topb=NULLの場合は設定されて // いません。 // 機能:基準形状の情報を得る // 説明:基準形状のデータを参照しながらデータを解析して保存したい場合に // 利用するものです。本関数にてZ値アドレスをDLL内のグローバル変数に // 保存して利用することを想定しています。 // 必要ない場合は本関数は省略して下さい。 // TRSAVESAVEWORKをCALLする直前で参照されます。 { } //====================================================================== void TRSAVESAVEWORK(char *filename,//[I -] ファイル名 double *bmax, //[I -] ワークの最大値XY double *bmin, //[I -] ワークの最小値XYZ double *wpitch, //[I -] ワークのピッチ(精度) int *xmax, //[I -] X方向格子数 int *ymax, //[I -] Y方向格子数 float *top, //[I -] Z値列(X*Y個)の先頭アドレス unsigned char *topc, //[I -] 属性(PENKI,PENなど)の先頭アドレス int *topn) //[I -] 切削ブロック番号の先頭アドレス // 機能:ワークの保存 // 説明:格子毎のZ値や属性を、外部ファイルに保存します。 // 保存を目的にしたものではありますが、ワークの各種解析データを計算して // 書き出しておくことにも利用できます。 // top,topc,topnのそれぞれの連続領域は必要十分に確保されています。 // ただし、TRYCUT側のメモリ省略の設定により、あらかじめ topn は、NULL // が設定されている場合があります。このような場合は、保存時に参照はでき // ません。top と topcは、TRYCUTが正常に動作している場合は、 // 必ずNULL以外の値が設定(領域が確保)されています。本関数は省略不可です。 { } //====================================================================== void TRSAVEFREE() // 引数なし // 機能:作業エリアの開放など // 説明:TRYCUT終了時のWM_DESTROYイベント発生時に参照されます。 // TRSAVEINITなどで作業エリアを確保している場合などに、 // その作業エリアの開放(FREE)のために利用します。本関数は省略可です。 { }