- in BLADETOWASTE primo implemento di lavorazione a cubetti, non funzionante

This commit is contained in:
luca.mazzoleni
2025-02-24 17:41:39 +01:00
parent 81c0acbde1
commit b229b21e64
3 changed files with 34 additions and 4 deletions
+1
View File
@@ -297,6 +297,7 @@ end
-- funzione per cercare utensile tipo LAMA con certe caratteristiche
-- TODO da completare
-- TODO il FindBlade dovrà restituire di utilizzare sempre la lama sopra se l'angolo lo permette, ma avendo un'altezza massima (da macchina) oltre cui il DownUp non sarà fattibile (evita collisioni tra asse e pezzo)
-- TODO bisogna leggere vtToolDirection in arrivo e confrontarlo con il SetupInfo
function MachiningLib.FindBlade( Proc, ToolSearchParameters)
local ToolInfo = {}
+2 -4
View File
@@ -123,7 +123,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
dExtendAfterTail = 10000
end
-- considerazione necessarie a determinare se lasciare il legno attaccato oppure no
-- considerazioni necessarie a determinare se lavorare con codolo oppure no
local dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail = FeatureLib.GetFeatureMaxNotClampableLengths( Proc, Part)
local bLeaveWasteAttached = Strategy.Parameters.sCuttingStrategy == 'LEAVE_WASTE_ATTACHED'
local bFeatureHindersClamping = FeatureLib.IsMachiningLong( max( dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN})
@@ -195,8 +195,6 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
dMRRBlade = ( dMRRBlade1 + dMRRBlade2) / 2
dCompletionPercentage = Cutting2.dCompletionPercentage
-- se la lavorazione con codolo fallisce o non è possibile si proseguirà a quella con cubetti
end
-- lavorazione a cubetti / taglio singolo
@@ -222,7 +220,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
Strategy.Result.sInfo = Strategy.Result.sInfo .. '\n' .. Blade.Result.Sorted[i].sMessage
end
end
-- TODO calcolo migliore area lavorata; se ho il codolo ha senso l'incompleta? se incompleta con codolo faccio i cubetti??
-- TODO migliorare calcolo area lavorata; se ho il codolo ha senso l'incompleta? se incompleta con codolo faccio i cubetti??
if nIsApplicableCount > 0 then
if dCompletionPercentage > 100 - 10 * GEO.EPS_SMALL then
Strategy.Result.sStatus = 'Completed'
+31
View File
@@ -9,8 +9,10 @@ require( 'EgtBase')
-- Carico i dati globali
local BeamData = require( 'BeamData')
local BeamLib = require( 'BeamLib')
local FeatureLib = require( 'FeatureLib')
local MachiningLib = require( 'MachiningLib')
local DiceCut = require( 'DiceCut')
-- strategie di base
local FaceByBlade = require('FACEBYBLADE')
@@ -22,6 +24,15 @@ function BLADETOWASTE.Make( Proc, Part, OptionalParameters)
local Result = {}
local dCompletionPercentage = 0
-- controlli preventivi
if Proc.nFct > 2 then
error( 'BladeToWaste : max 2 faces supported')
elseif Proc.nFct == 2 then
if Proc.AdjacencyMatrix[1][2] > 10 * GEO.EPS_SMALL or Proc.AdjacencyMatrix[1][2] < -91 then
error( 'BladeToWaste : angle between faces must be concave and >= 90deg')
end
end
-- parametri opzionali e default
local nToolIndex = OptionalParameters.nToolIndex
local bDropWholeWaste = OptionalParameters.bDropWholeWaste or false
@@ -71,6 +82,26 @@ function BLADETOWASTE.Make( Proc, Part, OptionalParameters)
return Result, dCompletionPercentage
end
-- lavorazione con cubetti
-- se due facce, la faccia principale è la più grande
local Face1 = Proc.Faces[1]
local Face2 = {}
if Proc.nFct == 2 then
Face2 = Proc.Faces[2]
end
-- direzione migliore di lavoro, per la ricerca utensile
local _, dCutH, dCutV = BeamLib.GetFaceHvRefDim( Proc.Id, 0, Part.b3Raw)
-- ricerca utensile
local ToolSearchParameters = {}
ToolSearchParameters.vtToolDirection = EdgeToMachine.vtN
ToolSearchParameters.bAllowTopHead = true
-- TODO bisognerà implementare anche la lama da sotto
ToolSearchParameters.bAllowBottomHead = false
ToolSearchParameters.bForceLongcutBlade = false
ToolInfo = MachiningLib.FindBlade( Proc, ToolSearchParameters)
nToolIndex = ToolInfo.nToolIndex
local vCuts = DiceCut.GetDice( Part, Face1, Face2, OptionalParameters)