NX二次开发获取多个点的最小包容盒

int SpaceBoxPointWcs(double dMinPoint[3], double dMaxPoint[3], vector<Point3d> vecPoint, double dWcsXVec[3], double dWcsYVec[3])

{
	try
	{
		if (vecPoint.size() < 2)
		{
			return 0;
		}
		double dWcsZVec[3] = { 0.0 };
		UF_VEC3_cross(dWcsXVec, dWcsYVec, dWcsZVec);

		dMinPoint[0] = vecPoint[0].X;
		dMinPoint[1] = vecPoint[0].Y;
		dMinPoint[2] = vecPoint[0].Z;
		dMaxPoint[0] = vecPoint[1].X;
		dMaxPoint[1] = vecPoint[1].Y;
		dMaxPoint[2] = vecPoint[1].Z;
		/*double dDistX = 0.0;
		double dDistY = 0.0;
		double dDistZ = 0.0;
		UF_VEC3_distance_to_plane(dMinPoint, dMaxPoint, dWcsXVec, 0.001, &dDistX);
		UF_VEC3_distance_to_plane(dMinPoint, dMaxPoint, dWcsYVec, 0.001, &dDistY);
		UF_VEC3_distance_to_plane(dMinPoint, dMaxPoint, dWcsZVec, 0.001, &dDistZ);
		if (dDistX < 0.0 || dDistY < 0.0 || dDistZ < 0.0)
		{
			double dPointTmp[3] = { 0.0 };
			UF_VEC3_copy(dMinPoint, dPointTmp);
			UF_VEC3_copy(dMaxPoint, dMinPoint);
			UF_VEC3_copy(dPointTmp, dMinPoint);
		}*/

		for (int i = 0; i < vecPoint.size(); i++)
		{
			double dPointTmp[3] = { vecPoint[i].X, vecPoint[i].Y, vecPoint[i].Z };

			double dMinPntDistX = 0.0;
			double dMinPntDistY = 0.0;
			double dMinPntDistZ = 0.0;
			double dMaxPntDistX = 0.0;
			double dMaxPntDistY = 0.0;
			double dMaxPntDistZ = 0.0;
			UF_VEC3_distance_to_plane(dPointTmp, dMinPoint, dWcsXVec, 0.001, &dMinPntDistX);
			UF_VEC3_distance_to_plane(dPointTmp, dMinPoint, dWcsYVec, 0.001, &dMinPntDistY);
			UF_VEC3_distance_to_plane(dPointTmp, dMinPoint, dWcsZVec, 0.001, &dMinPntDistZ);
			UF_VEC3_distance_to_plane(dPointTmp, dMaxPoint, dWcsXVec, 0.001, &dMaxPntDistX);
			UF_VEC3_distance_to_plane(dPointTmp, dMaxPoint, dWcsYVec, 0.001, &dMaxPntDistY);
			UF_VEC3_distance_to_plane(dPointTmp, dMaxPoint, dWcsZVec, 0.001, &dMaxPntDistZ);

			if (dMinPntDistX < 0.0)
			{
				MovePoint(dMinPoint, dMinPoint, dMinPntDistX, dWcsXVec);
			}
			if (dMinPntDistY < 0.0)
			{
				MovePoint(dMinPoint, dMinPoint, dMinPntDistY, dWcsYVec);
			}
			if (dMinPntDistZ < 0.0)
			{
				MovePoint(dMinPoint, dMinPoint, dMinPntDistZ, dWcsZVec);
			}
			if (dMaxPntDistX > 0.0)
			{
				MovePoint(dMaxPoint, dMaxPoint, dMaxPntDistX, dWcsXVec);
			}
			if (dMaxPntDistY > 0.0)
			{
				MovePoint(dMaxPoint, dMaxPoint, dMaxPntDistY, dWcsYVec);
			}
			if (dMaxPntDistZ > 0.0)
			{
				MovePoint(dMaxPoint, dMaxPoint, dMaxPntDistZ, dWcsZVec);
			}
		}

		return 1;
	}
	catch (const std::exception&)
	{
		
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NX二次开发最小包容是两种不同的概念,无法进行直接的PK。以下将分别介绍二者的特和应用场景。 NX二次开发,指的是在NX软件的基础上进行二次开发,利用其提供的API和开发工具进行个性化定制开发。这种开发方式可以充分发挥NX软件的优势,通过编程实现特定功能或自动化流程。NX二次开发具有灵活性强、开发效率高的优,能够满足复杂工程的需求。在航空航天、汽车制造、机械设计等领域,很多企业都会选择利用NX二次开发来优化工程流程和提升产品设计效率。 最小包容(Minimum Bounding Box,简称MBB)是一种计算几何中的概念,用于确定包含一组或其他几何对象的最小封闭矩形。最小包容的边界平行于坐标轴,可以用于快速计算对象的几何特征和相对位置关系。最小包容广泛应用于图像处理、物体识别和计算机辅助设计等领域。例如,在机器人路径规划中,最小包容可以帮助确定机器人工作空间的边界,以确保机器人能够安全操作。 综上所述,NX二次开发最小包容是两个不同的概念,二者无法进行直接的PK。NX二次开发注重于软件的个性化定制和功能扩展,可应用于各种工程设计领域;而最小包容是一种几何概念,用于确定封闭对象的最小边界矩形,可用于图像处理和物体识别等领域。根据具体需求和应用场景,选择合适的方法和技术来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

曹大师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值