diff --git a/src/Core/PathDatabase.cs b/src/Core/PathDatabase.cs index ff4e47e..5d7c028 100644 --- a/src/Core/PathDatabase.cs +++ b/src/Core/PathDatabase.cs @@ -125,7 +125,7 @@ namespace NavisworksTransport ) "); - // 5. 路径边表(新增) + // 5. 路径边表(新增SequenceNumber字段) ExecuteNonQuery(@" CREATE TABLE IF NOT EXISTS PathEdges ( Id TEXT PRIMARY KEY, @@ -134,6 +134,7 @@ namespace NavisworksTransport EndPointId TEXT NOT NULL, SegmentType INTEGER NOT NULL, PhysicalLength REAL NOT NULL, + SequenceNumber INTEGER NOT NULL, Ts_X REAL, Ts_Y REAL, Ts_Z REAL, @@ -230,9 +231,9 @@ namespace NavisworksTransport // 保存路径边 if (route.Edges != null && route.Edges.Count > 0) { - foreach (var edge in route.Edges) + for (int i = 0; i < route.Edges.Count; i++) { - SavePathEdge(route.Id, edge); + SavePathEdge(route.Id, route.Edges[i], i); } LogManager.Info($"保存路径: {route.Name},包含 {route.Edges.Count} 个路径边"); @@ -569,15 +570,15 @@ namespace NavisworksTransport /// /// 保存路径边 /// - private void SavePathEdge(string routeId, PathEdge edge) + private void SavePathEdge(string routeId, PathEdge edge, int sequenceNumber) { var sql = @" INSERT INTO PathEdges - (Id, RouteId, StartPointId, EndPointId, SegmentType, PhysicalLength, + (Id, RouteId, StartPointId, EndPointId, SegmentType, PhysicalLength, SequenceNumber, Ts_X, Ts_Y, Ts_Z, Te_X, Te_Y, Te_Z, ArcCenter_X, ArcCenter_Y, ArcCenter_Z, RequestedRadius, ActualRadius, DeflectionAngle, ArcLength) - VALUES (@id, @routeId, @startId, @endId, @segType, @length, + VALUES (@id, @routeId, @startId, @endId, @segType, @length, @seqNum, @tsx, @tsy, @tsz, @tex, @tey, @tez, @acx, @acy, @acz, @reqR, @actR, @angle, @arcLen) @@ -591,6 +592,7 @@ namespace NavisworksTransport cmd.Parameters.AddWithValue("@endId", edge.EndPointId ?? ""); cmd.Parameters.AddWithValue("@segType", (int)edge.SegmentType); cmd.Parameters.AddWithValue("@length", edge.PhysicalLength); + cmd.Parameters.AddWithValue("@seqNum", sequenceNumber); // 直线段:保存起止点坐标 if (edge.SegmentType == PathSegmentType.Straight && edge.SampledPoints != null && edge.SampledPoints.Count >= 2) @@ -679,7 +681,7 @@ namespace NavisworksTransport /// private void LoadPathEdges(PathRoute route) { - var sql = "SELECT * FROM PathEdges WHERE RouteId = @routeId ORDER BY Id"; + var sql = "SELECT * FROM PathEdges WHERE RouteId = @routeId ORDER BY SequenceNumber"; using (var cmd = new SQLiteCommand(sql, _connection)) {