示例#1
0
        private void ShowDetalizerNormals_Click(object sender, RoutedEventArgs e)
        {
            if (mid_surface_model == null)
            {
                return;
            }

            int step = 0;

            try
            {
                step = int.Parse(textBox_DebugNormalStep.Text);
            }
            catch
            {
                MessageBox.Show("Wrong format in debug parameters.\nFormat is:\n < step between points > ");
                return;
            }

            if (step <= 0)
            {
                MessageBox.Show("Enter positive number");
                return;
            }

            var         segments     = mid_surface_model.GetData();
            IMidSurface debugSurface = new MidSurface();

            for (int i = 0; i < segments.Count(); i++)
            {
                if (i % step != 0)
                {
                    continue;
                }

                var msseg = segments.ElementAt(i) as MSSegment;
                if (msseg == null)
                {
                    return;
                }

                var normal = msseg.GetMSPillar()[0].GetNormal();
                var parent = msseg.GetMSPillar()[0].GetParent();
                var R      = msseg.GetMSPillar()[0].GetRadius();

                ISegment normalSegment = new Segment(new BezierCurve(), new List <Point>()
                {
                    parent,
                    new Point(parent.X + R * normal.Dx(), parent.Y + R * normal.Dy())
                });

                debugSurface.Add(normalSegment);
            }

            View.VisibleDataSettings settings = new View.VisibleDataSettings();
            settings.Brush    = Brushes.Blue;
            settings.Thikness = 1;
            View.VisibleData visible_data = new View.VisibleData(debugSurface, settings);
            view.Paint(visible_data);
        }
示例#2
0
        private void ShowOnlyPoints_Click(object sender, RoutedEventArgs e)
        {
            if (mid_surface_model == null)
            {
                return;
            }

            var             segments    = mid_surface_model.GetData();
            List <ISegment> only_points = new List <ISegment>();

            foreach (var segment in segments)
            {
                ISegment point = new Segment(new BezierCurve(), new List <Point>()
                {
                    segment.GetPillar()[0],
                    Vector.Add(new Vector(1, 0), segment.GetPillar()[0])
                });
                only_points.Add(point);
            }

            IMidSurface points_surface = new MidSurface();

            foreach (var point in only_points)
            {
                points_surface.Add(point);
            }
            mainCanvas.Children.Clear();
            RedrawModel();
            View.VisibleDataSettings settings = new View.VisibleDataSettings();
            settings.Brush    = Brushes.Red;
            settings.Thikness = 2;
            View.VisibleData visible_data = new View.VisibleData(points_surface, settings);
            view.Paint(visible_data);
        }
示例#3
0
        private void ShowNormal_Click(object sender, RoutedEventArgs e)
        {
            if (model == null)
            {
                MessageBox.Show("No model is imported");
                return;
            }

            string[] debugParams = textBox_Debug.Text.Split(';');
            int      segmentNum  = 0;
            double   t           = 0;
            double   multiplier  = 0;

            try
            {
                segmentNum = int.Parse(debugParams[0]);
                t          = double.Parse(debugParams[1], CultureInfo.InvariantCulture);
                multiplier = double.Parse(debugParams[2], CultureInfo.InvariantCulture);
            }
            catch
            {
                MessageBox.Show("Wrong format in debug parameters.\nFormat is:\n    <segment number>;<t value>;<multiplier value>");
                return;
            }

            ISegment chosenSegment    = model.GetCanvasData().ElementAt(segmentNum);
            Point    pointOnSegment   = chosenSegment.GetCurvePoint(t);
            Normal   normalForSegment = chosenSegment.GetNormal(t);

            if (t == 0)
            {
                int prevSegmentNum = segmentNum == 0 ? model.GetCanvasData().Count() - 1 : segmentNum - 1;
                normalForSegment = normalForSegment.Combine(model.GetCanvasData().ElementAt(prevSegmentNum).GetNormal(1));
            }
            else if (t == 1)
            {
                int nextSegmentNum = segmentNum == model.GetCanvasData().Count() - 1 ? 0 : segmentNum + 1;
                normalForSegment = model.GetCanvasData().ElementAt(nextSegmentNum).GetNormal(0).Combine(normalForSegment);
            }
            ISegment normalSegment = new Segment(new BezierCurve(), new List <Point>()
            {
                pointOnSegment,
                new Point(pointOnSegment.X + multiplier * normalForSegment.Dx(), pointOnSegment.Y + multiplier * normalForSegment.Dy())
            });

            View.VisibleDataSettings settings = new View.VisibleDataSettings();
            settings.Brush    = Brushes.Blue;
            settings.Thikness = 1;
            IMidSurface debugSurface = new MidSurface();

            debugSurface.Add(normalSegment);
            View.VisibleData visible_data = new View.VisibleData(debugSurface, settings);
            view.Paint(visible_data);
        }
示例#4
0
 private void RedrawMidSurface(Brush brush)
 {
     if (mid_surface_model == null)
     {
         return;
     }
     View.VisibleDataSettings settings = new View.VisibleDataSettings();
     settings.Brush    = brush;
     settings.Thikness = 5;
     View.VisibleData visible_data = new View.VisibleData(mid_surface_model, settings);
     view.Paint(visible_data);
 }
示例#5
0
 private void RedrawMidSurface()
 {
     if (mid_surface_model == null)
     {
         return;
     }
     //TODO: Dinar: continue connecting parameters
     View.VisibleDataSettings settings = new View.VisibleDataSettings();
     settings.Brush    = Settings.colofOfMidSurface;
     settings.Thikness = Settings.thicknessMidSurface;
     View.VisibleData visible_data = new View.VisibleData(mid_surface_model, settings);
     view.Paint(visible_data);
 }
示例#6
0
 private void RedrawModel(Brush brush)
 {
     if (model == null)
     {
         return;
     }
     View.VisibleDataSettings settings = new View.VisibleDataSettings()
     {
         Brush    = brush,
         Thikness = 10
     };
     View.VisibleData visible_data = new View.VisibleData(model, settings);
     view.Paint(visible_data);
 }
示例#7
0
 private void RedrawModel()
 {
     if (model == null)
     {
         return;
     }
     //TODO: Dinar: continue connecting parameters
     mainCanvas.Children.Clear();
     View.VisibleDataSettings settings = new View.VisibleDataSettings()
     {
         Brush    = Settings.colofOfModel,
         Thikness = Settings.thicknessModel
     };
     View.VisibleData visible_data = new View.VisibleData(model, settings);
     view.Paint(visible_data);
 }
示例#8
0
 private void ShowSimplified_Click(object sender, RoutedEventArgs e)
 {
     if (model == null)
     {
         return;
     }
     mainCanvas.Children.Clear();
     View.VisibleDataSettings settings = new View.VisibleDataSettings()
     {
         Brush    = Brushes.Black,
         Thikness = 2
     };
     View.VisibleData visible_data = new View.VisibleData(SimplifyModel(model), settings);
     view.EnableIndices(true);
     view.Paint(visible_data);
     RedrawMidSurface();
 }