DataBeam :
- corrette LapJoint a U con lama.
This commit is contained in:
+23
-12
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/11/12
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/11/14
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
-- 2019/10/08 Agg. gestione OpenPocket.
|
||||
|
||||
@@ -485,28 +485,35 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac,
|
||||
return false, sErr
|
||||
end
|
||||
EgtOutLog( 'Adjac=' .. table.concat( vAdj, ','), 3)
|
||||
-- Riordino le dimensioni per avere dH > dV
|
||||
if dH < dV then
|
||||
dH, dV = dV, dH
|
||||
end
|
||||
-- Cerco una faccia adiacente alla principale sul lato lungo
|
||||
-- Cerco una faccia adiacente alla principale sul lato più lungo
|
||||
local nFacAdj
|
||||
local dMaxLen = 0
|
||||
for i = 1, #vAdj do
|
||||
if vAdj[i] >= 0 then
|
||||
local _, ptP1, ptP2, _ = EgtSurfTmFacetsContact( Proc.Id, nFacInd, vAdj[i], GDB_ID.ROOT)
|
||||
local dLen = dist( ptP1, ptP2)
|
||||
if dLen > 0.5 * dH then
|
||||
if dLen > dMaxLen then
|
||||
nFacAdj = vAdj[i]
|
||||
dMaxLen = dLen
|
||||
EgtOutLog( string.format( 'Adjac=%d Len=%.3f H=%.3f V=%.3f', vAdj[i], dLen, dH, dV), 3)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if not nFacAdj then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' long adjacent face not found'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- Riordino le dimensioni per avere dH come lato lungo e dV come perpendicolare
|
||||
local _, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
if abs( vtN * rfFac:getVersX()) > abs( vtN * rfFac:getVersY()) then
|
||||
dH, dV = dV, dH
|
||||
end
|
||||
-- Determino se estremi aperti o chiusi
|
||||
local bOpenStart = false
|
||||
local bOpenEnd = false
|
||||
local vAdj2 = EgtSurfTmFacetAdjacencies( Proc.Id, nFacAdj)[1]
|
||||
EgtOutLog( 'Adj2=' .. table.concat( vAdj2, ' ,'))
|
||||
EgtOutLog( 'Adj2=' .. table.concat( vAdj2, ' ,'), 3)
|
||||
for j = 1, #vAdj2 do
|
||||
if vAdj2[j] == nFacInd then
|
||||
-- Se non esiste faccia adiacente a lato precedente -> inizio aperto
|
||||
@@ -551,15 +558,19 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac,
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||
dSawDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawDiam
|
||||
dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick
|
||||
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
|
||||
end
|
||||
end
|
||||
if dSawThick > dV + 10 * GEO.EPS_SMALL then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' sawblade too thick'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- Calcolo uso faccia
|
||||
local nFaceUse = BL.GetNearestOrthoOpposite( rfFac:getVersZ())
|
||||
-- ingombro del grezzo
|
||||
local b3Raw = EgtGetRawPartBBox( nRawId)
|
||||
-- Eseguo i tagli
|
||||
local nStep = ceil( dV / dSawThick)
|
||||
local nStep = ceil( ( dV - 10 * GEO.EPS_SMALL) / dSawThick)
|
||||
local dStep = 0
|
||||
if nStep > 1 then
|
||||
dStep = ( dV - dSawThick) / ( nStep - 1)
|
||||
@@ -605,7 +616,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac,
|
||||
return false, sErr
|
||||
end
|
||||
-- Verifico se necessarie più passate
|
||||
local nStep = ceil( ( dV - 0.5) / dSawThick)
|
||||
local nStep = ceil( ( dV - 10 * GEO.EPS_SMALL) / dSawThick)
|
||||
local dStep = 0
|
||||
if nStep > 1 then
|
||||
dStep = ( dV - dSawThick) / ( nStep - 1)
|
||||
|
||||
Reference in New Issue
Block a user