From 1b8b0d20cd23f8a27d2d1f8a512ad0b27adc0c57 Mon Sep 17 00:00:00 2001 From: TruongQuangSB <131350493+TruongQuangSB@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:00:56 +0700 Subject: [PATCH 1/2] Add tolerance to find point on GEO_Kante --- .../geometry/GeoKanteGeometryServiceImpl.java | 5 ++-- .../set/basis/geometry/GEOKanteMetadata.java | 24 +++++++++++++++++++ .../transform/LayoutTransformator.xtend | 8 +++---- .../extensions/BasisObjektExtensions.xtend | 4 ++-- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java index a0cf218178..12ee8d2aa7 100644 --- a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java +++ b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java @@ -410,9 +410,9 @@ public GEOKanteMetadata getGeoKanteAt(final TOP_Kante topKante, final TOP_Knoten topKnoten, final BigDecimal distance) { final List geoMetadatas = getGeoKanteMetadatas( topKante, topKnoten); + final Optional result = geoMetadatas.stream() - .filter(md -> md.getStart().compareTo(distance) <= 0 - && md.getEnd().compareTo(distance) >= 0) + .filter(md -> md.isIntersection(distance)) .findFirst(); return result.orElse(null); } @@ -644,7 +644,6 @@ private Pair getClosestProjection( private List getGeoKantenMetadata( final Basis_Objekt geoArt, final GEO_Knoten startKnoten, final List bereichObjekte) { - final BigDecimal distanceScalingFactor = BasisObjektExtensions .getGeoArtScalingFactor(geoArt); BigDecimal distance = BigDecimal.ZERO; diff --git a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/geometry/GEOKanteMetadata.java b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/geometry/GEOKanteMetadata.java index d38cfd8f01..29a155134b 100644 --- a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/geometry/GEOKanteMetadata.java +++ b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/geometry/GEOKanteMetadata.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.function.Function; +import org.eclipse.set.basis.constants.ToolboxConstants; import org.eclipse.set.model.planpro.Basisobjekte.Bereich_Objekt; import org.eclipse.set.model.planpro.Geodaten.ENUMGEOKoordinatensystem; import org.eclipse.set.model.planpro.Geodaten.GEO_Kante; @@ -329,4 +330,27 @@ public GEOKanteSegment getContainingSegment(final BigDecimal distance) { .findFirst() .orElse(null); } + + /** + * @param pointDistance + * topological position + * @return true, if the point lie on the GEO_Kante + */ + public boolean isIntersection(final BigDecimal pointDistance) { + final BigDecimal tolerant = BigDecimal + .valueOf(ToolboxConstants.TOP_GEO_LENGTH_TOLERANCE); + final BigDecimal distanceToStart = pointDistance.subtract(start); + + if (distanceToStart.compareTo(tolerant) < 0) { + return false; + } + + final BigDecimal distanceToEnd = getEnd().subtract(pointDistance); + + if (distanceToEnd.compareTo(tolerant) < 0) { + return false; + } + + return true; + } } diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/LayoutTransformator.xtend b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/LayoutTransformator.xtend index a9b6cbf986..e1ec204e9f 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/LayoutTransformator.xtend +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/LayoutTransformator.xtend @@ -51,8 +51,8 @@ class LayoutTransformator { val layoutInfo = SiteplanFactory.eINSTANCE.createLayoutinfo layoutInfo.guid = identitaet?.wert layoutInfo.label = bezeichnung?.bezeichnungLageplan?.wert - IDLageplanBlattschnitt.forEach [ - layoutInfo.sheetsCut.add(value.transformSheetCut) + IDLageplanBlattschnitt.map[value].filterNull.forEach [ + layoutInfo.sheetsCut.add(transformSheetCut) ] siteplan.layoutInfo.add(layoutInfo) ] @@ -64,9 +64,9 @@ class LayoutTransformator { result.label = sheetCut?.bezeichnung?.bezLageplanBlattschnitt?.wert?. toString result.polygonDirection.addAll( - sheetCut.polygonzugAusrichtung?.wert?.transformCoordinate) + sheetCut?.polygonzugAusrichtung?.wert?.transformCoordinate) result.polygon.addAll( - sheetCut.polygonzugBlattschnitt?.wert?.transformCoordinate) + sheetCut?.polygonzugBlattschnitt?.wert?.transformCoordinate) return result } diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend index 289e1256ef..7db5c70b1f 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend @@ -99,9 +99,9 @@ class BasisObjektExtensions extends UrObjectExtensions { if (geoLength <= BigDecimal.ZERO || geoArtLength <= BigDecimal.ZERO) { return BigDecimal.ONE } - + val scale = geoLength.divide(geoArtLength, - ToolboxConstants.ROUNDING_TO_PLACE, RoundingMode.HALF_UP) + ToolboxConstants.ROUNDING_TO_PLACE, RoundingMode.DOWN) return scale > BigDecimal.ZERO ? scale : BigDecimal.ONE } From aaff2cb6455622e7a63a11e200ad50e061cd0b6e Mon Sep 17 00:00:00 2001 From: TruongQuangSB <131350493+TruongQuangSB@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:30:08 +0700 Subject: [PATCH 2/2] revert --- .../eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend index 7db5c70b1f..8ca2c14c89 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BasisObjektExtensions.xtend @@ -101,7 +101,7 @@ class BasisObjektExtensions extends UrObjectExtensions { } val scale = geoLength.divide(geoArtLength, - ToolboxConstants.ROUNDING_TO_PLACE, RoundingMode.DOWN) + ToolboxConstants.ROUNDING_TO_PLACE, RoundingMode.HALF_UP) return scale > BigDecimal.ZERO ? scale : BigDecimal.ONE }