mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
Circuit analysis algorithm that supports netlist extraction, 'Highlight connected Areas' and 'Guitar Wiring Analyzer' features improved to take PCB trace layer and component z-order into account for better accuracy
This commit is contained in:
@@ -30,6 +30,7 @@ import org.diylc.components.transform.AbstractBoardTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
@@ -44,7 +45,7 @@ import org.diylc.utils.Constants;
|
||||
zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated board with solder pads",
|
||||
bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG,
|
||||
keywordTag = "Perf Board", transformer = AbstractBoardTransformer.class, enableCache = true)
|
||||
public class PerfBoard extends AbstractBoard {
|
||||
public class PerfBoard extends AbstractBoard implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -119,6 +120,11 @@ public class PerfBoard extends AbstractBoard {
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.diylc.components.transform.VeroBoardTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
@@ -41,7 +42,7 @@ import org.diylc.utils.Constants;
|
||||
instanceNamePrefix = "Board",
|
||||
description = "Perforated FR4 board with copper strips connecting 3 holes in a row (aka TriPad Board)",
|
||||
keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = VeroBoardTransformer.class, enableCache = true)
|
||||
public class TriPadBoard extends AbstractVeroBoard {
|
||||
public class TriPadBoard extends AbstractVeroBoard implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -202,5 +203,10 @@ public class TriPadBoard extends AbstractVeroBoard {
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.diylc.components.transform.VeroBoardTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
@@ -42,7 +43,7 @@ import org.diylc.utils.Constants;
|
||||
description = "Perforated FR4 board with copper strips connecting all holes in a row",
|
||||
bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME,
|
||||
transformer = VeroBoardTransformer.class, enableCache = true)
|
||||
public class VeroBoard extends AbstractVeroBoard {
|
||||
public class VeroBoard extends AbstractVeroBoard implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -110,7 +111,10 @@ public class VeroBoard extends AbstractVeroBoard {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.VisibilityPolicy;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
@@ -40,7 +41,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
description = "Straight copper trace", zOrder = IDIYComponent.TRACE, bomPolicy = BomPolicy.NEVER_SHOW,
|
||||
autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "PCB",
|
||||
transformer = SimpleComponentTransformer.class)
|
||||
public class CopperTrace extends AbstractLeadedComponent<Void> {
|
||||
public class CopperTrace extends AbstractLeadedComponent<Void> implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -99,6 +100,11 @@ public class CopperTrace extends AbstractLeadedComponent<Void> {
|
||||
public void setLayer(PCBLayer layer) {
|
||||
this.layer = layer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return getLayer().getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getLeadThickness() {
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
@@ -40,7 +41,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
zOrder = IDIYComponent.TRACE, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false,
|
||||
keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "PCB", transformer = SimpleComponentTransformer.class,
|
||||
enableCache = true)
|
||||
public class CurvedTrace extends AbstractCurvedComponent<Void> {
|
||||
public class CurvedTrace extends AbstractCurvedComponent<Void> implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -88,6 +89,11 @@ public class CurvedTrace extends AbstractCurvedComponent<Void> {
|
||||
public void setLayer(PCBLayer layer) {
|
||||
this.layer = layer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return getLayer().getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void getValue() {
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.VisibilityPolicy;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
@@ -43,7 +44,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
@ComponentDescriptor(name = "Ground Fill", author = "Branislav Stojkovic", category = "Connectivity",
|
||||
instanceNamePrefix = "GF", description = "Polygonal ground fill area", zOrder = IDIYComponent.TRACE,
|
||||
bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false, transformer = SimpleComponentTransformer.class)
|
||||
public class GroundFill extends AbstractComponent<Void> {
|
||||
public class GroundFill extends AbstractComponent<Void> implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -148,7 +149,11 @@ public class GroundFill extends AbstractComponent<Void> {
|
||||
public void setLayer(PCBLayer layer) {
|
||||
this.layer = layer;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return getLayer().getId();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayer;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.VisibilityPolicy;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
@@ -44,7 +45,7 @@ import org.diylc.utils.Constants;
|
||||
description = "Copper solder pad, round or square", instanceNamePrefix = "Pad",
|
||||
zOrder = IDIYComponent.TRACE + 0.1, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false,
|
||||
keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "PCB", transformer = SimpleComponentTransformer.class, enableCache = true)
|
||||
public class SolderPad extends AbstractComponent<Void> {
|
||||
public class SolderPad extends AbstractComponent<Void> implements ILayer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -128,6 +129,11 @@ public class SolderPad extends AbstractComponent<Void> {
|
||||
public void setLayer(PCBLayer layer) {
|
||||
this.layer = layer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayerId() {
|
||||
return getLayer().getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
@@ -93,7 +93,7 @@ public class SpiceAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer {
|
||||
if (c instanceof ISpiceMapper)
|
||||
pointIndex = ((ISpiceMapper)c).mapToSpiceNode(pointIndex);
|
||||
|
||||
int nodeIndex = find(new Node(c, pointIndex), groups);
|
||||
int nodeIndex = find(new Node(c, pointIndex, 0), groups);
|
||||
if (nodeIndex < 0)
|
||||
nodeIndex = unconnectedIndex++;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user