Найти список координат линий (проводов), которые связаны с одной формой с другой формой.
Каждая точка пересечения проводов - это разные линии.
Я пробовал ниже код.
List<Map<String, String>> schCompXYList = new ArrayList<Map<String, String>>();
for (int i = 0; i < schParser.listOfComponents.size(); i++) {
Component component = schParser.listOfComponents.get(i);
String schCompName = component.componentName;
for (int j = 0; j < LibParser.listOfDefs.size(); j++) {
Map<String, Object> mapOfDefs = LibParser.listOfDefs.get(i);
Map<String, String> shapeInfo = (Map<String, String>) mapOfDefs.get("shapeInfo");
String defLibName = shapeInfo.get("name").replace("_", ":");
if (schCompName.equals(defLibName)) {
List<Object> shapes = (List<Object>) mapOfDefs.get("shapes");
for (int k = 0; k < shapes.size(); k++) {
if (shapes.get(k) instanceof Pin) {
Pin pin = (Pin) shapes.get(k);
Map<String, String> schcompXYDetails = new HashMap<String, String>();
schcompXYDetails.put("compname", schCompName);
schcompXYDetails.put("compXPoint", "" + ((component.xpos) + (pin.posx + pin.posy)));
schcompXYDetails.put("compYPoint", "" + (component.ypos));
schCompXYList.add(schcompXYDetails);
}
}
break;
}
}
}
for (int j = 0; j < schParser.listOfWires.size(); j++) {
Wire wire = schParser.listOfWires.get(j);
for (int i = 0; i < schCompXYList.size(); i++) {
String compname = schCompXYList.get(i).get("compname");
double compXPoint = Double.parseDouble(schCompXYList.get(i).get("compXPoint"));
double compYPoint = Double.parseDouble(schCompXYList.get(i).get("compYPoint"));
// System.out.println("Name = " + compname + "= compXPoint =" + compXPoint + " = compYPoint = " + compYPoint);
if (compXPoint == wire.startX && compYPoint == wire.startY) {
System.out.println("Name = " + compname + " = wire.startX = " + wire.startX + " = wire.startY = "
+ wire.startY + " = Line index = " + j);
} else if (compXPoint == wire.endX && compYPoint == wire.endY) {
System.out.println("Name = " + compname + " = wire.endX = " + wire.endX + " = wire.endY = " + wire.endY
+ " = Line index = " + j);
}
}
}
и я получил ниже вывод. Он содержит только координаты начальной и конечной линий каждой фигуры.
Name = Device:D = wire.startX = 3350.0 = wire.startY = 1500.0
Name = Device:R = wire.endX = 2100.0 = wire.endY = 2200.0
Name = Device:R = wire.startX = 2400.0 = wire.startY = 2200.0
Name = Device:MEMRISTOR = wire.endX = 3350.0 = wire.endY = 2700.0
Name = Device:MEMRISTOR = wire.startX = 3650.0 = wire.startY = 2700.0
Name = Device:C = wire.endX = 5000.0 = wire.endY = 2350.0
Name = Device:C = wire.startX = 4700.0 = wire.startY = 2350.0
Name = Device:D = wire.endX = 3650.0 = wire.endY = 1500.0
Но мне нужен список координат линий, которые связаны между каждой фигурой.