Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        /// <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);
        }