版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zp357252539/article/details/88568163
如下原理图红色箭头的起点是设计时选择的图标,终端是绘制之后的样子,
其中每两个导线相互双绞再屏蔽,即双脚屏蔽线;两两双绞屏蔽线之间用菊花链(daisy chain)连接;最后一个双绞屏蔽线通过shield引出连接到一个连接器的一点。
图中是左右对称的两个连接关系,虽然在图上看到两个shield命名一样,但是输出到报表中应该是两组,类似下表。
线束号 | 始端附件号 | 孔号 | 末端附件号 | 过孔 | 备注 | |||||||||||||||||
1 | P500 | Pin1,Pin2,Pin3,Pin4,Pin6,Pin7 | Pin500 | Pin5 | ||||||||||||||||||
1 | P501 | Pin1,Pin2,Pin3,Pin4,Pin6,Pin7 | P501 | Pin5 |
根据测试代码的理解我的思路是:
1、先遍历所有shield线,然后能拿到和shield线连接的多芯线
2、遍历所有的导线,然后获得导线的多芯线信息。
3、根据1和2的多芯线匹配一致 的把shield放到一组
4、根据shield一段连接的连接器或设备等节点和导线一端连接的连接器或设备等节点一致的作为一组
/*******************************************************************************
* @project: Capital-Design-Compare-601
* @package: com.esoon.comparedesign.test
* @file: PingBiDuanJieBiaoActionTest.java
* @author: zhangpei
* @created: 2019-3-11
* @purpose:
*
* @version: 1.0
*
* Revision History at the end of file.
*
* Copyright 2019 AcconSys All rights reserved.
******************************************************************************/
package com.esoon.comparedesign.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.swing.Icon;
import com.mentor.chs.api.IXAbstractConductor;
import com.mentor.chs.api.IXAbstractPin;
import com.mentor.chs.api.IXHarnessDesign;
import com.mentor.chs.api.IXMulticore;
import com.mentor.chs.api.IXShield;
import com.mentor.chs.api.IXWire;
import com.mentor.chs.plugin.IXApplicationContext;
import com.mentor.chs.plugin.IXOutputWindow;
import com.mentor.chs.plugin.action.IXApplicationAction;
/**
* 屏蔽端接表测试例子
* @ClassName: PingBiDuanJieBiaoActionTest
* @Description: TODO(这里用一句话描述这个类的作用)
* @author Burns[张沛]
* @date 2019-3-11 上午8:41:32
*
*/
public class PingBiDuanJieBiaoAction1Test implements IXApplicationAction{
@Override
public boolean execute(IXApplicationContext context) {
IXOutputWindow out = context.getOutputWindow();
Set<IXHarnessDesign> harnessDesignSet = context.getSelectedObjects(IXHarnessDesign.class);
for (IXHarnessDesign hd : harnessDesignSet) {
out.println("ld.toHTML():"+hd.toHTML());
Set<IXMulticore> ixMulticoreSet = hd.getConnectivity().getMulticores();
for (IXMulticore ixMulticore : ixMulticoreSet) {
out.println("ixMulticore.toHTML():"+ixMulticore.toHTML());
if(ixMulticore.getShield()!=null){
out.println("ixMulticore.getShield():"+ixMulticore.getShield().toHTML());
Set<IXAbstractPin> abstractPins = ixMulticore.getShield().getAbstractPins();
for (IXAbstractPin abstractPin : abstractPins) {
out.println("abstractPin.toHTML():"+abstractPin.toHTML());
out.println("abstractPin.getOwner():"+abstractPin.getOwner());
}
}
out.println("=====================");
}
Set<IXWire> wireSet = hd.getConnectivity().getWires();
List<IXWire> shieldList = new ArrayList<IXWire>();
for (IXWire wire : wireSet) {
String wireIsShield = wire.getAttribute("ShieldWire");
if("true".equalsIgnoreCase(wireIsShield)){
shieldList.add(wire);
}
}
//处理shield线
for (IXWire shield : shieldList) {
out.println("shield.toHTML():"+shield.toHTML());
IXMulticore multiCore = shield.getMulticore();
if (multiCore!=null) {
out.println("multiCore.toHTML():"+multiCore.toHTML());
IXMulticore parentmultiCore = multiCore.getParentMulticore();
if(parentmultiCore!=null){
out.println("parentmultiCore:"+parentmultiCore);
}
Set<IXMulticore> multicoreSet = multiCore.getMulticores();
for (IXMulticore ixMulticore : multicoreSet) {
out.println("ixMulticore:"+ixMulticore.toHTML());
}
}
out.println("shield的pin点信息");
Set<IXAbstractPin> abstractPinSet = shield.getAbstractPins();
for (IXAbstractPin abstractPin : abstractPinSet) {
out.println("abstractPin.toHTML():"+abstractPin.toHTML());
out.println("abstractPin.getOwner():"+abstractPin.getOwner());
Set<IXAbstractConductor> abstractConductorSet = abstractPin.getConductors();
for (IXAbstractConductor abstractConductor : abstractConductorSet) {
out.println("abstractConductor.toHTML():"+abstractConductor.toHTML());
}
}
out.println("---------------------------------------");
}
// Set<IXShield> shieldSet = hd.getConnectivity().getShields();
// for (IXShield shield : shieldSet) {
// out.println("shield.toHTML():"+shield.toHTML());
//
// Set<IXAbstractPin> abstractPinSet = shield.getAbstractPins();
// for (IXAbstractPin abstractPin : abstractPinSet) {
// out.println("abstractPin.toHTML():"+abstractPin.toHTML());
// out.println("abstractPin.getOwner():"+abstractPin.getOwner());
// Set<IXAbstractConductor> abstractConductorSet = abstractPin.getConductors();
// for (IXAbstractConductor abstractConductor : abstractConductorSet) {
// out.println("abstractConductor.toHTML():"+abstractConductor.toHTML());
// }
//
//
// }
// }
}
return false;
}
@Override
public String getLongDescription() {
// TODO Auto-generated method stub
return getDescription();
}
@Override
public Integer getMnemonicKey() {
// TODO Auto-generated method stub
return null;
}
@Override
public Icon getSmallIcon() {
// TODO Auto-generated method stub
return null;
}
@Override
public Trigger[] getTriggers() {
// TODO Auto-generated method stub
return Trigger.values();
}
@Override
public boolean isReadOnly() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return getName();
}
@Override
public String getName() {
// TODO Auto-generated method stub
return "屏蔽端接表测试_harness";
}
@Override
public String getVersion() {
// TODO Auto-generated method stub
return "v1.0";
}
@Override
public boolean isAvailable(IXApplicationContext arg0) {
// TODO Auto-generated method stub
return true;
}
}
/*******************************************************************************
* <B>Revision History</B><BR>
* [type 'revision' and press Alt + / to insert revision block]<BR>
*
*
*
* Copyright 2019 AcconSys All rights reserved.
******************************************************************************/