From 96bb51807de86e1ff74b7d989e8b484d2443a463 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 7 Aug 2026 11:49:38 +0200 Subject: [PATCH] Rearrange graph --- PamhagenSysCtrl/Helpers/PamhagenGraph.cs | 35 ++++++++++--------- .../Helpers/Pipeline/CenterValve.cs | 3 +- .../Helpers/Pipeline/HeatExchanger.cs | 1 + PamhagenSysCtrl/Helpers/Pipeline/Valve.cs | 9 ++--- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/PamhagenSysCtrl/Helpers/PamhagenGraph.cs b/PamhagenSysCtrl/Helpers/PamhagenGraph.cs index e9e976f..e199591 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenGraph.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenGraph.cs @@ -34,6 +34,7 @@ namespace PamhagenSysCtrl.Helpers { double wtX = ltg1X - 180; double wt2Y = 225; double wt1Y = wt2Y + 135; + double x1X = wtX + 40; double t1X = 735; double t2X = t1X + 80; double t3X = t2X + 80; @@ -86,9 +87,9 @@ namespace PamhagenSysCtrl.Helpers { CreatePipe(x2, v3); var x3 = new PipeJoin(mw1X, mpY + 100); - var x4 = new PipeJoin(mw1X, ltg1Y); + var x4 = new PipeJoin(x1X, ltg1Y); var x5 = new PipeJoin(mw2X, mpY + 130); - var x6 = new PipeJoin(mw2X, ltg2Y); + var x6 = new PipeJoin(x1X - 30, ltg2Y); CreatePipe(v1, x3, true); CreatePipe(v3, x3, true); @@ -97,14 +98,14 @@ namespace PamhagenSysCtrl.Helpers { CreatePipe(v4, x5, true); CreatePipe(x5, x6, true); - var v5 = CreateValve(5, mw1X + 50, ltg1Y); - var v6 = CreateValve(6, mw1X, ltg2Y + 40); - var v7 = CreateValve(7, (mw2X + mw1X) / 2, ltg2Y); - var v8 = CreateValve(8, mw2X, ltg2Y + 40); + var v5 = CreateValve(5, x1X + 30, ltg1Y); + var v6 = CreateValve(6, x1X + 30, ltg2Y + 40); + var v7 = CreateValve(7, x1X + 30, ltg2Y); + var v8 = CreateValve(8, x1X - 30, ltg2Y + 40); var v9 = CreateValve(9, ltg2X, 500); CreatePipe(x4, v5); - CreatePipe(x4, v6); + CreatePipe(x4, v6, true); CreatePipe(x6, v7); CreatePipe(x6, v8); CreatePipe(v7, v9); @@ -346,20 +347,20 @@ namespace PamhagenSysCtrl.Helpers { var press2 = new Press("Presse 2", pr2X, prY, 15000, () => FillState.Unknown); var v50 = CreateValve(50, pr2cX + 30, 580); var v51 = CreateValve(51, pr1cX - 30, 580); - var v52 = CreateValve(52, pr1cX - 30, 640); - var v53 = CreateValve(53, pr2cX + 30, 640); + var v52 = CreateValve(52, pr1cX - 30, 610); + var v53 = CreateValve(53, pr2cX + 30, 610); var v54 = CreateValve(54, pr2cX + 30, 550); var v55 = CreateValve(55, pr1cX - 30, 550); - var v56 = CreateValve(56, pr1cX - 30, 610); - var v57 = CreateValve(57, pr2cX + 30, 610); + var v56 = CreateValve(56, pr1cX - 30, 640); + var v57 = CreateValve(57, pr2cX + 30, 640); var xp1 = new PipeJoin(pr1cX - 70, 580); - var xp2 = new PipeJoin(pr1cX - 70, 640); + var xp2 = new PipeJoin(pr1cX - 70, 610); var xp3 = new PipeJoin(pr2cX + 70, 550); - var xp4 = new PipeJoin(pr2cX + 70, 610); + var xp4 = new PipeJoin(pr2cX + 70, 640); var xp5 = new PipeJoin(pr1cX, 580); - var xp6 = new PipeJoin(pr1cX, 640); + var xp6 = new PipeJoin(pr1cX, 610); var xp7 = new PipeJoin(pr2cX, 550); - var xp8 = new PipeJoin(pr2cX, 610); + var xp8 = new PipeJoin(pr2cX, 640); CreatePipe(v6, xp1, true); CreatePipe(v8, xp2, true); @@ -393,8 +394,8 @@ namespace PamhagenSysCtrl.Helpers { CreateInlet(zv2, press2, true); } - protected static Valve CreateValve(int n, double x, double y) { - return new(n, x, y, () => App.Plant?.IsValveOpen(n) ?? false, () => App.Plant?.WantValveOpen(n) ?? false); + protected Valve CreateValve(int n, double x, double y) { + return new(n, x, y, () => App.Plant?.IsValveOpen(n) ?? false, (v) => SelectedPaths.Any(p => p.Hops.Any(h => h.Node == v))); } protected static Tank CreateTank(int n, double x, double y, int capacity) { diff --git a/PamhagenSysCtrl/Helpers/Pipeline/CenterValve.cs b/PamhagenSysCtrl/Helpers/Pipeline/CenterValve.cs index 3a0e2ee..9f7f360 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/CenterValve.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/CenterValve.cs @@ -48,8 +48,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { Height = DIAMETER, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center, + SnapsToDevicePixels = true, }; - _text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2); + _text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2 + 0.5); _text.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2 + 5.5); canvas.Children.Add(_circle); canvas.Children.Add(_text); diff --git a/PamhagenSysCtrl/Helpers/Pipeline/HeatExchanger.cs b/PamhagenSysCtrl/Helpers/Pipeline/HeatExchanger.cs index 074773e..fd210fe 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/HeatExchanger.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/HeatExchanger.cs @@ -41,6 +41,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center, RenderTransform = new RotateTransform(270), + SnapsToDevicePixels = true, }; _rect.SetValue(Canvas.LeftProperty, CenterX - WIDTH / 2); _rect.SetValue(Canvas.TopProperty, CenterY - HEIGHT / 2); diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs b/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs index d6908eb..f81aeae 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs @@ -16,17 +16,17 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public bool IsLocked { get; set; } public bool IsOpen => CallbackIsOpen(); - public bool WantOpen => CallbackWantOpen(); + public bool WantOpen => CallbackWantOpen(this); public ISet Inputs { get; init; } public ISet Outputs { get; init; } protected Func CallbackIsOpen; - protected Func CallbackWantOpen; + protected Func CallbackWantOpen; private Shape? _circle; private TextBlock? _text; - public Valve(int nr, double x, double y, Func cbOpen, Func cbWant) { + public Valve(int nr, double x, double y, Func cbOpen, Func cbWant) { CenterX = x; CenterY = y; Nr = nr; @@ -53,8 +53,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { Height = DIAMETER, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center, + SnapsToDevicePixels = true, }; - _text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2); + _text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2 + 0.5); _text.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2 + 5.5); canvas.Children.Add(_circle); canvas.Children.Add(_text);