mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
Potentiometer bodies are no longer considered as conductive surfaces to avoid unwanted shorts
This commit is contained in:
@@ -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.
+13
-7
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user