//************************************************************************** //Skeleton of trread.dll(経路データ読み込み) //************************************************************************** // #include #include #include #include #include //外部参照(DLL)関数の定義 #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 extern "C" { #endif __declspec(dllexport) void TRREADSUFFIX(char*); __declspec(dllexport) void TRREADINIT(int*); __declspec(dllexport) void TRREADKIND(int*,char*); __declspec(dllexport) void TRREADPATHCOLOR(int*,int*); __declspec(dllexport) void TRREADOPEN(char*); __declspec(dllexport) void TRREADTOOL(int*,float*,float*,float*,float*, float*,float*,float*,float*,char*, float*,int*); __declspec(dllexport) void TRREADTOOLLEN(int*,float*,float*,float*,float*); __declspec(dllexport) void TRREADARBOR(int*,int*,int*,float*,float*,int*); __declspec(dllexport) void TRREADSTARTPOINT(double*); __declspec(dllexport) void TRREADPATH(int*,int*,double*,double*,double*,int*, double*,double*,int*,int*); __declspec(dllexport) void TRREADCLOSE(); __declspec(dllexport) void TRREADFREE(); #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 } #endif //もしTRREADPARAMETER などでダイアログを表示する場合は、以下のDllMain関数で //インスタンスをグローバル変数(hInst)に保存しておいて下さい。それ以外は、 //DllMain関数は不要です。 HINSTANCE hInst; BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,LPVOID lpvReserved) { hInst=hinstDll; return TRUE; } //************************************************************************** //外部参照(DLL)関数の引数説明 //[I -] 入力のみ(関数内では参照するだけにして下さい) //[- O] 出力のみ(参照時は未定義になっています。必ず値を返して下さい。) //[I O] 入出力 // // //====================================================================== void TRREADSUFFIX(char *suffix) //[- O] 拡張子文字 // 機能:対象ファイルの拡張子の定義 // 説明:TRYCUT起動直後の、引数解析処理前に参照されます。 // 本関数は必ず用意して下さい。 { strcpy(suffix,".???"); } //====================================================================== void TRREADINIT(int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:処理の初期化 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 作業エリアの確保などに利用しますが、特に必要ない場合は、 // 本関数自体の省略も可です。 // 初期化が正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数省略時は、*irc=TRUE とみなします。 // *irc=FALSEで返した場合DLLは動作しませんので、各種プロテクト処理は、 // ここで行なって下さい。 { *irc=TRUE; } //====================================================================== void TRREADKIND(int *lang, //[I -] =0 標準時 =1 他言語時 char *item) //[- O] 項目名 // 機能:ファイルダイアログ内の種類の項目名定義 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 本関数は省略不可です。 { if( *lang ) { strcpy(item,"???????(*.???)"); //他言語モード(TRYCUT.MESインストール) } else { strcpy(item,"???????(*.???)"); //標準(日本語)モード } } //====================================================================== void TRREADPATHCOLOR(int *npc, //[- O] 経路色の数(MAX:10) int *rgb) //[- O] 経路色 RGBのそれぞれの 割合(0-255)を4バイト変数 // 中の3バイトで定義 // 機能:経路描画時の色の設定 // 説明:TRREADPATH関数で指定する色を定義。 // 本関数が省略されている場合、又は*npc=0の場合でも、経路は問題なく // 描画できますが、TRREADPATHの*pcl指定は無視されます。 { //例:4種類の色を定義する場合 //rgb[0]=RGB(255,128, 0); //rgb[1]=RGB(255, 0,255); //rgb[2]=RGB( 0,255,255); //rgb[3]=RGB(127,127,127); //*npc=4; } //====================================================================== void TRREADOPEN(char *clfilename) //[I -] 経路ファイル名 // 機能:経路ファイルを開く // 説明:経路ファイルを開く // 本関数は省略可ではありますが、経路ファイル名はこの関数からしか // 得ることはできませんので、基本的には本関数内で、fopen などの // Open関連関数にて、ファイル識別子を本DLL内のグローバル変数として // 保存していただきTRREADPATHやTRREADCLOSEにて参照していただくことを // 想定したものです。 { } //====================================================================== void TRREADTOOL(int *type, //[- O] 工具タイプ // 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, //[- O] 工具直径 float *cornerr, //[- O] コーナー半径 // T-THROW時:1ワード目に下側コーナー半径 // 2ワード目に上側コーナー半径 float *botwidth, //[- O] コーナー中心点の巾 float *centerh, //[- O] コーナー中心点の高さ float *botang, //[- O] 底面角度 float *sideang, //[- O] 側面角度(テーパー角),[上部径] //※上部径定義がある時は、2ワード目に上部径(Du) float *chipw, //[- O] VERTICAL時:チップ幅 // T-THROW時:1ワード目に厚み(thick) // 2ワード目に軸径(da) float *toolh, //[- O] 工具有効刃長 char *name, //[- O] 明示的な工具名称(MAX:20Byte) float *shift, //[- O] 工具シフト量 int *penno) //[- O] ペン番号 // 機能:工具情報の設定 // 説明:工具の刃先形状など各種属性を設定します。本関数が無い場合は、 // TRYCUT側の工具ダイアログ(マガジン設定)に従います。 // 各パラメーターが工具の種類ごとに有効か無効かの詳細は以下ページを // ご参照下さい。 http://www.trycut.com/sdk/tool.htm // { } //====================================================================== void TRREADTOOLLEN(int *define,//[- O] 定義のタイプ 0:無し // 1:LENGTH 文形状 // 2:LENGTH2文形状 // 3:LENGTH3文形状 //詳細は、TRYCUTのヘルプの //「工具設定ファイル」を参照のこと。 // http://www.trycut.com/help/ttl.htm#ARBOR float *length,//[- O] 突き出し長 float *Lu, //[- O] 首下長さ float *Lt, //[- O] テーパー部長さ≧0.0 float *Ds, //[- O] LENGTH2/3時、シャンク径 // LENGTH3時のみ、2〜3ワード目にa角,b角 // 機能:工具長とシャンク形状の設定 // 説明:工具長とシャンク形状を設定する関数です。参照されるタイミングは、 // TRREADTOOLと同じです。本関数はTRREADTOOL関数が用意されている場合に // のみ有効となります。本関数は省略可能です。 { } //====================================================================== void TRREADARBOR(int *define, //[- O] 定義の有無 0:無し 1:有り int *type, //[- O] 保持具形状のタイプ // 0:ARBOR 1:ARBOR2 2:ARBOR3 // 詳細は、TRYCUTのヘルプの //   「工具設定ファイル」を参照のこと。 int *n, //[- O] 保持具の段数(MAX=10) float *d, //[- O] 各段の直径 float *h, //[- O] 各段の高さ int *k) //[- O] ARBOR3時の各段の傾斜フラグ // =0:階段 =1:傾斜 // // ※d,h,k はそれぞれの配列の先頭アドレス // 各段の値を、 // d[0]=50.0; // d[1]=75.0; // . // . // . // のように設定して下さい。 // 機能:工具保持具形状の設定 // 説明:工具保持具形状を設定する関数です。参照されるタイミングは、 // TRREADTOOLと同じです。本関数はTRREADTOOLLEN関数が用意されている // 場合にのみ有効となります。本関数は省略可能です。 { } //====================================================================== void TRREADSTARTPOINT(double *startp) //[- O] スタート位置 X,Y,Z // 機能:経路データのスタート点の指定 // 説明:経路データのスタート位置を設定します。本関数は省略可能ですが、 //   その場合のスタート点は、TRYCUTの設定されている座標を想定 // します。 { } //====================================================================== void TRREADPATH(int *nblock,//[- O] 経路のブロック番号 ※常に0を指定するか、もしくは1以上の整数で参照され              るたびに必ず増やして下さい。              前者(常に0指定)の場合は、TRYCUT側で1,2,3... と順番に自動カウントアップします。飛び番が発生              するような場合(例:1,2,3,10,15,20...)は後者の 方法を取って下さい。 int *kind, //[- O] 指令コード 0:G00 1:G01 2:G02 3:G03 // ※工具番号指定は、1000+T番号 double *ps, //[- O] 始点座標XYZ double *pe, //[- O] 終点座標XYZ double *pc, //[- O] 円弧中心座標XYZ int *ipl, //[- O] 平面指定 17:G17,18:G18,19:G19 double *feed, //[- O] 送り速度 double *dataux,//[- O] 付加情報 int *pcl, //[- O] TRREADPATHCOLORで定義された経路描画の // 色番号(0〜9) int *irc) //[- O] Return Code 1(TRUE) :正常 // 0(FALSE):終了 // 機能:工具経路を呼ばれる度に返す // 説明:本関数は経路が終了するまで繰り返し呼ばれます。 // *kind にてTRYCUT工具ダイアログの工具番号指令することも可能。 // この場合は経路指令ではなく工具交換命令として認識し、TRREADTOOL, // TRREADTOOLLEN,TRREADARBORの指定は無視されます。 // 経路が終了した場合は *irc=0(FALSE) を返さなければなりません。 // もし*irc=0(FALSE)を返すタイミングがなければ、TRYCUT側は永久 // ループします。本関数は省略不可です。 { *irc= TRUE; } //====================================================================== void TRREADCLOSE() // 機能:経路ファイルのクローズ // 説明:経路ファイルをクローズする // 本関数は省略可です。 { } //====================================================================== void TRREADFREE() // 引数なし // 機能:作業エリアの開放など // 説明:TRYCUT終了時のWM_DESTROYイベント発生時に参照されます。 // TRREADINITなどで作業エリアを確保している場合などに、 // その作業エリアの開放(FREE)のために利用します。本関数は省略可です。 { }