示例#1
0
        public JSModel DoAnalysis()
        {
            var lowerSupportNode = new JSNode(new Vector2d(0, 0))
            {
                XRestrained = true, YRestrained = true
            };
            var upperSupportNode = new JSNode(new Vector2d(0, 10))
            {
                XRestrained = true, YRestrained = true
            };
            var forceNode = new JSNode(new Vector2d(5, 5));
            var nodes     = new JSNode[] { upperSupportNode, forceNode, lowerSupportNode };

            var force  = new JSPointLoad(new Vector2d(0, -1), forceNode);
            var forces = new JSPointLoad[] { force };

            var lowerBar = new JSBar(lowerSupportNode, forceNode);
            var upperBar = new JSBar(upperSupportNode, forceNode);
            var bars     = new JSBar[] { upperBar, lowerBar };

            var analyser = new JSModel();

            analyser.AddItems(bars, nodes, forces);
            analyser.Solve();
            return(analyser);
        }
        public OxyForm_ResultsView(JSModel model, string title)
        {
            InitializeComponent();

            //this.plotView1.Size = this.ClientSize;
            this.SizeChanged += Form1_SizeChanged;

            Model = new PlotModel {
                Title = title
            };
            JointModel = model;

            foreach (var bar in JointModel.Bars)
            {
                var series = new LineSeries();
                series.Points.Add(bar.StartPosition.ToDataPoint());
                series.Points.Add(bar.EndPosition.ToDataPoint());
                series.Title = $"Bar {bar.Number}: F={bar.ForceResult.ToString("F2")}";
                Model.Series.Add(series);

                var text = new TextAnnotation();
                text.TextPosition            = bar.MidPoint.ToDataPoint();
                text.TextVerticalAlignment   = OxyPlot.VerticalAlignment.Middle;
                text.TextHorizontalAlignment = OxyPlot.HorizontalAlignment.Center;
                text.Text       = bar.ForceResult.ToString("F2");
                text.Background = OxyColor.FromRgb(255, 255, 255);
                Model.Annotations.Add(text);
            }

            foreach (var node in JointModel.Nodes)
            {
                var text = new TextAnnotation();
                text.TextPosition            = node.Position.ToDataPoint();
                text.TextVerticalAlignment   = OxyPlot.VerticalAlignment.Top;
                text.TextHorizontalAlignment = OxyPlot.HorizontalAlignment.Left;

                var textString = $"Node {node.Number}\n";
                if (node.AppliedForces != Vector2d.Zero)
                {
                    textString += "F=" + node.AppliedForces + "\n";
                }
                if (node.ReactionResult != Vector2d.Zero)
                {
                    textString += "R=" + node.ReactionResult;
                }
                text.Text = textString;

                text.StrokeThickness = 0;
                Model.Annotations.Add(text);
            }


            this.plotView1.Model = Model;
        }