diff --git a/BuildSignAndCreateSetup.bat b/BuildSignAndCreateSetup.bat index 295c04e8..afe66987 100644 --- a/BuildSignAndCreateSetup.bat +++ b/BuildSignAndCreateSetup.bat @@ -3,7 +3,7 @@ cls set DMS_VERSION_MAJOR=14 set DMS_VERSION_MINOR=14 -set DMS_VERSION_PATCH=0 +set DMS_VERSION_PATCH=1 set geodms_rootdir=%cd% diff --git a/geo/dll/src/BoostGeometry.cpp b/geo/dll/src/BoostGeometry.cpp index dd85442d..8cc207fa 100644 --- a/geo/dll/src/BoostGeometry.cpp +++ b/geo/dll/src/BoostGeometry.cpp @@ -14,6 +14,7 @@ #include "mci/ValueClass.h" #include "mci/ValueWrap.h" #include "utl/TypeListOper.h" +#include "xct/DmsException.h" #include "ParallelTiles.h" @@ -939,43 +940,50 @@ struct BufferSinglePolygonOperator : public AbstrBufferOperator while (true) { - if (!e2IsVoid) - bufferDistance = bufDistData[i]; - if (!e3IsVoid) - pointsPerCircle = ppcData[i]; - boost::geometry::strategy::buffer::distance_symmetric distStrategy(bufferDistance); - boost::geometry::strategy::buffer::join_round joinStrategy(pointsPerCircle); - boost::geometry::strategy::buffer::end_round endStrategy(pointsPerCircle); - boost::geometry::strategy::buffer::point_circle circleStrategy(pointsPerCircle); - boost::geometry::strategy::buffer::side_straight sideStrategy; - - std::vector ringClosurePoints; - boost::geometry::model::ring helperRing; + try { + if (!e2IsVoid) + bufferDistance = bufDistData[i]; + if (!e3IsVoid) + pointsPerCircle = ppcData[i]; + boost::geometry::strategy::buffer::distance_symmetric distStrategy(bufferDistance); + boost::geometry::strategy::buffer::join_round joinStrategy(pointsPerCircle); + boost::geometry::strategy::buffer::end_round endStrategy(pointsPerCircle); + boost::geometry::strategy::buffer::point_circle circleStrategy(pointsPerCircle); + boost::geometry::strategy::buffer::side_straight sideStrategy; + + std::vector ringClosurePoints; + boost::geometry::model::ring helperRing; + + using bg_polygon_t = boost::geometry::model::polygon; + bg_polygon_t currPoly; + boost::geometry::model::multi_polygon resMP; + + nextPointWithSameResRing: + + assign_polygon(currPoly, polyData[i], true, helperRing); + if (!currPoly.outer().empty()) + { - using bg_polygon_t = boost::geometry::model::polygon; - bg_polygon_t currPoly; - boost::geometry::model::multi_polygon resMP; + auto lb = MaxValue(); + MakeLowerBound(lb, currPoly); + move(currPoly, -lb); - nextPointWithSameResRing: + boost::geometry::buffer(currPoly, resMP + , distStrategy, sideStrategy, joinStrategy, endStrategy, circleStrategy); + move(resMP, lb); - assign_polygon(currPoly, polyData[i], true, helperRing); - if (!currPoly.outer().empty()) + store_multi_polygon(resData[i], resMP, ringClosurePoints); + } + if (++i == n) + break; + if (e2IsVoid && e3IsVoid) + goto nextPointWithSameResRing; + } + catch (DmsException& e) { - - auto lb = MaxValue(); - MakeLowerBound(lb, currPoly); - move(currPoly, -lb); - - boost::geometry::buffer(currPoly, resMP - , distStrategy, sideStrategy, joinStrategy, endStrategy, circleStrategy); - move(resMP, lb); - - store_multi_polygon(resData[i], resMP, ringClosurePoints); + e.AsErrMsg()->TellExtraF("BufferSinglePolygonOperator::Calculate tile %d, offset %d", t, i); + throw; } - if (++i == n) - break; - if (e2IsVoid && e3IsVoid) - goto nextPointWithSameResRing; } } }; @@ -1078,10 +1086,18 @@ struct OuterSingePolygonOperator : public AbstrOuterOperator for (SizeT i = 0, n = polyData.size(); i != n; ++i) { - assign_polygon(currPoly, polyData[i], false, helperRing); + try { + assign_polygon(currPoly, polyData[i], false, helperRing); + + if (!currPoly.outer().empty()) + store_ring(resData[i], currPoly.outer()); + } + catch (DmsException& e) + { + e.AsErrMsg()->TellExtraF("OuterSingePolygonOperator::Calculate tile %d, offset %d", t, i); + throw; + } - if (!currPoly.outer().empty()) - store_ring(resData[i], currPoly.outer()); } } }; diff --git a/rtc/dll/src/RtcGeneratedVersion.h b/rtc/dll/src/RtcGeneratedVersion.h index 919fa270..f2102073 100644 --- a/rtc/dll/src/RtcGeneratedVersion.h +++ b/rtc/dll/src/RtcGeneratedVersion.h @@ -1,3 +1,3 @@ #define DMS_VERSION_MAJOR 14 #define DMS_VERSION_MINOR 14 -#define DMS_VERSION_PATCH 0 +#define DMS_VERSION_PATCH 1 diff --git a/tic/dll/src/Xml/XmlTreeOut.cpp b/tic/dll/src/Xml/XmlTreeOut.cpp index 2ae25b82..e386e6fe 100644 --- a/tic/dll/src/Xml/XmlTreeOut.cpp +++ b/tic/dll/src/Xml/XmlTreeOut.cpp @@ -417,7 +417,7 @@ const TreeItem* GetExprOrSourceDescrAndReturnSourceItem(OutStreamBase& stream, c if (!ti->HasCalculator()) { const TreeItem* storageParent = ti->GetStorageParent(false); - if (storageParent) + if (storageParent && (IsUnit(ti) || IsDataItem(ti))) { const AbstrStorageManager* sm = storageParent->GetStorageManager(); dms_assert(sm); // because of POSTCONDITION of GetStorageParant