- Aggiunta funzione AddNewMachining in MachiningLib

- Adeguamento STR0002 per utilizzo nuova funzione di aggiunta lavorazione
This commit is contained in:
andrea.villa
2024-05-20 14:33:12 +02:00
parent 230b5f871d
commit c1c6e2a220
2 changed files with 213 additions and 22 deletions
+180
View File
@@ -142,6 +142,186 @@ end
-- funzione per aggiungere una nuova lavorazione
-- TODO da fare
function MachiningLib.AddNewMachining( Machining)
local nErr
local sErr
-- Controllo parametri obbligatori
if not Machining.nType or not Machining.nToolIndex or not Machining.idProc or not Machining.idFaceToMachine then
return false
end
-- Drilling
if Machining.nType == MCH_MY.DRILLING then
Machining.sTypeName = 'Drill_'
-- Milling
elseif Machining.nType == MCH_MY.MILLING then
-- se utensile lama
if TOOLS[Machining.nToolIndex].sFamily == 'SAWBLADE' then
Machining.sTypeName = 'Cut'
else
Machining.sTypeName = 'Milling'
end
-- Pocketing
elseif Machining.nType == MCH_MY.POCKETING then
Machining.sTypeName = 'Pocketing'
-- Mortising
elseif Machining.nType == MCH_MY.MORTISING then
Machining.sTypeName = 'Mortising'
end
-- se nome non definito, assegno alla lavorazioen un nome standard
if not Machining.sOperationName then
Machining.sOperationName = Machining.sTypeName .. ( EgtGetName( Machining.idProc) or tostring( Machining.idProc)) .. '_' .. tostring( Machining.idFaceToMachine)
end
if not Machining.sToolName then
Machining.sToolName = TOOLS[Machining.nToolIndex].sName
end
-- creazione lavorazione
local nOperationId = EgtCreateMachining( Machining.sOperationName, Machining.nType, Machining.sToolName)
if nOperationId then
-- impostazione geometria
EgtSetMachiningGeometry( {{ Machining.idProc, Machining.idFaceToMachine}})
-- impostazione parametri lavorazione
if Machining.dDepth then
EgtSetMachiningParam( MCH_MP.DEPTH, Machining.dDepth)
end
if Machining.bInvert then
EgtSetMachiningParam( MCH_MP.INVERT, Machining.bInvert)
end
if Machining.nWorkside then
EgtSetMachiningParam( MCH_MP.WORKSIDE, Machining.nWorkside)
end
if Machining.nFaceuse then
EgtSetMachiningParam( MCH_MP.FACEUSE, Machining.nFaceuse)
end
if Machining.nSCC then
EgtSetMachiningParam( MCH_MP.SCC, Machining.nSCC)
end
if Machining.bToolInvert then
EgtSetMachiningParam( MCH_MP.TOOLINVERT, Machining.bToolInvert)
end
if Machining.sBlockedAxis then
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, Machining.sBlockedAxis)
end
if Machining.sInitialAngles then
EgtSetMachiningParam( MCH_MP.INITANGS, Machining.sInitialAngles)
end
if Machining.nHeadSide then
EgtSetMachiningParam( MCH_MP.HEADSIDE, Machining.nHeadSide)
end
if Machining.nSubType then
EgtSetMachiningParam( MCH_MP.SUBTYPE, Machining.nSubType)
end
if Machining.dOverlap then
EgtSetMachiningParam( MCH_MP.OVERL, Machining.dOverlap)
end
-- step
if Machining.Steps then
if Machining.Steps.dStepType then
EgtSetMachiningParam( MCH_MP.STEPTYPE, Machining.Steps.dStepType)
end
if Machining.Steps.dStep then
EgtSetMachiningParam( MCH_MP.STEP, Machining.Steps.dStep)
end
if Machining.Steps.dSideStep then
EgtSetMachiningParam( MCH_MP.SIDESTEP, Machining.Steps.dSideStep)
end
end
if Machining.dStartPos then
EgtSetMachiningParam( MCH_MP.STARTPOS, Machining.dStartPos)
end
if Machining.dReturnPos then
EgtSetMachiningParam( MCH_MP.RETURNPOS, Machining.dReturnPos)
end
if Machining.dRadialOffset then
EgtSetMachiningParam( MCH_MP.OFFSR, Machining.dRadialOffset)
end
if Machining.dLongitudinalOffset then
EgtSetMachiningParam( MCH_MP.OFFSL, Machining.dLongitudinalOffset)
end
-- paraemtri attacco
if Machining.LeadIn then
if Machining.LeadIn.nType then
EgtSetMachiningParam( MCH_MP.LEADINTYPE, Machining.LeadIn.nType)
end
if Machining.LeadIn.dStartAddLength then
EgtSetMachiningParam( MCH_MP.STARTADDLEN, Machining.LeadIn.dStartAddLength)
end
if Machining.LeadIn.dTangentDistance then
EgtSetMachiningParam( MCH_MP.LITANG, Machining.LeadIn.dTangentDistance)
end
if Machining.LeadIn.dPerpDistance then
EgtSetMachiningParam( MCH_MP.LIPERP, Machining.LeadIn.dPerpDistance)
end
if Machining.LeadIn.dElevation then
EgtSetMachiningParam( MCH_MP.LIELEV, Machining.LeadIn.dElevation)
end
if Machining.LeadIn.dCompLength then
EgtSetMachiningParam( MCH_MP.LICOMPLEN, Machining.LeadIn.dCompLength)
end
end
-- parametri uscita
if Machining.LeadOut then
if Machining.LeadOut.nType then
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, Machining.LeadOut.nType)
end
if Machining.LeadOut.dEndAddLength then
EgtSetMachiningParam( MCH_MP.ENDADDLEN, Machining.LeadOut.dEndAddLength)
end
if Machining.LeadOut.dTangentDistance then
EgtSetMachiningParam( MCH_MP.LOTANG, Machining.LeadOut.dTangentDistance)
end
if Machining.LeadOut.dPerpDistance then
EgtSetMachiningParam( MCH_MP.LOPERP, Machining.LeadOut.dPerpDistance)
end
if Machining.LeadOut.dElevation then
EgtSetMachiningParam( MCH_MP.LOELEV, Machining.LeadOut.dElevation)
end
if Machining.LeadOut.dCompLength then
EgtSetMachiningParam( MCH_MP.LOCOMPLEN, Machining.LeadOut.dCompLength)
end
end
if Machining.dStartSlowLen then
EgtSetMachiningParam( MCH_MP.STARTSLOWLEN, Machining.dStartSlowLen)
end
if Machining.dEndSlowLen then
EgtSetMachiningParam( MCH_MP.ENDSLOWLEN, Machining.dEndSlowLen)
end
if Machining.dThrouAddLen then
EgtSetMachiningParam( MCH_MP.THROUADDLEN, Machining.dThrouAddLen)
end
-- parametri da settare nelle note
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
if Machining.dMaxElev then
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', Machining.dMaxElev)
end
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
local bIsApplyOk = MachiningLib.ApplyMachining( true, false)
if not bIsApplyOk then
nErr, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nOperationId, false)
return false
end
else
return false
end
return true, sErr
end
-------------------------------------------------------------------------------------------------------------
function MachiningLib.ApplyMachining( bRecalc, bApplyPost)
local bResult = EgtApplyMachining( bRecalc, bApplyPost)
return bResult
end
-------------------------------------------------------------------------------------------------------------
+33 -22
View File
@@ -15,7 +15,7 @@
-- carico librerie
local BeamLib = require( 'BeamLib')
local BeamData = require( 'BeamData')
local MachLib = require( 'MachiningLib')
local MachiningLib = require( 'MachiningLib')
local FeatureData = require( 'FeatureData')
-- Tabella per definizione modulo
@@ -48,6 +48,11 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters)
end
local ToolInfo = {}
local Pocketing = {}
Pocketing.Steps = {}
Pocketing.LeadIn = {}
Pocketing.LeadOut = {}
-- serve utensile che possa lavorare di testa
local ToolSearchParameters = {}
@@ -58,7 +63,7 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters)
ToolSearchParameters.vtToolDir = Proc.MainFaces.BottomFace.vtN
-- cerco utensile
ToolInfo = MachLib.FindMill( Proc, ToolSearchParameters)
ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
if ToolInfo.nToolIndex and TOOLS[ToolInfo.nToolIndex].sName then
if ToolInfo.dMaxMatReduction < 0 then
@@ -141,35 +146,41 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters)
end
-- si applicano le lavorazioni
for i = 1, #vAddId do
EgtCreateMachining( 'Svuotatura', MCH_OY.POCKETING, TOOLS[ToolInfo.nToolIndex].sName)
EgtSetMachiningParam( MCH_MP.STEP, TOOLS[ToolInfo.nToolIndex].dStep)
EgtSetMachiningParam( MCH_MP.DEPTH, min( 0, ToolInfo.dMaxMatReduction))
EgtSetMachiningParam( MCH_MP.SIDESTEP, TOOLS[ToolInfo.nToolIndex].dSideStep)
EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT)
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.ZIGZAG)
EgtSetMachiningParam( MCH_MP.LITANG, TOOLS[ToolInfo.nToolIndex].dDiameter/2)
EgtSetMachiningParam( MCH_MP.LIELEV, TOOLS[ToolInfo.nToolIndex].dDiameter/2)
Pocketing.nToolIndex = ToolInfo.nToolIndex
Pocketing.nType = MCH_OY.POCKETING
Pocketing.sOperationName = 'Svuotatura'
Pocketing.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep
Pocketing.dDepth = ToolInfo.dMaxMatReduction
Pocketing.Steps.dSideStep = TOOLS[ToolInfo.nToolIndex].dSideStep
Pocketing.nSubType = MCH_POCK_SUB.SPIRALOUT
Pocketing.LeadIn.nType = MCH_POCK_LI.ZIGZAG
Pocketing.LeadIn.TangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter/2
Pocketing.LeadIn.Elevation = TOOLS[ToolInfo.nToolIndex].dDiameter/2
for j=1, Proc.nFct do
local vtNSplitFace
_, vtNSplitFace = EgtSurfTmFacetCenter( vAddId[i], j - 1, GDB_ID.ROOT)
if vtNSplitFace and AreSameVectorExact( vtNSplitFace, Proc.MainFaces.BottomFace.vtN) then
EgtSetMachiningGeometry( {{ vAddId[i], j - 1}})
EgtApplyMachining( true, true)
Pocketing.FaceToMachine.id = j - 1
Pocketing.idProc = vAddId[i]
MachiningLib.AddNewMachining( Pocketing)
break
end
end
end
else
EgtCreateMachining( 'Svuotatura', MCH_OY.POCKETING, TOOLS[ToolInfo.nToolIndex].sName)
EgtSetMachiningParam( MCH_MP.STEP, TOOLS[ToolInfo.nToolIndex].dStep)
EgtSetMachiningParam( MCH_MP.DEPTH, min( 0, ToolInfo.dMaxMatReduction))
EgtSetMachiningParam( MCH_MP.SIDESTEP, TOOLS[ToolInfo.nToolIndex].dSideStep)
EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT)
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.ZIGZAG)
EgtSetMachiningParam( MCH_MP.LITANG, TOOLS[ToolInfo.nToolIndex].dDiameter/2)
EgtSetMachiningParam( MCH_MP.LIELEV, TOOLS[ToolInfo.nToolIndex].dDiameter/2)
EgtSetMachiningGeometry( {{ Proc.id, Proc.MainFaces.BottomFace.id}})
EgtApplyMachining( true, true)
Pocketing.nToolIndex = ToolInfo.nToolIndex
Pocketing.nType = MCH_OY.POCKETING
Pocketing.sOperationName = 'Svuotatura'
Pocketing.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep
Pocketing.dDepth = ToolInfo.dMaxMatReduction
Pocketing.Steps.dSideStep = TOOLS[ToolInfo.nToolIndex].dSideStep
Pocketing.nSubType = MCH_POCK_SUB.SPIRALOUT
Pocketing.LeadIn.nType = MCH_POCK_LI.ZIGZAG
Pocketing.LeadIn.TangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter/2
Pocketing.LeadIn.Elevation = TOOLS[ToolInfo.nToolIndex].dDiameter/2
Pocketing.idFaceToMachine = Proc.MainFaces.BottomFace.id
Pocketing.idProc = Proc.id
MachiningLib.AddNewMachining( Pocketing)
end
end
else