在NX上进行二次开发,设计一个UI界面,将选择的点导出
在NX上,进行UI样式编辑器
添加选择对象,修改标题,设置为多选
创建一个组,添加枚举,设置标题和枚举内容,不显示枚举标题LabelVisibility设置为false,更改枚举风格PresentationStyle设置为Radio Box
添加组,添加特殊里的选择浏览选择文件,设置标题,设置保存文件的类型
然后生成C++代码,保存。
第一步参考:
NX—UI界面生成的文件在VS上的设置
设置点的过滤器,在initialize_cb()里添加
//设置过滤Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;std::vector<Selection::MaskTriple>maskArray(1);maskArray[0] = Selection::MaskTriple(UF_point_type, 0, 0);//点selection0->GetProperties()->SetSelectionFilter("SelectionFilter", action, maskArray);
设置当勾选显示在信息窗口时,下面的文件成灰色,勾选输出到本地文件时,下面的文件亮起,在update_cb(NXOpen::BlockStyler::UIBlock* block)和dialogShown_cb()添加
if (enum0->GetProperties()->GetEnum("Value")==0){group1->SetEnable(false);}else{group1->SetEnable(true);}
将选择的点要么显示在窗口,要么保存到本地,先进行判断是显示还是保存。
显示在窗口,选择点,获取点的坐标,将坐标显示在信息窗口
if (enum0->GetProperties()->GetEnum("Value") == 0){//打印到信息窗口//打开信息窗口UF_UI_open_listing_window();for (int i = 0; i < points.size(); i++){UF_CURVE_ask_point_data(points[i]->Tag(), point_cords);//获取点的坐标sprintf(msg, "%f\t %f\t %f\n", point_cords[0], point_cords[1], point_cords[2]);UF_UI_write_listing_window(msg);}}
设置输出到本地文件,.dat文件需提前创建好
else{//输出到本地int opendat = uc4504(nativeFileBrowser0->Path().GetLocaleText(), 3, 87);//打开.dat的文档for (int i = 0; i < points.size(); i++){UF_CURVE_ask_point_data(points[i]->Tag(), point_cords);sprintf(msg, "%f\t %f\t %f", point_cords[0], point_cords[1], point_cords[2]);uc4524(opendat, msg);//写入}uc4540(opendat, 0);//关闭文档}