NX二次开发—批量导出点工具

在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);//关闭文档
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值