Найти список координат между каждым компонентом - PullRequest
0 голосов
/ 02 октября 2019

Найти список координат линий (проводов), которые связаны с одной формой с другой формой.

Каждая точка пересечения проводов - это разные линии.

Я пробовал ниже код.

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

Но мне нужен список координат линий, которые связаны между каждой фигурой. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...