From bf990439aa068c873af482e4b17e40974fbad070 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 19 May 2026 17:27:30 +0200 Subject: [PATCH] Trimming 3.1e2 : - aggiunta info sui bordi per determinare un ordine tra i due. - migliorie nella gestione delle info. --- CalcBezier.lua | 3 ++ ConfirmSurfChange.lua | 3 ++ DeleteOrientationLines.lua | 56 ++++++++++++++++++++++++++++++++++++++ EditOrientationLines.lua | 11 +++++++- TrimmingLib.lua | 9 ++++-- Version.lua | 4 +-- 6 files changed, 80 insertions(+), 6 deletions(-) diff --git a/CalcBezier.lua b/CalcBezier.lua index aa84372..2863846 100644 --- a/CalcBezier.lua +++ b/CalcBezier.lua @@ -93,6 +93,9 @@ for i = 1, #vIdEdges, 2 do -- Calcolo la Superficie di Bezier Ruled -- [ Per ora non passo superfici di riferimento per eventuale Invert()] + -- scrivo l'info che mi identifica la curva aparametro V0 e la curva a parametro V1 + EgtSetInfo( nEdge1Id, KEY_BORDER_ORDER, KEY_FIRST_BORDER) + EgtSetInfo( nEdge2Id, KEY_BORDER_ORDER, KEY_SECOND_BORDER) local nSurfBzId = EgtTrimmingGetRuledBezier( nCurrLayerId, {}, nEdge1Id, nEdge2Id, dLinTol, vIdSyncLines) if nSurfBzId == GDB_ID.NULL then EgtOutBox( ERROR_BEZIER_CREATION .. 'Creating Bezier Surf failed', 'Error', 'ERROR', 'OK') diff --git a/ConfirmSurfChange.lua b/ConfirmSurfChange.lua index b80d973..d608f1a 100644 --- a/ConfirmSurfChange.lua +++ b/ConfirmSurfChange.lua @@ -72,6 +72,9 @@ end -- Se nel gruppo di trim ho due curve di bordo le cancello if #vIdEdges == 2 then + -- prima di cancellare le vecchie curve salvo eventuali info + EgtCopyAllInfoFrom(vNewBorder[0], vIdEdges[0]) + EgtCopyAllInfoFrom(vNewBorder[1], vIdEdges[1]) EgtErase( vIdEdges) end diff --git a/DeleteOrientationLines.lua b/DeleteOrientationLines.lua index 8dfbb33..a538f52 100644 --- a/DeleteOrientationLines.lua +++ b/DeleteOrientationLines.lua @@ -34,6 +34,62 @@ end local bDelete = EgtOutBox( 'Do you want to delete the current Orienting Orienting Layer ?', 'Deleting', 'QUESTION', 'YESNO') if not bDelete then return end + +-- Elimino dalle curve di bordo le info +-- Layer di Orienting ( da togliere dalla lista) +local vOrientingLayerId = EgtGetInfo( vIdEdges[1], MCH_TRIMMING.OR_LAYER, 'vi') +if #vOrientingLayerId > 1 then + table.remove(vOrientingLayerId) + EgtSetInfo( vIdEdges[1], MCH_TRIMMING.OR_LAYER, vOrientingLayerId) + EgtSetInfo( vIdEdges[2], MCH_TRIMMING.OR_LAYER, vOrientingLayerId) +else + EgtRemoveInfo(vIdEdges[1], MCH_TRIMMING.OR_LAYER) + EgtRemoveInfo(vIdEdges[2], MCH_TRIMMING.OR_LAYER) +end +-- elimino i Vettori rappresentativi +-- Interpolation Start +local vOrientingISId = EgtGetInfo( vIdEdges[1], MCH_TRIMMING.OR_IS, 'vi') + +if #vOrientingISId > 1 then + table.remove( vOrientingISId) + EgtSetInfo( vIdEdges[1], MCH_TRIMMING.OR_IS, vOrientingISId) + EgtSetInfo( vIdEdges[2], MCH_TRIMMING.OR_IS, vOrientingISId) +else + EgtRemoveInfo(vIdEdges[1], MCH_TRIMMING.OR_IS) + EgtRemoveInfo(vIdEdges[2], MCH_TRIMMING.OR_IS) +end +-- Start +local vOrientingSId = EgtGetInfo( vIdEdges[1], MCH_TRIMMING.OR_S, 'vi') + +if #vOrientingSId > 1 then + table.remove( vOrientingSId) + EgtSetInfo( vIdEdges[1], MCH_TRIMMING.OR_S, vOrientingSId) + EgtSetInfo( vIdEdges[2], MCH_TRIMMING.OR_S, vOrientingSId) +else + EgtRemoveInfo(vIdEdges[1], MCH_TRIMMING.OR_S) + EgtRemoveInfo(vIdEdges[2], MCH_TRIMMING.OR_S) +end +-- End +local vOrientingEId = EgtGetInfo( vIdEdges[1], MCH_TRIMMING.OR_E, 'vi') +if #vOrientingEId > 1 then + table.insert( vOrientingEId, nEndId) + EgtSetInfo( vIdEdges[1], MCH_TRIMMING.OR_E, vOrientingEId) + EgtSetInfo( vIdEdges[2], MCH_TRIMMING.OR_E, vOrientingEId) +else + EgtRemoveInfo(vIdEdges[1], MCH_TRIMMING.OR_E) + EgtRemoveInfo(vIdEdges[2], MCH_TRIMMING.OR_E) +end +-- Interpolation End +local vOrientingIEId = EgtGetInfo( vIdEdges[1], MCH_TRIMMING.OR_IE, 'vi') +if #vOrientingIEId > 1 then + table.remove( vOrientingIEId) + EgtSetInfo( vIdEdges[1], MCH_TRIMMING.OR_IE, vOrientingIEId) + EgtSetInfo( vIdEdges[2], MCH_TRIMMING.OR_IE, vOrientingIEId) +else + EgtRemoveInfo(vIdEdges[1], MCH_TRIMMING.OR_IE) + EgtRemoveInfo(vIdEdges[2], MCH_TRIMMING.OR_IE) +end + -- Elimino il Layer EgtErase( nCurrLayerId) diff --git a/EditOrientationLines.lua b/EditOrientationLines.lua index b6a4bec..9e7fb53 100644 --- a/EditOrientationLines.lua +++ b/EditOrientationLines.lua @@ -147,10 +147,19 @@ EgtSetInfo( nCurrLayerId, KEY_ORIENTING_PHI_END, dPhiEnd) EgtSetInfo( nCurrLayerId, KEY_ORIENTING_LINES_START_LEN, dStartLen) EgtSetInfo( nCurrLayerId, KEY_ORIENTING_LINES_END_LEN, dEndLen) +local sInfoBorder = EgtGetInfo( nMainEdgeId, KEY_BORDER_ORDER) +if sInfoBorder == nil then + EgtOutBox( ORIENTING_LINES_END_LEN .. 'Error : Borders order has not been established', 'Error', 'ERROR', 'OK') + EgtErase( nLayerEditOrientingId) + EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId) + return +end +local bMainIsFirstBorder = (sInfoBorder == KEY_FIRST_BORDER) + -- Recupero le Curve di Orienting local nInterpStartId, nStartId, nEndId, nInterpEndId bOk, nInterpStartId, nStartId, nEndId, nInterpEndId = EgtTrimmingGetToolOrientationLines( nLayerEditOrientingId, - nMainEdgeId, nOtherEdgeId, nFirstSyncLineId, nSecondSyncLineId, nLayerSynEditId, dThetaStart, dPhiStart, dThetaEnd, dPhiEnd, + nMainEdgeId, nOtherEdgeId, bMainIsFirstBorder, nFirstSyncLineId, nSecondSyncLineId, nLayerSynEditId, dThetaStart, dPhiStart, dThetaEnd, dPhiEnd, dStartLen, dEndLen, dLinTol) if not bOk then EgtOutBox( ORIENTING_LINES_END_LEN .. 'Error in Computing Orienting Lines', 'Error', 'ERROR', 'OK') diff --git a/TrimmingLib.lua b/TrimmingLib.lua index c2df0a5..6cb5ba1 100644 --- a/TrimmingLib.lua +++ b/TrimmingLib.lua @@ -32,7 +32,7 @@ KEY_ORIENTING_THETA_START = 'OrientingThetaStart' -- Angolo Theta Start p KEY_ORIENTING_PHI_START = 'OrientingPhiStart' -- Angolo Phi Start per Orienting Lines KEY_ORIENTING_THETA_END = 'OrientingThetaEnd' -- Angolo Theta End per Orienting Lines KEY_ORIENTING_PHI_END = 'OrientingPhiEnd' -- Angolo Phi End per Orienting Lines -KEY_SYNC_LINES_REGOLARIZATION = "SyncCuvesRef" -- curve di inizio e fine della zona da regolarizzare +KEY_SYNC_LINES_REGOLARIZATION = 'SyncCurvesRef' -- curve di inizio e fine della zona da regolarizzare -- Chive per Tipologia di Layer KEY_LAYER_TYPE = 'Trimming_Layer_Type' @@ -41,7 +41,7 @@ KEY_LAYER_SELECTION_HOLES = 'Trimming_Selection_Holes_Layer' KEY_LAYER_EDIT_CURVES = 'Trimming_EditCurves_Layer' KEY_LAYER_SYNC_CURVES = 'Trimming_SyncCurves_Layer' KEY_LAYER_ORIENTATION_CURVES = 'Trimming_OrientationCurves_Layer' -KEY_LAYER_EDIT_SURF = "Trimming_EditSurf_Layer" +KEY_LAYER_EDIT_SURF = 'Trimming_EditSurf_Layer' -- Generali PART_NAME = 'Trimming' @@ -50,7 +50,7 @@ LAYER_NAME_SELECTION_HOLES = 'TrimmingHoles' LAYER_NAME_EDIT_CURVES = 'EditCurves' LAYER_NAME_SYNC_CURVES = 'SyncCurves' LAYER_NAME_ORIENTATION_CURVES = 'OrientationCurves' -LAYER_NAME_EDIT_SURF = "EditSurf" +LAYER_NAME_EDIT_SURF = 'EditSurf' ANG_FACE_TOL = 30. ANG_TOL = 15. LIN_TOL = 0.2 @@ -80,6 +80,9 @@ SELECTION_SURF_COLOR = Color3d( 255, 255, 185) EDGES_NAME = 'Border' EDGE_HOLE_NAME = 'ButtonHole' EDGES_COLOR = Color3d( 0, 128, 255) +KEY_BORDER_ORDER = 'BorderOrder' +KEY_FIRST_BORDER = 'BorderV0' +KEY_SECOND_BORDER = 'BorderV1' -- Edit dei bordi di Bezier -- EDGES_EDIT_TYPE = { diff --git a/Version.lua b/Version.lua index cf04250..149d2d6 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Trimming dei Termoformati NAME = 'Trimming' -VERSION = '3.1e1' -MIN_EXE = '3.1e1' +VERSION = '3.1e2' +MIN_EXE = '3.1e2'