From c633107273c8f1aad29bd8b331b367ba7d93cb24 Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 4 Aug 2026 07:37:56 +0300 Subject: [PATCH] fix: terminate automation commands through AutoCAD queue --- .../PRecAnnot.Plant3D2026/FirstLimitedApplyAutomation.cs | 6 +++--- .../tests/PRecAnnot.Core.Tests/FoundationTests.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/FirstLimitedApplyAutomation.cs b/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/FirstLimitedApplyAutomation.cs index df0cb21..df58e30 100644 --- a/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/FirstLimitedApplyAutomation.cs +++ b/Plant3D2026/P_Rec_Annot/src/PRecAnnot.Plant3D2026/FirstLimitedApplyAutomation.cs @@ -268,13 +268,13 @@ internal sealed class FirstLimitedApplyAutomationCoordinator { if (IsTerminal || document is null) return; transitions.Add("CommandQueued:" + command); - document.SendStringToExecute(command + " ", true, false, false); + document.SendStringToExecute(command + "\n", true, false, false); } private void QueueReadinessBarrier() { if (IsTerminal || document is null) return; transitions.Add("ReadinessBarrierQueued"); - document.SendStringToExecute("PHP_REC_AUTOMATION_READY ", true, false, false); + document.SendStringToExecute("PHP_REC_AUTOMATION_READY\n", true, false, false); } private void OnCommandEnded(object sender, CommandEventArgs e) { @@ -396,7 +396,7 @@ internal sealed class FirstLimitedApplyAutomationCoordinator // Persist the exit boundary before handing control back to AutoCAD; // process termination can otherwise prevent the final evidence flush. TryWriteEvidence(functionalCompleted, null); - exitDocument.SendStringToExecute("_.QUIT _N ", true, false, false); + exitDocument.SendStringToExecute("_.QUIT _N\n", true, false, false); document = null; automationOpenedDocuments.Clear(); } diff --git a/Plant3D2026/P_Rec_Annot/tests/PRecAnnot.Core.Tests/FoundationTests.cs b/Plant3D2026/P_Rec_Annot/tests/PRecAnnot.Core.Tests/FoundationTests.cs index 288cc82..f2fd317 100644 --- a/Plant3D2026/P_Rec_Annot/tests/PRecAnnot.Core.Tests/FoundationTests.cs +++ b/Plant3D2026/P_Rec_Annot/tests/PRecAnnot.Core.Tests/FoundationTests.cs @@ -116,7 +116,7 @@ public sealed class FoundationTests Assert.Contains("RequestControlledExit", source); Assert.Contains("AcadApplication.Idle += OnExitIdle", source); Assert.Contains("QuitDispatchAttempted", source); - Assert.Contains("exitDocument.SendStringToExecute(\"_.QUIT _N \", true, false, false);", source); + Assert.Contains("exitDocument.SendStringToExecute(\"_.QUIT _N\\n\", true, false, false);", source); Assert.Contains("var exitDocument = AcadApplication.DocumentManager.MdiActiveDocument;", source); } @@ -186,7 +186,7 @@ public sealed class FoundationTests { var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs")); var exit = source[source.IndexOf("private void DispatchNativeQuit", StringComparison.Ordinal)..]; - Assert.True(exit.IndexOf("TryWriteEvidence(functionalCompleted, null);", StringComparison.Ordinal) < exit.IndexOf("SendStringToExecute(\"_.QUIT _N ", StringComparison.Ordinal)); + Assert.True(exit.IndexOf("TryWriteEvidence(functionalCompleted, null);", StringComparison.Ordinal) < exit.IndexOf("SendStringToExecute(\"_.QUIT _N\\n", StringComparison.Ordinal)); Assert.Contains("EvidenceFlushed = evidenceFlushed", source); Assert.Contains("CommandsCompleted", source); Assert.Contains("InspectorsCompleted", source);