Separate motor nominal vs actual diameter; display nominal but use actual to filter.

Add 32mm motors diameter.
This commit is contained in:
JoePfeiffer 2024-10-18 14:35:17 -06:00
parent 4adbd960e0
commit 8b20f48894
2 changed files with 27 additions and 16 deletions

View File

@ -1721,7 +1721,7 @@ TCMotorSelPan.checkbox.hideUnavailable = Hide motors which are not in regular pr
TCMotorSelPan.btn.details = Show Details TCMotorSelPan.btn.details = Show Details
TCMotorSelPan.btn.filter = Filter Motors TCMotorSelPan.btn.filter = Filter Motors
TCMotorSelPan.MotorSize = Motor Dimensions TCMotorSelPan.MotorSize = Motor Dimensions
TCMotorSelPan.Diameter = Diameter TCMotorSelPan.Diameter = Nominal Diameter
TCMotorSelPan.Length = Length TCMotorSelPan.Length = Length
TCMotorSelPan.MotorMountDimensions = Motor mount dimensions: TCMotorSelPan.MotorMountDimensions = Motor mount dimensions:
TCMotorSelPan.lbl.Search = Search: TCMotorSelPan.lbl.Search = Search:

View File

@ -46,17 +46,28 @@ public abstract class MotorFilterPanel extends JPanel {
private static final Translator trans = Application.getTranslator(); private static final Translator trans = Application.getTranslator();
private static final Hashtable<Integer,JLabel> diameterLabels = new Hashtable<>(); private static final Hashtable<Integer,JLabel> diameterLabels = new Hashtable<>();
private static final double[] motorDiameters = new double[] {
0.0, private static class MotorDiameter {
0.013, double nominal;
0.018, double actual;
0.024,
0.029, MotorDiameter(double _nominal, double _actual) {
0.038, nominal = _nominal;
0.054, actual = _actual;
0.0762, }
0.098, }
1.000 private static final MotorDiameter[] motorDiameters = new MotorDiameter[] {
new MotorDiameter(0.0, 0.0),
new MotorDiameter(0.013, 0.013),
new MotorDiameter(0.018, 0.018),
new MotorDiameter(0.024, 0.024),
new MotorDiameter(0.029, 0.029),
new MotorDiameter(0.032, 0.032),
new MotorDiameter(0.038, 0.0381),
new MotorDiameter(0.054, 0.054),
new MotorDiameter(0.075, 0.0763),
new MotorDiameter(0.098, 0.983),
new MotorDiameter(1.000, 1.000)
}; };
/** /**
@ -66,7 +77,7 @@ public abstract class MotorFilterPanel extends JPanel {
Unit unit = UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit(); Unit unit = UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit();
for( int i = 0; i < motorDiameters.length; i++ ) { for( int i = 0; i < motorDiameters.length; i++ ) {
// Round the labels, because for imperial units, the labels can otherwise overlap // Round the labels, because for imperial units, the labels can otherwise overlap
double diam = unit.toUnit(motorDiameters[i]); double diam = unit.toUnit(motorDiameters[i].nominal);
double diamRounded = unit.round(diam * 10) / 10; // 10 multiplication for 2-decimal precision double diamRounded = unit.round(diam * 10) / 10; // 10 multiplication for 2-decimal precision
diam = unit.fromUnit(diamRounded); diam = unit.fromUnit(diamRounded);
String formatted = unit.toString(diam); String formatted = unit.toString(diam);
@ -272,12 +283,12 @@ public abstract class MotorFilterPanel extends JPanel {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
final int minDiameter = diameterSlider.getValueAt(0); final int minDiameter = diameterSlider.getValueAt(0);
MotorFilterPanel.this.filter.setMinimumDiameter(motorDiameters[minDiameter]); MotorFilterPanel.this.filter.setMinimumDiameter(motorDiameters[minDiameter].actual);
int maxDiameter = diameterSlider.getValueAt(1); int maxDiameter = diameterSlider.getValueAt(1);
if( maxDiameter == motorDiameters.length-1 ) { if( maxDiameter == motorDiameters.length-1 ) {
MotorFilterPanel.this.filter.setMaximumDiameter(null); MotorFilterPanel.this.filter.setMaximumDiameter(null);
} else { } else {
MotorFilterPanel.this.filter.setMaximumDiameter(motorDiameters[maxDiameter]); MotorFilterPanel.this.filter.setMaximumDiameter(motorDiameters[maxDiameter].actual);
} }
onSelectionChanged(); onSelectionChanged();
} }
@ -396,7 +407,7 @@ public abstract class MotorFilterPanel extends JPanel {
// find the next largest diameter // find the next largest diameter
int i; int i;
for( i =0; i < motorDiameters.length; i++ ) { for( i =0; i < motorDiameters.length; i++ ) {
if ( mountDiameter < motorDiameters[i] - 0.0005 ) { if ( mountDiameter < motorDiameters[i].actual - 0.0005 ) {
break; break;
} }
} }