当前位置: 首页 > news >正文

移动碰撞法 ——套料排版算法——CAD c#

套料排版算法中,关键的一步是碰撞检测,当两个多边形碰撞时停止继续移动,进行下一个轨迹运动。

给定两个多边形,固定其中一个,让另一个多边形围绕它作不旋转的刚体运动。在运动过程中,始终保证两个多边形边界上至少有一点互相靠接,且不重叠。这就使得参考点只能在固定多边形的某一侧特定区域内运动。
例如,在二维排料场景中,为了判断待排料工件与已排料工件是否相交,会计算待排料工件相对于已排料工件的临界多边形。待排料工件只能在已排料工件的外部边缘滑动,其参考点形成的临界多边形也就只会在已排料工件的外侧,不会在其内部或两侧同时出现偏移。

移动碰撞法:首先根据多边形 A 和 B 当前时刻的靠接状态,得到 B 下一步的移动方向,计算出 A 和 B 之间的最小碰撞距离,从而得到移动距离,将 B 移动到新的位置,重复以上过程。

目前移动碰撞(基于CAD C#)算法实现的效果如下:

目前实现的效果:分别让B从A的右、上、左、下四个方向进行碰撞检测,当碰撞时停下,继续下一个轨迹。

局部代码如下:

 public void 两个零件排版4方向(){Database db = HostApplicationServices.WorkingDatabase;Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;// 选择两个零件曲线var curveA = db.SelectCurve("\n请选择零件(A):");if (curveA == null) return;var curveB = db.SelectCurve("\n请选择零件(B):");if (curveB == null) return;// 排版方向参数(0=右, 1=上, 2=左, 3=下)int direction = 0; // 默认从右侧开始排版,逆时针一周bool allDirections = true; // 是否执行所有方向的排版Timing tt = new Timing();//开始计时Flash flashBHorizontal = null; // 瞬态显示对象//**********省略部分代码}

算法需求联系↓↓↓(不免费)

http://www.lryc.cn/news/589646.html

相关文章:

  • 一文读懂循环神经网络—门控循环单元
  • Agentic AI 的威胁与缓解措施
  • 李白周游记50篇
  • MySQL锁机制与SQL优化详解
  • 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、C++类模板、记事本的行高亮的操作的讲解)
  • 应用部署作业-02-流程
  • C++-linux系统编程 8.进程(二)exec函数族详解
  • Qt .pro中的.pri详解(四)
  • 【Trea】Trea国际版|海外版下载
  • 【NBA】75 Greatest NBA Players of All Time
  • 【Android】日志的使用
  • 永磁同步电机控制算法--弱磁控制(定交轴CCR-FQV)
  • 内存的基础相关知识,什么是内存,内存管理
  • 【MCU控制 初级手札】1.1 电阻
  • 高等数学强化——导学
  • 清理C盘--办法
  • 腾讯云智一面---后台开发(凉经)
  • 课题学习笔记1——文本问答与信息抽取关键技术研究论文阅读(用于无结构化文本问答的文本生成技术)
  • linux系统------HAProxy 配置
  • 部署本地大模型 Ollama + LLaMA3
  • 19.如何将 Python 字符串转换为 Slug
  • 希尔排序:突破传统排序的边界
  • JAVA进阶--设计模式
  • 华为OD 特异双端队列
  • TDengine GREATEST 和 LEAST 函数用户手册
  • DirectX12(D3D12)基础教程九 间接绘制
  • Unity灯光面板环境设置
  • 区块链发展史全景长图
  • [面试] 手写题-对象数组根据某个字段进行分组
  • kiro, 新款 AI 编辑器, 简单了解一下