Merge branch 'develop' of https://gitlab.steamware.net/egalware-cadcam/lua/databeamnew into develop
This commit is contained in:
+36
-27
@@ -122,7 +122,7 @@ function BeamExec.GetToolsFromDB()
|
||||
Tool.SetupInfo = {}
|
||||
Tool.SetupInfo = BeamData.GetSetupInfo( Tool.sHead)
|
||||
if not Tool.SetupInfo.GetMinNzDownUp then
|
||||
Tool.SetupInfo.GetMinNzDownUp = BeamLib.GetMinNzDefault
|
||||
Tool.SetupInfo.GetMinNzDownUp = BeamLib.GetMinNzDownUpDefault
|
||||
end
|
||||
if not Tool.SetupInfo.GetMinNz then
|
||||
Tool.SetupInfo.GetMinNz = BeamLib.GetMinNzDefault
|
||||
@@ -997,28 +997,35 @@ local function CalculateMachinings( vProc, Part)
|
||||
for i = 1, #vProc do
|
||||
-- processo tutte le feature attive applicando le lavorazioni
|
||||
local Proc = vProc[i]
|
||||
-- si sistemano i pezzi per le rotazioni
|
||||
if Proc.bDown and CurrRotation ~= 3 then
|
||||
BeamLib.RotatePart( Part, 3 - CurrRotation)
|
||||
CurrRotation = 3
|
||||
elseif Proc.bSide and CurrRotation ~= 2 then
|
||||
BeamLib.RotatePart( Part, 2 - CurrRotation)
|
||||
CurrRotation = 2
|
||||
elseif CurrRotation ~= 1 and not( Proc.bSide) and not( Proc.bDown) then
|
||||
BeamLib.RotatePart( Part, 1 - CurrRotation)
|
||||
CurrRotation = 1
|
||||
end
|
||||
-- aggiorno info pezzo
|
||||
Part.b3Raw = EgtGetRawPartBBox( Part.idRaw)
|
||||
Part.b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( Part.id, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
-- se la feature deve essere processata
|
||||
if Proc.nFlg ~= 0 then
|
||||
-- si sistemano i pezzi per le rotazioni
|
||||
if Proc.bDown and CurrRotation ~= 3 then
|
||||
BeamLib.RotatePart( Part, 3 - CurrRotation)
|
||||
CurrRotation = 3
|
||||
elseif Proc.bSide and CurrRotation ~= 2 then
|
||||
BeamLib.RotatePart( Part, 2 - CurrRotation)
|
||||
CurrRotation = 2
|
||||
elseif CurrRotation ~= 1 and not( Proc.bSide) and not( Proc.bDown) then
|
||||
BeamLib.RotatePart( Part, 1 - CurrRotation)
|
||||
CurrRotation = 1
|
||||
end
|
||||
-- aggiorno info pezzo
|
||||
Part.b3Raw = EgtGetRawPartBBox( Part.idRaw)
|
||||
Part.b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( Part.id, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
|
||||
-- si applicano le strategie
|
||||
if Proc.nFlg ~= 0 and Proc.ChosenStrategy then
|
||||
-- carico file script strategia (non serve verificare presenza del file perchè già fatto durante scelta strategia)
|
||||
local StrategyScriptName = Proc.ChosenStrategy.sStrategyId .. '\\' .. Proc.ChosenStrategy.sStrategyId
|
||||
local StrategyScript = require( StrategyScriptName)
|
||||
-- eseguo la strategia e si applicano le lavorazioni. Si passa la Proc e i parametri personalizzati
|
||||
bAreAllApplyOk, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy.Parameters)
|
||||
-- si applicano le strategie
|
||||
if Proc.ChosenStrategy then
|
||||
-- carico file script strategia (non serve verificare presenza del file perchè già fatto durante scelta strategia)
|
||||
local StrategyScriptName = Proc.ChosenStrategy.sStrategyId .. '\\' .. Proc.ChosenStrategy.sStrategyId
|
||||
local StrategyScript = require( StrategyScriptName)
|
||||
-- eseguo la strategia e si applicano le lavorazioni. Si passa la Proc e i parametri personalizzati
|
||||
_, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy.Parameters)
|
||||
else
|
||||
-- se non esiste una strategia scelta (non dovrebbe mai succedere) cancello da lista generale
|
||||
PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexInVProc].ChosenStrategy = nil
|
||||
bAreAllApplyOk = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1030,7 +1037,7 @@ local function CalculateMachinings( vProc, Part)
|
||||
Part.b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( Part.id, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
CurrRotation = 1
|
||||
end
|
||||
return MACHININGS
|
||||
return MACHININGS, bAreAllApplyOk
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
@@ -1264,6 +1271,7 @@ local function GetBestResultFromCombinationsMatrix( ProcessingsOnPart, PartInfo)
|
||||
-- se la feature può essere lavorata in almeno una rotazione
|
||||
if #ResultsList > 0 then
|
||||
local Proc, Data = GetProcBestMachRotationFromList( ResultsList)
|
||||
Proc.nIndexRotation = Data.nIndexRotation
|
||||
-- inserisco la Proc nell'apposita lista
|
||||
if Data.nIndexRotation == nUnloadPos then
|
||||
table.insert( SingleCombination.Rot0, Proc)
|
||||
@@ -1387,7 +1395,9 @@ function BeamExec.ProcessMachinings( PARTS)
|
||||
vProc = OrderFeatures( vProc)
|
||||
|
||||
-- esegue le strategie migliori che ha precedentemente scelto e salva le lavorazioni nella lista globale
|
||||
MACHININGS = CalculateMachinings( vProc, PARTS[nPart])
|
||||
local bAllStrategiesApplied = false
|
||||
MACHININGS, bAllStrategiesApplied = CalculateMachinings( vProc, PARTS[nPart])
|
||||
bIsCombinationMachinable = bAllStrategiesApplied
|
||||
|
||||
-- se la posizione iniziale non è calcolata, significa che non ci sono feature da eseguire. Solo taglio testa/coda
|
||||
if not MatrixResult.nInitialPosition then
|
||||
@@ -1395,7 +1405,6 @@ function BeamExec.ProcessMachinings( PARTS)
|
||||
MACHININGS.Info.nHeadCutRotation = 1
|
||||
MACHININGS.Info.nSplitCutRotation = 1
|
||||
end
|
||||
-- TODO applicare taglio testa e coda. DA COMPLETARE
|
||||
-- aggiunge tagli testa e coda in fasi opportune
|
||||
local nRotHeadCut = MatrixResult.nInitialPosition + MACHININGS.Info.nHeadCutRotation - 1
|
||||
if nRotHeadCut > 4 then
|
||||
@@ -1423,8 +1432,8 @@ function BeamExec.ProcessMachinings( PARTS)
|
||||
table.insert( vProcHeadTail, PROCESSINGS[nPart].Rotation[nRotHeadCut][MatrixResult.nIndexHeadCutInVProc])
|
||||
table.insert( vProcHeadTail, PROCESSINGS[nPart].Rotation[nRotSplitCut][MatrixResult.nIndexTailCutInVProc])
|
||||
|
||||
MACHININGS = CalculateMachinings( vProcHeadTail, PARTS[nPart])
|
||||
bIsCombinationMachinable = true
|
||||
MACHININGS, bAllStrategiesApplied = CalculateMachinings( vProcHeadTail, PARTS[nPart])
|
||||
bIsCombinationMachinable = bIsCombinationMachinable and bAllStrategiesApplied
|
||||
end
|
||||
-- ordinamento lavorazioni
|
||||
MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart])
|
||||
|
||||
+8
-2
@@ -363,14 +363,20 @@ end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- funzione con valore di default in caso la GetSetupInfo della testa della macchina non avesse la funzione definita
|
||||
function BeamLib.GetMinNzDefault( b3Raw, vtNFace, vtToolDirection)
|
||||
function BeamLib.GetMinNzDownUpDefault( b3Raw, vtNFace, vtToolDirection)
|
||||
return -2
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- funzione con valore di default in caso la GetSetupInfo della testa della macchina non avesse la funzione definita
|
||||
function BeamLib.GetMinNzDefault( b3Raw, vtNFace, vtToolDirection)
|
||||
return 0
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- funzione con valore di default in caso la GetSetupInfo della testa della macchina non avesse la funzione definita
|
||||
function BeamLib.GetMaxNzDefault( b3Raw, vtNFace, vtToolDirection)
|
||||
return 2
|
||||
return 0
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -216,9 +216,9 @@ function MachiningLib.FindMill( Proc, ToolSearchParameters)
|
||||
-- controlli standard
|
||||
elseif ToolSearchParameters.dMaxToolDiameter and TOOLS[i].dDiameter > ToolSearchParameters.dMaxToolDiameter then
|
||||
bIsToolCompatible = false
|
||||
elseif ToolSearchParameters.vtToolDirection:getZ() < TOOLS[i].SetupInfo.GetMinNz( ToolSearchParameters.vtToolDirection) - GEO.EPS_ZERO then
|
||||
elseif ToolSearchParameters.vtToolDirection:getZ() < TOOLS[i].SetupInfo.GetMinNz( ToolSearchParameters.vtToolDirection) - GEO.EPS_ZERO and TOOLS[i].SetupInfo.HeadType.bTop then
|
||||
bIsToolCompatible = false
|
||||
elseif ToolSearchParameters.vtToolDirection:getZ() > TOOLS[i].SetupInfo.GetMaxNz( ToolSearchParameters.vtToolDirection) + GEO.EPS_ZERO then
|
||||
elseif ToolSearchParameters.vtToolDirection:getZ() > TOOLS[i].SetupInfo.GetMaxNz( ToolSearchParameters.vtToolDirection) + GEO.EPS_ZERO and TOOLS[i].SetupInfo.HeadType.bBottom then
|
||||
bIsToolCompatible = false
|
||||
elseif ToolSearchParameters.sMillShape == 'STANDARD' and ( TOOLS[i].dSideAngle ~= 0 or TOOLS[i].bIsPen) then
|
||||
bIsToolCompatible = false
|
||||
|
||||
Reference in New Issue
Block a user