/* ******************************************************************************** ** ** sample08.c ** ** Copyright 2007 CTC ITOCHU TECHNO-SOLUTIONS Corporation All rights reserved. ** ******************************************************************************** */ /* ====================================================================== 注)パートファイルがオープンされていることを前提とします。 ====================================================================== */ /* ============================================================ */ /* インクルード・ファイル */ #include #include #include #include #include /* ============================================================ */ /* 関数宣言 */ /* ---------------+-----------------------+------------------------ */ /* 型 | 関数名 | 引数 */ /* ---------------+-----------------------+------------------------ */ /* UNDO設定関数 */ static void fctTest (void); /* ============================================================ */ /* ユーザイグジット */ /* 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 */ /* ---------------------------------------- */ /* UNDO設定関数 */ fctTest(); /* ---------------------------------------- */ /* Open/API終了 */ errorCode = UF_terminate(); } } /* ============================================================ */ /* ユーザイグジット */ /* 本プログラムが終了する前に呼び出される。 */ extern int ufusr_ask_unload( void ) { return( UF_UNLOAD_IMMEDIATELY ); } /* ============================================================ */ /* UNDO設定関数 */ static void fctTest(void) { double dblCorner[3] = {0.0}; char * chrEdgeLen[3] = {"10.0", "10.0", "10.0"}; tag_t tagBlockFeature1 = NULL_TAG; UF_UNDO_mark_id_t idUndoMark; tag_t tagBlockFeature2 = NULL_TAG; /* ---------------------------------------- */ /* 作成するブロックのコーナー(原点)を設定します。 */ dblCorner[0] = 0.0; dblCorner[1] = 0.0; dblCorner[2] = 0.0; /* ---------------------------------------- */ /* 1つ目のブロックを作成します。 */ UF_MODL_create_block1( UF_NULLSIGN, /* 実行するオペレーションの符号 */ /* UF_NULLSIGN = 新規ターゲットソリッドを作成 */ /* UF_POSITIVE = ターゲットソリッドに加算 */ /* UF_NEGATIVE = ターゲットソリッドから減算 */ /* UF_UNSIGNED = ターゲットソリッドと交差 */ dblCorner, /* 直方体のコーナー点(原点) */ chrEdgeLen, /* 直方体の3つのエッジの長さ */ &tagBlockFeature1); /* 作成された直方体のフィーチャオブジェクト */ /* ---------------------------------------- */ /* UNDOマークを設定します。 */ UF_UNDO_set_mark( UF_UNDO_visible, /* マークのユーザ可視性 */ /* UF_UNDO_visible */ /* ユーザがUNDOオプションを選択する際に到達できるマーク */ /* UF_UNDO_invisible */ /* アルゴリズム上の目的でアプリケーションによって設定 */ /* されるがユーザがUNDOオプションを選択する際に到達する */ /* ことは必要とされないマーク */ NULL, /* マークのオプション名。NULLの場合は、使用されません。 */ &idUndoMark); /* マークに関連付けられた識別子 */ /* ---------------------------------------- */ /* 作成するブロックのコーナー(原点)を設定します。 */ dblCorner[0] = -10.0; dblCorner[1] = -10.0; dblCorner[2] = -10.0; /* ---------------------------------------- */ /* 2つ目のブロックを作成します。 */ UF_MODL_create_block1( UF_NULLSIGN, /* 実行するオペレーションの符号 */ /* UF_NULLSIGN = 新規ターゲットソリッドを作成 */ /* UF_POSITIVE = ターゲットソリッドに加算 */ /* UF_NEGATIVE = ターゲットソリッドから減算 */ /* UF_UNSIGNED = ターゲットソリッドと交差 */ dblCorner, /* 直方体のコーナー点(原点) */ chrEdgeLen, /* 直方体の3つのエッジの長さ */ &tagBlockFeature2); /* 作成された直方体のフィーチャオブジェクト */ /* ---------------------------------------- */ /* UNDOをする前に確認のメッセージを表示します。 */ MessageBox(NULL, "UNDOをします。", "", MB_OK); /* ---------------------------------------- */ /* 前に設定したUNDOを実行します。 */ UF_UNDO_undo_to_mark( idUndoMark, /* UNDOするマークのID */ NULL); /* 名前を設定した場合はUNDOするマーク名 */ return; }