/// <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; }
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); }
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); }