pads are now merged
This commit is contained in:
parent
236ab39802
commit
106b5d0ad2
|
@ -7,6 +7,8 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.rusefi.pcb.nodes.PcbNode.*;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 12/16/13.
|
||||
|
@ -88,7 +90,7 @@ public class PcbMergeTool {
|
|||
*/
|
||||
Map<String, Integer> netIdMapping = new HashMap<>();
|
||||
|
||||
for (PcbNode net : source.iterate("net")) {
|
||||
for (PcbNode net : source.iterate(TOKEN_NET)) {
|
||||
String netId = net.getChild(0);
|
||||
String netName = net.getChild(1); // todo: nicer method?
|
||||
String newName = networks.registerNetworkIfPcbSpecific(netName);
|
||||
|
@ -96,7 +98,7 @@ public class PcbMergeTool {
|
|||
netIdMapping.put(netId, networks.getId(newName));
|
||||
}
|
||||
|
||||
List<PcbNode> zones = source.iterate("zone");
|
||||
List<PcbNode> zones = source.iterate(TOKEN_ZONE);
|
||||
log("Processing " + zones.size() + " zone(s)");
|
||||
for (PcbNode z : zones) {
|
||||
ZoneNode zone = (ZoneNode) z;
|
||||
|
@ -140,7 +142,7 @@ public class PcbMergeTool {
|
|||
destNode.addChild(module);
|
||||
}
|
||||
|
||||
List<PcbNode> segments = source.iterate("segment");
|
||||
List<PcbNode> segments = source.iterate(TOKEN_SEGMENT);
|
||||
log("Processing " + segments.size() + " segments");
|
||||
for (PcbNode segment : segments) {
|
||||
// if (!segment.hasChild("net"))
|
||||
|
@ -150,6 +152,14 @@ public class PcbMergeTool {
|
|||
destNode.addChild(segment);
|
||||
}
|
||||
|
||||
List<PcbNode> pads = source.iterate(TOKEN_PAD);
|
||||
log("Processing " + pads.size() + " pads");
|
||||
for (PcbNode pad : pads) {
|
||||
fixNetId(netIdMapping, netNameMapping, pad);
|
||||
|
||||
destNode.addChild(pad);
|
||||
}
|
||||
|
||||
List<PcbNode> vias = source.iterate("via");
|
||||
log("Processing " + vias.size() + " vias");
|
||||
for (PcbNode via : vias) {
|
||||
|
|
|
@ -5,6 +5,8 @@ import com.rusefi.pcb.nodes.PcbNode;
|
|||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_GR_LINE;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 12/8/13
|
||||
|
@ -47,7 +49,7 @@ public class PcbMoveTool {
|
|||
movePts(dx, dy, dimension.find("arrow2b"));
|
||||
}
|
||||
|
||||
List<PcbNode> gr_lines = pcbNode.iterate("gr_line");
|
||||
List<PcbNode> gr_lines = pcbNode.iterate(TOKEN_GR_LINE);
|
||||
System.out.println("Moving " + gr_lines.size() + " gr_lines");
|
||||
for (PcbNode gr_line : gr_lines)
|
||||
moveStartEnd(dx, dy, gr_line);
|
||||
|
@ -89,7 +91,7 @@ public class PcbMoveTool {
|
|||
}
|
||||
|
||||
|
||||
List<PcbNode> segments = pcbNode.iterate("segment");
|
||||
List<PcbNode> segments = pcbNode.iterate(PcbNode.TOKEN_SEGMENT);
|
||||
System.out.println("Moving " + segments.size() + " segments");
|
||||
for (PcbNode segment : segments)
|
||||
moveStartEnd(dx, dy, segment);
|
||||
|
|
|
@ -8,6 +8,8 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_SEGMENT;
|
||||
|
||||
/**
|
||||
* @author Andrey Belomutskiy
|
||||
* 1/21/14
|
||||
|
@ -52,7 +54,7 @@ public class RemoveUnneededTraces {
|
|||
private static List<ViaNode> findUnusedVias(PcbNode destNode) {
|
||||
List<ViaNode> result = new ArrayList<ViaNode>();
|
||||
|
||||
List<PcbNode> stuff = destNode.iterate("segment");
|
||||
List<PcbNode> stuff = destNode.iterate(TOKEN_SEGMENT);
|
||||
// stuff.addAll(destNode.iterate("segment"));
|
||||
|
||||
for (PcbNode n : destNode.iterate("via")) {
|
||||
|
|
|
@ -15,6 +15,12 @@ import java.util.List;
|
|||
* 12/8/13
|
||||
*/
|
||||
public class PcbNode {
|
||||
public static final String TOKEN_SEGMENT = "segment";
|
||||
public static final String TOKEN_PAD = "pad";
|
||||
public static final String TOKEN_NET = "net";
|
||||
public static final String TOKEN_GR_LINE = "gr_line";
|
||||
public static final String TOKEN_ZONE = "zone";
|
||||
public static final String TOKEN_VIA = "via";
|
||||
public final String nodeName;
|
||||
public final int closingIndex;
|
||||
public final List<Object> children;
|
||||
|
@ -80,15 +86,15 @@ public class PcbNode {
|
|||
children.add(child);
|
||||
index += child.length();
|
||||
}
|
||||
if ("segment".equals(nodeName)) {
|
||||
if (TOKEN_SEGMENT.equals(nodeName)) {
|
||||
return new SegmentNode(nodeName, index + 1, children);
|
||||
} else if ("pad".equals(nodeName)) {
|
||||
} else if (TOKEN_PAD.equals(nodeName)) {
|
||||
return PadNode.parse(nodeName, index + 1, children);
|
||||
} else if ("net".equals(nodeName)) {
|
||||
} else if (TOKEN_NET.equals(nodeName)) {
|
||||
return new NetNode(nodeName, index + 1, children);
|
||||
} else if ("add_net".equals(nodeName)) {
|
||||
return new AddNetNode(nodeName, index + 1, children);
|
||||
} else if ("gr_line".equals(nodeName)) {
|
||||
} else if (TOKEN_GR_LINE.equals(nodeName)) {
|
||||
return new GrLineNode(nodeName, index + 1, children);
|
||||
} else if ("layer".equals(nodeName)) {
|
||||
return new LayerNode(nodeName, index + 1, children);
|
||||
|
@ -96,9 +102,9 @@ public class PcbNode {
|
|||
return new ModuleNode(nodeName, index + 1, children);
|
||||
} else if ("size".equals(nodeName) || "width".equals(nodeName)) {
|
||||
return new SizeNode(nodeName, index + 1, children);
|
||||
} else if ("zone".equals(nodeName)) {
|
||||
} else if (TOKEN_ZONE.equals(nodeName)) {
|
||||
return new ZoneNode(nodeName, index + 1, children);
|
||||
} else if ("via".equals(nodeName)) {
|
||||
} else if (TOKEN_VIA.equals(nodeName)) {
|
||||
return new ViaNode(nodeName, index + 1, children);
|
||||
} else if ("start".equals(nodeName) || "end".equals(nodeName) || "at".equals(nodeName)) {
|
||||
return new PointNode(nodeName, index + 1, children);
|
||||
|
|
|
@ -14,7 +14,7 @@ public class SegmentNode extends PcbNode {
|
|||
|
||||
public SegmentNode(String nodeName, int closingIndex, List<Object> children) {
|
||||
super(nodeName, closingIndex, children);
|
||||
net = (NetNode) find("net");
|
||||
net = (NetNode) find(TOKEN_NET);
|
||||
start = (PointNode) find("start");
|
||||
end = (PointNode) find("end");
|
||||
size = (SizeNode) find("width");
|
||||
|
|
|
@ -19,7 +19,7 @@ public class ViaNode extends PcbNode {
|
|||
super(nodeName, i, children);
|
||||
location = (PointNode) find("at");
|
||||
size = (SizeNode) find("size");
|
||||
netId = Integer.parseInt(find("net").getChild(0));
|
||||
netId = Integer.parseInt(find(TOKEN_NET).getChild(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,6 +6,8 @@ import org.junit.Test;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_NET;
|
||||
import static com.rusefi.pcb.nodes.PcbNode.TOKEN_PAD;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class PcbMergeTest {
|
||||
|
@ -47,11 +49,11 @@ public class PcbMergeTest {
|
|||
"\n" +
|
||||
" (layers F.Cu F.Mask F.Paste)\n" +
|
||||
"\n" +
|
||||
" (net 7 \"CANH\")\n" +
|
||||
" (net 2 \"CAN_VIO\")\n" +
|
||||
")\n" +
|
||||
")\n";
|
||||
PcbNode node = PcbNode.parse(pcb1);
|
||||
assertEquals(9, node.iterate("net").size());
|
||||
assertEquals(9, node.iterate(TOKEN_NET).size());
|
||||
|
||||
String pcb2 = "(kicad_pcb (version 4) (host pcbnew \"(2014-07-21 BZR 5016)-product\")\n" +
|
||||
"\n" +
|
||||
|
@ -83,12 +85,12 @@ public class PcbMergeTest {
|
|||
")\n" +
|
||||
")";
|
||||
PcbNode node2 = PcbNode.parse(pcb2);
|
||||
assertEquals(17, node2.iterate("net").size());
|
||||
assertEquals(17, node2.iterate(TOKEN_NET).size());
|
||||
|
||||
PcbMergeTool.mergePcb(node, node2);
|
||||
|
||||
assertEquals(1, node.iterate("pad").size());
|
||||
assertEquals(9, node.iterate("net").size());
|
||||
assertEquals(2, node.iterate(TOKEN_PAD).size());
|
||||
assertEquals(9, node.iterate(TOKEN_NET).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue