/// <summary>
        /// Create a scene import context instance by the file names
        /// </summary>
        /// <param name="fileNames"></param>
        /// <returns></returns>
        protected SceneImportContext CreateLoadContext(StorageFileNames fileNames)
        {
            var        metaData = GetMetaData(fileNames);
            int        mainFile;
            FileFormat sourceFmt = DetectFormat(fileNames, metaData, out mainFile);

            return(new SceneImportContext(app, statsService, fileNames, metaData, mainFile, sourceFmt));
        }
 public SceneImportContext(ThreeDApp app, StatsService statsService, StorageFileNames fileNames, MetaDataT metaData, int mainFile, FileFormat sourceFormat)
 {
     this.app          = app;
     this.statsService = statsService;
     this.fileNames    = fileNames;
     this.metaData     = metaData;
     this.sourceFormat = sourceFormat;
     this.mainFile     = mainFile;
 }
Exemplo n.º 3
0
        private HashSet <string> DiagnoseResult(StorageFileNames fileNames)
        {
            HashSet <string> typeList = new HashSet <string>();
            Scene            scene    = OpenInput(fileNames);
            //create scene diagnoser
            var sd = SceneDiagnoser.LoadFromScene(scene);

            //print the problems we just found
            if (sd.Issues.Length == 0)
            {
                //Console.WriteLine("No errors found for this scene");
            }
            else
            {
                //Console.WriteLine($"{sd.Issues.Length} errors found for this scene:");
                foreach (var issue in sd.Issues)
                {
                    typeList.Add($"{issue.IssueType}");
                    //Console.WriteLine($"\t{issue.IssueType}");
                }
            }
            using (var fs = new FileStream(fileNames[AnalyzeResult], FileMode.Create))
            {
                sd.SaveToStream(fs);
            }
            //save the mesh and delta mesh for client side review:
            Scene review = new Scene();

            //review scene has the merged mesh with a default material(grey color)
            review.RootNode.CreateChildNode(sd.Mesh).Material = new LambertMaterial()
            {
                DiffuseColor = new Vector3(0.5, 0.5, 0.5)
            };
            //delta meshes that points to the problem area, and highlighted in red color using red material
            var errorMaterial = new LambertMaterial()
            {
                DiffuseColor = new Vector3(1, 0, 0)
            };

            foreach (var issue in sd.Issues)
            {
                if (issue.DeltaMesh != null)
                {
                    var node = review.RootNode.CreateChildNode(issue.IssueType.ToString(), issue.DeltaMesh);
                    node.Material = errorMaterial;
                }
            }
            review.Save(fileNames[ReviewFile], FileFormat.Aspose3DWeb);
            return(typeList);
        }
        protected MetaDataT GetMetaData(StorageFileNames fileNames)
        {
            var fileName = fileNames[MetaFile];

            try
            {
                if (FileIO.Exists(fileName))
                {
                    var json = FileIO.ReadAllText(fileName);
                    return(JsonSerializer.Deserialize <MetaDataT>(json));
                }
            }
            catch (Exception)
            {
            }
            return(new MetaDataT());
        }
 private FileFormat DetectFormat(StorageFileNames fileNames, MetaDataT metaData, out int mainFile)
 {
     mainFile = -1;
     if (metaData.InputFilenames == null || metaData.InputFilenames.Length == 0)
     {
         return(null);
     }
     for (int i = 0; i < metaData.InputFilenames.Length; i++)
     {
         var inputFile = fileNames.GetFileName(SourceFile, i);
         using (var fs = FileIO.OpenRead(inputFile))
         {
             var sourceFmt = FileFormat.Detect(fs, metaData.InputFilenames[i]);
             if (sourceFmt != null)
             {
                 mainFile = i;
                 return(sourceFmt);
             }
         }
     }
     return(null);
 }
        /// <summary>
        /// Upload the uploaded files to local disk
        /// </summary>
        /// <param name="fileNames"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        protected MetaDataT SaveUploadedFiles(StorageFileNames fileNames, IFormFileCollection files)
        {
            var fileId         = 0;
            var inputFileNames = new string[files.Count];

            foreach (var file in files)
            {
                if (file.Length > MaximumInputSize)
                {
                    throw new Exception("Uploaded file is too large!");
                }

                inputFileNames[fileId] = Path.GetFileName(file.FileName);
                // Prepare a path in which the result file will be
                // Check directroy already exist or not
                try
                {
                    using (FileStream fs = FileIO.Create(fileNames.GetFileName(SourceFile, fileId)))
                    {
                        file.CopyTo(fs);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Failed to save uploaded file, session id = {0}", fileNames.Id);
                    OperationFailed(e);
                }
                fileId++;
            }
            _logger.LogInformation("Uploaded file to {0}", fileNames.Id);
            var metaData = new MetaDataT()
            {
                InputFilenames = inputFileNames
            };

            SetMetaData(fileNames, metaData);
            return(metaData);
        }
Exemplo n.º 7
0
        private Scene OpenInput(StorageFileNames fileNames)
        {
            var ctx = CreateLoadContext(fileNames);

            return(ctx.LoadScene());
        }
        protected void SetMetaData(StorageFileNames fileNames, MetaDataT metaData)
        {
            var json = JsonSerializer.Serialize(metaData);

            FileIO.WriteAllText(fileNames[MetaFile], json);
        }