DataBeam :- correzioni e migliorie varie.
This commit is contained in:
+118
-22
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/09/30
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/10/05
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
@@ -302,15 +302,8 @@ local function MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, nFacInd}})
|
||||
-- imposto uso faccia e lato correzione
|
||||
if vtN[nOthInd+1]:getX() > 0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_LEFT)
|
||||
elseif vtN[nOthInd+1]:getX() < -0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_RIGHT)
|
||||
elseif vtN[nOthInd+1]:getZ() < -0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_TOP)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_DOWN)
|
||||
end
|
||||
local nFaceUse = BL.GetNearestOrthoOpposite( vtN[nOthInd+1])
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, nFaceUse)
|
||||
-- imposto lato di correzione
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
-- imposto posizione braccio porta testa
|
||||
@@ -360,6 +353,95 @@ local function MakePreCuts( Proc, nPhase, nRawId, nPartId, b3Raw)
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function MakeByMill( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dElev)
|
||||
-- Recupero le facce adiacenti alla principale
|
||||
local vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacInd)[1]
|
||||
if not vAdj or #vAdj == 0 then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' main face without adjacencies'
|
||||
EgtOutLog( sErr)
|
||||
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
|
||||
local nFacAdj
|
||||
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
|
||||
nFacAdj = vAdj[i]
|
||||
EgtOutLog( string.format( 'Adjac=%d Len=%.3f H=%.3f V=%.3f', vAdj[i], dLen, dH, dV), 3)
|
||||
break
|
||||
end
|
||||
end
|
||||
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, ' ,'))
|
||||
for j = 1, #vAdj2 do
|
||||
if vAdj2[j] == nFacInd then
|
||||
-- Se non esiste faccia adiacente a lato precedente -> inizio aperto
|
||||
local i = EgtIf( j > 1, j - 1, #vAdj2)
|
||||
while vAdj2[i] == nFacInd do
|
||||
i = EgtIf( i > 1, i - 1, #vAdj2)
|
||||
end
|
||||
bOpenStart = ( vAdj2[i] < 0)
|
||||
-- Se non esiste faccia adiacente a lato successivo -> fine aperto
|
||||
local k = EgtIf( j < #vAdj2, j + 1, 1)
|
||||
while vAdj2[k] == nFacInd do
|
||||
k = EgtIf( k < #vAdj2, k + 1, 1)
|
||||
end
|
||||
bOpenEnd = ( vAdj2[k] < 0)
|
||||
end
|
||||
end
|
||||
-- Recupero la lavorazione di fresa
|
||||
local sMilling = ML.FindMilling( 'LongSmallCut')
|
||||
if not sMilling then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' milling not found in library'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- recupero i dati dell'utensile
|
||||
local dTDiam = 50
|
||||
if EgtMdbSetCurrMachining( sMilling) then
|
||||
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
|
||||
end
|
||||
end
|
||||
-- Calcolo uso faccia
|
||||
local nFaceUse = BL.GetNearestParalOpposite( rfFac:getVersZ())
|
||||
-- inserisco la lavorazione di fresatura
|
||||
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
local nMchFId = EgtAddMachining( sName, sMilling)
|
||||
if not nMchFId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, nFacAdj}})
|
||||
-- imposto uso faccia
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, nFaceUse)
|
||||
-- imposto accorciamento iniziale/finale per estremi aperti/chiusi
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, EgtIf( bOpenEnd, 0, - dTDiam / 2))
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, EgtIf( bOpenStart, 0, - dTDiam / 2))
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchFId, false)
|
||||
return false, sErr
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dElev)
|
||||
-- Recupero le facce adiacenti alla principale
|
||||
@@ -518,7 +600,11 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId)
|
||||
local b3Raw = EgtGetRawPartBBox( nRawId)
|
||||
-- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa
|
||||
local nFacInd, dFacElev, nFacInd2, dFacElev2 = BL.GetFaceWithMostAdj( Proc.Id, nPartId)
|
||||
assert( ( nFacInd and nFacInd >= 0), 'Error : MakeMoreFaces could not find reference face')
|
||||
if not nFacInd or nFacInd < 0 then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' MakeMoreFaces could not find reference face'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- dati della faccia
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
-- se orientata verso il basso, verifico l'alternativa
|
||||
@@ -542,15 +628,21 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
-- verifico se tre facce a L con una faccia di terminazione
|
||||
local bIsL = TestElleShape( Proc)
|
||||
-- recupero la lavorazione ( se L posso accettare utensili un poco più grandi)
|
||||
local dDiam = min( dH, dV) * EgtIf( bIsL, 1.4, 1)
|
||||
-- recupero la lavorazione
|
||||
local dDiam = min( dH, dV)
|
||||
EgtOutLog( 'Mortise Find Diam =' .. EgtNumToString( dDiam))
|
||||
local sPocketing = ML.FindPocketing( 'Mortise', dDiam)
|
||||
-- se non trova una svuotatura adatta, provo con la sega a catena o lama
|
||||
local sPocketing = ML.FindPocketing( 'Mortise', dDiam, dFacElev)
|
||||
-- se non trova una svuotatura adatta
|
||||
if not sPocketing then
|
||||
return MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev)
|
||||
-- verifico se due o tre facce a L con una faccia di terminazione
|
||||
local bIsL = ( Proc.Fct == 2 or TestElleShape( Proc))
|
||||
-- se due facce o tre a L provo con contornatura
|
||||
if bIsL then
|
||||
return MakeByMill( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev)
|
||||
-- altrimenti provo con la sega a catena o lama
|
||||
else
|
||||
return MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev)
|
||||
end
|
||||
end
|
||||
-- recupero i dati dell'utensile
|
||||
local dMaxDepth = 0
|
||||
@@ -592,9 +684,13 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId)
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes)
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchFId, false)
|
||||
return false, sErr
|
||||
-- provo ad allargare leggermente la tasca
|
||||
EgtSetMachiningParam( MCH_MP.OFFSR, -0.1)
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchFId, false)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
return true, sWarn
|
||||
end
|
||||
@@ -639,7 +735,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId)
|
||||
return bOk, sErr
|
||||
end
|
||||
end
|
||||
return true
|
||||
return true, sErr
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user