NX二次开发C#-获取体的外表面

复制代码
该代码片段实现了一个判断面是否为外表面的方法。通过调用NX Open API获取面的几何属性(法线向量、点坐标等),计算向量点积来确定面的朝向:若点积结果为负,则判定为内表面并标记为蓝色(36);否则判定为外表面标记为黄色(186)。最终将结果分别存入外表面列表(OutFace)和内表面列表(InFace)。该算法利用几何向量运算实现了实体模型内外表面的自动分类。

//判断是否为外表面
public void isOutererFace(Tag face, ref List<Tag> OutFace, ref List<Tag> InFace)
{
    //OutFace = new List<Tag>();
    // InFace = new List<Tag>();
    double[] param = new double[2] { 0.5, 0.5 };
    double[] point1 = new double[3];
    double[] u1 = new double[3];
    double[] v1 = new double[3];
    double[] u2 = new double[3];
    double[] v2 = new double[3];
    double[] unit_norm = new double[3]; //面的法线
    double[] radii = new double[2];
    theUFSession.Modl.AskFaceProps(face, param, point1, u1, v1, u2, v2, unit_norm, radii);

    int type;
    double[] point = new double[3];
    double[] dir = new double[3];
    double[] box = new double[6];
    double radius;
    double rad_data;
    int norm_dir;
    theUFSession.Modl.AskFaceData(face, out type, point, dir, box, out radius, out rad_data, out norm_dir);

    double[] vec1 = new double[3] { point[0] - point1[0], point[1] - point1[1], point[2] - point1[2] };

    double med = vec1[0] * unit_norm[0] + vec1[1] * unit_norm[1] + vec1[2] * unit_norm[2];

    if (med < 0)//其他面
    {
        //设置颜色测试
        theUFSession.Obj.SetColor(face, 186);

        OutFace.Add(face);
    }

    else////外表面
    {   //设置颜色测试
        theUFSession.Obj.SetColor(face, 36);
        InFace.Add(face);

    }
}
相关推荐
§ꦿCFོ༉9 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠10 小时前
十种不同风格的 CTP接口 框架
开发语言·python
爱笑的k1113 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
用户37215742613513 小时前
C# 提取 PDF 附件:包括文档附件和页面注释附件
c#
寂寞的船14 小时前
【Unity Bug挑战】第12期 Awaitable 二次 await 死锁之谜 —— 为什么同一个异步操作等两次就卡死?
unity·c#·游戏引擎·bug
X1A0RAN14 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>15 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮15 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
布莱克60517 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
布莱克60517 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型