NX二次开发 NXOPEN 将乱序封闭曲线按照首尾相连方式重新排序
/// <summary>/// 将输入边曲线按照首尾相连的方式进行重新排序/// </summary>/// <param name="allEdges">输入边曲线(需要调用方保证输入曲线为闭环曲线)</param>/// <returns></returns>public static List<Edge> CurveEdgeSort(this List<Edge> allEdges){try{List<Edge> sortedEdges = new List<Edge>(); //存放排序后的线段Point3d tmpPoint3d = new Point3d(); //记录上一条线段的终点for (int i = 0; i < allEdges.Count; i++){if (i == 0) //如果是第一次循环,则直接将第一条线段加入到集合中{sortedEdges.Add(allEdges[i]);continue;}for (int j = 0; j < allEdges.Count; j++){if (sortedEdges.Contains(allEdges[j])) //如果当前遍历的线段 在集合中已存在,则跳过本次循环continue;allEdges[j].GetVertices(out Point3d p1, out Point3d p2); //获取当前线段的两个端点sortedEdges[sortedEdges.Count - 1].GetVertices(out Point3d q1, out Point3d q2);//获取集合中最后一条线段的两个端点if (sortedEdges.Count == 1) //如果集合中只有一条线段,则在当前线段中任选一个端点(p1)与集合中的两个端点比较{//如果p1与q1或者q2相等,则添加这条线段到集合中,并将p2赋值给tmpPoint3d用于下次比较。if (ComperTwoPoint3dIsEquals(q1, p1) || ComperTwoPoint3dIsEquals(q2, p1)){sortedEdges.Add(allEdges[j]);tmpPoint3d = p2;continue;}}else{if (ComperTwoPoint3dIsEquals(tmpPoint3d, p1)) //如果p1与上次记录的终点相等,则添加线段,并将p2作为下次比较的对象{sortedEdges.Add(allEdges[j]);tmpPoint3d = p2;continue;}if (ComperTwoPoint3dIsEquals(tmpPoint3d, p2)) //如果p2与上次记录的终点相等,则添加线段,并将p1作为下次比较的对象{sortedEdges.Add(allEdges[j]);tmpPoint3d = p1;continue;}}}}bool ComperTwoPoint3dIsEquals(Point3d pA, Point3d pB){return pA.X.Eq(pB.X) && pA.Y.Eq(pB.Y) && pA.Z.Eq(pB.Z);}return sortedEdges;}catch (Exception ex){theUI.NXMessageBox.Show("提醒", NXMessageBox.DialogType.Error, $"闭环边曲线排序函数引发异常,异常原因:{ex.Message}");return allEdges; //引发异常时返回原数据}}
NX二次开发 NXOPEN 将乱序封闭曲线按照首尾相连方式重新排序相关推荐
- UG NX二次开发(C#)-建模-判断一条曲线是不是封闭
在UG NX二次开发(c#)时,判断一个边(曲线)是不是封闭的,采用两个端点是不是相同来判断.其代码如下: Point3d point3D1;Point3d point3D2;bool isClose ...
- NX二次开发-NXOPEN C# Part.GetPreviewImage读取prt文件预览图
NXOpen C#有专门读取Prt文件预览图的方法 我刚才又找了一下,NXOpen C++也有 西门子GTAC官方上的一个.net例子(我没有webkey账号,代码是从上面大神博客转载的) NX AP ...
- NX二次开发-NXOpen::Drawings::DrawingSheet Class Reference
1 NX11+VS20132 3 4 #include <NXOpen/Section.hxx>5 #include <NXOpen/SectionCollection.hxx> ...
- [NXOpen] Siemens NX 二次开发 (c#) 安装,配置,新建项目,调试, 调用程序
1. 软件版本 坐标德国,目前使用的是由学校给学生免费提供的正版Siemens NX 12.0.2,编程软件的版本是Visual Studio 2019 Community 2. 官方文档 因为工作原 ...
- UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample
列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...
- UG/NX二次开发Siemens官方NXOPEN实例解析—2.8 DrawingCycle(图纸打印)
列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-2.1 AssemblyViewer(树列表) UG/NX二次开发Siemens官方NXOPEN实例解析-2.2 Selectio ...
- UG/NX二次开发Siemens官方NXOPEN实例解析—1.8 BlockStyler/UDB_CreateCylinder
列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...
- UG/NX二次开发Siemens官方NXOPEN实例解析—1.2 BlockStyler/EditExpression
列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...
- UG/NX二次开发Siemens官方NXOPEN实例解析—2.7 DiameterSymbol(标注符号)
列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-2.1 AssemblyViewer(树列表) UG/NX二次开发Siemens官方NXOPEN实例解析-2.2 Selectio ...
最新文章
- 新闻行业中,自然语言理解技术该如何应用?
- 如何将模糊的图片变得清晰
- wordpress 常用函数-wpdb类
- python实现观察者模式_举例讲解Python设计模式编程中的访问者与观察者模式
- 小项目,吃货联盟,java初级小项目,源代码
- 中学计算机教室怎么布置,初中功能教室设置标准及数量
- unity设置一个物体是另一个物体的子物体
- 指向指针的指针与二维数组的区别
- 信号系统与数字信号处理一点点心得
- 模糊控制 之 模糊集,隶属函数,模糊关系
- 分享个短视频竞品分析报告
- 【堆排序的递归和非递归实现】Java实现
- 《论文阅读》D3DLO: DEEP 3D LIDAR ODOMETRY
- 曙光超级计算机用的芯片是国产吗,真正中国芯片龙头是中科曙光
- charles问题?chls.pro/ssl证书安装后还是出现unknown问题?
- Android 4.0.4系统下实现apk的静默安装和启动
- android磁场传感器页面布局在哪,教程:Android传感器—传感器查询demo
- OpenCV+百度云人脸识别项目及源码
- python画魄罗代码_LOL:灵魂画师在这里!玩家手绘冰雪节魄罗
- Curator基本操作(Zookeeper节点增删改查)