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..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 @@ -99,7 +99,7 @@ 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) return scale > BigDecimal.ZERO ? scale : BigDecimal.ONE