//************************************************************************** //Skeleton of trsim.dll(シミュレーション機能) //************************************************************************** // #include #include //外部参照(DLL)関数の定義 #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 extern "C" { #endif __declspec(dllexport) void TRSIMINIT(int*); __declspec(dllexport) void TRSIMMENUITEM(int*,char*); __declspec(dllexport) void TRSIMPARAMETER(int*); __declspec(dllexport) void TRSIMPATHTYPE(int *,int *,int *); __declspec(dllexport) void TRSIMGETWORK(double*,double*,double*,int*,int*, float *,unsigned char*,int*,int*); __declspec(dllexport) void TRSIMSTART(int*); __declspec(dllexport) void TRSIMGETTOOL(int*,float*,float*,float*,float*, float*,float*,float*,float*,float*,int*); __declspec(dllexport) void TRSIMGETTOOLLEN(int*,float*,float*,float*,float*); __declspec(dllexport) void TRSIMGETARBOR(int*,int*,int*,float*,float*,int*); __declspec(dllexport) void TRSIMCUTWORK(int*,int*,double*,double*,double*, int*,double*,double*,int*); __declspec(dllexport) void TRSIMEND(); __declspec(dllexport) void TRSIMFREE(); #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 } #endif //もしTRSIMPARAMETER などでダイアログを表示する場合は、以下の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 TRSIMINIT(int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:処理の初期化 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 作業エリアの確保などに利用しますが、特に必要ない場合は、 // 本関数自体の省略も可です。 // 初期化が正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数省略時は、*irc=TRUE とみなします。 // *irc=FALSEで返した場合DLLは動作しませんので、各種プロテクト処理は、 // ここで行なって下さい。 { *irc=TRUE; } //====================================================================== void TRSIMMENUITEM(int *lang, //[I -] =0 標準時 =1 他言語時 char *item) //[- O] 項目名 // 機能:メニュー表示部の文字列を設定 // 説明:メニュー表示部の文字列を言語環境ごとに設定。日本語環境でのみ // 使用される場合は、特に場合分けは必要ありません。 // 本関数は省略不可です。 { if( *lang ) { strcpy(item,"???????????(&?)"); } else { strcpy(item,"???????????(&G)"); } } //====================================================================== void TRSIMPARAMETER(int *irc) //[- O] Return Code // 機能:処理パラメータの設定 // 説明:処理に関連するパラメータを設定するI/Fで、ダイアログ // などを表示する処理などに利用して下さい。 // 正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数自体は省略可で、その場合*irc=TRUE とみなします。 { *irc=TRUE; } //====================================================================== void TRSIMPATHTYPE(int *normal_arc, //[- O] 円弧(G02/G03)処理 =0:否,=1:可 int *vertical_arc,//[- O] G18,G19円弧処理 =0:否,=1:可 int *herical_arc) //[- O] ヘリカル円弧処理 =0:否,=1:可 // 機能:シミュレーション機能にて処理可能か否かを指定しておきます。 // 説明:TRSIMCUTWORK関数のG02/G03の対応レベルを定義します。 // それぞれ対応されていない場合は、TRYCUT側で点列近似して、 // TRSIMCUTWORK関数が参照されます。 // 本関数は省略可ですが、その場合は全て1(処理可)と見なします。 { *normal_arc=1; *vertical_arc=1; *herical_arc=1; } //====================================================================== void TRSIMGETWORK(double *pmax, //[I -] ワークの最大値XY double *pmin, //[I -] ワークの最小値XY 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 -] 切削ブロック番号の先頭アドレス int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:ワーク情報と、格子情報格納アドレスの取得 // 説明:TRSIMCUTWORK参照時に加工する、ワーク情報と、格子情報格納アドレスを // あらかじめこの関数で取得し、DLL内でのグローバル変数に保存してておき // ます。本関数は省略不可です。 { *irc=TRUE; } //====================================================================== void TRSIMSTART(int *irc) //[- O] Return Code // 機能:シミュレーションの開始 // 説明:シミュレーションの開始時の初期設定を行います。本関数は省略可です。 { *irc=TRUE; } //====================================================================== void TRSIMGETTOOL(int *type, //[I -] 工具タイプ // 1:BALL,2:FLAT,3:BULL // 4:TAPERBALL // 104:TAPERBALL - 上部径定義あり // 5:VERTICAL // 6:OVAL/OVALR,9:RADIUS // 7:T-THROW(TRYCUT2000/3000は1〜3で認識) // 0:OTHER(CUTTER) // 100:OTHER(CUTTER) - 上部径定義あり // 詳細は、TRYCUTのヘルプの //   「工具設定ファイル」を参照のこと。 float *diameter, //[I -] 工具直径 float *cornerr, //[I -] コーナー半径 // T-THROW時:1ワード目に下側コーナー半径 // 2ワード目に上側コーナー半径 float *botwidth, //[I -] コーナー中心点の巾 float *centerh, //[I -] コーナー中心点の高さ float *botang, //[I -] 底面角度 float *sideang, //[I -] 側面角度(テーパー角),[上部径] //※上部径定義がある時は、2ワード目に上部径(Du) float *chipw, //[I -] VERTICAL時:チップ幅 // T-THROW時:1ワード目に厚み(thick) // 2ワード目に軸径(da) float *toolh, //[I -] 工具有効刃長 float *shift, //[I -] 工具シフト量 int *penno) //[I -] ペン番号 // 機能:工具形状の取得 // 説明:工具形状を取得する関数です。シミュレーション開始時と工具交換の // タイミングで参照されます。特に設定工具とは関係ない処理を行う場合は // 本関数は省略して下さい。 // 各パラメーターが工具の種類ごとに有効か無効かの詳細は以下ページを // ご参照下さい。 http://www.trycut.com/sdk/tool.htm { } //====================================================================== void TRSIMGETTOOLLEN(int *define,//[I -] 定義の有無 0:無し 1:有り // 詳細は、TRYCUTのヘルプの //   「工具設定ファイル」を参照のこと。 float *length,//[I -] 突き出し長 float *Lu, //[I -] 首下長さ float *Lt, //[I -] テーパー部長さ≧0.0 float *Ds, //[I -] LENGTH2/3時、シャンク径 // LENGTH3時のみ、2〜3ワード目にa角,b角 // 機能:工具長とシャンク形状の取得 // 説明:工具長とシャンク形状の取得する関数です。参照されるタイミングは、 // TRSIMGETTOOLと同じです。本関数は省略可能です。 { } //====================================================================== void TRSIMGETARBOR(int *define, //[I -] 定義の有無 0:無し 1:有り float *type, //[I -] 保持具形状のタイプ // 0:ARBOR 1:ARBOR2 2:ARBOR3 // 詳細は、TRYCUTのヘルプの //   「工具設定ファイル」を参照のこと。 int *n, //[I -] 保持具の段数(MAX=10) float *d, //[I -] 各段の直径 float *h, //[I -] 各段の高さ int *k) //[I -] ARBOR3時の各段の傾斜フラグ // =0:階段 =1:傾斜 // // ※d,h,k はそれぞれの配列の先頭アドレス // 各段の値を、 // d[0]=50.0; // d[1]=75.0; // . // . // . // のように設定して下さい。 // 機能:工具保持具形状の取得 // 説明:工具保持具形状を取得する関数です。参照されるタイミングは、 // TRSIMGETTOOLと同じです。本関数は省略可能です。 { } //====================================================================== void TRSIMCUTWORK(int *nblock,//[I -] NCのブロック番号 int *kind, //[I -] 移動モード 0:G00 1:G01 2:G02 3:G03 double *ps, //[I -] 始点座標XYZ double *pe, //[I -] 終点座標XYZ double *pc, //[I -] 円弧中心座標XYZ int *ipl, //[I -] 平面指定 17:G17,18:G18,19:G19 double *feed, //[I -] 送り速度 double *dataux,//[I -] 付加情報(trreadが出力するdataux) int *irc) //[- O] Return Code 1(TRUE) :正常 // 0(FALSE):異常 // -1 :早送り干渉 // -2 :ホルダー干渉 // -3 :有効刃長不足 // -4 :内径無効部で切削 // -5 :テーパ部干渉 // -6 :送り速度が速過ぎ // ※-1 〜 -6は特にチェックする必要が // ない場合は返す必要ありません。 // 機能:加工処理 // 説明:TRYCUT側がNCデータを解析し、径補正や長補正なども考慮した状態で // かつG00〜G04に分解された経路が得られます。 // これらの経路を元にシミュレーション処理を行います。 { *irc = TRUE; } //====================================================================== void TRSIMEND() // 引数なし // 機能:シミュレーション処理の終了 // 説明:シミュレーション処理後の処理を行います。本関数は省略可です。 { } //====================================================================== void TRSIMFREE() // 引数なし // 機能:作業エリアの開放など // 説明:TRYCUT終了時のWM_DESTROYイベント発生時に参照されます。 // TRSIMINITなどで作業エリアを確保している場合などに、 // その作業エリアの開放(FREE)のために利用します。本関数は省略可です。 { }