最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

NX二次开发:Checkmate例子根据dfa文件检查模型数据

来源:博客园


(相关资料图)

NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。

代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。

1 //=============================  2 // Checkmate例子  3 //=============================  4 // Mandatory UF Includes  5 #include   6 #include   7 #include   8 #include   9 #include  10 #include  11 #include  12 #include  13  14 // Std C++ Includes 15 #include  16 #include  17 #include  18 #include  19 #include  20 #include  21 #include  22 #include  23  24 // check mate 25 #include  26 #include  27 #include  28 #include  29  30 #include  31 #undef CreateDialog 32 #pragma comment(lib,"shell32.lib") 33  34 using namespace NXOpen; 35 using std::string; 36 using std::exception; 37 using std::stringstream; 38 using std::endl; 39 using std::cout; 40 using std::cerr; 41  42 int ExecuteCheckerAndGetResults(); 43  44 extern "C" DllExport void ufusr( char *parm, int *returnCode, int rlen ) 45 { 46     try 47     { 48         UF_CALL(UF_initialize()); 49  50         ExecuteCheckerAndGetResults(); 51  52         UF_CALL(UF_terminate()); 53     } 54     catch (const NXException& e1) 55     { 56         UI::GetUI()->NXMessageBox()->Show("NXException", NXOpen::NXMessageBox::DialogTypeError, e1.Message()); 57     } 58     catch (const exception& e2) 59     { 60         UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what()); 61     } 62     catch (...) 63     { 64         UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, "Unknown Exception."); 65     } 66 } 67  68 extern "C" DllExport int ufusr_ask_unload() 69 { 70     return (int)NXOpen::Session::LibraryUnloadOptionImmediately;// 调试用 71     //return (int)NXOpen::Session::LibraryUnloadOptionAtTermination;// 程序发布用 72     //return (int)NXOpen::Session::LibraryUnloadOptionExplicitly; 73 } 74  75 int ExecuteCheckerAndGetResults() 76 {  77     // Get the NX session, work part, display part. 78     Session *theSession = Session::GetSession(); 79     Part *workPart(theSession->Parts()->Work()); 80     Part *displayPart(theSession->Parts()->Display()); 81  82     // Get the NX Check-Mate Validator object. 83     std::vector validators1; 84     theSession->ValidationManager()->FindValidator("Check-Mate", validators1); 85  86     // Get the NX Check-Mate ValidatorOptions, and set options. 87     Validate::ValidatorOptions *validatorOptions1; 88     validatorOptions1 = validators1[0]->ValidatorOptions(); 89  90     validatorOptions1->SetSkipChecking(false); 91     validatorOptions1->SetSkipCheckingDontLoadPart(false); 92     validatorOptions1->SetSaveResultInTeamcenter(Validate::ValidatorOptions::SaveModeTypesSaveIfPassed); 93     validatorOptions1->SetSavePartFile(Validate::ValidatorOptions::SaveModeTypesSaveIfPassed); 94     validatorOptions1->SetSaveResultInPart(false); 95  96     // 2023_0328 97     validatorOptions1->SetAutoDisplayResults(Validate::ValidatorOptions::ResultsDisplayModeTypesAlwaysDisplay); 98     validatorOptions1->SetExcludeNonOwnerParts(true); 99     validatorOptions1->SetExcludeReadonlyParts(true);100     validatorOptions1->SetGenerateCheckFlag(false);101     validatorOptions1->SetGenerateLogFile(false);102     validatorOptions1->SetStopOnError(false);103     validatorOptions1->SetStopOnWarning(false);104     // 2023_0328105 106     // Clear part nodes if any.107     validators1[0]->ClearPartNodes();108 109     // Appends the full path of a part file or the current work part.110     validators1[0]->AppendPartNode(workPart);111 112     // Manually add this line to clean all existing tests113     validators1[0]->ClearCheckerNodes();114 115     // Select a checker and append it into the Validator object.116     std::vector classnames1(2);117     classnames1[0] = "%mqc_report_browseable_features";//mqc_profile_modeling_cn.dfa118     classnames1[1] = "%mqc_profile_modeling_cn";//mqc_profile_modeling_cn.dfa119     validators1[0]->AppendCheckerNodes(classnames1);120 121     // Execute the Check-Mate checker.122     Validation::Result status1;123     status1 = validators1[0]->Commit();124 125     // Get a Parser object, and show the checker result.126     std::vector parsers1;127     theSession->ValidationManager()->FindParser("Validation Gadget", parsers1);128     parsers1[0]->ClearResultObjects();129     parsers1[0]->SetDataSource(Validate::Parser::DataSourceTypesMostRecentRun);130     parsers1[0]->SetMaxDisplayObjects(10);131     parsers1[0]->Commit();132 133     return 0;134 }

设置、保存后、用户默认设置截图:

调试GIF动态图:

黄河远上白云间,一片孤城万仞山。羌笛何须怨杨柳,春风不度玉门关。

诗人初到凉州,面对黄河、边城的辽阔景象,又耳听着《折杨柳》曲,有感而发,写成了这首表现戍守边疆的士兵思念家乡情怀的诗作。

诗的前两句描绘了西北边地广漠壮阔的风光。首句抓住自下(游)向上(游)、由近及远眺望黄河的特殊感受,描绘出“黄河远上白云间”的动人画面:汹涌澎湃波浪滔滔的黄河竟像一条丝带迤逦飞上云端。写得真是神思飞跃,气象开阔。诗人的另一名句“黄河入海流”,其观察角度与此正好相反,是自上而下的目送;而李白的“黄河之水天上来”,虽也写观望上游,但视线运动却又由远及近,与此句不同。“黄河入海流”和“黄河之水天上来”,同是着意渲染黄河一泻千里的气派,表现的是动态美。而“黄河远上白云间”,方向与河的流向相反,意在突出其源远流长的闲远仪态,表现的是一种静态美。同时展示了边地广漠壮阔的风光,不愧为千古奇句。

关键词: