NX二次开发 PK获得对象类型 PK_ENTITY_ask_class

NX二次开发 PK获得对象类型 PK_ENTITY_ask_class


//获得对象类型
bool PKPK_AskObjectType(const PK_ENTITY_t pkObject, PK_CLASS_t& pkType)
{
	pkType = 0;
	if (0 == pkObject)
		return false;
	if (PK_ENTITY_ask_class(pkObject, &pkType))
		return false;
	return true;
}

//获得面类型
bool PKPK_AskFaceType(const PK_FACE_t pkFace, PK_CLASS_t& pkType)
{
	pkType = 0;
	if (0 == pkFace)
		return false;
	PK_SURF_t  pkSurf = 0;
	if (PK_FACE_ask_surf(pkFace, &pkSurf))
		return false;
	if (PK_ENTITY_ask_class(pkSurf, &pkType))
		return false;
	return true;
}

//获得边类型
bool PKPK_AskEdgeType(const PK_EDGE_t pkEdge, PK_CLASS_t& pkType)
{
	pkType = 0;
	if (0 == pkEdge)
		return false;
	PK_CURVE_t pkCurve = 0;
	if (PK_EDGE_ask_curve(pkEdge, &pkCurve))
		return false;
	if (PK_ENTITY_ask_class(pkCurve, &pkType))
		return false;
	return true;
}

//分析B曲面来源类型(只能输入:B曲面,作用是如果B曲面非常接近圆柱、圆锥、球、平面、环面、横扫面那么就接近的类型)
bool PKPK_AskFaceFormType(const PK_F
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个Parasolid PK_BODY_pick_topols的例子: 假设有一个模型,其中包含一个立方体和一个球体。现在需要选择立方体的一个和球体的一个点。可以使用PK_BODY_pick_topols函数来实现这个目的。 首先,需要定义一个选择器,用于指定选择的对象类型。对于立方体和球体点,选择器应分别为FACE和VERTEX。 然后,可以使用PK_BODY_pick_topols函数来选择对象。该函数需要指定选择器、模型和选择点的位置。此外,还需要指定PK_MODIFIER_NONE,以确保所选对象不会被修改。 最后,可以使用PK_ENTITY_get_topol函数来获取已选择对象的拓扑信息。对于立方体,可以使用PK_FACE_get_surface函数获取其表信息。对于球体点,可以使用PK_VERTEX_get_coords函数获取其坐标信息。 下是实现该功能的代码示例: PK_SELECT_selector_t selector_face, selector_vertex; PK_SELECT_init_selector(PK_SELECT_FACE, &selector_face); PK_SELECT_init_selector(PK_SELECT_VERTEX, &selector_vertex); PK_PICK_point_t pick_point_face, pick_point_vertex; PK_VECTOR_init(0.0, 0.0, 0.0, &pick_point_face.location); PK_VECTOR_init(0.0, 0.0, 0.0, &pick_point_vertex.location); PK_BODY_t* body = ...; // get the body from somewhere PK_ERROR_code_t error_code; PK_BODY_pick_topols(PK_MODIFIER_NONE, body, &selector_face, &pick_point_face, &error_code); PK_FACE_t* face = PK_ENTITY_get_topol(PK_CLASS_FACE, error_code); PK_BODY_pick_topols(PK_MODIFIER_NONE, body, &selector_vertex, &pick_point_vertex, &error_code); PK_VERTEX_t* vertex = PK_ENTITY_get_topol(PK_CLASS_VERTEX, error_code); PK_SURFACE_t* surface = PK_FACE_get_surface(face); PK_VECTOR_t* coords = PK_VERTEX_get_coords(vertex); // use the selected face and vertex...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梅雷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值