@@ -43,9 +43,9 @@ namespace PamhagenSysCtrl.Helpers {
|
|||||||
double t7X = t6X + 80;
|
double t7X = t6X + 80;
|
||||||
double t8X = t7X + 80;
|
double t8X = t7X + 80;
|
||||||
double t9X = t8X + 80;
|
double t9X = t8X + 80;
|
||||||
var prY = 780;
|
var prY = 720;
|
||||||
var pr1X = 750;
|
var pr1X = 730;
|
||||||
var pr2X = 900;
|
var pr2X = 920;
|
||||||
|
|
||||||
var trough = new EntryTrough("Auffangwanne", mw1X + 70, 100, () => App.Plant?.IsTroughAugerActive ?? false);
|
var trough = new EntryTrough("Auffangwanne", mw1X + 70, 100, () => App.Plant?.IsTroughAugerActive ?? false);
|
||||||
Nodes.Add(trough);
|
Nodes.Add(trough);
|
||||||
@@ -339,42 +339,58 @@ namespace PamhagenSysCtrl.Helpers {
|
|||||||
var v49 = CreateValve(49, t4X, tanksY + 220);
|
var v49 = CreateValve(49, t4X, tanksY + 220);
|
||||||
CreatePipe(xv47, v49);
|
CreatePipe(xv47, v49);
|
||||||
|
|
||||||
var press1 = new Press("Presse 1", pr1X, prY, 20000, () => App.Plant?.FillLevelPress1 ?? FillState.Unknown);
|
var prX = (pr1X + pr2X) / 2;
|
||||||
var press2 = new Press("Presse 2", pr2X, prY, 15000, () => App.Plant?.FillLevelPress2 ?? FillState.Unknown);
|
var pr1cX = prX - 15;
|
||||||
var v50 = CreateValve(50, pr1X - 45, prY - 100);
|
var pr2cX = prX + 15;
|
||||||
var v51 = CreateValve(51, pr1X - 15, prY - 100);
|
var press1 = new Press("Presse 1", pr1X, prY, 20000, () => FillState.Unknown);
|
||||||
var v52 = CreateValve(52, pr1X + 15, prY - 100);
|
var press2 = new Press("Presse 2", pr2X, prY, 15000, () => FillState.Unknown);
|
||||||
var v53 = CreateValve(53, pr1X + 45, prY - 100);
|
var v50 = CreateValve(50, pr2cX + 30, 580);
|
||||||
var v54 = CreateValve(54, pr2X - 45, prY - 100);
|
var v51 = CreateValve(51, pr1cX - 30, 580);
|
||||||
var v55 = CreateValve(55, pr2X - 15, prY - 100);
|
var v52 = CreateValve(52, pr1cX - 30, 640);
|
||||||
var v56 = CreateValve(56, pr2X + 15, prY - 100);
|
var v53 = CreateValve(53, pr2cX + 30, 640);
|
||||||
var v57 = CreateValve(57, pr2X + 45, prY - 100);
|
var v54 = CreateValve(54, pr2cX + 30, 550);
|
||||||
var xp1 = new PipeJoin(pr1X - 15, 610);
|
var v55 = CreateValve(55, pr1cX - 30, 550);
|
||||||
var xp2 = new PipeJoin(pr1X + 15, 640);
|
var v56 = CreateValve(56, pr1cX - 30, 610);
|
||||||
var xp3 = new PipeJoin(pr2X - 45, 550);
|
var v57 = CreateValve(57, pr2cX + 30, 610);
|
||||||
var xp4 = new PipeJoin(pr2X + 45, 580);
|
var xp1 = new PipeJoin(pr1cX - 70, 580);
|
||||||
|
var xp2 = new PipeJoin(pr1cX - 70, 640);
|
||||||
|
var xp3 = new PipeJoin(pr2cX + 70, 550);
|
||||||
|
var xp4 = new PipeJoin(pr2cX + 70, 610);
|
||||||
|
var xp5 = new PipeJoin(pr1cX, 580);
|
||||||
|
var xp6 = new PipeJoin(pr1cX, 640);
|
||||||
|
var xp7 = new PipeJoin(pr2cX, 550);
|
||||||
|
var xp8 = new PipeJoin(pr2cX, 610);
|
||||||
|
|
||||||
CreatePipe(v6, xp1, true);
|
CreatePipe(v6, xp1, true);
|
||||||
CreatePipe(v8, xp2, true);
|
CreatePipe(v8, xp2, true);
|
||||||
CreatePipe(v49, xp3, true);
|
CreatePipe(v49, xp3, true);
|
||||||
CreatePipe(P6, xp4, true);
|
CreatePipe(P6, xp4, true);
|
||||||
CreatePipe(xp1, v51);
|
CreatePipe(xp1, v51, true);
|
||||||
CreatePipe(xp1, v55);
|
CreatePipe(xp1, v55, true);
|
||||||
CreatePipe(xp2, v52);
|
CreatePipe(xp2, v52, true);
|
||||||
CreatePipe(xp2, v56);
|
CreatePipe(xp2, v56, true);
|
||||||
CreatePipe(xp3, v50);
|
CreatePipe(xp3, v50, true);
|
||||||
CreatePipe(xp3, v54);
|
CreatePipe(xp3, v54, true);
|
||||||
CreatePipe(xp4, v53);
|
CreatePipe(xp4, v53, true);
|
||||||
CreatePipe(xp4, v57);
|
CreatePipe(xp4, v57, true);
|
||||||
|
|
||||||
CreateInlet(v50, press1);
|
CreatePipe(v50, xp5);
|
||||||
CreateInlet(v51, press1);
|
CreatePipe(v51, xp5);
|
||||||
CreateInlet(v52, press1);
|
CreatePipe(v52, xp6);
|
||||||
CreateInlet(v53, press1);
|
CreatePipe(v53, xp6);
|
||||||
CreateInlet(v54, press2);
|
CreatePipe(v54, xp7);
|
||||||
CreateInlet(v55, press2);
|
CreatePipe(v55, xp7);
|
||||||
CreateInlet(v56, press2);
|
CreatePipe(v56, xp8);
|
||||||
CreateInlet(v57, press2);
|
CreatePipe(v57, xp8);
|
||||||
|
CreatePipe(xp5, xp6);
|
||||||
|
CreatePipe(xp7, xp8);
|
||||||
|
|
||||||
|
var zv1 = new CenterValve("ZV1", pr1cX, prY - 40, () => App.Plant?.FillLevelPress1 != FillState.Full);
|
||||||
|
var zv2 = new CenterValve("ZV2", pr2cX, prY - 40, () => App.Plant?.FillLevelPress2 != FillState.Full);
|
||||||
|
CreatePipe(xp6, zv1, true);
|
||||||
|
CreatePipe(xp8, zv2, true);
|
||||||
|
CreateInlet(zv1, press1, true);
|
||||||
|
CreateInlet(zv2, press2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static Valve CreateValve(int n, double x, double y) {
|
protected static Valve CreateValve(int n, double x, double y) {
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
|
||||||
|
namespace PamhagenSysCtrl.Helpers.Pipeline {
|
||||||
|
public class CenterValve : INode {
|
||||||
|
|
||||||
|
public const double DIAMETER = 24;
|
||||||
|
|
||||||
|
public double CenterX { get; set; }
|
||||||
|
public double CenterY { get; set; }
|
||||||
|
public string Label { get; set; }
|
||||||
|
public Brush? Highlight { get; set; }
|
||||||
|
|
||||||
|
public bool IsOpen => CallbackIsOpen();
|
||||||
|
public ISet<IEdge> Inputs { get; init; }
|
||||||
|
public ISet<IEdge> Outputs { get; init; }
|
||||||
|
|
||||||
|
protected Func<bool> CallbackIsOpen;
|
||||||
|
|
||||||
|
private Shape? _circle;
|
||||||
|
private TextBlock? _text;
|
||||||
|
|
||||||
|
public CenterValve(string label, double x, double y, Func<bool> cbOpen) {
|
||||||
|
CenterX = x;
|
||||||
|
CenterY = y;
|
||||||
|
Label = label;
|
||||||
|
CallbackIsOpen = cbOpen;
|
||||||
|
Inputs = new HashSet<IEdge>();
|
||||||
|
Outputs = new HashSet<IEdge>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw(Canvas canvas) {
|
||||||
|
_circle = new Ellipse() {
|
||||||
|
Height = DIAMETER,
|
||||||
|
Width = DIAMETER,
|
||||||
|
Fill = Brushes.DarkGray,
|
||||||
|
Stroke = Brushes.Black,
|
||||||
|
StrokeThickness = 2,
|
||||||
|
};
|
||||||
|
_circle.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2);
|
||||||
|
_circle.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2);
|
||||||
|
_text = new() {
|
||||||
|
Text = Label,
|
||||||
|
FontSize = 10,
|
||||||
|
Width = DIAMETER,
|
||||||
|
Height = DIAMETER,
|
||||||
|
TextAlignment = TextAlignment.Center,
|
||||||
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
|
};
|
||||||
|
_text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2);
|
||||||
|
_text.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2 + 5.5);
|
||||||
|
canvas.Children.Add(_circle);
|
||||||
|
canvas.Children.Add(_text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsInside(double x, double y) {
|
||||||
|
return Math.Sqrt(Math.Pow(CenterX - x, 2) + Math.Pow(CenterY - y, 2)) <= DIAMETER / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(bool isHovering, bool isPressed) {
|
||||||
|
_circle?.Fill =
|
||||||
|
!IsOpen ? PamhagenBrushes.Red :
|
||||||
|
IsOpen ? PamhagenBrushes.Green :
|
||||||
|
Highlight ?? Brushes.DarkGray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,10 +34,10 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Inlet CreateInlet(INode start, ISink end) {
|
public Inlet CreateInlet(INode start, ISink end, bool sideways = false) {
|
||||||
Nodes.Add(start);
|
Nodes.Add(start);
|
||||||
Nodes.Add(end);
|
Nodes.Add(end);
|
||||||
var p = new Inlet(start, end, start.CenterX > end.CenterX);
|
var p = new Inlet(start, end, sideways);
|
||||||
start.Outputs.Add(p);
|
start.Outputs.Add(p);
|
||||||
end.Inputs.Add(p);
|
end.Inputs.Add(p);
|
||||||
Edges.Add(p);
|
Edges.Add(p);
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
|
|||||||
var x1 = Start.CenterX;
|
var x1 = Start.CenterX;
|
||||||
var y1 = Start.CenterY;
|
var y1 = Start.CenterY;
|
||||||
var x2 = Start.CenterX;
|
var x2 = Start.CenterX;
|
||||||
var y2 = Sink.TopY - 10;
|
var y2 = Orientation ? Sink.CenterY - 10 : Sink.TopY - 10;
|
||||||
var x3 = Start.CenterX + (Orientation ? -20 : 20);
|
var x3 = Orientation ? Sink.CenterX : Start.CenterX + (Start.CenterX == End.CenterX ? 0 : Start.CenterX > End.CenterX ? -20 : 20);
|
||||||
var y3 = Sink.TopY + 20;
|
var y3 = Orientation ? Sink.CenterY - 10 : Sink.TopY + 20;
|
||||||
_outer1 = new Line() {
|
_outer1 = new Line() {
|
||||||
X1 = x1,
|
X1 = x1,
|
||||||
Y1 = y1,
|
Y1 = y1,
|
||||||
|
|||||||
Reference in New Issue
Block a user