From a7a2f4acc9368697c21b0b197e8e5cf65105a632 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sat, 9 Sep 2023 22:23:33 +0200 Subject: [PATCH] Don't export transition inside when filled due to shoulder --- .../export/components/TransitionExporter.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/core/src/net/sf/openrocket/file/wavefrontobj/export/components/TransitionExporter.java b/core/src/net/sf/openrocket/file/wavefrontobj/export/components/TransitionExporter.java index b49ebcd66..537afaa33 100644 --- a/core/src/net/sf/openrocket/file/wavefrontobj/export/components/TransitionExporter.java +++ b/core/src/net/sf/openrocket/file/wavefrontobj/export/components/TransitionExporter.java @@ -49,15 +49,20 @@ public class TransitionExporter extends RocketComponentExporter { private void generateMesh(InstanceContext context) { int startIdx = obj.getNumVertices(); - final boolean hasForeShoulder = Double.compare(component.getForeShoulderRadius(), 0) > 0 - && Double.compare(component.getForeShoulderLength(), 0) > 0 + final boolean hasForeShoulder = Double.compare(component.getForeShoulderLength(), 0) > 0 && component.getForeRadius() > 0; - final boolean hasAftShoulder = Double.compare(component.getAftShoulderRadius(), 0) > 0 - && Double.compare(component.getAftShoulderLength(), 0) > 0 + final boolean hasAftShoulder = Double.compare(component.getAftShoulderLength(), 0) > 0 && component.getAftRadius() > 0; + + final boolean foreSmallerThickn = Double.compare(component.getForeRadius(), component.getThickness()) <= 0; + final boolean aftSmallerThickn = Double.compare(component.getAftRadius(), component.getThickness()) <= 0; + final boolean foreShoulderCapped = hasForeShoulder && component.isForeShoulderCapped(); + final boolean aftShoulderCapped = hasAftShoulder && component.isAftShoulderCapped(); final boolean isFilled = component.isFilled() || - (Double.compare(component.getForeRadius(), component.getThickness()) <= 0 && - Double.compare(component.getAftRadius(), component.getThickness()) <= 0); + (foreSmallerThickn && aftSmallerThickn) || + (foreSmallerThickn && aftShoulderCapped) || + (aftSmallerThickn && foreShoulderCapped) || + (foreShoulderCapped && aftShoulderCapped); // Warn for zero-thickness shoulders if (hasForeShoulder && Double.compare(component.getForeShoulderThickness(), 0) == 0) {