/* ******************************************************************************** ** ** SelectFace.c ** ** Copyright (c)2007 ITOCHU Techno-Solutions Corporation ** ******************************************************************************** */ /* ====================================================================== 注)パートファイルがオープンされていて、ソリッドが表示されていることを 前提とします。 ====================================================================== */ /* ============================================================ */ /* インクルード・ファイル */ #include #include #include #include #include /* ============================================================ */ /* 関数宣言 */ /* ---------------+-----------------------+------------------------ */ /* 型 | 関数名 | 引数 */ /* ---------------+-----------------------+------------------------ */ /* フェース選択関数 */ static void fctTest (); /* フェース選択プロシージャ */ static int fctInitProcFace (UF_UI_selection_p_t asrcSelect, void *avodUserData); /* ============================================================ */ /* ユーザイグジット */ /* 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(); } } /* ============================================================ */ /* フェース選択関数 */ static void fctTest() { int intRet = 0; int intResp = 0; tag_t tagSelFace = NULL_TAG; double dblCur[3] = {0}; tag_t tagView = NULL_TAG; /* ---------------------------------------- */ /* フェース選択を選択します */ /* フェース選択 */ intRet = UF_UI_select_with_single_dialog ( "フェース選択", /* 表示する指針行メッセージ */ "フェース選択", /* ダイアログタイトルまたはNULL */ UF_UI_SEL_SCOPE_NO_CHANGE, /* 選択範囲 */ /* UF_UI_SEL_SCOPE_NO_CHANGE */ /* UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY */ /* UF_UI_SEL_SCOPE_WORK_PART */ /* UF_UI_SEL_SCOPE_WORK_PART_AND_OCC */ fctInitProcFace, /* 選択初期化プロシージャまたはNULL */ NULL, /* 初期化プロシージャのユーザデータまたはNULL */ &intResp, /* レスポンス */ /* UF_UI_BACK */ /* UF_UI_CANCEL */ /* UF_UI_OK */ /* UF_UI_OBJECT_SELECTED */ /* UF_UI_OBJECT_SELECTED_BY_NAME */ &tagSelFace, /* 選択された要素、または要素が選択されて */ /* いない場合はNULL_TAG */ dblCur, /* カーソル位置の絶対座標 */ &tagView); /* ビュー要素の選択 */ if (0 != intRet) { /* NG */ /* ---------------------------------------- */ /* エラーメッセージ */ MessageBox(NULL, "UF_UI_select_with_single_dialog NG !", "", MB_OK); return; } /* ---------------------------------------- */ /* 要素が選択されたならダイアログを表示します */ if ((intResp != UF_UI_OBJECT_SELECTED) && (intResp != UF_UI_OBJECT_SELECTED_BY_NAME)) { /* 要素が選択されていません */ /* ---------------------------------------- */ /* メッセージ */ MessageBox(NULL, "キャンセル", "", MB_OK); return; } } /* ============================================================ */ /* フェース選択初期化プロシージャ */ static int fctInitProcFace(UF_UI_selection_p_t asrcSelect, void *avodUserData) { int intRet = 0; int intNumTriples = 1; /* ← マスクの数が変わったら変更します */ UF_UI_mask_t srcMaskTriples[] = { {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE} /* フェースのみ */ }; /* ---------------------------------------- */ /* マスク */ if (0 != UF_UI_set_sel_mask( asrcSelect, /* 選択ポインタ */ UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, /* マスクの動作 */ intNumTriples, /* マスクの数 */ srcMaskTriples)) /* マスクの種類 */ { /* ---------------------------------------- */ /* OK */ return (UF_UI_SEL_SUCCESS); } else { /* ---------------------------------------- */ /* NG */ return (UF_UI_SEL_FAILURE); } }