static void TestArrayCreate() { var p = new Plane(0, 1, 0, 1); var d = new ArrayDefine(p, ArrayType.Circle, 8); var c = new CircleArrayCreater(); var ps = c.CreateArrayPlane(d); foreach (var mp in ps) { Console.WriteLine(mp.ToString()); } Console.WriteLine("TestArrayCreate finish"); }
/// <summary> /// 生成切片 /// </summary> /// <param name="doc">文件</param> /// <returns>切片结果集</returns> static Dictionary <ArrayDefine, List <SlicedPlane> > Slice(STLDocument doc) { Console.WriteLine("请选择切片模式:"); Console.WriteLine("1.快速切片\t2.自定义切片"); string type = Console.ReadLine(); var listdefine = new List <ArrayDefine>(); while (true) { var plane = new Plane(0, 1, 0, 0); if (type == "2") { Console.WriteLine("请输入旋转面法线的X分量"); int x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入旋转面法线的Y分量"); int y = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入旋转面法线的Z分量"); int z = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入旋转面从原点沿其法线的距离"); int d = Convert.ToInt32(Console.ReadLine()); plane = new Plane(x, y, z, d); } Console.WriteLine("请输入切片数量"); var count = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入切片弧度(360为最大)"); var angle = Convert.ToInt32(Console.ReadLine()); var arrayDefine = new ArrayDefine(plane, ArrayType.Circle, count, angle); listdefine.Add(arrayDefine); if (type == "2") { Console.WriteLine("请问是否继续录入下个切片定义?(y/n)"); var confirm = Console.ReadLine(); if (confirm.ToLower() == "n") { break; } } else { break; } } Console.WriteLine("正在切片,请稍等..."); var results = Slicer.Core.Slicer.DoSlice(doc.Facets.ToArray(), listdefine.ToArray()); Console.WriteLine("切片完成"); return(results); }