Rearrange graph
Test / Run tests (push) Successful in 15s

This commit is contained in:
2026-08-07 11:49:38 +02:00
parent 4f8c401cae
commit 96bb51807d
4 changed files with 26 additions and 22 deletions
+18 -17
View File
@@ -34,6 +34,7 @@ namespace PamhagenSysCtrl.Helpers {
double wtX = ltg1X - 180; double wtX = ltg1X - 180;
double wt2Y = 225; double wt2Y = 225;
double wt1Y = wt2Y + 135; double wt1Y = wt2Y + 135;
double x1X = wtX + 40;
double t1X = 735; double t1X = 735;
double t2X = t1X + 80; double t2X = t1X + 80;
double t3X = t2X + 80; double t3X = t2X + 80;
@@ -86,9 +87,9 @@ namespace PamhagenSysCtrl.Helpers {
CreatePipe(x2, v3); CreatePipe(x2, v3);
var x3 = new PipeJoin(mw1X, mpY + 100); 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 x5 = new PipeJoin(mw2X, mpY + 130);
var x6 = new PipeJoin(mw2X, ltg2Y); var x6 = new PipeJoin(x1X - 30, ltg2Y);
CreatePipe(v1, x3, true); CreatePipe(v1, x3, true);
CreatePipe(v3, x3, true); CreatePipe(v3, x3, true);
@@ -97,14 +98,14 @@ namespace PamhagenSysCtrl.Helpers {
CreatePipe(v4, x5, true); CreatePipe(v4, x5, true);
CreatePipe(x5, x6, true); CreatePipe(x5, x6, true);
var v5 = CreateValve(5, mw1X + 50, ltg1Y); var v5 = CreateValve(5, x1X + 30, ltg1Y);
var v6 = CreateValve(6, mw1X, ltg2Y + 40); var v6 = CreateValve(6, x1X + 30, ltg2Y + 40);
var v7 = CreateValve(7, (mw2X + mw1X) / 2, ltg2Y); var v7 = CreateValve(7, x1X + 30, ltg2Y);
var v8 = CreateValve(8, mw2X, ltg2Y + 40); var v8 = CreateValve(8, x1X - 30, ltg2Y + 40);
var v9 = CreateValve(9, ltg2X, 500); var v9 = CreateValve(9, ltg2X, 500);
CreatePipe(x4, v5); CreatePipe(x4, v5);
CreatePipe(x4, v6); CreatePipe(x4, v6, true);
CreatePipe(x6, v7); CreatePipe(x6, v7);
CreatePipe(x6, v8); CreatePipe(x6, v8);
CreatePipe(v7, v9); CreatePipe(v7, v9);
@@ -346,20 +347,20 @@ namespace PamhagenSysCtrl.Helpers {
var press2 = new Press("Presse 2", pr2X, prY, 15000, () => FillState.Unknown); var press2 = new Press("Presse 2", pr2X, prY, 15000, () => FillState.Unknown);
var v50 = CreateValve(50, pr2cX + 30, 580); var v50 = CreateValve(50, pr2cX + 30, 580);
var v51 = CreateValve(51, pr1cX - 30, 580); var v51 = CreateValve(51, pr1cX - 30, 580);
var v52 = CreateValve(52, pr1cX - 30, 640); var v52 = CreateValve(52, pr1cX - 30, 610);
var v53 = CreateValve(53, pr2cX + 30, 640); var v53 = CreateValve(53, pr2cX + 30, 610);
var v54 = CreateValve(54, pr2cX + 30, 550); var v54 = CreateValve(54, pr2cX + 30, 550);
var v55 = CreateValve(55, pr1cX - 30, 550); var v55 = CreateValve(55, pr1cX - 30, 550);
var v56 = CreateValve(56, pr1cX - 30, 610); var v56 = CreateValve(56, pr1cX - 30, 640);
var v57 = CreateValve(57, pr2cX + 30, 610); var v57 = CreateValve(57, pr2cX + 30, 640);
var xp1 = new PipeJoin(pr1cX - 70, 580); 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 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 xp5 = new PipeJoin(pr1cX, 580);
var xp6 = new PipeJoin(pr1cX, 640); var xp6 = new PipeJoin(pr1cX, 610);
var xp7 = new PipeJoin(pr2cX, 550); var xp7 = new PipeJoin(pr2cX, 550);
var xp8 = new PipeJoin(pr2cX, 610); var xp8 = new PipeJoin(pr2cX, 640);
CreatePipe(v6, xp1, true); CreatePipe(v6, xp1, true);
CreatePipe(v8, xp2, true); CreatePipe(v8, xp2, true);
@@ -393,8 +394,8 @@ namespace PamhagenSysCtrl.Helpers {
CreateInlet(zv2, press2, true); CreateInlet(zv2, press2, true);
} }
protected static Valve CreateValve(int n, double x, double y) { protected Valve CreateValve(int n, double x, double y) {
return new(n, x, y, () => App.Plant?.IsValveOpen(n) ?? false, () => App.Plant?.WantValveOpen(n) ?? false); 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) { protected static Tank CreateTank(int n, double x, double y, int capacity) {
@@ -48,8 +48,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
Height = DIAMETER, Height = DIAMETER,
TextAlignment = TextAlignment.Center, TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.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); _text.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2 + 5.5);
canvas.Children.Add(_circle); canvas.Children.Add(_circle);
canvas.Children.Add(_text); canvas.Children.Add(_text);
@@ -41,6 +41,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
TextAlignment = TextAlignment.Center, TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
RenderTransform = new RotateTransform(270), RenderTransform = new RotateTransform(270),
SnapsToDevicePixels = true,
}; };
_rect.SetValue(Canvas.LeftProperty, CenterX - WIDTH / 2); _rect.SetValue(Canvas.LeftProperty, CenterX - WIDTH / 2);
_rect.SetValue(Canvas.TopProperty, CenterY - HEIGHT / 2); _rect.SetValue(Canvas.TopProperty, CenterY - HEIGHT / 2);
+5 -4
View File
@@ -16,17 +16,17 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
public bool IsLocked { get; set; } public bool IsLocked { get; set; }
public bool IsOpen => CallbackIsOpen(); public bool IsOpen => CallbackIsOpen();
public bool WantOpen => CallbackWantOpen(); public bool WantOpen => CallbackWantOpen(this);
public ISet<IEdge> Inputs { get; init; } public ISet<IEdge> Inputs { get; init; }
public ISet<IEdge> Outputs { get; init; } public ISet<IEdge> Outputs { get; init; }
protected Func<bool> CallbackIsOpen; protected Func<bool> CallbackIsOpen;
protected Func<bool> CallbackWantOpen; protected Func<Valve, bool> CallbackWantOpen;
private Shape? _circle; private Shape? _circle;
private TextBlock? _text; private TextBlock? _text;
public Valve(int nr, double x, double y, Func<bool> cbOpen, Func<bool> cbWant) { public Valve(int nr, double x, double y, Func<bool> cbOpen, Func<Valve, bool> cbWant) {
CenterX = x; CenterX = x;
CenterY = y; CenterY = y;
Nr = nr; Nr = nr;
@@ -53,8 +53,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
Height = DIAMETER, Height = DIAMETER,
TextAlignment = TextAlignment.Center, TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.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); _text.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2 + 5.5);
canvas.Children.Add(_circle); canvas.Children.Add(_circle);
canvas.Children.Add(_text); canvas.Children.Add(_text);