UG二次开发 - 面的法向

UG二次开发 - 面的法向

简介

本文将介绍 ug 中常见的面类型以及如何获取它们的法向。

博主是 ug 二开的初学者,如果有说错的地方,请大佬在评论区指正。

常见的面类型

我们可以通过 NXOpen::Face::FaceType 或者 UF_MODL_ask_face_data 获取到面的类型,其中有有界平面(Planar face)、圆柱面(Cylindrical face)、圆锥面(Conical face)、球面(Spherical face)、混合面(Blending face)和偏置面(Offset face)等各种面类型。

在获取法向的方式上,以上的面就分为两种:平面和非平面。

面的法向

我们可以通过上面提到的 UF_MODL_ask_face_data 获取面的很多信息:

int UF_MODL_ask_face_data
(
	tag_t face, 
	int* type, 
	double point[], 
	double dir[], 
	double box[], 
	double* radius, 
	double* rad_data, 
	int* norm_dir 
)

解释一下上面的参数:

point:返回中心点,但根据面类型不同,点的具体位置会有不同。对于平面中心点位置在平面上;对于圆柱面、锥面和旋转面,返回的中心点在轴线上。

dir:返回法向,但根据面类型不同,法向的意义也不同。对于平面,面上每一个点的法向都是如此;对于圆柱面、锥面、环形面和旋转面,返回的法向表示面在创建时使用的法向,比如圆柱面返回的 dir 表示创建这个圆柱时的轴向法向。因此对于非平面,我们不能使用 dir 作为面上每一个点的法向。

box:面的最小包容盒。

那么对于非平面,我们只能去求面上某点的法向,方法如下:

double pnt[3], param[2], pnt2[3], u1[3], v1[3], u2[3], v2[3], unit_norm[3], radii[2];
UF_MODL_ask_face_parm(tag, pnt, param, pnt2);
UF_MODL_ask_face_props(tag, param, pnt2, u1, v1, u2, v2, unit_norm, radii);

这里得到的 unit_norm 便是该点在面上的法向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值