tube improvements

This commit is contained in:
Bane Stojkovic
2026-11-02 14:40:23 +01:00
parent 1dfef6dd6b
commit 3e043a8387
10 changed files with 611 additions and 216 deletions
@@ -39,7 +39,7 @@ public class Node implements Comparable<Node> {
/** Pin names that mark an absent connection, so repeats of them are not one net. */
private static final Set<String> NON_NET_NAMES =
new HashSet<String>(Arrays.asList("NC", "RSV"));
new HashSet<String>(Arrays.asList("NC", "RSV", "IC"));
private IDIYComponent<?> component;
private int pointIndex;
@@ -948,232 +948,27 @@
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis Noval 9A (12A?7)</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>A,G,C,H,H,A,G,C,CT</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>B9A</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.2" y="0.145"/>
<point x="0.075" y="0.235"/>
<point x="-0.08" y="0.235"/>
<point x="-0.205" y="0.145"/>
<point x="-0.25" y="0.0"/>
<point x="-0.205" y="-0.15"/>
<point x="-0.08" y="-0.24"/>
<point x="0.075" y="-0.24"/>
<point x="0.2" y="-0.15"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis Noval 9CV (EL84)</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>n/c,G,C,H,H,n/c,P,n/c,S</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>B9A</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.2" y="0.145"/>
<point x="0.075" y="0.235"/>
<point x="-0.08" y="0.235"/>
<point x="-0.205" y="0.145"/>
<point x="-0.25" y="0.0"/>
<point x="-0.205" y="-0.15"/>
<point x="-0.08" y="-0.24"/>
<point x="0.075" y="-0.24"/>
<point x="0.2" y="-0.15"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis Octal 5T</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>n/c,H,n/c,P,n/c,P,n/c,H</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>OCTAL</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.315" y="0.13"/>
<point x="0.13" y="0.315"/>
<point x="-0.13" y="0.315"/>
<point x="-0.315" y="0.13"/>
<point x="-0.315" y="-0.13"/>
<point x="-0.13" y="-0.315"/>
<point x="0.13" y="-0.315"/>
<point x="0.315" y="-0.13"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis Octal 7AC (6?6)</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>n/c,H,P,S,G,n/c,H,C</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>OCTAL</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.315" y="0.13"/>
<point x="0.13" y="0.315"/>
<point x="-0.13" y="0.315"/>
<point x="-0.315" y="0.13"/>
<point x="-0.315" y="-0.13"/>
<point x="-0.13" y="-0.315"/>
<point x="0.13" y="-0.315"/>
<point x="0.315" y="-0.13"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis 7-pin 7BK</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>G,IS,H,H,P,S,C</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>B7G</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.165" y="0.165"/>
<point x="0.0" y="0.235"/>
<point x="-0.17" y="0.165"/>
<point x="-0.24" y="0.0"/>
<point x="-0.17" y="-0.17"/>
<point x="0.0" y="-0.24"/>
<point x="0.165" y="-0.17"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
<org.diylc.core.Template>
<name>Chassis Octal 8ET (EL34)</name>
<values>
<entry>
<string>Color</string>
<awt-color hex="f7f7ef"/>
</entry>
<entry>
<string>Mount</string>
<diylc.tube.TubeSocket_-Mount>CHASSIS</diylc.tube.TubeSocket_-Mount>
</entry>
<entry>
<string>Label</string>
<awt-color hex="acaca7"/>
</entry>
<entry>
<string>Electrode Labels</string>
<string>IS,H,P,S,G,n/c,H,C</string>
</entry>
<entry>
<string>Base</string>
<diylc.tube.TubeSocket_-Base>OCTAL</diylc.tube.TubeSocket_-Base>
</entry>
</values>
<points>
<point x="0.0" y="0.0"/>
<point x="0.315" y="0.13"/>
<point x="0.13" y="0.315"/>
<point x="-0.13" y="0.315"/>
<point x="-0.315" y="0.13"/>
<point x="-0.315" y="-0.13"/>
<point x="-0.13" y="-0.315"/>
<point x="0.13" y="-0.315"/>
<point x="0.315" y="-0.13"/>
</points>
<defaultFlag>false</defaultFlag>
<createdOn>2022-10-30T13:25:15.3894874</createdOn>
<deletedOn>2026-11-02T14:00:00</deletedOn>
</org.diylc.core.Template>
</list>
</entry>
@@ -525,6 +525,10 @@
<changeType>NEW_FEATURE</changeType>
<description>Added 'Pinout' property to 'Transistor (TO-3)' and a terminal in the mounting hole next to the pins, so the case (collector) can be wired and shows up in netlists and AI analysis</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Added a datasheet to 'Tube Socket' - pick a tube by its type from the component's submenu to set its base and electrode labels at once - more than 180 preamp, power, rectifier, radio, space-charge and Soviet tubes; the AI Assistant can place these tubes by type too</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>'Chassis Panel' is now 'Enclosure' and can draw an exploded view of the whole box; set 'Height' and choose which 'Sides' to unfold</description>
@@ -573,6 +577,10 @@
<changeType>BUG_FIX</changeType>
<description>SPICE netlists listed the pins of transistors with E-C-B pinout in the wrong order</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>BUG_FIX</changeType>
<description>'Tube Socket' variants with electrode labels connected pins that share a label in netlists and AI analysis, e.g. both anodes of a 12AX7 or both heater ends; these variants are replaced by the datasheet</description>
</org.diylc.appframework.update.Change>
</changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url>
</org.diylc.appframework.update.Version>
@@ -87,6 +87,8 @@ public class NodeNameTest {
public void railNameRejectsPinsThatNameNoNet() {
Assert.assertNull(Node.railName("NC_1"));
Assert.assertNull(Node.railName("RSV_2"));
// a tube pin marked "internal connection" must not be used as a tie point
Assert.assertNull(Node.railName("IC"));
Assert.assertNull(Node.railName(null));
}