Potentiometer bodies are no longer considered as conductive surfaces to avoid unwanted shorts

This commit is contained in:
Bane Stojkovic
2022-11-26 11:20:00 +01:00
parent 0e5dad5412
commit 45b9532e66
77 changed files with 717 additions and 865 deletions
@@ -353,7 +353,7 @@ public class NetlistBuilder {
areaTree.search(area.getArea()).stream().filter(graphNode -> {
if (graphNode.getArea() != null && graphNode.getArea() != area
&& graphNode.getArea().getLayerId() == area.getLayerId()) {
&& (graphNode.getArea().getLayerId() == 0 || area.getLayerId() == 0 || graphNode.getArea().getLayerId() == area.getLayerId())) {
Area a = new Area(graphNode.getArea().getArea());
a.intersect(area.getArea());
return !a.isEmpty();
@@ -366,8 +366,7 @@ public class NetlistBuilder {
areaTree.insert(area.getArea(), areaNode);
}
for (Map.Entry<Point2D, List<ProjectGraphNode>> entry : nodeMapByPoint.entrySet()) {
for (Map.Entry<Point2D, List<ProjectGraphNode>> entry : nodeMapByPoint.entrySet()) {
final Point2D point = entry.getKey();
List<ProjectGraphNode> candidateAreaNodes = areaTree.search(point, eps).stream()
@@ -381,16 +380,20 @@ public class NetlistBuilder {
for (ProjectGraphNode pointNode : entry.getValue()) {
List<ProjectGraphNode> areaNodesBelowPoint = candidateAreaNodes.stream()
.filter(x -> x.getArea().getZIndex() <= pointNode.getZIndex())
.sorted(Comparator.comparing(x -> x.getArea().getZIndex(), Comparator.reverseOrder()))
.collect(Collectors.toList());
// List<ProjectGraphNode> areaNodes = candidateAreaNodes.stream()
// .filter(x -> x.getArea().getZIndex() <= pointNode.getZIndex())
//// .sorted(Comparator.comparing(x -> x.getArea().getZIndex(), Comparator.reverseOrder()))
// .collect(Collectors.toList());
if (areaNodesBelowPoint.isEmpty()) {
builder.putEdge(pointNode, candidateAreaNodes.get(0));
} else {
builder.putEdge(pointNode, areaNodesBelowPoint.get(0));
for (ProjectGraphNode areaNode : candidateAreaNodes) {
builder.putEdge(pointNode, areaNode);
}
// if (areaNodesBelowPoint.isEmpty()) {
// builder.putEdge(pointNode, candidateAreaNodes.get(0));
// } else {
// builder.putEdge(pointNode, areaNodesBelowPoint.get(0));
// }
}
}
@@ -720,7 +720,7 @@ public class DrawingManager {
if (component instanceof ILayer) {
layerId = ((ILayer)component).getLayerId();
} else {
layerId = component.hashCode();
layerId = 0;
}
Collection<Area> positiveAreas = a.getContinuityPositiveAreas();
@@ -4190,6 +4190,10 @@
<changeType>IMPROVEMENT</changeType>
<description>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</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Potentiometer bodies are no longer considered as conductive surfaces to avoid unwanted shorts</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>BUG_FIX</changeType>
<description>Do not apply any user-default property values when creating a standard datasheet model (e.g. a capacitor)</description>
Binary file not shown.
@@ -40,6 +40,7 @@ import org.diylc.components.transform.MiniToggleSwitchTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.ILayer;
import org.diylc.core.ISwitch;
import org.diylc.core.Project;
import org.diylc.core.Theme;
@@ -54,7 +55,7 @@ import org.diylc.utils.Constants;
@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electro-Mechanical", author = "Branislav Stojkovic",
description = "Panel mounted mini toggle switch", zOrder = IDIYComponent.COMPONENT,
instanceNamePrefix = "SW", autoEdit = false, enableCache = true, transformer = MiniToggleSwitchTransformer.class)
public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchType> implements ISwitch {
public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchType> implements ISwitch, ILayer {
private static final long serialVersionUID = 1L;
@@ -309,10 +310,10 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
for (Point2D p : controlPoints) {
if (outlineMode) {
g2d.setColor(Constants.TRANSPARENT_COLOR);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
drawingObserver.stopTrackingContinuityArea();
// g2d.setColor(Constants.TRANSPARENT_COLOR);
// drawingObserver.startTrackingContinuityArea(true);
// g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
// drawingObserver.stopTrackingContinuityArea();
g2d.setColor(theme.getOutlineColor());
g2d.drawRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
@@ -320,9 +321,9 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
g2d.setColor(CIRCLE_COLOR);
g2d.fillOval((int)(p.getX() - circleDiameter / 2), (int)(p.getY() - circleDiameter / 2), circleDiameter, circleDiameter);
g2d.setColor(METAL_COLOR);
drawingObserver.startTrackingContinuityArea(true);
// drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
drawingObserver.stopTrackingContinuityArea();
// drawingObserver.stopTrackingContinuityArea();
}
}
}
@@ -514,5 +515,10 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
int margin = 20;
Rectangle2D bounds = getBody().getBounds2D();
return new Rectangle2D.Double(bounds.getX() - margin, bounds.getY() - margin, bounds.getWidth() + 2 * margin, bounds.getHeight() + 2 * margin);
}
@Override
public int getLayerId() {
return hashCode();
}
}
@@ -42,6 +42,7 @@ import org.diylc.core.ComponentState;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.ILayer;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.annotations.ComponentDescriptor;
@@ -54,7 +55,7 @@ import org.diylc.utils.Constants;
creationMethod = CreationMethod.SINGLE_CLICK, instanceNamePrefix = "VR",
description = "Panel mount potentiometer with solder lugs", zOrder = IDIYComponent.COMPONENT,
transformer = PotentiometerTransformer.class, enableCache = true)
public class PotentiometerPanel extends AbstractPotentiometer {
public class PotentiometerPanel extends AbstractPotentiometer implements ILayer {
private static final long serialVersionUID = 1L;
@@ -279,11 +280,11 @@ public class PotentiometerPanel extends AbstractPotentiometer {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
if (!outlineMode) {
if (i >= 3 && i <= 6)
drawingObserver.startTrackingContinuityArea(true);
// if (i >= 3 && i <= 6)
// drawingObserver.startTrackingContinuityArea(true);
g2d.fill(shape);
if (i >= 3 && i <= 6)
drawingObserver.stopTrackingContinuityArea();
// if (i >= 3 && i <= 6)
// drawingObserver.stopTrackingContinuityArea();
}
g2d.setComposite(oldComposite);
Color finalBorderColor;
@@ -502,6 +503,11 @@ public class PotentiometerPanel extends AbstractPotentiometer {
@Override
public boolean canPointMoveFreely(int pointIndex) {
return false;
}
@Override
public int getLayerId() {
return hashCode();
}
public enum Type {
Binary file not shown.
Binary file not shown.
@@ -65,8 +65,6 @@ public class RegressionTestRunner {
List<RegressionTestResult> collect =
visit(inputsDir, basePath, command, filter).collect(Collectors.toList());
try {
if ("TEST".equalsIgnoreCase(command)) {
createReport(collect, basePath);
@@ -451,6 +449,7 @@ public class RegressionTestRunner {
public RegressionTestResult(String fileName) {
this.fileName = fileName;
startTime = System.currentTimeMillis();
ok = true;
}
public RegressionTestResult succedded() {