NX二次开发—柱面中心线工具

设计一个柱面中心线工具,可以实现选择对象,画出圆柱的中心线,可以更改中心的线的颜色、线型、线宽和图层,是否延长,是否关联。

先在NX上进行界面设计

添加选择对象,并设置标题,选择设置为多选

添加组,在组里添加线条颜色/线型/线宽,设置颜色ColorValue和线型Value

这里的线宽没有办法获取,因此把线宽隐藏HideSubBlocks选择Width

在添加一个线宽

添加图层

添加切换开关和表达式,设置标题,表示式的单位Dimensionality为长度,值为TRUE

添加组,在组里添加切换开关,设置名称值为TRUE

生成C++代码,保存

在VS上进行代码添加

第一步参考NX—UI界面生成的文件在VS上的设置

在initialize_cb()里添加过滤,选择圆柱面

//设置过滤
		Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
		std::vector<Selection::MaskTriple>maskArray(1);
		maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_CYLINDRICAL_FACE);//CYLINDRICAL_FACE选择圆柱面
		selection0->GetProperties()->SetSelectionFilter("SelectionFilter", action, maskArray);

画中心线的思路:找到顶面和底面,然后找到两个圆的圆心,进行连线,在进行其它操作

添加一个函数creatcenterline(),在apply_cb()里调用

void lesson12_cyl_center::creatcenterline()
{
	UF_initialize();

	//得到UI里面相关的值
	std::vector<TaggedObject *>faces = selection0->GetSelectedObjects();//得到所有圆柱面

	//面找边
	uf_list_p_t list;
	tag_t edge1TAG = NULL_TAG;
	tag_t edge2TAG = NULL_TAG;
	UF_CURVE_line_t line1;
	tag_t lineTAG = NULL_TAG;
	double centroid1[3], centroid2[3];
	for (int i = 0; i < faces.size(); i++)
	{
		UF_MODL_ask_face_edges(faces[i]->Tag(), &list);//得到面的边
		UF_MODL_ask_list_item(list, 0, &edge1TAG);//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值