UG/NX二次开发自动编程系之五识别加工面的加工方向

    有疑问或无法实现请留言或私信可以提供解答

    算法介绍

    对于三轴机床来讲。加工面是否能被加工,取决于这个面是否完全可见。就是说在工件上方垂直照下一道光,光能完全照到的面既可以被加工。也意味这些加工面完全可见。这也意味着这些面没有被其他面遮挡。算法的目标就是找到那些没有被其他面遮挡的面。更进一步的讲一个面完全可见意味着它的边完全可见。它边上所有的点完全可见。我们可以把所有面上的点。抽掉观察轴的值(观察轴就是那道光射出的方向,X,Y,Z轴中的一个)。将一个三维几何体转化成二维的平面。然后逐个验证面上的点是否在其他面的内部。如果存在这样的点,则面被完全遮挡或者部分被遮挡。如果没有则面不被遮挡。

    算法实现步骤

    计算遮挡面所有的点是否全部在被遮挡面内部,这一步计算是一种特殊情况。对应像路灯这样的结构,最上面的路灯相对于地面是一种悬浮的状态。

    点在面内部算法

    算法最核心的部分是判断被遮挡面上的点是否在遮挡面的内部。对算法来讲就是判断一个点是否在一个任意多边形的内部。这个判断有很多种方法,这里介绍一种简单可靠的算法,如果一个点在多边形内部,那么从这个点发出一条射线,与多边形的交点为奇数。如果在外部则与多边形的交点为偶数。这里要注意一种特殊情况,就是交点刚好是多边形上的一个角,就像三角形,交点刚好在角上。因为一个角连着两条边。所以这个这交点与两条边相交但是算一次相交

    射线: 𝑉+𝜃𝐿 这里V是点的向量,L是射线的方向向量,是除去观察轴意外的任意一个轴

    线段: 𝑃1+𝛼(𝑃2−𝑃1)0≤𝛼≤1 这里P1,P2是多边形边上的点向量,方程描述的是多边形的边。

    算法的目标就是计算,这两个方程的交点 : 𝑉+𝜃𝐿=𝑃1+𝛼(𝑃2−𝑃1)0≤𝛼≤1

    方程很简单就在不推导了。这里要注意的是 𝛼 不在0到1之间则不相交,如果交点刚好是P1或P2则相交在角上算一次相交。

    算法执行步骤就是,让这个射线跟所有的边列出方程计算他们的交点。然后统计交点的个数。如果是偶数在外部。奇数在内部。

    总结

    算法的实现步骤并不复杂,但是计算量很大。我们在流程图上看有两层循环,但是在计算射线与边相交的的时候还有两层循环。也就是总共有四层循环。而且我们知道一个几何体有三个轴6个方向分别是:X,Y,Z-X,-Y,-Z。所以一个几何体需要进行六次四层循环的运算,计算量就更加庞大。虽说我们可以过滤掉法向量与观察轴超过90度的面,来减少参与计算的面。但是工件上面的数量高度不确定。所以效果也很不确定。我们接下来会介绍一种新型算法,它会很大程度的降低计算量,它使用的原理跟当前算法也不同。

    登录后您可以享受以下权益:

    ×
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回顶部