pads are now merged

This commit is contained in:
rusefillc 2021-01-07 05:35:06 -05:00
parent 236ab39802
commit 106b5d0ad2
7 changed files with 41 additions and 19 deletions

View File

@ -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) {

View File

@ -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);

View File

@ -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")) {

View File

@ -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);

View File

@ -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");

View File

@ -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

View File

@ -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