资讯详情

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

目录

  • 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

在原算法中(如果你感兴趣,可以参考文章6、7),缺乏判断管道流向和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的判断

p>代码片段:

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 = "正确";
}

手稿

标签: sp6t中等功率射频继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台