利用UFUN函数求得选择面的面积

思路:

1、采用UF_MODL_ask_mass_props_3d()函数,主要用来获取实体和片体的相关质量信息,包括体积、密度、表面积等;

2、该函数不支持选择一个面,因为这个面,既不是实体,也不是片体,可以对选择的面,进行抽取,抽取后得到片体,然后求出片体的表面积,就相当于选择面求了面积,最后删除抽取这个面即可。

详细代码如下:

    //用户定义代码
    #include <uf_modl.h>
    #include <uf_ui.h>
    #include <uf_obj.h>
    #include <uf_assem.h>

    //NX二次开发获取面面积方法一
	UF_initialize();
	//遍历实体对象,
	std::vector<tag_t> body_collection;
	int thetype, thesubtype, body_type;
	tag_t objctTAG = NULL_TAG;
	UF_OBJ_cycle_objs_in_part(UF_ASSEM_ask_work_part(),UF_solid_type,&objctTAG);
	while (objctTAG != NULL_TAG)
	{
		UF_OBJ_ask_type_and_subtype(objctTAG, &thetype, &thesubtype);
		if (thesubtype == UF_solid_body_subtype)//收集子类型为body
		{
			UF_MODL_ask_body_type(objctTAG, &body_type);
			if (body_type == UF_MODL_SOLID_BODY)//收集body为实体的
			{
				body_collection.push_back(objctTAG);
			}			
		}
		UF_OBJ_cycle_objs_in_part(UF_ASSEM_ask_work_part(), UF_solid_type, &objctTAG);
	}
	//打印TAG
	char msg[256];
	UF_UI_open_listing_window();
	uf_list_p_t faces_list;
	int faces_count;
	tag_t facesTAG = NULL_TAG, sheet_bodyTAG=NULL_TAG;
	double  acc_val[11] = { 0.01,0,0,0,0,0,0,0,0,0,0 };
	double  massprop[47];
	double  massprop_stat[13];
	for (int i = 0; i < body_collection.size(); i++)
	{
		//获得所有实体的面
		UF_MODL_ask_body_faces(body_collection[i], &faces_list);
		UF_MODL_ask_list_count(faces_list, &faces_count);//一共多少个面
		for (int j = 0; j < faces_count; j++)
		{
			UF_MODL_ask_list_item(faces_list, j, &facesTAG);//得到每一个面的TAG
			UF_MODL_extract_face(facesTAG, 0, &sheet_bodyTAG);//抽取面,获得片体的tag
			
			tag_t objects[1] = { sheet_bodyTAG };
			UF_MODL_ask_mass_props_3d(objects, 1, 2, 3, 7.8, 1, acc_val, massprop, massprop_stat);

			sprintf(msg, "%f mm^2 \n", massprop[0]*100.0);
			UF_UI_write_listing_window(msg);
			UF_OBJ_delete_object(sheet_bodyTAG);//删除抽取的面
		}
		UF_MODL_delete_list(&faces_list);//删除链表

	}

	UF_terminate();

运行结果如图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雪公主的后妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值