From 0dd878d1f41dab20a98945aa0c94a432a2ce24ce Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Tue, 8 Dec 2020 09:37:34 -0700 Subject: [PATCH] Calculate fintab height after calculating length and position. --- .../gui/configdialog/FinSetConfig.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java index 1c3821b46..87c826186 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java @@ -228,31 +228,29 @@ public abstract class FinSetConfig extends RocketComponentConfig { @Override public void actionPerformed(ActionEvent e) { log.info(Markers.USER_MARKER, "Computing " + component.getComponentName() + " tab height."); - + + double inRad = 0.0; RocketComponent parent = component.getParent(); if (parent instanceof Coaxial) { try { document.startUndo("Compute fin tabs"); List rings = new ArrayList<>(); - //Do deep recursive iteration + // Do deep recursive iteration to find centering rings and determine + // radius of inner tube Iterator iter = parent.iterator(false); while (iter.hasNext()) { RocketComponent rocketComponent = iter.next(); if (rocketComponent instanceof InnerTube) { InnerTube it = (InnerTube) rocketComponent; if (it.isMotorMount()) { - double depth = ((Coaxial) parent).getOuterRadius() - it.getOuterRadius(); - //Set fin tab depth - if (depth >= 0.0d) { - tabHeightModel.setValue(depth); - tabHeightModel.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit()); - } + inRad = it.getOuterRadius(); } } else if (rocketComponent instanceof CenteringRing) { rings.add((CenteringRing) rocketComponent); } } + //Figure out position and length of the fin tab if (!rings.isEmpty()) { AxialMethod temp = (AxialMethod) em.getSelectedItem(); @@ -263,7 +261,14 @@ public abstract class FinSetConfig extends RocketComponentConfig { //Be nice to the user and set the tab relative position enum back the way they had it. em.setSelectedItem(temp); } - + + // compute tab height + double height = ((Coaxial) parent).getOuterRadius() - inRad; + //Set fin tab height + if (height >= 0.0d) { + tabHeightModel.setValue(height); + tabHeightModel.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit()); + } } finally { document.stopUndo(); }