Example #1
0
 public void DeepAnalysis(InfoProgressPanel ipp)
 {
     originalModel.ipp = ipp;
     originalModel.Analyse();
     if (ipp.IsKilled)
     {
         return;
     }
     originalModel.updateBad();
     if (originalModel.intersectingTriangles.Count > 0 || originalModel.badTriangles > 0 || originalModel.manifold == false || originalModel.manyShardEdges != 0 || originalModel.loopEdges != 0 || originalModel.normalsOriented == false)
     {
         if (repairedModel == null)
         {
             repairedModel = originalModel.Copy();
         }
         repairedModel.ipp = ipp;
         repairedModel.RepairUnobtrusive();
         repairedModel.Analyse();
         originalModel.Analyse();
         if (ipp.IsKilled)
         {
             originalModel.clear();
             repairedModel.clear();
             return;
         }
         repairedModel.updateBad();
         ShowRepaired(true);
         repairedModel.ipp = null;
     }
     originalModel.ipp = null;
 }
Example #2
0
        public void Load(string file, InfoProgressPanel ipp)
        {
            filename = file;
            DateTime lastModified2 = File.GetLastWriteTime(filename);

            lastModified      = lastModified2.Ticks;
            originalModel.ipp = ipp;
            string lname = filename.ToLower();

            if (lname.EndsWith(".stl"))
            {
                originalModel.importSTL(filename);
            }
            else if (lname.EndsWith(".obj"))
            {
                originalModel.importObj(filename);
            }
            FileInfo info = new FileInfo(file);

            name = info.Name;
            originalModel.Analyse();
            if (ipp.IsKilled)
            {
                originalModel.clear();
                return;
            }
            originalModel.Analyse();
            if (ipp.IsKilled)
            {
                originalModel.clear();
                return;
            }
            originalModel.updateBad();
            if (originalModel.intersectingTriangles.Count > 0 || originalModel.badTriangles > 0 || originalModel.manifold == false || originalModel.manyShardEdges != 0 || originalModel.loopEdges != 0 || originalModel.normalsOriented == false)
            {
                if (repairedModel == null)
                {
                    repairedModel = originalModel.Copy();
                }
                repairedModel.ipp = ipp;
                repairedModel.RepairUnobtrusive();
                repairedModel.Analyse();
                originalModel.Analyse();
                if (ipp.IsKilled)
                {
                    originalModel.clear();
                    repairedModel.clear();
                    return;
                }
                repairedModel.updateBad();
                ShowRepaired(true);
                repairedModel.ipp = null;
            }
            originalModel.ipp = null;
        }
Example #3
0
 public void FixNormals()
 {
     if (repairedModel == null)
     {
         repairedModel = originalModel.Copy();
     }
     repairedModel.UpdateNormals();
     repairedModel.Analyse();
     repairedModel.updateBad();
     ShowRepaired(true);
 }
Example #4
0
 public void RunTest()
 {
     if (repairedModel == null)
     {
         repairedModel = originalModel.Copy();
         repairedModel.RepairUnobtrusive();
     }
     repairedModel.RetestIntersectingTriangles();
     //repairedModel.JoinTouchedOpenEdges(0.1);
     //repairedModel.UpdateNormals();
     repairedModel.Analyse();
     repairedModel.updateBad();
     ShowRepaired(true);
 }
Example #5
0
 public void Reset()
 {
     repairedModel = originalModel.Copy();
     repairedModel.Analyse();
     ShowRepaired(true);
 }