Merge branch 'Cabinet_Top_Chicken' of https://gitlab.steamware.net/egalware-cadcam/lua/StoneSolidGen into Cabinet_Top_Chicken
This commit is contained in:
+31
-23
@@ -704,47 +704,49 @@ function TJunction(dAngBetween, dTh1, dTh2, nType, dLen1, dLen2, bOnLoop)
|
||||
if dAngBetween > 0 then
|
||||
if nType == JUNC.TrimStart then
|
||||
-- trim start
|
||||
local dDeltaStart = - dTh1 / sin(dAngBetween)
|
||||
dLen2 = dLen2 + dDeltaStart
|
||||
local dDeltaStart = dTh1 / sin(dAngBetween)
|
||||
if not bOnLoop then dDeltaStart = dDeltaStart - dTh2 * tan(90 - dAngBetween) end
|
||||
dLen2 = dLen2 - dDeltaStart
|
||||
dXOffset2 = - dDeltaStart
|
||||
-- extend end
|
||||
local dDeltaEnd = dTh1 * tan(90- math.abs(dAngBetween))
|
||||
local dDeltaEnd = dTh1 * tan(90- dAngBetween)
|
||||
dLen1 = dLen1 + dDeltaEnd
|
||||
dXOffset1 = dDeltaEnd
|
||||
elseif nType == JUNC.TrimEnd then
|
||||
-- trim end
|
||||
local dDeltaEnd = - dTh2 / sin(dAngBetween)
|
||||
dLen1 = dLen1 + dDeltaEnd
|
||||
dXOffset1 = dDeltaEnd
|
||||
local dDeltaEnd = dTh2 / sin(dAngBetween)
|
||||
if not bOnLoop then dDeltaEnd = dDeltaEnd - dTh1 * tan(90 - dAngBetween) end
|
||||
dLen1 = dLen1 - dDeltaEnd
|
||||
dXOffset1 = - dDeltaEnd
|
||||
-- extend start
|
||||
local dDeltaStart = dTh2 * tan(90- math.abs(dAngBetween))
|
||||
local dDeltaStart = dTh2 * tan(90- dAngBetween)
|
||||
dLen2 = dLen2 + dDeltaStart
|
||||
dXOffset2 = - dDeltaStart
|
||||
dXOffset2 = dDeltaStart
|
||||
end
|
||||
else
|
||||
-- qui sto estendendo le lunghezze, infatti gli angoli sono nergativi e quindi anche il loro seno
|
||||
-- qui sto estendendo le lunghezze, infatti gli angoli sono negativi e quindi anche il loro seno
|
||||
if nType == JUNC.TrimStart then
|
||||
-- il trim start diventa un extend end
|
||||
local dDeltaEnd = - dTh2 / sin(dAngBetween)
|
||||
local dDeltaEnd = dTh2 / sin(math.abs(dAngBetween))
|
||||
if not bOnLoop then dDeltaEnd = dDeltaEnd - dTh1 * tan(90 - math.abs(dAngBetween)) end
|
||||
dLen1 = dLen1 + dDeltaEnd
|
||||
dXOffset1 = dDeltaEnd
|
||||
-- accorcio lo start
|
||||
local dDeltaStart = 0
|
||||
if not bOnLoop then dDeltaStart = - dTh2 * tan(90- math.abs(dAngBetween)) end
|
||||
dLen2 = dLen2 + dDeltaStart
|
||||
if not bOnLoop then dDeltaStart = dTh2 * tan(90- math.abs(dAngBetween)) end
|
||||
dLen2 = dLen2 - dDeltaStart
|
||||
dXOffset2 = - dDeltaStart
|
||||
elseif nType == JUNC.TrimEnd then
|
||||
-- il trim end diventa un extend start
|
||||
local dDeltaStart = dTh1 / sin(dAngBetween)
|
||||
if not bOnLoop then dDeltaStart = dDeltaStart + dTh2 * tan(90 - math.abs(dAngBetween)) end
|
||||
dLen2 = dLen2 - dDeltaStart
|
||||
local dDeltaStart = dTh1 / sin(math.abs(dAngBetween))
|
||||
if not bOnLoop then dDeltaStart = dDeltaStart - dTh2 * tan(90 - math.abs(dAngBetween)) end
|
||||
dLen2 = dLen2 + dDeltaStart
|
||||
dXOffset2 = dDeltaStart
|
||||
-- accorcio l'end
|
||||
local dDeltaEnd = 0
|
||||
if not bOnLoop then dDeltaEnd = - dTh1 * tan(90- math.abs(dAngBetween)) end
|
||||
dLen1 = dLen1 + dDeltaEnd
|
||||
dXOffset1 = dDeltaEnd
|
||||
if not bOnLoop then dDeltaEnd = dTh1 * tan(90- math.abs(dAngBetween)) end
|
||||
dLen1 = dLen1 - dDeltaEnd
|
||||
dXOffset1 = - dDeltaEnd
|
||||
end
|
||||
end
|
||||
return dLen1, dLen2, dXOffset1, dXOffset2
|
||||
@@ -773,7 +775,11 @@ function AngleJunction(dAngBetween, dTh1, dTh2, dLen1, dLen2, bOnLoop)
|
||||
end
|
||||
|
||||
function ManageJunction(dAngBetween, dTh1, dTh2, nType, dLen1, dLen2, bOnLoop)
|
||||
--nJunctionType -- 1 TrimStart, 2 TrimEnd, 3Ang
|
||||
-- l'offset restituito è del segno della variazione di lunghezza del segmento
|
||||
-- se la modifica è stata fatta allo start del pezzo allora bisognerà applicare uno spostamento
|
||||
-- di segno opposto alla variazione di lunghezza
|
||||
|
||||
--nJunctionType -- 1 TrimStart, 2 TrimEnd, 3 Angled, 4 TrimBoth, 5 TrimNone
|
||||
if nType == 1 or nType == 2 then
|
||||
return TJunction(dAngBetween, dTh1, dTh2, nType, dLen1, dLen2, bOnLoop)
|
||||
elseif nType == 3 then
|
||||
@@ -995,17 +1001,19 @@ function TOOL.CreateParetina(nEdgeId, tbInfo, dPairAngCorr)
|
||||
tbInfo.dSideAngR = dSideAngDx
|
||||
if not tbInfo.bOnLoop then
|
||||
dLenPrev, dLen, _, dOffset = ManageJunction(PrevAng,dThPrev, dTh,nJunctionWithPrev, dLenPrev, dLen, tbInfo.bOnLoop)
|
||||
if tbInfo.nPairMode == 2 then dXOffset = dXOffset + dOffset end
|
||||
-- modifiche alla lunghezza allo start si traducono in offset di segno opposto
|
||||
if tbInfo.nPairMode == 2 then dXOffset = dXOffset - dOffset end
|
||||
end
|
||||
else
|
||||
-- se ho una giunzione a T allora devo aggiustare la lunghezza dei pezzi sia che la faccia sia On, sia che sia Off
|
||||
dLenPrev, dLen, _, dOffset = ManageJunction(PrevAng,dThPrev, dTh,nJunctionWithPrev, dLenPrev, dLen, tbInfo.bOnLoop)
|
||||
-- setto il sideang da giunzione a T
|
||||
local dSideAngDx = 90 - math.abs(PrevAng)
|
||||
local dSideAngDx = PrevAng > 0 and (PrevAng - 90) or (90 + PrevAng)
|
||||
if tbInfo.bOnLoop then dSideAngDx = dSideAngDx * (-1) end
|
||||
tbInfo.dSideAngR = dSideAngDx
|
||||
tbInfo.dAngBR = 90
|
||||
if tbInfo.nPairMode == 2 then dXOffset = dXOffset + dOffset end
|
||||
-- modifiche alla lunghezza allo start si traducono in offset di segno opposto
|
||||
if tbInfo.nPairMode == 2 then dXOffset = dXOffset - dOffset end
|
||||
end
|
||||
else
|
||||
-- setto il sideAng da giunzione a T (che va bene anche se la giunzione è angolata ma senza pezzo precedente)
|
||||
@@ -1041,7 +1049,7 @@ function TOOL.CreateParetina(nEdgeId, tbInfo, dPairAngCorr)
|
||||
-- se ho una giunzione a T allora devo aggiustare la lunghezza dei pezzi sia che la faccia sia On, sia che sia Off
|
||||
dLen, dLenNext, dOffset, _ = ManageJunction(NextAng, dTh, dThNext, nJunctionWithNext, dLen, dLenNext, tbInfo.bOnLoop)
|
||||
-- setto il sideang da giunzione a T
|
||||
local dSideAngSx = 90 - math.abs(NextAng)
|
||||
local dSideAngSx = NextAng > 0 and (NextAng - 90) or (90 + NextAng)
|
||||
if tbInfo.bOnLoop then dSideAngSx = dSideAngSx * (-1) end
|
||||
tbInfo.dSideAngL = dSideAngSx
|
||||
tbInfo.dAngBL = 90
|
||||
|
||||
Reference in New Issue
Block a user