Warn for zero-thickness shoulder

This commit is contained in:
SiboVG 2023-09-09 14:11:18 +02:00
parent 08c002ed57
commit 74cd0e9636
16 changed files with 28 additions and 15 deletions

View File

@ -1048,7 +1048,7 @@ RocketCompCfg.lbl.Length = Length:
RocketCompCfg.lbl.Thickness = Thickness: RocketCompCfg.lbl.Thickness = Thickness:
RocketCompCfg.checkbox.Endcapped = End capped RocketCompCfg.checkbox.Endcapped = End capped
RocketCompCfg.checkbox.Endcapped.ttip = Caps (closes) the end of the shoulder. RocketCompCfg.checkbox.Endcapped.ttip = Caps (closes) the end of the shoulder.
RocketCompCfg.title.Aftshoulder = Aft shoulder RocketCompCfg.border.Aftshoulder = Aft shoulder
RocketCompCfg.border.Foreshoulder = Fore shoulder RocketCompCfg.border.Foreshoulder = Fore shoulder
RocketCompCfg.tab.Outside = Outside RocketCompCfg.tab.Outside = Outside
RocketCompCfg.tab.Inside = Inside RocketCompCfg.tab.Inside = Inside

View File

@ -951,7 +951,7 @@ RocketCompCfg.lbl.Length = :الطول
RocketCompCfg.lbl.Thickness = :السماكة RocketCompCfg.lbl.Thickness = :السماكة
RocketCompCfg.checkbox.Endcapped = نهاية مغلقة RocketCompCfg.checkbox.Endcapped = نهاية مغلقة
RocketCompCfg.checkbox.Endcapped.ttip = .يغلق نهاية الكتف RocketCompCfg.checkbox.Endcapped.ttip = .يغلق نهاية الكتف
RocketCompCfg.title.Aftshoulder = مؤخرة الكتف RocketCompCfg.border.Aftshoulder = مؤخرة الكتف
RocketCompCfg.border.Foreshoulder = مقدمة الكتف RocketCompCfg.border.Foreshoulder = مقدمة الكتف
!RocketCompCfg.lbl.Length = :الطول !RocketCompCfg.lbl.Length = :الطول
RocketCompCfg.tab.Outside = من الخارج RocketCompCfg.tab.Outside = من الخارج

View File

@ -651,7 +651,7 @@ RocketCompCfg.lbl.Length = D
RocketCompCfg.lbl.Thickness = Tlou\u0161tka: RocketCompCfg.lbl.Thickness = Tlou\u0161tka:
RocketCompCfg.checkbox.Endcapped = Záslepka RocketCompCfg.checkbox.Endcapped = Záslepka
RocketCompCfg.ttip.Endcapped = Zdali je konec ramene zaslepen. RocketCompCfg.ttip.Endcapped = Zdali je konec ramene zaslepen.
RocketCompCfg.title.Aftshoulder = Dr\u017Eák zádi RocketCompCfg.border.Aftshoulder = Dr\u017Eák zádi
RocketCompCfg.border.Foreshoulder = Dr\u017Eák prídi RocketCompCfg.border.Foreshoulder = Dr\u017Eák prídi
!RocketCompCfg.lbl.Length = Délka: !RocketCompCfg.lbl.Length = Délka:

View File

@ -708,7 +708,7 @@ RocketCompCfg.lbl.Length = L
RocketCompCfg.lbl.Thickness = Wandstärke: RocketCompCfg.lbl.Thickness = Wandstärke:
RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende
RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist. RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist.
RocketCompCfg.title.Aftshoulder = Schulter hinten RocketCompCfg.border.Aftshoulder = Schulter hinten
RocketCompCfg.border.Foreshoulder = Schulter vorn RocketCompCfg.border.Foreshoulder = Schulter vorn
!RocketCompCfg.lbl.Length = Length: !RocketCompCfg.lbl.Length = Length:

View File

@ -857,7 +857,7 @@ RocketCompCfg.tab.Figure = Estilo
RocketCompCfg.tab.Override.ttip = Especificar la Masa y el CG del componente. RocketCompCfg.tab.Override.ttip = Especificar la Masa y el CG del componente.
RocketCompCfg.tab.Override = Masa y CG RocketCompCfg.tab.Override = Masa y CG
RocketCompCfg.tab.Comment.ttip = Especifique un comentario para el componente RocketCompCfg.tab.Comment.ttip = Especifique un comentario para el componente
RocketCompCfg.title.Aftshoulder = Trasera del acople RocketCompCfg.border.Aftshoulder = Trasera del acople
RocketCompCfg.ttip.Endcapped = Si el extremo del soporte est\u00e1 truncado. RocketCompCfg.ttip.Endcapped = Si el extremo del soporte est\u00e1 truncado.
RocketCompCfg.lbl.Componentname.ttip = El nombre del componente. RocketCompCfg.lbl.Componentname.ttip = El nombre del componente.

View File

@ -849,7 +849,7 @@ RocketCompCfg.tab.Figure = Forme
RocketCompCfg.tab.Override.ttip = For\u00E7age de la Masse et du CG RocketCompCfg.tab.Override.ttip = For\u00E7age de la Masse et du CG
RocketCompCfg.tab.Override = Forcer la valeur RocketCompCfg.tab.Override = Forcer la valeur
RocketCompCfg.tab.Comment.ttip = Commentaires concernant la pi\u00E8ce RocketCompCfg.tab.Comment.ttip = Commentaires concernant la pi\u00E8ce
RocketCompCfg.title.Aftshoulder = Epaulement arri\u00E8re RocketCompCfg.border.Aftshoulder = Epaulement arri\u00E8re
RocketCompCfg.ttip.Endcapped = Pr\u00E9cise si l'arri\u00E8re du c\u00F4ne est clos. RocketCompCfg.ttip.Endcapped = Pr\u00E9cise si l'arri\u00E8re du c\u00F4ne est clos.
RocketCompCfg.lbl.Componentname.ttip = Le nom de la pi\u00E8ce. RocketCompCfg.lbl.Componentname.ttip = Le nom de la pi\u00E8ce.

View File

@ -709,7 +709,7 @@ RocketCompCfg.lbl.Length = Lunghezza:
RocketCompCfg.lbl.Thickness = Spessore: RocketCompCfg.lbl.Thickness = Spessore:
RocketCompCfg.checkbox.Endcapped = Chiuso RocketCompCfg.checkbox.Endcapped = Chiuso
RocketCompCfg.ttip.Endcapped = Se la fine della spalla e' chiusa. RocketCompCfg.ttip.Endcapped = Se la fine della spalla e' chiusa.
RocketCompCfg.title.Aftshoulder = Spalla posteriore RocketCompCfg.border.Aftshoulder = Spalla posteriore
RocketCompCfg.border.Foreshoulder = Spalla anteriore RocketCompCfg.border.Foreshoulder = Spalla anteriore
!RocketCompCfg.lbl.Length = Lunghezza: !RocketCompCfg.lbl.Length = Lunghezza:

View File

@ -739,7 +739,7 @@ RocketCompCfg.lbl.Length = \u9577\u3055\uFF1A
RocketCompCfg.lbl.Thickness = \u539A\u3055\uFF1A RocketCompCfg.lbl.Thickness = \u539A\u3055\uFF1A
RocketCompCfg.checkbox.Endcapped = \u7AEF\u306B\u30D5\u30BF\u3092\u3059\u308B RocketCompCfg.checkbox.Endcapped = \u7AEF\u306B\u30D5\u30BF\u3092\u3059\u308B
RocketCompCfg.ttip.Endcapped = \u30D5\u30BF\u304C\u3042\u308B\u304B\u3069\u3046\u304B RocketCompCfg.ttip.Endcapped = \u30D5\u30BF\u304C\u3042\u308B\u304B\u3069\u3046\u304B
RocketCompCfg.title.Aftshoulder = \u5F8C\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC RocketCompCfg.border.Aftshoulder = \u5F8C\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC
RocketCompCfg.border.Foreshoulder = \u524D\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC RocketCompCfg.border.Foreshoulder = \u524D\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC
!RocketCompCfg.lbl.Length !RocketCompCfg.lbl.Length

View File

@ -898,7 +898,7 @@ RocketCompCfg.lbl.Length = Lengte:
RocketCompCfg.lbl.Thickness = Dikte: RocketCompCfg.lbl.Thickness = Dikte:
RocketCompCfg.checkbox.Endcapped = Einde afgetopt RocketCompCfg.checkbox.Endcapped = Einde afgetopt
RocketCompCfg.ttip.Endcapped = Of het einde van de schouder is afgedekt. RocketCompCfg.ttip.Endcapped = Of het einde van de schouder is afgedekt.
RocketCompCfg.title.Aftshoulder = Achterschouder RocketCompCfg.border.Aftshoulder = Achterschouder
RocketCompCfg.border.Foreshoulder = Voorschouder RocketCompCfg.border.Foreshoulder = Voorschouder
!RocketCompCfg.lbl.Length = Lengte: !RocketCompCfg.lbl.Length = Lengte:
RocketCompCfg.tab.Outside = Buitenkant RocketCompCfg.tab.Outside = Buitenkant

View File

@ -653,7 +653,7 @@ update.dlg.latestVersion = Korzystasz z najnowszej wersji OpenRocket: %s.
RocketCompCfg.lbl.Thickness = Grubo\u015B\u0107: RocketCompCfg.lbl.Thickness = Grubo\u015B\u0107:
RocketCompCfg.checkbox.Endcapped = Zasklepiony koniec RocketCompCfg.checkbox.Endcapped = Zasklepiony koniec
RocketCompCfg.ttip.Endcapped = Czy koniec wpustu jest zasklepiony. RocketCompCfg.ttip.Endcapped = Czy koniec wpustu jest zasklepiony.
RocketCompCfg.title.Aftshoulder = Wpust tylny RocketCompCfg.border.Aftshoulder = Wpust tylny
RocketCompCfg.border.Foreshoulder = Wpust przedni RocketCompCfg.border.Foreshoulder = Wpust przedni
!RocketCompCfg.lbl.Length !RocketCompCfg.lbl.Length

View File

@ -832,7 +832,7 @@ RocketCompCfg.tab.Figure = Figura
RocketCompCfg.tab.Override.ttip = Op\u00e7\u00f5es de modifica\u00e7\u00e3o de massa e CG RocketCompCfg.tab.Override.ttip = Op\u00e7\u00f5es de modifica\u00e7\u00e3o de massa e CG
RocketCompCfg.tab.Override = Modificar RocketCompCfg.tab.Override = Modificar
RocketCompCfg.tab.Comment.ttip = Especifique um coment\u00e1rio para o componente RocketCompCfg.tab.Comment.ttip = Especifique um coment\u00e1rio para o componente
RocketCompCfg.title.Aftshoulder = Ressalto traseiro RocketCompCfg.border.Aftshoulder = Ressalto traseiro
RocketCompCfg.ttip.Endcapped = Quando a extremidade do ressalto \u00e9 limitada. RocketCompCfg.ttip.Endcapped = Quando a extremidade do ressalto \u00e9 limitada.
RocketCompCfg.lbl.Componentname.ttip = Nome do componente. RocketCompCfg.lbl.Componentname.ttip = Nome do componente.

View File

@ -929,7 +929,7 @@ RocketCompCfg.lbl.Length = \u0414\u043B\u0438\u043D\u0430:
RocketCompCfg.lbl.Thickness = \u0422\u043E\u043B\u0449\u0438\u043D\u0430: RocketCompCfg.lbl.Thickness = \u0422\u043E\u043B\u0449\u0438\u043D\u0430:
RocketCompCfg.checkbox.Endcapped = \u0422\u043E\u0440\u0435\u0446 \u0437\u0430\u0433\u043B\u0443\u0448\u0435\u043D RocketCompCfg.checkbox.Endcapped = \u0422\u043E\u0440\u0435\u0446 \u0437\u0430\u0433\u043B\u0443\u0448\u0435\u043D
RocketCompCfg.checkbox.Endcapped.ttip = \u0417\u0430\u0433\u043B\u0443\u0448\u0430\u0435\u0442 \u0442\u043E\u0440\u0435\u0446 \u043A\u0440\u044B\u0448\u043A\u043E\u0439. RocketCompCfg.checkbox.Endcapped.ttip = \u0417\u0430\u0433\u043B\u0443\u0448\u0430\u0435\u0442 \u0442\u043E\u0440\u0435\u0446 \u043A\u0440\u044B\u0448\u043A\u043E\u0439.
RocketCompCfg.title.Aftshoulder = \u0417\u0430\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F RocketCompCfg.border.Aftshoulder = \u0417\u0430\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F
RocketCompCfg.border.Foreshoulder = \u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F RocketCompCfg.border.Foreshoulder = \u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F
!RocketCompCfg.lbl.Length = \u0414\u043B\u0438\u043D\u0430: !RocketCompCfg.lbl.Length = \u0414\u043B\u0438\u043D\u0430:
RocketCompCfg.tab.Outside = \u0421\u043D\u0430\u0440\u0443\u0436\u0438 RocketCompCfg.tab.Outside = \u0421\u043D\u0430\u0440\u0443\u0436\u0438

View File

@ -811,7 +811,7 @@ RocketCompCfg.lbl.Length = Length:
RocketCompCfg.lbl.Thickness = Thickness: RocketCompCfg.lbl.Thickness = Thickness:
RocketCompCfg.checkbox.Endcapped = End capped RocketCompCfg.checkbox.Endcapped = End capped
RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped. RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.
RocketCompCfg.title.Aftshoulder = Aft shoulder RocketCompCfg.border.Aftshoulder = Aft shoulder
RocketCompCfg.border.Foreshoulder = Fore shoulder RocketCompCfg.border.Foreshoulder = Fore shoulder
!RocketCompCfg.lbl.Length = Length: !RocketCompCfg.lbl.Length = Length:

View File

@ -921,7 +921,7 @@ RocketCompCfg.tab.Figure = \u6837\u5F0F
RocketCompCfg.tab.Override.ttip = \u8D28\u91CF\u53CA\u91CD\u5FC3\u9009\u9879 RocketCompCfg.tab.Override.ttip = \u8D28\u91CF\u53CA\u91CD\u5FC3\u9009\u9879
RocketCompCfg.tab.Override = \u8986\u5199 RocketCompCfg.tab.Override = \u8986\u5199
RocketCompCfg.tab.Comment.ttip = \u7EC4\u4EF6\u6CE8\u91CA RocketCompCfg.tab.Comment.ttip = \u7EC4\u4EF6\u6CE8\u91CA
RocketCompCfg.title.Aftshoulder = \u524D\u8FDE\u63A5\u5904 RocketCompCfg.border.Aftshoulder = \u524D\u8FDE\u63A5\u5904
RocketCompCfg.ttip.Endcapped = \u8FDE\u63A5\u5904\u7EC8\u7AEF\u662F\u5426\u6709\u76D6. RocketCompCfg.ttip.Endcapped = \u8FDE\u63A5\u5904\u7EC8\u7AEF\u662F\u5426\u6709\u76D6.
RocketCompCfg.lbl.Componentname.ttip = \u7EC4\u4EF6\u540D\u79F0. RocketCompCfg.lbl.Componentname.ttip = \u7EC4\u4EF6\u540D\u79F0.

View File

@ -9,11 +9,13 @@ import net.sf.openrocket.file.wavefrontobj.ObjUtils;
import net.sf.openrocket.file.wavefrontobj.export.shapes.CylinderExporter; import net.sf.openrocket.file.wavefrontobj.export.shapes.CylinderExporter;
import net.sf.openrocket.file.wavefrontobj.export.shapes.DiskExporter; import net.sf.openrocket.file.wavefrontobj.export.shapes.DiskExporter;
import net.sf.openrocket.file.wavefrontobj.export.shapes.TubeExporter; import net.sf.openrocket.file.wavefrontobj.export.shapes.TubeExporter;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.logging.Warning; import net.sf.openrocket.logging.Warning;
import net.sf.openrocket.logging.WarningSet; import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.InstanceContext; import net.sf.openrocket.rocketcomponent.InstanceContext;
import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.Transition;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.Coordinate;
import java.util.ArrayList; import java.util.ArrayList;
@ -22,6 +24,7 @@ import java.util.List;
public class TransitionExporter extends RocketComponentExporter<Transition> { public class TransitionExporter extends RocketComponentExporter<Transition> {
private static final double RADIUS_EPSILON = 1e-4; private static final double RADIUS_EPSILON = 1e-4;
private final int nrOfSides; private final int nrOfSides;
private static final Translator trans = Application.getTranslator();
public TransitionExporter(@NotNull DefaultObj obj, FlightConfiguration config, @NotNull CoordTransform transformer, public TransitionExporter(@NotNull DefaultObj obj, FlightConfiguration config, @NotNull CoordTransform transformer,
Transition component, String groupName, ObjUtils.LevelOfDetail LOD, WarningSet warnings) { Transition component, String groupName, ObjUtils.LevelOfDetail LOD, WarningSet warnings) {
@ -56,6 +59,16 @@ public class TransitionExporter extends RocketComponentExporter<Transition> {
(Double.compare(component.getForeRadius(), component.getThickness()) <= 0 && (Double.compare(component.getForeRadius(), component.getThickness()) <= 0 &&
Double.compare(component.getAftRadius(), component.getThickness()) <= 0); Double.compare(component.getAftRadius(), component.getThickness()) <= 0);
// Warn for zero-thickness shoulders
if (hasForeShoulder && Double.compare(component.getForeShoulderThickness(), 0) == 0) {
warnings.add(Warning.OBJ_ZERO_THICKNESS, component.getName() +
" (" + trans.get("RocketCompCfg.border.Foreshoulder") + ")");
}
if (hasAftShoulder && Double.compare(component.getAftShoulderThickness(), 0) == 0) {
warnings.add(Warning.OBJ_ZERO_THICKNESS, component.getName() +
" (" + trans.get("RocketCompCfg.border.Aftshoulder") + ")");
}
final List<Integer> outsideForeRingVertices = new ArrayList<>(); final List<Integer> outsideForeRingVertices = new ArrayList<>();
final List<Integer> outsideAftRingVertices = new ArrayList<>(); final List<Integer> outsideAftRingVertices = new ArrayList<>();
final List<Integer> insideForeRingVertices = new ArrayList<>(); final List<Integer> insideForeRingVertices = new ArrayList<>();

View File

@ -836,7 +836,7 @@ public class RocketComponentConfig extends JPanel {
sub.setBorder(null); sub.setBorder(null);
} else { } else {
//// Aft shoulder //// Aft shoulder
sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.title.Aftshoulder"))); sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.border.Aftshoulder")));
} }