private Dictionary <Point3d, Point3dCollection> InitializeEndLpMesh() { var scanlines = new Dictionary <Point3d, Point3dCollection>(); var ld = _properties.Parts.SelectedLd; var lp = _properties.Parts.SelectedLp; var startLp = _properties.Algorythim.SelectedStartLp; var useStartLp = startLp != null; var cast = _properties.Parts.SelectedCast; var spacing = _properties.Algorythim.Options.DistanceBetweenLpAndLd; var startVector = new Vector3d(startLp?.StartOffset ?? _properties.Parts.SelectedLp.StartOffset, 0, 0); var startPoint = _properties.StartPoint.Add(startVector); var incrVect = new Vector2d(lp.Width + _properties.Algorythim.Options.DistanceBetweenLp, ld.Width + lp.Height + spacing * 2.0); if (useStartLp) { startPoint = startPoint.Add(new Vector3d(startLp.Width + _properties.Algorythim.Options.DistanceBetweenLp, 0, 0)); } for (double y = startPoint.Y; y < _properties.MaxPoint.Y; y += incrVect.Y) { scanlines.Add(new Point3d(startPoint.X, y, 0), ScanLine.GetOutlineSurroudingPointsX(new Point3d(startPoint.X, y, 0), _properties.MaxPoint, lp.Width + _properties.Algorythim.Options.DistanceBetweenLp, _outline)); } return(scanlines); }