Merge pull request #2579 from JoePfeiffer/fix-2569

Separate motor nominal vs actual diameter
This commit is contained in:
Joe Pfeiffer 2024-10-20 06:02:58 -06:00 committed by GitHub
commit 1d6b4359fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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.075, }
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;
} }
} }