NX二次开发——NX二次开发-检查点是否在面上或者体上

目录

1、采用点的tag值,判断点是否在面上

2、采用点的坐标值,判断点是否在面上

3、c#的形式

[3.1 首先,通过该方法查找点所在的体上,位置关系为点在对象上](#3.1 首先,通过该方法查找点所在的体上,位置关系为点在对象上)

[3.2 再通过该方法,找到点所在面,并输出面](#3.2 再通过该方法,找到点所在面,并输出面)


摘要:本文介绍了在NX二次开发中判断点在面上或体上的两种方法。第一种通过点的tag查询其父对象是否为面;第二种使用UF_MODL_ask_point_containment函数,通过点坐标和对象判断位置关系(内/外/上)。同时在C#中可使用AskPointContainment方法实现类似功能,并给出查找点所在面的具体流程:先定位点在体上,再确定所在面。这些方法适用于BlockUI选点时确定点与几何对象的位置关系。

1、采用点的tag值,判断点是否在面上

cpp 复制代码
BOOL NXOpen_LongRoundHole::IsPointOnFace(tag_t pointTAG)
{
	BOOL PointOnFace = false;
	try
	{
		tag_p_t parents = NULL;
		int num = 0;
		UF_SO_ask_parents(pointTAG, UF_SO_ASK_ALL_PARENTS, &num, &parents);
		tag_t face_tag = NULL;
		for (int i = 0; i < num; i++)
		{
			int type, subtype;
			UF_OBJ_ask_type_and_subtype(parents[i], &type, &subtype);
			if (type == 70 && subtype == 2)
			{
				face_tag = parents[i];
				PointOnFace = true;
				break;
			}
		}
	}
	catch (exception& ex)
	{
		//---- Enter your exception handling code here -----
		NXOpen_LongRoundHole::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
	}
	return PointOnFace;
}

2、采用点的坐标值,判断点是否在面上

cpp 复制代码
		UF_MODL_ask_point_containment(
			double point[3],
			tag_t body_tag,//体或面
			int* pt_status);

		//1 = 点在体内 或面内
		//2 = 点在体外 或面外
		//3 = 点在体表  或表面

3、c#的形式

在基于NX软件,通过二次开发实现某些功能的过程中,需要知道某些点是否在面上或者体上,从而来解决某些问题。例如,用Block UI选择点的时候,找到该点所在的面或者边。可以利用UF函数中提供的方法:UF_MODL_ask_point_containment实现。在C#中是AskPointContainment。

该方法通过输入的点坐标和某个具体的对象,输出点相对于该对象的位置关系。具体对象包括:面、边、实体、片体;位置关系包括点在对象里面、点在对象上和点在对象外面。只有实体存在点在对象里面。

下面举一个在一个部件中查找到某个点所在的面的例子,详细情况如下:

3.1 首先,通过该方法查找点所在的体上,位置关系为点在对象上

3.2 再通过该方法,找到点所在面,并输出面

相关推荐
白雪公主的后妈1 个月前
NX二次开发——设置对象的密度(UF_MODL_set_body_density)
nx二次开发·常用函数
白雪公主的后妈2 个月前
NX二次开发——BlockUI 弹出另一个BlockUI对话框
c++·nx二次开发·block ui
难搞靓仔10 个月前
C# NX二次开发-获取对象名称
c#·.net·nx二次开发
难搞靓仔10 个月前
C# NX二次开发-获取体全部面
c#·.net·nx二次开发
社恐猫1 年前
【UG\NX二次开发】部件间表达式 (字符串类型的) 问题记录
nx二次开发
难搞靓仔1 年前
C# NX二次开发-设置背景颜色
c#·.net·nx二次开发
恩·艾克斯·红1 年前
NX\UG版本
nx二次开发
白雪公主的后妈1 年前
NX二次开发:ListingWindow窗口的应用
nx二次开发
曹大师1 年前
NX二次开发PK获取对象类型
nx二次开发·pk