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.filter = Filter Motors
TCMotorSelPan.MotorSize = Motor Dimensions
TCMotorSelPan.Diameter = Diameter
TCMotorSelPan.Diameter = Nominal Diameter
TCMotorSelPan.Length = Length
TCMotorSelPan.MotorMountDimensions = Motor mount dimensions:
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 Hashtable<Integer,JLabel> diameterLabels = new Hashtable<>();
private static final double[] motorDiameters = new double[] {
0.0,
0.013,
0.018,
0.024,
0.029,
0.038,
0.054,
0.0762,
0.098,
1.000
private static class MotorDiameter {
double nominal;
double actual;
MotorDiameter(double _nominal, double _actual) {
nominal = _nominal;
actual = _actual;
}
}
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();
for( int i = 0; i < motorDiameters.length; i++ ) {
// 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
diam = unit.fromUnit(diamRounded);
String formatted = unit.toString(diam);
@ -272,12 +283,12 @@ public abstract class MotorFilterPanel extends JPanel {
@Override
public void stateChanged(ChangeEvent e) {
final int minDiameter = diameterSlider.getValueAt(0);
MotorFilterPanel.this.filter.setMinimumDiameter(motorDiameters[minDiameter]);
MotorFilterPanel.this.filter.setMinimumDiameter(motorDiameters[minDiameter].actual);
int maxDiameter = diameterSlider.getValueAt(1);
if( maxDiameter == motorDiameters.length-1 ) {
MotorFilterPanel.this.filter.setMaximumDiameter(null);
} else {
MotorFilterPanel.this.filter.setMaximumDiameter(motorDiameters[maxDiameter]);
MotorFilterPanel.this.filter.setMaximumDiameter(motorDiameters[maxDiameter].actual);
}
onSelectionChanged();
}
@ -396,7 +407,7 @@ public abstract class MotorFilterPanel extends JPanel {
// find the next largest diameter
int i;
for( i =0; i < motorDiameters.length; i++ ) {
if ( mountDiameter < motorDiameters[i] - 0.0005 ) {
if ( mountDiameter < motorDiameters[i].actual - 0.0005 ) {
break;
}
}