diff --git a/LuaLibs/FeatureTopology.lua b/LuaLibs/FeatureTopology.lua index 9983919..03dbd55 100644 --- a/LuaLibs/FeatureTopology.lua +++ b/LuaLibs/FeatureTopology.lua @@ -2,6 +2,7 @@ -- Libreria per classificazione topologica feature travi -- 2023/09/26 Aggiunte topologie Strip e Cut. -- 2023/09/27 Modificata GetFacesParallelToPart per tunnel, pocket e groove 3 lati +-- 2023/10/16 In GetFacesParallelToPart rimossa Pocket e aggiunto Rabbet al check solo direzione principale -- Tabella per definizione modulo local FeatureTopology = {} @@ -106,11 +107,11 @@ end --------------------------------------------------------------------- -- restituisce un vettore contenente gli indici delle facce di Proc parallele ad una delle direzioni principali; il check varia in base alla famiglia topologica -local function GetFacesParallelToPart( Proc, sFamily) +local function GetFacesParallelToPart( Proc, sFamily, bIsThrough) local vFacesParallelToPart = {} for i = 0, Proc.Fct - 1 do local vtN = EgtSurfTmFacetNormVersor( Proc.Id, i, GDB_ID.ROOT) - if sFamily == 'Bevel' or sFamily == 'DoubleBevel' or sFamily == 'Strip' or sFamily == 'Tunnel' or sFamily == 'Pocket' or ( sFamily == 'Groove' and Proc.IsThrough == true) then + if sFamily == 'Rabbet' or sFamily == 'Bevel' or sFamily == 'DoubleBevel' or sFamily == 'Strip' or sFamily == 'Tunnel' or ( sFamily == 'Groove' and bIsThrough) then local vTriangularFaces = GetTriangularFaces( Proc) local bIsTriangularFace = false -- verifico se la faccia รจ triangolare @@ -226,7 +227,7 @@ function FeatureTopology.Classify( Proc, b3Raw) sFamily = 'Pocket' bIsThrough = false end - local vFacesParallelToPart = GetFacesParallelToPart( Proc, sFamily) + local vFacesParallelToPart = GetFacesParallelToPart( Proc, sFamily, bIsThrough) bIsParallel = ( #vFacesParallelToPart == Proc.Fct) if sFamily == 'OUTLINE' or sFamily == 'DRILLING' then diff --git a/Process.lua b/Process.lua index 09d5b8f..37b89be 100644 --- a/Process.lua +++ b/Process.lua @@ -115,23 +115,6 @@ local function MyProcessInputData() end EgtDeselectAll() - -- Le ordino in senso di lunghezza crescente - table.sort( vBeam, function( B1, B2) - if abs( B1.Box:getDimX() - B2.Box:getDimX()) < 1 then - return B1.Ind < B2.Ind - else - return B1.Box:getDimX() < B2.Box:getDimX() - end - end) - do - local sOut = '' - for i = 1, #vBeam do - sOut = sOut .. vBeam[i].Name .. ', ' - end - sOut = sOut:sub( 1, -3) - EgtOutLog( 'Travi ordinate : ' .. sOut, 1) - end - return true end @@ -152,12 +135,13 @@ local function MyProcessBeams() local dAddLen = BD.OVM_HEAD + ( #vBeam - 1) * BD.OVM_MID EgtOutLog( 'Ltot : '..EgtNumToString( dTotLen, 1) .. ' Lagg : '..EgtNumToString( dAddLen, 1)..' MinUnloadRaw : '.. EgtNumToString( BD.MinRaw + BD.OVM_MID, 1), 1) - -- Richiedo lunghezza del grezzo e sovramateriale di testa + -- Richiedo lunghezza del grezzo, sovramateriale di testa, forzatura verticale e ordinamento automatico secondo la lunghezza local vsVal = EgtDialogBox( 'Lavora Travi' .. ' (Ltot='..EgtNumToString( dTotLen + dAddLen + 0.5, 0).. ', Lmax='..EgtNumToString( BD.MAX_RAW, 0)..',MinUlr='..EgtNumToString( BD.MinRaw + BD.OVM_MID, 0)..')', {'Lunghezza grezzo', EgtNumToString( BD.STD_RAW, 0)}, {'Sovramateriale di testa', EgtNumToString( BD.OVM_HEAD, 0)}, - {'Forza sezione verticale', ' CB:true,*false'}) + {'Forza sezione verticale', ' CB:true,*false'}, + {'Ordina per lunghezza', ' CB:true,*false'}) if not vsVal then EgtDraw() return @@ -221,6 +205,26 @@ local function MyProcessBeams() return false end + -- Se richiesto, ordino le travi in senso di lunghezza crescente + local bOrd = ( vsVal[4] == 'true') + if bOrd then + table.sort( vBeam, function( B1, B2) + if abs( B1.Box:getDimX() - B2.Box:getDimX()) < 1 then + return B1.Ind < B2.Ind + else + return B1.Box:getDimX() < B2.Box:getDimX() + end + end) + end + do + local sOut = '' + for i = 1, #vBeam do + sOut = sOut .. vBeam[i].Name .. ', ' + end + sOut = sOut:sub( 1, -3) + EgtOutLog( 'Travi ordinate : ' .. sOut, 1) + end + -- Sistemo le travi nel grezzo local bOk, sErr = BE.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, vBeam) if not bOk then