From a91c4e752ddfaf657b24e2a1b363046999fd232c Mon Sep 17 00:00:00 2001 From: Carlo Baronchelli Date: Fri, 30 Jul 2021 18:56:33 +0200 Subject: [PATCH] Separazione dei casi tra frontalini e alzatine --- Frontalini_ecc/CompoAF/Alz&Front.lua | 220 ++++++++++++++++++++++----- 1 file changed, 180 insertions(+), 40 deletions(-) diff --git a/Frontalini_ecc/CompoAF/Alz&Front.lua b/Frontalini_ecc/CompoAF/Alz&Front.lua index 293721c..a347f7f 100644 --- a/Frontalini_ecc/CompoAF/Alz&Front.lua +++ b/Frontalini_ecc/CompoAF/Alz&Front.lua @@ -13,6 +13,7 @@ -- - studio casi per inserimento InfoAF per tagli inclinati -- 28/07/2021 - semplificazione di SideTab e aggiunta angoli tra lati consecutivi -- 29/07/2021 - inserimento InfoAF per tagli inclinati +-- 30/07/2021 - separazione dei casi tra frontalini e alzatine -- Intestazioni require( 'EgtBase') @@ -134,7 +135,7 @@ local function CMP_Draw(bPreview) local InfoAF = EgtGetInfo( CurrSide, "AF", 'i') -- se primo lato if SideNum == 1 then - -- |LEGENDA| + -- |LEGENDA per campi di SideTab| -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| -- |.u = SideStartVector; .v = SideEndVector;| -- .g = PrecSideEndvector; .h = ProxSideStartVector; @@ -174,7 +175,7 @@ local function CMP_Draw(bPreview) SideNum = SideNum + 1 end --while -- completo la tabella con i riferimenti tra ultimo lato e primo (in quanto successivo all'ultimo) - -- |(ripeti LEGENDA| + -- |(ripeti LEGENDA per campi di SideTab)|| -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| -- |.u = SideStartVector; .v = SideEndVector;| -- .g = PrecSideEndvector; .h = ProxSideStartVector; @@ -188,7 +189,8 @@ local function CMP_Draw(bPreview) SideTab[#SideTab].d = SideTab[1].b SideTab[1].c = SideTab[#SideTab].b SideTab[#SideTab].z = angv1v2 - SideTab[1].y = angv1v2 + S + ideTab[1].y = angv1v2 end -- restituisco un messaggio al programma OMAG-Cut CMP.MSG = sMsg @@ -224,47 +226,185 @@ local function CMP_Draw(bPreview) Pt = EgtSP( Side) + VRotated( SVect*dDim, -90) -- chiamo la funzione per il disegno del rettangolo (Lay, Pt, Base, Altezza, Vettore direz. iniziale, prefisso per nome lati) local l1, l2, l3, l4 = DrawRect (Lay, Pt, BaseL, HeightL, SVect, sName) - - -- >>>>>>>>>>>>>>>>>>>>>>> QUI >>>>>>>>>>>>>>>>>> - - -- assegno eventualmente ai lati del rettangolo Info per taglio inclinato + -- + -- **INFO PER TAGLI INCLINATI** local Tab = SideTab ; local N = SideNum - local Alpha = Tab[N].y; local Beta - if Alpha >= 0 then - Beta = 180-Alpha + + -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> QUI >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + local Alphap = Tab[N].y; local Betap + -- angoli tra lato precedente e attuale + if Alphap >= 0 then + Betap = 180-Alphap else - Beta = (180+Alpha) + Betap = (180+Alphap) end - -- |(ripeti LEGENDA| - -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| - -- |.u = SideStartVector; .v = SideEndVector;| - -- .g = PrecSideEndvector; .h = ProxSideStartVector; - -- |.y = PrecSide-Side_Angle; .z = Side-ProxSide_Angle.)| - -- **1) p0.sx** = non continua da lato precedente, angolo 'a sx' - if Tab[N].b ~= Tab[N].c and Alpha > 0 then - -- **p0.sx.1** - if Alpha > 90 then - EgtSetInfo( l1, "SideAng", -(90-Beta)) -- -F_Delta? - EgtSetInfo( l1, "OrigSideAng", -(90-Beta)) -- -F_Delta? - -- (in caso **p0.sx.2** = Alpha <= 90, non si fa taglio inclinato) - end - -- **2) p0.dx** = non continua da lato precedente, angolo 'a dx' - elseif Tab[N].b ~= Tab[N].c and Alpha < 0 then - -- **p0.dx.1** - if -Alpha > 90 then - EgtSetInfo( l1, "SideAng", 90-Beta) -- -F_Delta? - EgtSetInfo( l1, "OrigSideAng", 90-Beta) -- -F_Delta? - -- (in caso **p0.dx.2** = -Alpha <= 90, non si fa taglio inclinato) - end - -- **3) p1.sx** = continua da lato precedente, angolo 'a sx' - elseif Tab[N].b == Tab[N].c and Alpha > 0 then - EgtSetInfo( l1, "SideAng", -(90-Beta/2+F_Delta)) - EgtSetInfo( l1, "OrigSideAng", -(90-Beta/2+F_Delta)) - -- **4) p1.dx** = continua da lato precedente, angolo 'a dx' - elseif Tab[N].b == Tab[N].c and Alpha < 0 then - EgtSetInfo( l1, "SideAng", 90-Beta/2-F_Delta) - EgtSetInfo( l1, "OrigSideAng", 90-Beta/2-F_Delta) + -- angoli tra lato attuale e successivo + local Alphas = Tab[N].z; local Betas + if Alphas >= 0 then + Betas = 180-Alphas + else + Betas = (180+Alphas) end + -- **ALZATINE** + if Tab[N].b = 1 then + -- CASI RIFERITI AL LATO PRECEDENTE + -- |(ripeti LEGENDA per campi di SideTab)| + -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| + -- |.u = SideStartVector; .v = SideEndVector;| + -- .g = PrecSideEndvector; .h = ProxSideStartVector; + -- |.y = PrecSide-Side_Angle; .z = Side-ProxSide_Angle.)| + -- **1) Ap0.sx** = non continua da lato precedente, angolo 'a sx' + if Tab[N].b ~= Tab[N].c and Alphap > 0 then + EgtSetInfo( l1, "SideAng", Betap - 90) -- -F_Delta? + EgtSetInfo( l1, "OrigSideAng", Betap - 90) -- -F_Delta? + -- (in caso **p0.sx.2** = Alphap <= 90, non si fa taglio inclinato) + -- **2) Ap0.dx** = non continua da lato precedente, angolo 'a dx' + elseif Tab[N].b ~= Tab[N].c and Alphap < 0 then + EgtSetInfo( l1, "SideAng", 90 - Betap) -- -F_Delta? + EgtSetInfo( l1, "OrigSideAng", 90 - Betap) -- -F_Delta? + -- **3) Ap1.sx** = continua da lato precedente, angolo 'a sx' + elseif Tab[N].b == Tab[N].c and Alphap > 0 then + EgtSetInfo( l1, "SideAng", -(90-Betap/2+F_Delta)) + EgtSetInfo( l1, "OrigSideAng", -(90-Betap/2+F_Delta)) + -- **4) Ap1.dx** = continua da lato precedente, angolo 'a dx' + elseif Tab[N].b == Tab[N].c and Alphap < 0 then + EgtSetInfo( l1, "SideAng", 90-Betap/2-F_Delta) + EgtSetInfo( l1, "OrigSideAng", 90-Betap/2-F_Delta) + + + + + -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> QUI >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + + + + + -- CASI RIFERITI AL LATO SUCCESSIVO + --[[ + casi 1) e 2) da modiifcare come 1) e 2) precedenti, casi 3 e 4 ok uguali a frontalini + -- + -- CASI RIFERITI AL LATO SUCCESSIVO + -- |(ripeti LEGENDA per campi di SideTab|| + -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| + -- |.u = SideStartVector; .v = SideEndVector;| + -- .g = PrecSideEndvector; .h = ProxSideStartVector; + -- |.y = PrecSide-Side_Angle; .z = Side-ProxSide_Angle.)| + -- **1) Fs0.sx** = non continua al lato successivo, angolo 'a sx' + if Tab[N].b ~= Tab[N].c and Betass > 0 then + -- **FS0.sx.1** + if Alphas > 90 then + EgtSetInfo( l3, "SideAng", -(90-Betas)) -- -F_Delta? + EgtSetInfo( l3, "OrigSideAng", -(90-Betas)) -- -F_Delta? + -- (in caso **p0.sx.2** = Alphas <= 90, non si fa taglio inclinato) + end + -- **2) Fs0.dx** = non continua al lato successivo, angolo 'a dx' + elseif Tab[N].b ~= Tab[N].c and Alphas < 0 then + -- **Fs0.dx.1** + if -Alphas > 90 then + EgtSetInfo( l3, "SideAng", 90-Betas) -- -F_Delta? + EgtSetInfo( l3, "OrigSideAng", 90-Betas) -- -F_Delta? + -- (in caso **p0.dx.2** = -Alphas <= 90, non si fa taglio inclinato) + end + -- **3) Fs1.sx** = continua al lato successivo, angolo 'a sx' + elseif Tab[N].b == Tab[N].c and Alphas > 0 then + EgtSetInfo( l3, "SideAng", -(90-Betas/2+F_Delta)) + EgtSetInfo( l3, "OrigSideAng", -(90-Betas/2+F_Delta)) + -- **4) Fs1.dx** = continua al lato successivo, angolo 'a dx' + elseif Tab[N].b == Tab[N].c and Alphas < 0 then + EgtSetInfo( l3, "SideAng", 90-Betas/2-F_Delta) + EgtSetInfo( l3, "OrigSideAng", 90-Betas/2-F_Delta) + -- + ]] + + + + + + -- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< QUI <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + + -- **FRONTALINI** + else if Tab[N].b = 2 then + + -- CASI RIFERITI AL LATO PRECEDENTE + --local Alphap = Tab[N].y; local Betap + --if Alphap >= 0 then + -- Betap = 180-Alphap + --else + -- Betap = (180+Alphap) + --end + -- |(ripeti LEGENDA per campi di SideTab)| + -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| + -- |.u = SideStartVector; .v = SideEndVector;| + -- .g = PrecSideEndvector; .h = ProxSideStartVector; + -- |.y = PrecSide-Side_Angle; .z = Side-ProxSide_Angle.)| + -- **1) Fp0.sx** = non continua da lato precedente, angolo 'a sx' + if Tab[N].b ~= Tab[N].c and Alphap > 0 then + -- **Fp0.sx.1** + if Alphap > 90 then + EgtSetInfo( l1, "SideAng", -(90-Betap)) -- -F_Delta? + EgtSetInfo( l1, "OrigSideAng", -(90-Betap)) -- -F_Delta? + -- (in caso **p0.sx.2** = Alphap <= 90, non si fa taglio inclinato) + end + -- **2) Fp0.dx** = non continua da lato precedente, angolo 'a dx' + elseif Tab[N].b ~= Tab[N].c and Alphap < 0 then + -- **Fp0.dx.1** + if -Alphap > 90 then + EgtSetInfo( l1, "SideAng", 90-Betap) -- -F_Delta? + EgtSetInfo( l1, "OrigSideAng", 90-Betap) -- -F_Delta? + -- (in caso **p0.dx.2** = -Alphap <= 90, non si fa taglio inclinato) + end + -- **3) Fp1.sx** = continua da lato precedente, angolo 'a sx' + elseif Tab[N].b == Tab[N].c and Alphap > 0 then + EgtSetInfo( l1, "SideAng", -(90-Betap/2+F_Delta)) + EgtSetInfo( l1, "OrigSideAng", -(90-Betap/2+F_Delta)) + -- **4) Fp1.dx** = continua da lato precedente, angolo 'a dx' + elseif Tab[N].b == Tab[N].c and Alphap < 0 then + EgtSetInfo( l1, "SideAng", 90-Betap/2-F_Delta) + EgtSetInfo( l1, "OrigSideAng", 90-Betap/2-F_Delta) + -- + -- CASI RIFERITI AL LATO SUCCESSIVO + -- |(ripeti LEGENDA per campi di SideTab|| + -- |.a = SideId; .b = SideInfo-A/F; c= PrecSideInfo, .d = ProxSideInfo;| + -- |.u = SideStartVector; .v = SideEndVector;| + -- .g = PrecSideEndvector; .h = ProxSideStartVector; + -- |.y = PrecSide-Side_Angle; .z = Side-ProxSide_Angle.)| + -- **1) Fs0.sx** = non continua al lato successivo, angolo 'a sx' + if Tab[N].b ~= Tab[N].c and Betass > 0 then + -- **FS0.sx.1** + if Alphas > 90 then + EgtSetInfo( l3, "SideAng", -(90-Betas)) -- -F_Delta? + EgtSetInfo( l3, "OrigSideAng", -(90-Betas)) -- -F_Delta? + -- (in caso **p0.sx.2** = Alphas <= 90, non si fa taglio inclinato) + end + -- **2) Fs0.dx** = non continua al lato successivo, angolo 'a dx' + elseif Tab[N].b ~= Tab[N].c and Alphas < 0 then + -- **Fs0.dx.1** + if -Alphas > 90 then + EgtSetInfo( l3, "SideAng", 90-Betas) -- -F_Delta? + EgtSetInfo( l3, "OrigSideAng", 90-Betas) -- -F_Delta? + -- (in caso **p0.dx.2** = -Alphas <= 90, non si fa taglio inclinato) + end + -- **3) Fs1.sx** = continua al lato successivo, angolo 'a sx' + elseif Tab[N].b == Tab[N].c and Alphas > 0 then + EgtSetInfo( l3, "SideAng", -(90-Betas/2+F_Delta)) + EgtSetInfo( l3, "OrigSideAng", -(90-Betas/2+F_Delta)) + -- **4) Fs1.dx** = continua al lato successivo, angolo 'a dx' + elseif Tab[N].b == Tab[N].c and Alphas < 0 then + EgtSetInfo( l3, "SideAng", 90-Betas/2-F_Delta) + EgtSetInfo( l3, "OrigSideAng", 90-Betas/2-F_Delta) + -- + end -- AlZATINE/FRONTALINI + -- prevedere caso di errore (info ~= da 1 e da 2 e non nulla ? ************ + + + + + end --(SideTab[SideNum].b ~= 0 and SideTab[SideNum].b ~= nil) end --for