From c97f02c5509ef0dbc70bfe87a48a3f2804193b52 Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 4 Aug 2026 14:34:15 +0300 Subject: [PATCH] fix: identify failed Ortho pipe placement boundary --- .../P_Rec_Annot/src/PRecAnnot.Plant3D2026/PlantReadPath.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/PlantReadPath.cs b/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/PlantReadPath.cs index 23f0258..346d822 100644 --- a/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/PlantReadPath.cs +++ b/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/PlantReadPath.cs @@ -479,15 +479,20 @@ internal sealed class PlantViewportMembershipReader private static bool TryReadPipePlacement(MdObjectId sourceId, DataLinksManager dataLinks, out GeometrySnapshot geometry) { geometry = new GeometrySnapshot(); + var stage = "GetDatabase"; try { var openedByQuery = false; var sourceDatabase = sourceId.GetDatabase(false, ref openedByQuery); try { + stage = "StartTransaction"; using var transaction = sourceDatabase.TransactionManager.StartOpenCloseTransaction(); + stage = "MakeAcDbObjectId"; var objectId = dataLinks.MakeAcDbObjectId(sourceId.PrjObjectId, sourceDatabase); + stage = "OpenPipe"; if (transaction.GetObject(objectId, OpenMode.ForRead) is not Pipe pipe) return false; + stage = "TransformStartPoint"; var point = pipe.StartPoint.TransformBy(sourceId.Xform); geometry = new GeometrySnapshot { @@ -503,7 +508,7 @@ internal sealed class PlantViewportMembershipReader } catch (Exception exception) { - RuntimeDiagnostics.Write("OrthoPipePlacementReadFailed", "ERROR", resultStatus: "ORTHO_PIPE_PLACEMENT_UNAVAILABLE", exception: exception); + RuntimeDiagnostics.Write("OrthoPipePlacementReadFailed", "ERROR", resultStatus: "ORTHO_PIPE_PLACEMENT_UNAVAILABLE", exception: exception, details: new Dictionary { ["PlacementStage"] = stage }); return false; } }