当前位置: 首页 > 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://affinitive.zzyjnl.cn
http://checkoff.zzyjnl.cn
http://axisymmetric.zzyjnl.cn
http://afreet.zzyjnl.cn
http://benthamite.zzyjnl.cn
http://blankness.zzyjnl.cn
http://brachycranic.zzyjnl.cn
http://brompton.zzyjnl.cn
http://addlepate.zzyjnl.cn
http://aramaic.zzyjnl.cn
http://ament.zzyjnl.cn
http://caliche.zzyjnl.cn
http://automobile.zzyjnl.cn
http://chanciness.zzyjnl.cn
http://christless.zzyjnl.cn
http://atom.zzyjnl.cn
http://abyssinia.zzyjnl.cn
http://accelerated.zzyjnl.cn
http://chiefless.zzyjnl.cn
http://carcinectomy.zzyjnl.cn
http://amr.zzyjnl.cn
http://amusingly.zzyjnl.cn
http://baywood.zzyjnl.cn
http://bicorporeal.zzyjnl.cn
http://ballcarrier.zzyjnl.cn
http://candlepower.zzyjnl.cn
http://adnexa.zzyjnl.cn
http://areographic.zzyjnl.cn
http://backspin.zzyjnl.cn
http://cestus.zzyjnl.cn
http://www.dtcms.com/a/281780.html

相关文章:

  • java基础(day08)-面向对象
  • Redis 高频面试题
  • 【删库跑路】一次删除pip的所有第三方库
  • vllm本地部署qwen3-4b
  • 场景设计题+智力题
  • windows下安装difi(无docker desktop版)
  • 7.15 腾讯云智面经整理
  • Wiz笔记二次开发
  • AI大模型开发架构设计(22)——LangChain的大模型架构案例实战
  • 记忆力训练day41
  • 1-Nodejs介绍与安装
  • 基于STM32的智能火灾报警系统设计
  • 【人工智能99问】激活函数有哪些,如何选择使用哪个激活函数?(5/99)
  • ADAU系列DSP用MCU来做控制,怎么去理解这个逻辑
  • Vue3 + MapLibre 地图管理工具 useMap 使用指南
  • 牛客:HJ22 汽水瓶[华为机考][数字处理]
  • 基于Sentinel-1雷达数据的洪水动态监测(附完整GEE代码)
  • 深入理解红锁
  • Vue3入门-指令补充
  • 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、C++类模板、记事本的行高亮的操作的讲解)
  • 面向对象与面向过程、函数式编程
  • C++回顾 Day8
  • 【时时三省】(C语言基础)通过指针引用多维数组
  • 【09】MFC入门到精通——MFC 属性页对话框的 CPropertyPage类 和 CPropertySheet 类
  • burpsuite使用中遇到的一些问题(bp启动后浏览器无法连接)/如何导入证书
  • css实现烧香效果
  • 20.如何在 Python 字典中找到最小值或最大值的键?
  • 【卡尔曼滤波第六期】集合变换卡尔曼滤波 ETKF
  • 【Linux庖丁解牛】— 保存信号!
  • HTML网页结构(基础)