Separazione dei casi tra frontalini e alzatine
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user