//************************************************************************** //Skeleton of trload.dll(ワークデータ読み込み) //************************************************************************** // #include #include #include #include #include //外部参照(DLL)関数の定義 #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 extern "C" { #endif __declspec(dllexport) void TRLOADSUFFIX(char*); __declspec(dllexport) void TRLOADINIT(int*); __declspec(dllexport) void TRLOADKIND(int*,char*); __declspec(dllexport) void TRLOADPARAMETER(int*); __declspec(dllexport) void TRLOADSTARTPOINT(int*,double*); __declspec(dllexport) void TRLOADGETWORKSIZE(char*,double*,double*,double*); __declspec(dllexport) void TRLOADLOADWORK(char*,double*,int*,int*,float*, unsigned char*,int*); __declspec(dllexport) void TRLOADFREE(); #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 } #endif //もしTRLOADPARAMETER などでダイアログを表示する場合は、以下の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 TRLOADSUFFIX(char *suffix) //[- O] 拡張子文字(DMF,STL,DME以外を指定) // 機能:対象ファイルの拡張子の定義 // 説明:TRYCUT起動直後の、引数解析処理前に参照されます。 // 本関数は必ず用意して下さい。 { strcpy(suffix,".???"); } //====================================================================== void TRLOADINIT(int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:処理の初期化 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 作業エリアの確保などに利用しますが、特に必要ない場合は、 // 本関数自体の省略も可です。 // 初期化が正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数省略時は、*irc=TRUE とみなします。 // *irc=FALSEで返した場合DLLは動作しませんので、各種プロテクト処理は、 // ここで行なって下さい。 { *irc=TRUE; } //====================================================================== void TRLOADKIND(int *lang, //[I -] =0 標準時 =1 他言語時 char *item) //[- O] 項目名 // 機能:ファイルダイアログ内の種類の項目名定義 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 本関数は省略不可です。 { if( *lang ) { strcpy(item,"???????(*.???)"); //他言語モード(TRYCUT.MESインストール) } else { strcpy(item,"???????(*.???)"); //標準(日本語)モード } } //====================================================================== void TRLOADPARAMETER(int *irc) //[- O] Return Code // 機能:処理パラメータの設定 // 説明:ファイルダイアログで対象ファイルを選択後「OK」を指示 // したタイミングで参照されます。 // 処理に関連するパラメータを設定するI/Fで、ダイアログ // などを表示する処理などに利用して下さい。 // 正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数自体は省略可で、その場合*irc=TRUE とみなします。 { *irc=TRUE; } //====================================================================== void TRLOADSTARTPOINT(int *type, //[- O] スタート点指定タイプ // =0:XY最小Z最大位置 // =1:現在の位置 // =2:指定位置 double *p) //[- O] *type=2 時の座標値 // 機能:制御点(スタート点)座標値の設定 // 説明:ファイルダイアログで対象ファイルを選択後「OK」を指示 // したタイミングで参照されます。 // 本関数は省略可。省略時は *type=0 とみなします。 { } //====================================================================== void TRLOADGETWORKSIZE(char *filename, //[I -] ファイル名 double *bmax, //[- O] ワークの最大値XY (Zは不要) double *bmin, //[- O] ワークの最小値XYZ double *wpitch //[- O] ワークのピッチ(精度) ) // 機能:ロード対象のワークサイズ取得 // 説明:ロード処理開始前に、まず確保するべきデータ領域をTRYCUTに認識させ、 // 必要なデータ領域を確保させるためにワークのサイズを返します。 // 指定ファイルから、ワークのサイズと必要によりピッチ(精度)を取得して // 設定して下さい。ワークのピッチ(*wpitch)を未定義(=0.0)にした場合は、 // TRYCUT側が指定規準に従って自動的に決定します。 // 本関数は省略不可です。 { } //====================================================================== void TRLOADLOADWORK(char *filename,//[I -] ファイル名 double *wpitch, //[I -] ワークのピッチ(精度) int *xmax, //[I -] X方向格子数 int *ymax, //[I -] Y方向格子数 float *top, //[- O] Z値列(X*Y個)の先頭アドレス unsigned char *topc, //[- O] 属性(PENKI,PENなど)の先頭アドレス int *topn) //[- O] 切削ブロック番号の先頭アドレス // 機能:ワークのロード // 説明:格子毎のZ値や属性をロードして、それぞれ topやtopc,topnに設定します。 // top,topc,topnのそれぞれの連続領域は必要十分に確保されています。 // ただし、TRYCUT側のメモリ省略の設定により、あらかじめ topn は、 // NULL が設定されている場合があります。このような場合は、ロード時に // それぞれ値を設定しないようにして下さい。 // top と topc は、TRYCUTが正常に動作している場合は、必ずNULL以外 // の値が設定(領域が確保)されています。本関数は省略不可です。 { } //====================================================================== void TRLOADFREE() // 引数なし // 機能:作業エリアの開放など // 説明:TRYCUT終了時のWM_DESTROYイベント発生時に参照されます。 // TRLOADINITなどで作業エリアを確保している場合などに、 // その作業エリアの開放(FREE)のために利用します。本関数は省略可です。 { }