Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b191fbdf1f | |||
| 97db4b1614 | |||
| 59ad02fcf8 | |||
| d756e4c44d | |||
| d2a9e9e189 | |||
| 8925c73639 | |||
| a083405552 | |||
| 287a5b118f | |||
| a6a61a8980 | |||
| e82f03f191 | |||
| efdbe5c001 | |||
| e3057a1e53 |
+17
-1
@@ -443,7 +443,7 @@ local function CalcHeadTailMachBeforeIntersDrillings( vProc, b3Raw)
|
|||||||
for i = 1, #vProc do
|
for i = 1, #vProc do
|
||||||
local Proc = vProc[i]
|
local Proc = vProc[i]
|
||||||
if Proc.Box and not Proc.Box:isEmpty() then
|
if Proc.Box and not Proc.Box:isEmpty() then
|
||||||
if Proc.Fct == 1 and BL.IsFeatureCuttingEntireSection( Proc.Box, b3Raw:getDimY(), b3Raw:getDimZ()) and ( Proc.Head or Proc.Tail) and Proc.Prc ~= 350 then
|
if Proc.Fct == 1 and ( BL.IsFeatureCuttingEntireSection( Proc.Box, b3Raw:getDimY(), b3Raw:getDimZ()) or Cut.Identify( Proc)) and ( Proc.Head or Proc.Tail) and Proc.Prc ~= 350 then
|
||||||
if Proc.Head and Proc.Box:getCenter():getX() < dHeadX then
|
if Proc.Head and Proc.Box:getCenter():getX() < dHeadX then
|
||||||
dHeadX = Proc.Box:getCenter():getX()
|
dHeadX = Proc.Box:getCenter():getX()
|
||||||
nHeadId = Proc.Id
|
nHeadId = Proc.Id
|
||||||
@@ -915,6 +915,22 @@ local function ReorderFeatureWithDependency( vProc)
|
|||||||
table.insert( vProc, nRefIndex, table.remove( vProc, i))
|
table.insert( vProc, nRefIndex, table.remove( vProc, i))
|
||||||
i = max( nRefIndex - 1, 1)
|
i = max( nRefIndex - 1, 1)
|
||||||
end
|
end
|
||||||
|
elseif Drill.Identify( vProc[i]) and vProc[i].Dependency and vProc[i].Dependency.ExecAfter and vProc[i].Dependency.ExecAfter.Id then
|
||||||
|
local nRefId = vProc[i].Dependency.ExecAfter.Id
|
||||||
|
local nRefIndex
|
||||||
|
|
||||||
|
for j = 1, #vProc do
|
||||||
|
if i ~= j and vProc[j].Id == nRefId then
|
||||||
|
nRefIndex = j
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- se il processo deve stare dopo, ma ora è prima
|
||||||
|
if nRefIndex and nRefIndex > i then
|
||||||
|
table.insert( vProc, nRefIndex, table.remove( vProc, i))
|
||||||
|
i = max( nRefIndex - 1, 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
i = i + 1
|
i = i + 1
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -348,6 +348,11 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
|||||||
if EgtGetInfo( Proc.Id, 'Q04', 'i') == 1 then
|
if EgtGetInfo( Proc.Id, 'Q04', 'i') == 1 then
|
||||||
return FreeContour.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
return FreeContour.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- verifico se macchina configurata per avere le nuove svuotature in doppio
|
||||||
|
local sIniMachFile = EgtGetCurrMachineDir()..'\\'..EgtGetCurrMachineName()..'.ini'
|
||||||
|
local dPockDoubleNTActive = ( EgtGetStringFromIni( 'Machinings', 'PocketingDoubleNT', '0', sIniMachFile) == '1')
|
||||||
|
|
||||||
-- default per costanti
|
-- default per costanti
|
||||||
BD.DRILL_VX_MAX_ANGLEDRILL = ( BD.DRILL_VX_MAX_ANGLEDRILL or 0.928)
|
BD.DRILL_VX_MAX_ANGLEDRILL = ( BD.DRILL_VX_MAX_ANGLEDRILL or 0.928)
|
||||||
-- ingombro del pezzo
|
-- ingombro del pezzo
|
||||||
@@ -653,7 +658,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
|||||||
local dLastStepDepth
|
local dLastStepDepth
|
||||||
if Proc.Double and Proc.Double > 0 then
|
if Proc.Double and Proc.Double > 0 then
|
||||||
if ( sType == 'Pocket_AT' or sType == 'Pocket') then
|
if ( sType == 'Pocket_AT' or sType == 'Pocket') then
|
||||||
if bOpen then
|
if not dPockDoubleNTActive and bOpen then
|
||||||
local dReduceDepth = MIRROR_POCKETS_MIN_DISTANCE / 2 + 10
|
local dReduceDepth = MIRROR_POCKETS_MIN_DISTANCE / 2 + 10
|
||||||
dLastStepDepth = dDepth + dReduceDepth
|
dLastStepDepth = dDepth + dReduceDepth
|
||||||
dDepth = dDepth - dReduceDepth
|
dDepth = dDepth - dReduceDepth
|
||||||
@@ -723,7 +728,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
|||||||
return false, sWarn
|
return false, sWarn
|
||||||
else
|
else
|
||||||
-- se DrillPocket passante in doppio si fa lavorazione aggiuntiva dell'ultimo step
|
-- se DrillPocket passante in doppio si fa lavorazione aggiuntiva dell'ultimo step
|
||||||
if Proc.Double and Proc.Double > 0 and ( sType == 'Pocket_AT' or sType == 'Pocket') and bOpen then
|
if not dPockDoubleNTActive and Proc.Double and Proc.Double > 0 and ( sType == 'Pocket_AT' or sType == 'Pocket') and bOpen then
|
||||||
if dLastStepDepth > dMaxDepth + 10 * GEO.EPS_SMALL then
|
if dLastStepDepth > dMaxDepth + 10 * GEO.EPS_SMALL then
|
||||||
sMyWarn = 'Warning in drill pocket last step: depth (' .. EgtNumToString( dLastStepDepth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( dMaxDepth, 1) .. ')'
|
sMyWarn = 'Warning in drill pocket last step: depth (' .. EgtNumToString( dLastStepDepth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( dMaxDepth, 1) .. ')'
|
||||||
return false, sMyWarn
|
return false, sMyWarn
|
||||||
|
|||||||
+109
-10
@@ -1004,7 +1004,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Lavorazione con fresa
|
-- Lavorazione con fresa
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId)
|
local function MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId, nForcedFacInd, nSideInd)
|
||||||
-- recupero l'ingombro del grezzo di appartenenza
|
-- recupero l'ingombro del grezzo di appartenenza
|
||||||
local b3Raw = EgtGetRawPartBBox( nRawId)
|
local b3Raw = EgtGetRawPartBBox( nRawId)
|
||||||
-- recupero l'ingombro della trave
|
-- recupero l'ingombro della trave
|
||||||
@@ -1015,13 +1015,16 @@ local function MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId)
|
|||||||
return false, sErr
|
return false, sErr
|
||||||
end
|
end
|
||||||
-- verifico il numero di facce della tacca
|
-- verifico il numero di facce della tacca
|
||||||
|
if not nForcedFacInd then
|
||||||
assert( ( Proc.Fct == 1), 'Error : MakeOneFaceByMill in LapJoint with ' .. tostring( Proc.Fct) .. ' faces')
|
assert( ( Proc.Fct == 1), 'Error : MakeOneFaceByMill in LapJoint with ' .. tostring( Proc.Fct) .. ' faces')
|
||||||
|
nForcedFacInd = 0
|
||||||
|
end
|
||||||
-- dati della faccia
|
-- dati della faccia
|
||||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nForcedFacInd, GDB_ID.ROOT)
|
||||||
-- verifico se orientata verso l'alto
|
-- verifico se orientata verso l'alto
|
||||||
local bUp = ( vtN:getZ() >= BD.NZ_MINA)
|
local bUp = ( vtN:getZ() >= BD.NZ_MINA)
|
||||||
-- scelta faccia da lavorare
|
-- scelta faccia da lavorare
|
||||||
local nFacInd = 0
|
local nFacInd = nForcedFacInd
|
||||||
-- recupero la lavorazione
|
-- recupero la lavorazione
|
||||||
local sMilling = ML.FindMilling( 'BirdsMouth')
|
local sMilling = ML.FindMilling( 'BirdsMouth')
|
||||||
if not sMilling then
|
if not sMilling then
|
||||||
@@ -1029,6 +1032,16 @@ local function MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId)
|
|||||||
EgtOutLog( sErr)
|
EgtOutLog( sErr)
|
||||||
return false, sErr
|
return false, sErr
|
||||||
end
|
end
|
||||||
|
local dTDiam = 50
|
||||||
|
local dMaxMat = 0
|
||||||
|
if EgtMdbSetCurrMachining( sMilling) then
|
||||||
|
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||||
|
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||||
|
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
|
||||||
|
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
|
||||||
|
end
|
||||||
|
end
|
||||||
|
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
|
||||||
-- inserisco la lavorazione di fresatura
|
-- inserisco la lavorazione di fresatura
|
||||||
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||||
local nMchFId = EgtAddMachining( sName, sMilling)
|
local nMchFId = EgtAddMachining( sName, sMilling)
|
||||||
@@ -1039,8 +1052,17 @@ local function MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId)
|
|||||||
end
|
end
|
||||||
-- aggiungo geometria
|
-- aggiungo geometria
|
||||||
EgtSetMachiningGeometry( {{ Proc.Id, nFacInd}})
|
EgtSetMachiningGeometry( {{ Proc.Id, nFacInd}})
|
||||||
-- imposto uso faccia e lato correzione
|
-- imposto uso faccia e lato correzione se forzate da fuori forzo lavorazione della faccia
|
||||||
if vtN:getX() > 0 then
|
if nSideInd and nForcedFacInd then
|
||||||
|
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.NONE)
|
||||||
|
EgtSetMachiningParam( MCH_MP.ENDADDLEN, -dTDiam / 2)
|
||||||
|
EgtSetMachiningParam( MCH_MP.STARTADDLEN, -dTDiam / 2)
|
||||||
|
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
||||||
|
sUserNotes = EgtSetValInNotes( sUserNotes, 'EdgesFaceUse', EgtNumToString( nSideInd))
|
||||||
|
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||||
|
EgtSetMachiningParam( MCH_MP.LIPERP, dTDiam / 2)
|
||||||
|
EgtSetMachiningParam( MCH_MP.LOPERP, dTDiam / 2)
|
||||||
|
elseif vtN:getX() > 0 then
|
||||||
EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bUp, MCH_MILL_FU.ORTHO_LEFT, MCH_MILL_FU.PARAL_LEFT))
|
EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bUp, MCH_MILL_FU.ORTHO_LEFT, MCH_MILL_FU.PARAL_LEFT))
|
||||||
else
|
else
|
||||||
EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bUp, MCH_MILL_FU.ORTHO_RIGHT, MCH_MILL_FU.PARAL_RIGHT))
|
EgtSetMachiningParam( MCH_MP.FACEUSE, EgtIf( bUp, MCH_MILL_FU.ORTHO_RIGHT, MCH_MILL_FU.PARAL_RIGHT))
|
||||||
@@ -4767,7 +4789,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return 1, sWarn, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId
|
return 1, sWarn, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId, nil, sPocketing
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -7511,15 +7533,35 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
end
|
end
|
||||||
-- provo con contornatura
|
-- provo con contornatura
|
||||||
local dDiamTool = 20
|
local dDiamTool = 20
|
||||||
|
local nChoosenFacInd = nFacInd2
|
||||||
|
local dChoosenFacElev = dFacElev2
|
||||||
if bIsL then
|
if bIsL then
|
||||||
local bOk, sErr
|
local bOk, sErr
|
||||||
bOk, sWarn, dDiamTool = MakeByMill( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev, dCollSic, true, sMilling, nFacInd2, dFacElev2)
|
bOk, sWarn, dDiamTool = MakeByMill( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev, dCollSic, true, sMilling, nFacInd2, dFacElev2)
|
||||||
if not bOk then return bOk, sWarn end
|
if not bOk then return bOk, sWarn end
|
||||||
|
else
|
||||||
|
-- provo ancora con la pocketing dell'altra faccia
|
||||||
|
local sPocketing = ML.FindPocketing( sMchFind, dDiam, dFacElev + dCollSic)
|
||||||
|
if sPocketing then
|
||||||
|
nChoosenFacInd = nFacInd
|
||||||
|
dChoosenFacElev = dFacElev
|
||||||
|
local Edges = BL.GetEdgesInfo( Proc, Proc.Face[nFacInd+1])
|
||||||
|
local nSideInd
|
||||||
|
for i = 1, #Edges do
|
||||||
|
if Edges[i].AdjacentFaceId == nFacInd2 then
|
||||||
|
nSideInd = i - 1
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- se pocketing ok forza facet e spigolo di lavoro
|
||||||
|
bOk, sWarn = MakeOneFaceByMill( Proc, nPhase, nRawId, nPartId, nFacInd2, nSideInd)
|
||||||
|
if not bOk then return bOk, sWarn end
|
||||||
else
|
else
|
||||||
local sErr = 'Error : Impossible mill special LapJoint'
|
local sErr = 'Error : Impossible mill special LapJoint'
|
||||||
EgtOutLog( sErr)
|
EgtOutLog( sErr)
|
||||||
return false, sErr
|
return false, sErr
|
||||||
end
|
end
|
||||||
|
end
|
||||||
-- inserisco la lavorazione di svuotatura
|
-- inserisco la lavorazione di svuotatura
|
||||||
local sName = 'Pock_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
local sName = 'Pock_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||||
local nMchFId = EgtAddMachining( sName, sPocketing)
|
local nMchFId = EgtAddMachining( sName, sPocketing)
|
||||||
@@ -7529,7 +7571,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
return false, sErr
|
return false, sErr
|
||||||
end
|
end
|
||||||
-- aggiungo geometria
|
-- aggiungo geometria
|
||||||
EgtSetMachiningGeometry( {{ Proc.Id, nFacInd2}})
|
EgtSetMachiningGeometry( {{ Proc.Id, nChoosenFacInd}})
|
||||||
-- imposto uso faccia
|
-- imposto uso faccia
|
||||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_CONT)
|
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_CONT)
|
||||||
-- imposto posizione braccio porta testa
|
-- imposto posizione braccio porta testa
|
||||||
@@ -7544,7 +7586,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
end
|
end
|
||||||
-- imposto elevazione
|
-- imposto elevazione
|
||||||
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
||||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', EgtNumToString( dFacElev2, 1))
|
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', EgtNumToString( dChoosenFacElev, 1))
|
||||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||||
-- eseguo
|
-- eseguo
|
||||||
if not ML.ApplyMachining( true, false) then
|
if not ML.ApplyMachining( true, false) then
|
||||||
@@ -8068,7 +8110,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
bSetOpenBorders = true
|
bSetOpenBorders = true
|
||||||
end
|
end
|
||||||
nOk, sErr, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId,
|
nOk, sErr, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId,
|
||||||
bOrthoFaces = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL)
|
bOrthoFaces, sPocketing = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL)
|
||||||
if nOk == -3 then
|
if nOk == -3 then
|
||||||
bTryWithBlades = true
|
bTryWithBlades = true
|
||||||
elseif nOk == -2 then
|
elseif nOk == -2 then
|
||||||
@@ -8102,6 +8144,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
end
|
end
|
||||||
-- se abilitato dal parametro Q inserisco pulitura spigoli o contorno con fresa più piccola
|
-- se abilitato dal parametro Q inserisco pulitura spigoli o contorno con fresa più piccola
|
||||||
local nContourSmallTool = EgtGetInfo( Proc.Id, Q_CONTOUR_SMALL_TOOL, 'i') or 0
|
local nContourSmallTool = EgtGetInfo( Proc.Id, Q_CONTOUR_SMALL_TOOL, 'i') or 0
|
||||||
|
local nCleanCorner = EgtGetInfo( Proc.Id, Q_CLEAN_CORNER, 'i') or 0
|
||||||
if nContourSmallTool > 0 then
|
if nContourSmallTool > 0 then
|
||||||
local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw,
|
local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw,
|
||||||
nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown,
|
nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown,
|
||||||
@@ -8113,6 +8156,43 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2)
|
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- se richiesta pulizia spigoli con fresa a V
|
||||||
|
if nCleanCorner > 0 then
|
||||||
|
local dMaxToolMaterial = 0
|
||||||
|
if EgtMdbSetCurrMachining( sPocketing) then
|
||||||
|
local sTuuidPk = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||||
|
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuidPk) or '') then
|
||||||
|
dMaxToolMaterial = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxToolMaterial
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local nNewProc
|
||||||
|
local vtSpec = vtN
|
||||||
|
if not ( Proc.Fct == 3 and bIsU) then
|
||||||
|
nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
||||||
|
-- se U passante ricavo vettore da "sopra" con componente Z forzata in positivo
|
||||||
|
else
|
||||||
|
nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL
|
||||||
|
local nNumFacet = EgtSurfTmFacetCount( nNewProc)
|
||||||
|
-- vettore normale ad una delle facce adiacenti
|
||||||
|
local vtOther = EgtSurfTmFacetNormVersor( Proc.Id, Proc.Face[nFacInd+1].Adjacencies[1], GDB_ID.ROOT)
|
||||||
|
-- ricavo vettore verso l'alto (simulo faccia di fondo)
|
||||||
|
vtSpec = vtN ^ vtOther
|
||||||
|
-- se negativo in Z forzo positivo
|
||||||
|
if vtSpec:getZ() < 0 then
|
||||||
|
vtSpec:mirror(vtSpec)
|
||||||
|
end
|
||||||
|
ReorderFaces( nNewProc, nNumFacet, vtSpec)
|
||||||
|
-- normale della lavorazione clean corner
|
||||||
|
vtN = vtSpec
|
||||||
|
end
|
||||||
|
local vFace, dDepth = GetFacesData( nNewProc, dDiamTool, dMaxToolMaterial, ( dDiamTool/2), nAddGrpId, Proc.PartId, vtN)
|
||||||
|
local bCleanCornerOk, sCleanCornerWarn = AddMillCorner( vFace, Proc, dDiamTool, nAddGrpId, nNewProc, vtN)
|
||||||
|
if not bCleanCornerOk then return false, sCleanCornerWarn end
|
||||||
|
if sCleanCornerWarn then
|
||||||
|
if not sWarn then sWarn = '' end
|
||||||
|
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sCleanCornerWarn, sCleanCornerWarn)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bOk = true
|
bOk = true
|
||||||
@@ -8328,7 +8408,26 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
|||||||
-- se richiesta pulizia spigoli con fresa a V
|
-- se richiesta pulizia spigoli con fresa a V
|
||||||
if nCleanCorner > 0 then
|
if nCleanCorner > 0 then
|
||||||
local dThElev = dToolThDiameter / 2 * sqrt( vtN:getX() * vtN:getX() + vtN:getY() * vtN:getY())
|
local dThElev = dToolThDiameter / 2 * sqrt( vtN:getX() * vtN:getX() + vtN:getY() * vtN:getY())
|
||||||
local nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
local nNewProc
|
||||||
|
local vtSpec = vtN
|
||||||
|
if not ( Proc.Fct == 3 and bIsU) then
|
||||||
|
nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
||||||
|
-- se U passante ricavo vettore da "sopra" con componente Z forzata in positivo
|
||||||
|
else
|
||||||
|
nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL
|
||||||
|
local nNumFacet = EgtSurfTmFacetCount( nNewProc)
|
||||||
|
-- vettore normale ad una delle facce adiacenti
|
||||||
|
local vtOther = EgtSurfTmFacetNormVersor( Proc.Id, Proc.Face[nFacInd+1].Adjacencies[1], GDB_ID.ROOT)
|
||||||
|
-- ricavo vettore verso l'alto (simulo faccia di fondo)
|
||||||
|
vtSpec = vtN ^ vtOther
|
||||||
|
-- se negativo in Z forzo positivo
|
||||||
|
if vtSpec:getZ() < 0 then
|
||||||
|
vtSpec:mirror(vtSpec)
|
||||||
|
end
|
||||||
|
ReorderFaces( nNewProc, nNumFacet, vtSpec)
|
||||||
|
-- normale della lavorazione clean corner
|
||||||
|
vtN = vtSpec
|
||||||
|
end
|
||||||
local vFace, dDepth = GetFacesData( nNewProc, dToolDiameter, dMaxToolMaterial, ( dToolDiameter/2), nAddGrpId, Proc.PartId, vtN)
|
local vFace, dDepth = GetFacesData( nNewProc, dToolDiameter, dMaxToolMaterial, ( dToolDiameter/2), nAddGrpId, Proc.PartId, vtN)
|
||||||
local bCleanCornerOk, sCleanCornerWarn = AddMillCorner( vFace, Proc, dToolDiameter, nAddGrpId, nNewProc, vtN)
|
local bCleanCornerOk, sCleanCornerWarn = AddMillCorner( vFace, Proc, dToolDiameter, nAddGrpId, nNewProc, vtN)
|
||||||
if not bCleanCornerOk then return false, sCleanCornerWarn end
|
if not bCleanCornerOk then return false, sCleanCornerWarn end
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
==== Beam Update Log ====
|
==== Beam Update Log ====
|
||||||
|
|
||||||
|
Versione 3.1f3 (25/06/2026)
|
||||||
|
- Modif : LapJoint - migliorata gestione BirdsMouth con più di 3 facce
|
||||||
|
- Modif : Per identificare feature di testa, oltre che verificare se sia troncante, si controlla anche la feature taglio
|
||||||
|
- Added : LapJoint - CleanCorner per tasche a 3 facce a U
|
||||||
|
|
||||||
|
Versione 3.1f2 (18/06/2026)
|
||||||
|
- Added : Gestione svuotature in doppio tipo NT
|
||||||
|
|
||||||
Versione 3.1f1 (17/06/2026)
|
Versione 3.1f1 (17/06/2026)
|
||||||
- Added : Tagli per dividere il cubetto in caso sia troppo lungo
|
- Added : Tagli per dividere il cubetto in caso sia troppo lungo
|
||||||
- Modif : DepthChamfer su feature Mortase (050 e 051) cambio di Q. Prima era Q02, ora è Q01
|
- Modif : DepthChamfer su feature Mortase (050 e 051) cambio di Q. Prima era Q02, ora è Q01
|
||||||
|
|||||||
+1
-1
@@ -2,5 +2,5 @@
|
|||||||
-- Gestione della versione di Beam
|
-- Gestione della versione di Beam
|
||||||
|
|
||||||
NAME = 'Beam'
|
NAME = 'Beam'
|
||||||
VERSION = '3.1f1'
|
VERSION = '3.1f3'
|
||||||
MIN_EXE = '3.1b1'
|
MIN_EXE = '3.1b1'
|
||||||
|
|||||||
Reference in New Issue
Block a user