From 22bcca6d0883182824b3a9574d6bbb2f251cabd1 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 17 Jul 2025 16:51:08 +0200 Subject: [PATCH] Aggiunta file demo + modifiche API con inclusione dll diretta engine calcolo --- Lux.API/Controllers/JwdController.cs | 152 +++++++++++++++------ Lux.API/DemoData/AntaDoppia.jwd | 101 ++++++++++++++ Lux.API/DemoData/AntaSingola.jwd | 81 +++++++++++ Lux.API/DemoData/FinDueAnteBottomFisso.jwd | 132 ++++++++++++++++++ Lux.API/DemoData/FinestraSplitVert.jwd | 79 +++++++++++ Lux.API/DemoData/FinestraSplitVertOriz.jwd | 141 +++++++++++++++++++ Lux.API/DemoImg/AntaDoppia.svg | 81 +++++++++++ Lux.API/DemoImg/AntaSingola.svg | 52 +++++++ Lux.API/ExtLib/EgwMultiEngineManager.dll | Bin 0 -> 14336 bytes Lux.API/Lux.API.csproj | 8 +- Lux.API/Program.cs | 11 ++ Lux.Core/RestPayload/JwdDTO.cs | 5 + 12 files changed, 804 insertions(+), 39 deletions(-) create mode 100644 Lux.API/DemoData/AntaDoppia.jwd create mode 100644 Lux.API/DemoData/AntaSingola.jwd create mode 100644 Lux.API/DemoData/FinDueAnteBottomFisso.jwd create mode 100644 Lux.API/DemoData/FinestraSplitVert.jwd create mode 100644 Lux.API/DemoData/FinestraSplitVertOriz.jwd create mode 100644 Lux.API/DemoImg/AntaDoppia.svg create mode 100644 Lux.API/DemoImg/AntaSingola.svg create mode 100644 Lux.API/ExtLib/EgwMultiEngineManager.dll diff --git a/Lux.API/Controllers/JwdController.cs b/Lux.API/Controllers/JwdController.cs index b70fddcd..2739e3a0 100644 --- a/Lux.API/Controllers/JwdController.cs +++ b/Lux.API/Controllers/JwdController.cs @@ -1,4 +1,5 @@ -using Lux.Core.RestPayload; +using EgwMultiEngineManager; +using Lux.Core.RestPayload; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; @@ -11,15 +12,36 @@ namespace Lux.API.Controllers { #region Public Constructors - public JwdController(ILogger logger) + public JwdController(ILogger logger, ExecProcessManager EgwProcManager) { _logger = logger; + ProcessMan = EgwProcManager; } #endregion Public Constructors #region Public Methods + + /// + /// Chiamata GETT: riceve Json in formato JwdDto, restituisce svg file + /// GET: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// id univoco img + /// + [HttpGet("svg/{id}")] + public async Task svgFileGet(string id) + { + Stopwatch sw = new Stopwatch(); + sw.Start(); + string filePath = Path.Combine("DemoImg", "AntaDoppia.svg"); + var svgContent = await System.IO.File.ReadAllTextAsync(filePath); + var bytes = System.Text.Encoding.UTF8.GetBytes(svgContent); + sw.Stop(); + _logger.LogInformation($"svgString | {sw.Elapsed.TotalMilliseconds:N3} ms"); + return File(bytes, "image/svg+xml"); + } + /// /// Chiamata POST: riceve Json in formato JwdDto, restituisce jpeg file /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 @@ -54,41 +76,6 @@ namespace Lux.API.Controllers return File(imageBytes, "image/png"); } - /// - /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg file - /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 - /// - /// token comunicazione - /// - [HttpPost("svgfile/{id}")] - public async Task svgFile(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) - { - // finta attesa/elaborazione - await Task.Delay(waitDelay); - // path immagine finto... - string fakeImagePath = "DemoImg/Window01.svg"; - var svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); - var bytes = System.Text.Encoding.UTF8.GetBytes(svgContent); - return File(bytes, "image/svg+xml"); - } - - /// - /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg come string - /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 - /// - /// token comunicazione - /// - [HttpPost("svg/{id}")] - public async Task> svgString(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) - { - // finta attesa/elaborazione - await Task.Delay(waitDelay); - // path immagine finto... - string fakeImagePath = "DemoImg/Window01.svg"; - var svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); - return Ok(svgContent); - } - /// /// Chiamata POST: riceve Json in formato JwdDto, restituisce una BOM completa /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 @@ -117,7 +104,6 @@ namespace Lux.API.Controllers listItems.Add(item); } - BomDTO answ = new BomDTO() { UID = $"{DateTime.Now:yyyyMMdd-HHmmss}", @@ -128,13 +114,103 @@ namespace Lux.API.Controllers return Ok(answ); } + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg file + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("svgfile/{id}")] + public async Task svgFile(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) + { + // finta attesa/elaborazione + await Task.Delay(waitDelay); + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.svg"; + var svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); + var bytes = System.Text.Encoding.UTF8.GetBytes(svgContent); + return File(bytes, "image/svg+xml"); + } + + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg come string + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("svg/{id}")] + public async Task> svgString(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) + { + Stopwatch sw = new Stopwatch(); + sw.Start(); + string filePath = Path.Combine("DemoData", "AntaDoppia.jwd"); + string svgName = ""; + string rawData = ""; + string svgContent = ""; + // ...se ricevo percorso --> leggo jwd/svg cablato + if (!string.IsNullOrEmpty(currJwd.nameUrl)) + { + filePath = Path.Combine("DemoData", $"{currJwd.nameUrl}.jwd"); + svgName = Path.Combine("DemoImg", $"{currJwd.nameUrl}.svg"); + } + if (!string.IsNullOrEmpty(svgName)) + { + string fakeImagePath = $"DemoImg/{currJwd.nameUrl}.svg"; + svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); + } + else + { + if (System.IO.File.Exists(filePath)) + { + rawData = System.IO.File.ReadAllText(filePath); + } + Dictionary DictExec = new Dictionary(); + DictExec.Add("Mode", "1"); + DictExec.Add("Jwd", rawData); + ProcessArgs currArgs = new ProcessArgs(1, DictExec); + bool done = ProcessMan.ArgumentsEnqueue(currArgs); + var res = ProcessMan.ArgumentsResultDequeue(); + int numWait = 50; + while (numWait > 0 && (res == null || res.nResult == 0)) + { + numWait--; + await Task.Delay(waitDelay); + res = ProcessMan.ArgumentsResultDequeue(); + } + // se ho risultato mostro... + if (res != null) + { + //svgContent = res. + } + else + { + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.svg"; + svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); + } + } + sw.Stop(); + _logger.LogInformation($"svgString | {sw.Elapsed.TotalMilliseconds:N3} ms"); + return Ok(svgContent); + } + #endregion Public Methods #region Private Fields private readonly ILogger _logger; + private int waitDelay = 250; #endregion Private Fields + + #region Private Properties + + /// + /// Esecutore di processi generico + /// + private ExecProcessManager ProcessMan { get; set; } + + #endregion Private Properties } } \ No newline at end of file diff --git a/Lux.API/DemoData/AntaDoppia.jwd b/Lux.API/DemoData/AntaDoppia.jwd new file mode 100644 index 00000000..fe1c70c2 --- /dev/null +++ b/Lux.API/DemoData/AntaDoppia.jwd @@ -0,0 +1,101 @@ +{ + "ProfilePath": "Profilo78", + "AreaList": [ + { + "Shape": "RECTANGLE", + "DimensionList": [ + { + "nIndex": 1, + "sName": "Width", + "dValue": 1200.0 + }, + { + "nIndex": 2, + "sName": "Height", + "dValue": 1500.0 + } + ], + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_V" + }, + { + "nIndex": 2, + "JointType": "FULL_V" + }, + { + "nIndex": 3, + "JointType": "FULL_V" + }, + { + "nIndex": 4, + "JointType": "FULL_V" + } + ], + "BottomRail": false, + "BottomRailQty": 0, + "AreaList": [ + { + "bIsSashVertical": true, + "SashList": [ + { + "OpeningType": "TURNONLY_LEFT", + "bHasHandle": false, + "dDimension": 50.0 + }, + { + "OpeningType": "TILTTURN_RIGHT", + "bHasHandle": true, + "dDimension": 50.0 + } + ], + "SashType": "NULL", + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_V" + }, + { + "nIndex": 2, + "JointType": "FULL_V" + }, + { + "nIndex": 3, + "JointType": "FULL_V" + }, + { + "nIndex": 4, + "JointType": "FULL_V" + } + ], + "Hardware": "000000", + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SASH" + } + ], + "AreaType": "FRAME" + } + ] +} \ No newline at end of file diff --git a/Lux.API/DemoData/AntaSingola.jwd b/Lux.API/DemoData/AntaSingola.jwd new file mode 100644 index 00000000..3a189341 --- /dev/null +++ b/Lux.API/DemoData/AntaSingola.jwd @@ -0,0 +1,81 @@ +{ + "ProfilePath": "Profilo78", + "AreaList": [ + { + "Shape": "RECTANGLE", + "DimensionList": [ + { + "nIndex": 1, + "sName": "Width", + "dValue": 800.0 + }, + { + "nIndex": 2, + "sName": "Height", + "dValue": 1200.0 + } + ], + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "BottomRail": false, + "BottomRailQty": 0, + "AreaList": [ + { + "bIsSashVertical": true, + "SashList": [ + { + "OpeningType": "TILTTURN_LEFT", + "bHasHandle": true, + "dDimension": 100.0 + } + ], + "SashType": "NULL", + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "Hardware": "000000", + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SASH" + } + ], + "AreaType": "FRAME" + } + ] +} \ No newline at end of file diff --git a/Lux.API/DemoData/FinDueAnteBottomFisso.jwd b/Lux.API/DemoData/FinDueAnteBottomFisso.jwd new file mode 100644 index 00000000..36f99525 --- /dev/null +++ b/Lux.API/DemoData/FinDueAnteBottomFisso.jwd @@ -0,0 +1,132 @@ +{ + "ProfilePath": "Profilo78", + "AreaList": [ + { + "Shape": "RECTANGLE", + "DimensionList": [ + { + "nIndex": 1, + "sName": "Width", + "dValue": 1500.0 + }, + { + "nIndex": 2, + "sName": "Height", + "dValue": 2100.0 + } + ], + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "BottomRail": false, + "BottomRailQty": 0, + "AreaList": [ + { + "SplitShape": "HORIZONTAL", + "SplitPositionList": [ + { + "bIsRelative": true, + "dDimension": 40.0 + }, + { + "bIsRelative": true, + "dDimension": 60.0 + } + ], + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "bIsSashVertical": true, + "SashList": [ + { + "OpeningType": "TURNONLY_LEFT", + "bHasHandle": false, + "dDimension": 50.0 + }, + { + "OpeningType": "TILTTURN_RIGHT", + "bHasHandle": true, + "dDimension": 50.0 + } + ], + "SashType": "NULL", + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "Hardware": "000000", + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SASH" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SPLIT" + } + ], + "AreaType": "FRAME" + } + ] +} \ No newline at end of file diff --git a/Lux.API/DemoData/FinestraSplitVert.jwd b/Lux.API/DemoData/FinestraSplitVert.jwd new file mode 100644 index 00000000..b8dc2849 --- /dev/null +++ b/Lux.API/DemoData/FinestraSplitVert.jwd @@ -0,0 +1,79 @@ +{ + "ProfilePath": "Profilo78", + "AreaList": [ + { + "Shape": "RECTANGLE", + "DimensionList": [ + { + "nIndex": 1, + "sName": "Width", + "dValue": 1500.0 + }, + { + "nIndex": 2, + "sName": "Height", + "dValue": 1800.0 + } + ], + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "BottomRail": false, + "BottomRailQty": 0, + "AreaList": [ + { + "SplitShape": "VERTICAL", + "SplitPositionList": [ + { + "bIsRelative": true, + "dDimension": 50.0 + }, + { + "bIsRelative": true, + "dDimension": 50.0 + } + ], + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SPLIT" + } + ], + "AreaType": "FRAME" + } + ] +} \ No newline at end of file diff --git a/Lux.API/DemoData/FinestraSplitVertOriz.jwd b/Lux.API/DemoData/FinestraSplitVertOriz.jwd new file mode 100644 index 00000000..e8380b30 --- /dev/null +++ b/Lux.API/DemoData/FinestraSplitVertOriz.jwd @@ -0,0 +1,141 @@ +{ + "ProfilePath": "Profilo78", + "AreaList": [ + { + "Shape": "RECTANGLE", + "DimensionList": [ + { + "nIndex": 1, + "sName": "Width", + "dValue": 1500.0 + }, + { + "nIndex": 2, + "sName": "Height", + "dValue": 1800.0 + } + ], + "JointList": [ + { + "nIndex": 1, + "JointType": "FULL_H" + }, + { + "nIndex": 2, + "JointType": "FULL_H" + }, + { + "nIndex": 3, + "JointType": "FULL_H" + }, + { + "nIndex": 4, + "JointType": "FULL_H" + } + ], + "BottomRail": false, + "BottomRailQty": 0, + "AreaList": [ + { + "SplitShape": "VERTICAL", + "SplitPositionList": [ + { + "bIsRelative": true, + "dDimension": 50.0 + }, + { + "bIsRelative": true, + "dDimension": 50.0 + } + ], + "AreaList": [ + { + "AreaList": [ + { + "SplitShape": "HORIZONTAL", + "SplitPositionList": [ + { + "bIsRelative": true, + "dDimension": 40.0 + }, + { + "bIsRelative": true, + "dDimension": 60.0 + } + ], + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SPLIT" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "SplitShape": "HORIZONTAL", + "SplitPositionList": [ + { + "bIsRelative": true, + "dDimension": 40.0 + }, + { + "bIsRelative": true, + "dDimension": 60.0 + } + ], + "AreaList": [ + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + }, + { + "AreaList": [ + { + "FillType": "GLASS", + "AreaList": [], + "AreaType": "FILL" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SPLIT" + } + ], + "AreaType": "SPLITTED" + } + ], + "AreaType": "SPLIT" + } + ], + "AreaType": "FRAME" + } + ] +} \ No newline at end of file diff --git a/Lux.API/DemoImg/AntaDoppia.svg b/Lux.API/DemoImg/AntaDoppia.svg new file mode 100644 index 00000000..b5c13ac0 --- /dev/null +++ b/Lux.API/DemoImg/AntaDoppia.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lux.API/DemoImg/AntaSingola.svg b/Lux.API/DemoImg/AntaSingola.svg new file mode 100644 index 00000000..7f736b0c --- /dev/null +++ b/Lux.API/DemoImg/AntaSingola.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lux.API/ExtLib/EgwMultiEngineManager.dll b/Lux.API/ExtLib/EgwMultiEngineManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..d7a3e93e787b472e739c09599d81071b70907ffb GIT binary patch literal 14336 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 literal 0 HcmV?d00001 diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj index 2adcb589..c6496b2c 100644 --- a/Lux.API/Lux.API.csproj +++ b/Lux.API/Lux.API.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -15,4 +15,10 @@ + + + ExtLib\EgwMultiEngineManager.dll + + + diff --git a/Lux.API/Program.cs b/Lux.API/Program.cs index 48863a6d..22bfd557 100644 --- a/Lux.API/Program.cs +++ b/Lux.API/Program.cs @@ -1,3 +1,5 @@ +using EgwMultiEngineManager; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -7,6 +9,15 @@ builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); +// aggiungo rif libreria EgwManager + +string sCamExePath = @"c:\EgtProg\EgtEngine\EgtEngineR32.exe"; +string sMainLuaPath = @"c:\Temp\EgwMultiEngineManager\Pipe.lua"; +ExecProcessManager myExecProcessManager = new ExecProcessManager(sCamExePath, $"\"{sMainLuaPath}\""); +myExecProcessManager.SetMaxCamInstances(1); +myExecProcessManager.StartExecutionThread(); +builder.Services.AddSingleton(myExecProcessManager); + var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/Lux.Core/RestPayload/JwdDTO.cs b/Lux.Core/RestPayload/JwdDTO.cs index a6f4e7c7..7a30d787 100644 --- a/Lux.Core/RestPayload/JwdDTO.cs +++ b/Lux.Core/RestPayload/JwdDTO.cs @@ -18,6 +18,11 @@ namespace Lux.Core.RestPayload public double Width { get; set; } = 800; public double Height { get; set; } = 800; + + ///

+ /// FAKE: nome del file svg da leggere direttamente... + /// + public string nameUrl { get; set; } = ""; } }