UG NX二次开发(C#)-建模-判断一张面是孔面还是凸台面
2021/9/27 1:11:22
本文主要是介绍UG NX二次开发(C#)-建模-判断一张面是孔面还是凸台面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在UG NX二次开发过程中,为了判断一张面是否是孔的面还是凸台的面,就要判断面是外表面还是内表面。本文介绍下如何判断一张圆柱面或者圆锥面是外表面还是内表面。
以如下图所示的两个面为例:
左侧的面是内表面,右侧的为外表面。
首先要判断面的类型,采用如下代码:
string faceType = face.SolidFaceType;
圆柱面:
然后采用 uFModl.AskFaceData(face.Tag, out type, point, dir, box, out radius, out rad_data, out norm_dir);来获得面的数据,其具体含义为:
我们主要用到的是点point,在圆柱面中,输出的point是double[]类型的,表示圆柱面轴线上的某个参考点。
然后再用uFModl.AskFaceProps(face.Tag, param, point1, u1, v1, u2, v2, unit_norm, radii);来获得曲面上参数为param[]的点point1和其所在面的法矢unit_norm[]。
通过计算点point到point1的矢量与法矢点乘的正负来判断其实外表面还是内表面。
如果是正值,则是内表面,如果是负值,则是外表面。
完整代码如下:
/// <summary> /// 圆柱面或者圆柱面是孔面还是凸台面,如果是孔面,返回true,如果是凸台面,返回false /// </summary> /// <param name="face"></param> /// <returns></returns> public static bool IsInnerHoleFace(Face face) { 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]; uFModl.AskFaceProps(face.Tag, 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; uFModl.AskFaceData(face.Tag, 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) { return false; } else { return true; } }
实现上面的示例如下:
a)孔面-内表面
b)凸台面-外表面
这篇关于UG NX二次开发(C#)-建模-判断一张面是孔面还是凸台面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具