/* ******************************************************************************** ** ** sample07.c ** ** Copyright 2007 CTC ITOCHU TECHNO-SOLUTIONS Corporation All rights reserved. ** ******************************************************************************** */ /* ====================================================================== 注)パートファイルがオープンされていることを前提とします。 ====================================================================== */ /* ============================================================ */ /* インクルード・ファイル */ #include #include #include #include #include /* ============================================================ */ /* 関数宣言 */ /* ---------------+-----------------------+------------------------ */ /* 型 | 関数名 | 引数 */ /* ---------------+-----------------------+------------------------ */ /* 作業座標系設定関数 */ static void fctTest (); /* ============================================================ */ /* ユーザイグジット */ /* NX のメニュー「ファイル」→「UG/openの実行」→「ユーザファンクション」で */ /* 呼び出される。 */ extern DllExport void ufusr( char *parm, int *returnCode, int rlen ) { /* ---------------------------------------- */ /* Open/APIイニシャライズ */ int errorCode = UF_initialize(); if ( 0 == errorCode ) { /* TODO: Add your application code here */ /* ---------------------------------------- */ /* 作業座標系設定関数 */ fctTest(); /* ---------------------------------------- */ /* Open/API終了 */ errorCode = UF_terminate(); } } /* ============================================================ */ /* ユーザイグジット */ /* 本プログラムが終了する前に呼び出される。 */ extern int ufusr_ask_unload( void ) { return( UF_UNLOAD_IMMEDIATELY ); } /* ============================================================ */ /* 作業座標系設定関数 */ static void fctTest() { tag_t tagWcs = NULL_TAG; double dblVecX[3] = {0.0}; double dblVecY[3] = {0.0}; double dblMtx[9] = {0.0}; tag_t tagMatrix = NULL_TAG; double dblOrigin[3] = {0.0}; tag_t tagCsys = NULL_TAG; /* ---------------------------------------- */ /* 現在の作業座標系を取得し記憶します。 */ UF_CSYS_ask_wcs(&tagWcs); /* ---------------------------------------- */ /* 設定する座標系のxベクトルを指定します。 */ dblVecX[0] = 0.0; dblVecX[1] = -1.0; dblVecX[2] = 0.0; /* ---------------------------------------- */ /* 設定する座標系のyベクトルを指定します。 */ dblVecY[0] = 0.0; dblVecY[1] = 0.0; dblVecY[2] = 1.0; /* ---------------------------------------- */ /* 設定する座標系の原点を指定します。 */ dblOrigin[0] = 100.0; dblOrigin[1] = 100.0; dblOrigin[2] = 100.0; /* ---------------------------------------- */ /* x,yのベクトルからマトリクスを作成します。 */ UF_MTX3_initialize( dblVecX, /* x方向ベクトル */ dblVecY, /* y方向ベクトル */ dblMtx); /* マトリクス */ /* ---------------------------------------- */ /* マトリクス・オブジェクトを作成します。 */ UF_CSYS_create_matrix( dblMtx, /* マトリクス */ &tagMatrix); /* マトリクス・オブジェクト */ /* ---------------------------------------- */ /* マトリクス・オブジェクトから座標系を作成します。 */ UF_CSYS_create_csys( dblOrigin, /* 作成する作業座標系の原点 */ tagMatrix, /* マトリクス・オブジェクト */ &tagCsys); /* 座標系オブジェクト*/ /* ---------------------------------------- */ /* 作業座標系を元に戻します。 */ UF_CSYS_set_wcs(tagWcs); /* 座標系オブジェクト */ /* ---------------------------------------- */ /* 作業座標系を表示します。 */ UF_CSYS_set_wcs_display(1); /* 0:非表示 1:表示 */ return; }