コード例 #1
0
ファイル: DataSaver.cs プロジェクト: yeagob/ParticlePack
    public static void saveSingleGrainsMesh(Rock rock, string saveFolder)
    {
        int grainCount = 0;
        int nBeds      = rock.rockObject.transform.childCount;

        GameObject[] singleGrain = new GameObject[1];

        for (int bedNumber = 0; bedNumber < nBeds; bedNumber++)
        {
            GameObject currentBed   = rock.rockObject.GetComponent <Transform>().GetChild(bedNumber).gameObject;
            int        nGrainGroups = rock.beds[bedNumber].nGrainGroups;

            for (int grainGroupNumber = 0; grainGroupNumber < nGrainGroups; grainGroupNumber++)
            {
                GameObject grainGroup = currentBed.GetComponent <Transform>().GetChild(grainGroupNumber).gameObject;
                int        nGrains    = grainGroup.transform.childCount;
                if (nGrains > 0)
                {
                    for (int grainNumber = 0; grainNumber < nGrains; grainNumber++)
                    {
                        grainCount    += 1;
                        singleGrain[0] = grainGroup.transform.GetChild(grainNumber).gameObject;
                        bool[] isLocationRotationScale = new bool[3];
                        isLocationRotationScale[0] = false;
                        isLocationRotationScale[1] = true;
                        isLocationRotationScale[2] = true;
                        string grainName = grainGroup.transform.GetChild(grainNumber).gameObject.GetComponent <GrainOperations>().name;
                        string filePath  = saveFolder + "/Grain " + grainCount + " - " + grainName + ".stl";
                        StlExporter.MeshToFile(singleGrain, new Vector3(), filePath, isLocationRotationScale);
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: BoneModel.cs プロジェクト: CJCHEN1230/Nart
        /// <summary>
        /// 儲存模型檔案,第一個參數指定路徑,第二個參數指定是否要儲存轉移後的模型
        /// </summary>
        public void SaveModel(string filepath, bool isSavedTransform)
        {
            HelixToolkit.Wpf.SharpDX.MeshGeometry3D geometry = Geometry as HelixToolkit.Wpf.SharpDX.MeshGeometry3D;

            if (geometry == null)
            {
                return;
            }


            MeshGeometry3D mesh = new MeshGeometry3D
            {
                Positions       = new Point3DCollection(),
                Normals         = new Vector3DCollection(),
                TriangleIndices = new Int32Collection()
            };

            foreach (Vector3 position in geometry.Positions)
            {
                mesh.Positions.Add(new Point3D(position.X, position.Y, position.Z));
            }
            foreach (Vector3 normal in geometry.Normals)
            {
                mesh.Normals.Add(new Vector3D(normal.X, normal.Y, normal.Z));
            }
            foreach (int triangleindice in geometry.TriangleIndices)
            {
                mesh.TriangleIndices.Add(triangleindice);
            }

            GeometryModel3D model = new GeometryModel3D
            {
                Geometry = mesh,
            };


            StlExporter export = new StlExporter();

            if (isSavedTransform)
            {
                model.Transform = Transform;

                string fileAfterTransform = System.IO.Path.GetFileNameWithoutExtension(SafeFileName);
                fileAfterTransform += "(transform).stl";
                using (var fileStream = File.Create(System.IO.Path.Combine(filepath, fileAfterTransform)))
                {
                    export.Export(model, fileStream);
                }
                return;
            }



            using (var fileStream = File.Create(System.IO.Path.Combine(filepath, SafeFileName)))
            {
                export.Export(model, fileStream);
            }
        }
コード例 #3
0
ファイル: DataSaver.cs プロジェクト: yeagob/ParticlePack
 public static void saveMeshData(Rock rock, string saveFolder)
 {
     GameObject[] grains = rock.GetGrainObjects();
     if (grains.Length > 0)
     {
         string filePath = saveFolder + "/MeshData" + ".stl";
         StlExporter.MeshToFile(grains, filePath);
         Debug.Log("Saved");
     }
 }
コード例 #4
0
ファイル: View3D.cs プロジェクト: IMAGE-ET/Dicom-7
        public void Export(string path)
        {
            foreach (var namedModel in _viewPort.GetAllModels())
            {
                var fileName = Path.Combine(path, namedModel.Key + ".stl");

                using (var stream = new System.IO.FileStream(fileName, FileMode.Create))
                {
                    StlExporter.Export(namedModel.Value, stream);
                }
            }
        }
コード例 #5
0
        private static string CreateNewStlFile(GameObject geometryObject, bool isCollisionGeometry)
        {
            Debug.Log("Did not find an existing STL or DAE file for Geometry Mesh "
                      + geometryObject.name + ". Exporting a new STL file.", geometryObject);

            string newMeshPath = UrdfExportPathHandler.GetNewMeshPath(geometryObject.name + ".stl");

            StlExporter stlExporter = new StlExporter(newMeshPath, geometryObject, isCollisionGeometry);

            if (!stlExporter.Export())
            {
                Debug.LogWarning("Mesh export for geometry " + geometryObject.name + " failed.", geometryObject);
            }

            return(newMeshPath);
        }
コード例 #6
0
ファイル: MainView.xaml.cs プロジェクト: CJCHEN1230/Nart
        //用來輸入文字文件,然後輸出球的模型檔案
        private void SaveBall()
        {
            string path = "D:\\Desktop\\新文字文件.txt";

            try
            {
                string   fileContent  = File.ReadAllText(path);
                string[] contentArray = fileContent.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);
                float[]  pointInfo    = Array.ConvertAll(contentArray, float.Parse);
                if (pointInfo.Length % 3 != 0)
                {
                    throw new Exception();
                }

                var ballContainer = new HelixToolkit.Wpf.SharpDX.MeshBuilder();
                for (int i = 0; i < pointInfo.Length / 3; i++)
                {
                    ballContainer.AddSphere(new Vector3(pointInfo[i * 3], pointInfo[i * 3 + 1], pointInfo[i * 3 + 2]), 1.5);
                }

                System.Windows.Media.Media3D.MeshGeometry3D ballMesh = new System.Windows.Media.Media3D.MeshGeometry3D
                {
                    Positions       = new Point3DCollection(),
                    Normals         = new Vector3DCollection(),
                    TriangleIndices = new Int32Collection()
                };
                HelixToolkit.Wpf.SharpDX.MeshGeometry3D geometry = ballContainer.ToMeshGeometry3D();

                foreach (Vector3 position in geometry.Positions)
                {
                    ballMesh.Positions.Add(new Point3D(position.X, position.Y, position.Z));
                }
                foreach (Vector3 normal in geometry.Normals)
                {
                    ballMesh.Normals.Add(new Vector3D(normal.X, normal.Y, normal.Z));
                }
                foreach (int triangleindice in geometry.TriangleIndices)
                {
                    ballMesh.TriangleIndices.Add(triangleindice);
                }

                System.Windows.Media.Media3D.GeometryModel3D ballModel = new System.Windows.Media.Media3D.GeometryModel3D
                {
                    Geometry = ballMesh,
                };

                Model3DGroup ballGroup = new Model3DGroup();


                ballGroup.Children.Add(ballModel);

                StlExporter export1 = new StlExporter();
                string      name1   = "ball.stl";
                using (var fileStream = File.Create("D:\\Desktop\\" + name1))
                {
                    export1.Export(ballGroup, fileStream);
                }
            }
            catch
            {
                System.Windows.MessageBox.Show("點的讀取錯誤");
            }
        }
コード例 #7
0
ファイル: MainView.xaml.cs プロジェクト: CJCHEN1230/Nart
        private void button_Click_2(object sender, RoutedEventArgs e)
        {
            //ball的模型
            Model3DGroup ballGroup = new Model3DGroup();

            foreach (BallModel model in MainViewModel.ProjData.BallCollection)
            {
                System.Windows.Media.Media3D.MeshGeometry3D ballMesh = new System.Windows.Media.Media3D.MeshGeometry3D
                {
                    Positions       = new Point3DCollection(),
                    Normals         = new Vector3DCollection(),
                    TriangleIndices = new Int32Collection()
                };
                HelixToolkit.Wpf.SharpDX.MeshGeometry3D geometry = model.Geometry as HelixToolkit.Wpf.SharpDX.MeshGeometry3D;

                if (geometry == null)
                {
                    return;
                }

                foreach (Vector3 position in geometry.Positions)
                {
                    ballMesh.Positions.Add(new Point3D(position.X, position.Y, position.Z));
                }
                foreach (Vector3 normal in geometry.Normals)
                {
                    ballMesh.Normals.Add(new Vector3D(normal.X, normal.Y, normal.Z));
                }
                foreach (int triangleindice in geometry.TriangleIndices)
                {
                    ballMesh.TriangleIndices.Add(triangleindice);
                }
                System.Windows.Media.Media3D.GeometryModel3D ballModel = new System.Windows.Media.Media3D.GeometryModel3D
                {
                    Geometry = ballMesh,
                };

                ballGroup.Children.Add(ballModel);
            }

            StlExporter export1 = new StlExporter();
            string      name1   = "ball.stl";

            using (var fileStream = File.Create("D:\\Desktop\\test\\" + name1))
            {
                export1.Export(ballGroup, fileStream);
            }



            //存球資料
            FileStream   fs = new FileStream("D:\\Desktop\\test\\balldata.txt", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);

            foreach (BallModel model in MainViewModel.ProjData.BallCollection)
            {
                sw.Write(model.BallCenter.X + " " + model.BallCenter.Y + " " + model.BallCenter.Z + "\r\n");
            }
            //清空緩衝區
            sw.Flush();
            //關閉流
            sw.Close();
            fs.Close();
        }
コード例 #8
0
 private void Awake()
 {
     stlExporter = GetComponent <StlExporter>();
 }