From 77fa6641b1dab858998ac74cfdfd03c62fceae49 Mon Sep 17 00:00:00 2001 From: SaraP Date: Tue, 4 Nov 2025 14:39:36 +0100 Subject: [PATCH] DataWindow : - aggiunti controlli sulle dimensioni nella creazione di telai ad arco. --- Designing/WinLib/WinCreate.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Designing/WinLib/WinCreate.lua b/Designing/WinLib/WinCreate.lua index a4bae00..ba31baf 100644 --- a/Designing/WinLib/WinCreate.lua +++ b/Designing/WinLib/WinCreate.lua @@ -131,11 +131,15 @@ local function CreateFrameCurves( nLayerId, nType, vDim) -- arco a tutto sesto elseif nType == WIN_FRAME_TYPES.ROUND_ARC then -- vDim[1] larghezza, vDim[2] altezza complessiva + -- verifico che altezza sia sensata + if vDim[2] < 0.5 * vDim[1] + GEO.EPS_SMALL then + return + end local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( vDim[1], 0, 0)) EgtSetName( nBottomId, WIN_BOTTOM) local nRightId = EgtLine( nLayerId, Point3d( vDim[1], 0, 0), Point3d( vDim[1], vDim[2] - 0.5 * vDim[1], 0)) EgtSetName( nRightId, WIN_RIGHT) - local nTopId = EgtArcCPA( nLayerId, Point3d( 0.5 * vDim[1], vDim[2] - 0.5 * vDim[1], 0), Point3d( vDim[1], vDim[2] - 0.5 * vDim[1], 0), 180, 0) + local nTopId = EgtArcCPA( nLayerId, Point3d( 0.5 * vDim[1], vDim[2] - 0.5 * vDim[1], 0), Point3d( vDim[1], vDim[2] - 0.5 * vDim[1], 0), 180, 0) EgtSetName( nTopId, WIN_TOP) local nLeftId = EgtLine( nLayerId, Point3d( 0, vDim[2] - 0.5 * vDim[1], 0), ORIG()) EgtSetName( nLeftId, WIN_LEFT) @@ -143,6 +147,10 @@ local function CreateFrameCurves( nLayerId, nType, vDim) -- arco ribassato elseif nType == WIN_FRAME_TYPES.SEGMENTAL_ARC then -- vDim[1] larghezza, vDim[2] altezza dei lati verticali, vDim[3] altezza complessiva + -- controllo che non degeneri in arco a tutto sesto + if vDim[3] - vDim[2] > 0.5 * vDim[1] - GEO.EPS_SMALL then + return + end local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( vDim[1], 0, 0)) EgtSetName( nBottomId, WIN_BOTTOM) local nRightId = EgtLine( nLayerId, Point3d( vDim[1], 0, 0), Point3d( vDim[1], vDim[2], 0)) @@ -155,6 +163,10 @@ local function CreateFrameCurves( nLayerId, nType, vDim) -- arco a 3 centri elseif nType == WIN_FRAME_TYPES.THREE_CENTER_ARC then -- vDim[1] larghezza, vDim[2] altezza dei lati verticali, vDim[3] altezza complessiva, vDim[4] raggio di raccordo + -- controllo sulle dimensioni + if vDim[3] - vDim[2] > 0.5 * vDim[1] - GEO.EPS_SMALL or vDim[4] > 0.5 * vDim[1] - GEO.EPS_SMALL then + return + end local nBottomId = EgtLine( nLayerId, ORIG(), Point3d( vDim[1], 0, 0)) EgtSetName( nBottomId, WIN_BOTTOM) local nRightId = EgtLine( nLayerId, Point3d( vDim[1], 0, 0), Point3d( vDim[1], vDim[2], 0))