Beispiel #1
0
 public static M3D.Graphics.Ext3D.ModelRendering.Model LoadModelFromFile(string fileName)
 {
     return(new M3D.Graphics.Ext3D.ModelRendering.Model(ModelLoadingManager.GetModelLoader(fileName).Load(fileName), fileName));
 }
Beispiel #2
0
        private bool LoadZip(string zipFileName, ModelLoadingManager.OnModelLoadedDel loadedCallback, ModelLoadingManager.LoadFailedCallback onFailCallback)
        {
            IncFilesLoading();
            var        asyncZipLoadData = new ModelLoadingManager.AsyncZipLoadData(zipFileName, loadedCallback);
            FileStream file;

            try
            {
                file = File.OpenRead(zipFileName);
            }
            catch (IOException ex)
            {
                DecFilesLoading();
                ShowFileLoadingExeption(ex, zipFileName, onFailCallback);
                return(false);
            }
            try
            {
                asyncZipLoadData.zf        = new ZipFile(file);
                asyncZipLoadData.iconFile  = null;
                asyncZipLoadData.extractTo = Path.Combine(Paths.PublicDataFolder, "ExtractedZipFiles", Path.GetFileNameWithoutExtension(zipFileName));
                foreach (ZipEntry zipEntry in asyncZipLoadData.zf)
                {
                    if (zipEntry.IsFile)
                    {
                        var str = Path.Combine(asyncZipLoadData.extractTo, Path.GetFileName(zipEntry.Name));
                        if (ModelLoadingManager.GetModelLoader(zipEntry.Name) != null)
                        {
                            asyncZipLoadData.modelFiles.Add(str);
                        }
                        else if (zipEntry.Name.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
                        {
                            asyncZipLoadData.xmlFiles.Add(str);
                        }
                        else if (zipEntry.Name.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || zipEntry.Name.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || zipEntry.Name.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase))
                        {
                            asyncZipLoadData.iconFile = str;
                        }
                    }
                }
                if (asyncZipLoadData.modelFiles.Count > 0)
                {
                    if (asyncZipLoadData.xmlFiles.Count > 0)
                    {
                        printerview.RemovePrintableModels();
                        xmlPrinterSettingsZipFileLoaded = true;
                    }
                    if (!Directory.Exists(asyncZipLoadData.extractTo))
                    {
                        Directory.CreateDirectory(asyncZipLoadData.extractTo);
                    }
                }
            }
            catch (Exception ex)
            {
                file.Close();
                DecFilesLoading();
                return(false);
            }
            if (asyncZipLoadData.modelFiles.Count > 0)
            {
                libraryview.RecentModels.CopyAndAssignIconForLibrary(zipFileName, asyncZipLoadData.iconFile);
                ThreadPool.QueueUserWorkItem(new WaitCallback(LoadZipWorkerThread), asyncZipLoadData);
                return(true);
            }
            file.Close();
            DecFilesLoading();
            return(false);
        }