123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using fis.Log;
- using fis.Win.Dev.Helpers;
- using fis.Win.Dev.Managers.Interfaces;
- using fis.Win.Dev.Managers.Modules.Ultra3D;
- using fis.Win.Dev.Utilities;
- using fis.Win.Dev.Win.Ultra3D.manager;
- using fis.Win.Dev.Win.Ultra3D.Manager;
- using fis.Win.Dev.Win.Ultra3D.Utils;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace fis.Win.Dev.Managers
- {
- internal class Ultra3DManager : IUltra3DManager
- {
- public Parse3DModelManager Parse3DModelManager { get; }
- public MeasureImageManager MeasureImageManager { get; }
- public CarotidModelAdjustManager CarotidModelAdjustManager { get; }
- private Ultra3DDownloadWorker _ultr3DFileWorker;
- private object _lock = new object();
- internal Ultra3DManager()
- {
- Parse3DModelManager = new Parse3DModelManager();
- MeasureImageManager=new MeasureImageManager();
- CarotidModelAdjustManager = new CarotidModelAdjustManager(Parse3DModelManager, MeasureImageManager);
- _ultr3DFileWorker = new Ultra3DDownloadWorker();
- _ultr3DFileWorker.MainSurfaceFileReady += OnMainSurfaceReady ;
- _ultr3DFileWorker.MainMDFileReady += OnMainMDFileReady;
- }
- public async void AccessUltra3DFiles(Ultr3DParameter ultr3DParameter)
- {
- _ultr3DFileWorker.InitFileWorkItem(ultr3DParameter.ResourceInfos);
- await _ultr3DFileWorker.AccessUltraFiles();
- }
- public void Dispose()
- {
- throw new NotImplementedException();
- }
- private async void OnMainSurfaceReady(object? sender, string e)
- {
- lock (_lock)
- {
- Parse3DModelManager.ParseSurface(e);
- }
- }
- private void OnMainMDFileReady(object? sender, MDFileArgs e)
- {
- lock (_lock)
- {
- Parse3DModelManager.ParseMdl(e.FilePath, e.CarotidScanType, e.CarotidScanDirection);
- MDFileReady(e.FileUrl);
- }
- }
- private async Task LoadSurfaceFile()
- {
- try
- {
- var path = InfoConstant.SurfaceFolder.Replace("\\", "/");
- var files = Directory.GetFiles(path);
- var paras = new List<string>(); ;
- foreach (var c in files)
- {
- var data= await File.ReadAllBytesAsync(c);
- var base64 = Convert.ToBase64String(data,Base64FormattingOptions.InsertLineBreaks);
- paras.Add("data:image/jpeg;base64,"+base64);
- }
- var surfaceFiles = string.Join("surface", paras);
- var method = $"setSurface({Parse3DModelManager.SurfaceFile.Width - 1}, {Parse3DModelManager.SurfaceFile.Depth - 1}, " +
- $"{Parse3DModelManager.SurfaceFile.Height - 1}, \"{path}\");";
- var width = (Parse3DModelManager.SurfaceFile.Width - 1).ToString();
- var height = (Parse3DModelManager.SurfaceFile.Height - 1).ToString();
- var depth = (Parse3DModelManager.SurfaceFile.Depth - 1).ToString();
- var args = new List<string>{
- width,
- depth,
- height,
- surfaceFiles
- };
- var callString = PlatFormHelper.GetMethodStr("externalNotification", TargetMethodName.SetSurface, args);
- AvaloniaCefBrowserHelper.browser?.ExecuteJavaScript(callString, null, 0);
- }
- catch (Exception exception)
- {
- Logger.WriteShellLog($"Load 3D model failed : {exception}");
- }
- }
- private void MDFileReady(string key)
- {
- var callString = PlatFormHelper.GetMethodStr("externalNotification", TargetMethodName.MdlFileLoaded, new List<string>() { key});
- AvaloniaCefBrowserHelper.MeasureWindowBrowser?.ExecuteJavaScript(callString, null, 0);
- }
- }
- }
|