目录

  • 1.更新内容介绍
  • 2.测试效果演示
  • 3.代码说明
    • 3.1 算法(主方法F)
    • 3.2 Reorder命令在.Net开发方式中的用法
    • 3.3 原判断中的bug

1.更新内容介绍

  1. 新增了ATTA材料表;
  2. 新增了ATTA自动调整目录树顺序功能;
  3. 修复了ATTA顺序算法的一处bug,该bug导致少数元件原本处于正确顺序位置却被计算为越过上游元件(例如图2中的TEST3);
  4. PDMS12.0.sp6增加了ATTA自动调整目录树顺序功能,版本升级到0.9.5.0。

目前ATTA自动调整目录树顺序功能,是beta版,征集有兴趣的同学一起来测试一下,发现什么问题可以反馈给我。

2.测试效果演示

专门导出ATTA材料清单

图1:增加了ATTA材料表功能

调整ATTA目录树顺序功能可以自动将顺序检查有错误的ATTA元件的目录树位置通过reorder命令移动到正确顺序位置,注意这里移动的是目录树顺序,不是移动元件,进行元件模型处理的时候有一个原则是尽量少移动模型。


图2:增加了自动调整ATTA目录树顺序功能

ATTA 自动调整顺序功能演示

图3:演示效果视频

3.代码说明

3.1 算法(主方法F)

//步骤:
//1.写一个方法F,判断错误列表,找出所有顺序不正确的ATTA所在的BRANCH
//2.遍历这个BRANCH将所有ATTA放进列表A
//3.将有问题的ATTA放进列表B
//4.根据B的错误类型,决定是将A中的哪两个ATTA执行一次reorder命令
//5.执行完reorder后,再执行一次check,得到新的A和B
//6.将A和B继续放进迭代的方法F里计算,直到B列表为空

3.2 Reorder命令在.Net开发方式中的用法

组装reorder命令并执行,itce是当前ATTA元件sequ,itnext是下一个ATTA元件的sequ。

//命令行显示
string commandStr = "REORDER " + itce + " AFTER " + itnext;
Command comm1 = Command.CreateCommand(commandStr);
bool rel = comm1.Run();

3.3 原判断中的bug

原来的算法中(有兴趣的话可以参看文章六、七),缺少了判断管子流向与base向量是否方向一致的判断(默认管子流向和base一致,但是其实并不是每种场景都一致,参见最后的手稿),因为校验向量V方向就是管子的流向方向,所以直接判断V和base是否方向一致就可以了。
PDMS二次开发(六)——ATTA目录树顺序检查功能实现讲解
PDMS二次开发(七)——ATTA目录树顺序检查功能BUG修复

bool dirParallelSCwithVerify = D3SlopeSCOntoBase.Parallel(D3SlopeVerify);      //SC投影向量与校验向量的平行判断
bool dirParallelSCwithBase = D3SlopeSCOntoBase.Parallel(D3SlopeBase);          //SC投影向量与Base向量的平行判断//以上是之前的代码
/*要增加:D3SlopeBase这个向量要判断是否与membersInLineSegment所在的branch这一段流向一致 Naki 2022.6.23
判断方法是判断D3SlopeBase和D3SlopeVerify方向是否一致 */
bool dirParallelVerifywithBase = D3SlopeVerify.Parallel(D3SlopeBase);

在判断orderFlag标志时,增加对dirParallelVerifywithBase的判断

代码片段:

if (dirParallelSCwithBase == true && dirParallelSCwithVerify == true) //SC、Base、Verify三个向量方向一致
{if (LengthSCOntoBase <= LengthBase){orderFlag = "正确";}else if (LengthSCOntoBase > LengthBase)  //当前元件与下一个元件空间有交集{//计算下一个元件的LPOS值作为下一个邻接点坐标//Position next_lpos = db.Next().GetPosition(DbAttributeInstance.LPOS);TBrItemPoint nextLPoint = new TBrItemPoint(next_lpos.X, next_lpos.Y, next_lpos.Z);//计算下一个元件的APOS和当前ATTA的apos距离绝对值double curr_SpanDistance = DistanceOfTwoPoints(nextPoint, currPoint);//计算下一个元件的APOS和LPOS距离绝对值double next_SpanDistance = DistanceOfTwoPoints(nextPoint, nextLPoint);double DeltaDistance = curr_SpanDistance - next_SpanDistance;if (DeltaDistance > 0){orderFlag = "错误:越过下游元件";}if (DeltaDistance <= 0){ orderFlag = "警告:侵入下游元件"; }}
}
else if (dirParallelSCwithBase == false &&dirParallelVerifywithBase == false) //当前元件确实在下游
{orderFlag = "正确";
}

手稿

PDMS二次开发(二十)——关于1.0.2.0版本升级内容的说明相关推荐

  1. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  2. Guns二次开发(十):商品分类管理之【删】字诀

    关于博客中使用的Guns版本问题请先阅读   Guns二次开发目录 上一篇博客中,我们实现了商品分类的修改功能,这篇博客我们继续实现增删改查里最后的删除功能.首先要明确,我们平时所说的删除功能,其实可 ...

  3. BarTender破解版 标签打印二次开发二维码C#预览图

    很多生产环节都需要条码打印的功能,这篇文章就介绍下如何使用C#实现条码打印的功能,希望对大家能有所帮助! 条码设计软件采用的是BarTender 10.1,在此基础上进行的二次开发. 运行成功的预览图 ...

  4. PDMS二次开发(十四)——自动插入焊口和计算焊接当量(达因数)

    目录 1.概述 2.使用方法 3.测试说明 以100-B-1/B1管线为例 (1)执行基本动作 (2)ISO图显示效果 (3)焊口类型 (4)显示运行报告 (5)焊口库信息错误提示 4.补充说明 4. ...

  5. Java微信二次开发(十)

    生成带参数的二维码以及长链接转短链接 第一步:找到包com.wtz.vo,新建类WeixinQRCode.java 1 package com.wtz.vo; 2 3 /** 4 * @author ...

  6. AutoCAD.NET API2018二次开发第十九章

    插入光栅图像,定义并插入块,常见具有属性的块,附加拆离外部参考,附加扩展数据,查看扩展数据,定义布局,创建布局视口,将图形打印到PDF文件 using System; using System.Col ...

  7. CAD二次开发--二维多段线Polyline与三维多段线Polyline3d创建总结

    今天在接到一个小需求并开发完成后,发现人家要的是三维polyline,而我画的确是二维的,所以这个必须要改过来!我心想:"这不是很简单么?2换一下3不就得了?".结果一顿折腾,发现 ...

  8. visionpro联合c#二次开发二

    本文已参与「新人创作礼」活动,一起开启掘金创作之路. 本次康耐视联合C#文档是最后一篇visionpro与C#联合的文章,后续我们将开始c#与halcon的编写或者vidi的文章. 首先我们定义所需要 ...

  9. MFC开发IM-第十九篇、获取编辑框内容,并且追加内容

    //获得当前文本   CEdit* pEdit = (CEdit*)GetDlgItem(IDC_E_CONTENT);             CString chat_content = _T(& ...

  10. creo二次开发python_使用C#/.net语言进行ProE/Creo二次开发

    随便哪个版本的Visual studio 设置系统环境变量 通常这个环境变量在安装ProE的时候如果选择安装VBAPI就会自动设置 注意32位和64位操作系统路径是不同的.我的是64位操作系统. 然后 ...

最新文章

  1. Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出
  2. 计算机应用基础 a)卷,《计算机应用基础》(A卷)44648
  3. 查看安卓keystore别名
  4. mysql的varchar要根据实际长度来申请
  5. 会计转行SAP FICO实施顾问,百万年薪等你来挑战!
  6. c#扩展方法奇思妙用高级篇四:对扩展进行分组管理
  7. 以太坊地址和公钥_以太坊交易签名解析源码解读
  8. [Git]解决Permission denied, please try again问题
  9. 比较好的JavaScript库-日常备用
  10. Nginx正确记录post日志的方法
  11. linux使用中的问题 --- (Another app is currently holding the yum lock; waiting for it to exit...)
  12. Ubuntu系统挂载U盘
  13. DDA算法、中点Bresenam算法,圆或椭圆的绘制
  14. GD32E230_timer2解析SIF通讯协议
  15. LGG7刷入第三方ROM,安卓11
  16. 同步回调与异步回调的实现与学习
  17. 利用python爬取英雄联盟官网英雄皮肤
  18. TP-LINK TL-WDN7200H ubuntu驱动安装
  19. scanf函数的返回值以及在while循环中的应用
  20. 深入浅出 Java Concurrency (10): 锁机制 part 5 闭锁 (CountDownLatch)

热门文章

  1. 华为路由器远程登陆之ssh
  2. 1. 无穷维空间的测度论-Wiener测度(二)
  3. 微信小程序自定义组件中对properties的修改
  4. Python如何对XML 解析
  5. matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最小平方法...
  6. android仿饿了么,Android 仿饿了么下拉Dialog
  7. android studio必须装c盘吗,Android Studio不占用c盘配置
  8. Python学习笔记之循环的实战练习
  9. android checkbox分页问题分析
  10. sai笔记6-sai2版本新增的功能