Separazione dei casi tra frontalini e alzatine

This commit is contained in:
Carlo Baronchelli
2021-07-30 18:56:33 +02:00
parent bbed4d3fd7
commit a91c4e752d
+180 -40
View File
@@ -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