fix: terminate automation commands through AutoCAD queue
This commit is contained in:
@@ -268,13 +268,13 @@ internal sealed class FirstLimitedApplyAutomationCoordinator
|
|||||||
{
|
{
|
||||||
if (IsTerminal || document is null) return;
|
if (IsTerminal || document is null) return;
|
||||||
transitions.Add("CommandQueued:" + command);
|
transitions.Add("CommandQueued:" + command);
|
||||||
document.SendStringToExecute(command + " ", true, false, false);
|
document.SendStringToExecute(command + "\n", true, false, false);
|
||||||
}
|
}
|
||||||
private void QueueReadinessBarrier()
|
private void QueueReadinessBarrier()
|
||||||
{
|
{
|
||||||
if (IsTerminal || document is null) return;
|
if (IsTerminal || document is null) return;
|
||||||
transitions.Add("ReadinessBarrierQueued");
|
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)
|
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;
|
// Persist the exit boundary before handing control back to AutoCAD;
|
||||||
// process termination can otherwise prevent the final evidence flush.
|
// process termination can otherwise prevent the final evidence flush.
|
||||||
TryWriteEvidence(functionalCompleted, null);
|
TryWriteEvidence(functionalCompleted, null);
|
||||||
exitDocument.SendStringToExecute("_.QUIT _N ", true, false, false);
|
exitDocument.SendStringToExecute("_.QUIT _N\n", true, false, false);
|
||||||
document = null;
|
document = null;
|
||||||
automationOpenedDocuments.Clear();
|
automationOpenedDocuments.Clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public sealed class FoundationTests
|
|||||||
Assert.Contains("RequestControlledExit", source);
|
Assert.Contains("RequestControlledExit", source);
|
||||||
Assert.Contains("AcadApplication.Idle += OnExitIdle", source);
|
Assert.Contains("AcadApplication.Idle += OnExitIdle", source);
|
||||||
Assert.Contains("QuitDispatchAttempted", 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);
|
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 source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||||
var exit = source[source.IndexOf("private void DispatchNativeQuit", StringComparison.Ordinal)..];
|
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("EvidenceFlushed = evidenceFlushed", source);
|
||||||
Assert.Contains("CommandsCompleted", source);
|
Assert.Contains("CommandsCompleted", source);
|
||||||
Assert.Contains("InspectorsCompleted", source);
|
Assert.Contains("InspectorsCompleted", source);
|
||||||
|
|||||||
Reference in New Issue
Block a user