From e44363de3dd5924d53961d490e409876f402d219 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Fri, 23 Jan 2026 17:59:39 +0100 Subject: [PATCH] Trimming 3.1a5 : - aggiunte tolleranze a livello interfaccia per le curve di bordo. --- CalcBezier.lua | 10 ++++++++++ CalcBezierEdges.lua | 39 ++++++++++++++++++++++----------------- EditSyncLines.lua | 7 ------- TrimmingLib.lua | 2 ++ Version.lua | 4 ++-- 5 files changed, 36 insertions(+), 26 deletions(-) diff --git a/CalcBezier.lua b/CalcBezier.lua index d4507bb..aa84372 100644 --- a/CalcBezier.lua +++ b/CalcBezier.lua @@ -36,6 +36,16 @@ while nId do end EgtErase( vIdToErase) +-- Recupero la Tolleranza Lineare ed Angolare con cui sono stati approssimati gli Edges +local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd') +local dEdgeAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, 'd') +if dEdgeLinTol == nil or dEdgeAngTol == nil then + EgtOutBox( ERROR_BEZIER_CREATION .. 'Edge Approx tollerance not found', 'Error', 'ERROR', 'OK') + return +end +dLinTol = dEdgeLinTol +dAngTol = dEdgeAngTol + -- Recupero gli Edges per la creazione della Superficie di Bezier Ruled -- ( ed eventuali Punti di Sincronizzazione se presenti nel Layer di Salvataggio ) local vIdEdges = {} diff --git a/CalcBezierEdges.lua b/CalcBezierEdges.lua index ef4268a..d8e0da2 100644 --- a/CalcBezierEdges.lua +++ b/CalcBezierEdges.lua @@ -28,17 +28,24 @@ if not bOk then return end local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd') +local dEdgeAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, 'd') local dEdgeThick = EgtGetInfo( nCurrLayerId, KEY_THICK_EDGES, 'd') -- Determino il Tipo di Estrazione degli Edges local dLinTolForEdges = dLinTol -local dThickForEdges = 5.0 +local dAngTolForEdges = dAngTol +local dThickForEdges = EDGE_THICK if dEdgeLinTol then dLinTolForEdges = dEdgeLinTol end +if dEdgeAngTol then dAngTolForEdges = dEdgeAngTol end if dEdgeThick then dThickForEdges = dEdgeThick end local vsVal = EgtDialogBox( 'Edge Extraction', { 'Type', 'CB:*Extract Edges,Edges from Normals'}, { 'Linear Tolerance', tostring( dLinTolForEdges)}, + { 'Angular Tolerance', tostring( dAngTolForEdges)}, { 'Thickness', tostring( dThickForEdges)}) -if not vsVal or #vsVal ~= 3 then return end +if not vsVal or #vsVal ~= 4 then return end +dEdgeLinTol = tonumber( vsVal[2]) +dEdgeAngTol = tonumber( vsVal[3]) +dEdgeThick = tonumber( vsVal[4]) -- Rendo invisibili gli altri Layer di Trimmatura e tutti i Layer Temporanei -- NB. Il focus va sul Layer corrente @@ -84,12 +91,8 @@ end local nFirstId, nCount --------------------------------- Estrazione degli Edges --------------------------------- if vsVal[1] == 'Extract Edges' then - -- Recupero la tolleranza lineare per l'estrazione degli Edges - dEdgeLinTol = tonumber( vsVal[2]) - -- La memorizzo come Info per recuperla successivamente - EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol) -- Recupero i Bordi - bOk, nFirstId, nCount = EgtTrimmingGetBorders( nCurrLayerId, vSel, dEdgeLinTol, dAngTol) + bOk, nFirstId, nCount = EgtTrimmingGetBorders( nCurrLayerId, vSel, dEdgeLinTol, dEdgeAngTol) if not bOk then EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK') return @@ -105,14 +108,8 @@ if vsVal[1] == 'Extract Edges' then end --------------------------------- Calcolo Edges per normali --------------------------------- else - -- Recupero la tolleranza lineare per l'estrazione degli Edges e la Thickness - dEdgeLinTol = tonumber( vsVal[2]) - local dThickness = tonumber( vsVal[3]) - -- Le Memorizzo per recuperale successivamente - EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol) - EgtSetInfo( nCurrLayerId, KEY_THICK_EDGES, dEdgeThick) -- Calcolo i Bordi - bOk, nFirstId, nCount = EgtTrimmingGetBordersByNormals( nCurrLayerId, vSel, dEdgeLinTol, dAngTol, dThickness) + bOk, nFirstId, nCount = EgtTrimmingGetBordersByNormals( nCurrLayerId, vSel, dEdgeLinTol, dEdgeAngTol, dEdgeThick) if not bOk then EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK') return @@ -128,22 +125,30 @@ for i = 0, nCount - 1 do return end end + +-- Salvo le Tolleranze nel Layer di Trimming +EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol) +EgtSetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, dEdgeAngTol) +EgtSetInfo( nCurrLayerId, KEY_THICK_EDGES, dEdgeThick) + -- Se più di due curve, definisco dei nuovi Layer di Trimming if nCount > 2 then for i = 2, nCount - 1, 2 do -- Definisco un nuovo Layer di trimming local nNewTrimmingLayer = GlobVar.CreateTrimmingLayer( nCurrPartId) if nCurrLayerId == GDB_ID.NULL then - EgtOutBox( ERROR_CREATING_NEW_TRIMMING .. 'Defining Layer failed', 'Error', 'ERROR', 'OK') + EgtOutBox( ERROR_EDGE_CREATION .. 'Defining Layer failed', 'Error', 'ERROR', 'OK') return end -- Copio proprietà bOk = EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL, dLinTol) and EgtSetInfo( nNewTrimmingLayer, KEY_ANG_TOL, dAngTol) and EgtSetInfo( nNewTrimmingLayer, KEY_SURF_ANG_TOL, dAngFaceTol) and - EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL_EDGES, dEdgeLinTol) + EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL_EDGES, dEdgeLinTol) and + EgtSetInfo( nNewTrimmingLayer, KEY_ANG_TOL_EDGES, dEdgeAngTol) and + EgtSetInfo( nNewTrimmingLayer, KEY_THICK_EDGES, dEdgeThick) if not bOk then - EgtOutBox( ERROR_CREATING_NEW_TRIMMING .. 'Saving Tolerances failed', 'Error', 'ERROR', 'OK') + EgtOutBox( ERROR_EDGE_CREATION .. 'Saving Tolerances failed', 'Error', 'ERROR', 'OK') EgtErase( nNewTrimmingLayer) return end diff --git a/EditSyncLines.lua b/EditSyncLines.lua index 1df4c8e..91741a7 100644 --- a/EditSyncLines.lua +++ b/EditSyncLines.lua @@ -44,13 +44,6 @@ if not nLayerEditSyncId or nLayerEditSyncId == GDB_ID.NULL then return end --- Rendo Invisibili gli altri Layer di Trimming -nId = EgtGetFirstInGroup( nCurrPartId) -while nId do - if GlobVar.IsTrimmingLayer( nId) and nId ~= nCurrLayerId then EgtSetStatus( nId, GDB_ST.OFF) end - nId = EgtGetNext( nId) -end - local vIdEdges = {} nId = EgtGetFirstInGroup( nCurrLayerId) while nId do diff --git a/TrimmingLib.lua b/TrimmingLib.lua index eaea56a..cc97605 100644 --- a/TrimmingLib.lua +++ b/TrimmingLib.lua @@ -10,6 +10,7 @@ local TrimmingVar = { -- Chiavi Info Part/Layers KEY_LIN_TOL = 'LinTol' KEY_LIN_TOL_EDGES = 'LinTolEdges' -- Edges Extraction (modify) +KEY_ANG_TOL_EDGES = 'AngTolEdges' -- Edges Extraction (modify) KEY_THICK_EDGES = 'ThickEdges' -- Edges Extraction (modify) KEY_ANG_TOL = 'AngTol' KEY_SURF_ANG_TOL = 'SurfAngTol' @@ -40,6 +41,7 @@ LAYER_NAME_SYNC_STORED_CURVES = 'SyncStoredCurves' ANG_FACE_TOL = 30. ANG_TOL = 15. LIN_TOL = 0.2 +EDGE_THICK = 5.0 SYNC_LINES_NUMBER = 0 SYNC_LINES_ANG_TOL = 15.0 diff --git a/Version.lua b/Version.lua index 0db43ac..aa8519a 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Trimming dei Termoformati NAME = 'Trimming' -VERSION = '3.1a4' -MIN_EXE = '3.1a4' +VERSION = '3.1a5' +MIN_EXE = '3.1a5'