Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 73c86bd35f | |||
| 0f536b07c4 | |||
| 3e01fb36b0 | |||
| 9480453e57 | |||
| 8e19e87d3f | |||
| 6a6dc27560 | |||
| 67bb55537e | |||
| 06adbb0b5d | |||
| 872a3ec899 | |||
| 5dae07e2aa | |||
| fc26a8ad4a | |||
| 04046787e3 |
@@ -45,6 +45,7 @@ REM Compilazione 32 e 64 bit
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessText.lua -s LuaLibs\ProcessText.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessTyroleanDovetail.lua -s LuaLibs\ProcessTyroleanDovetail.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessVariant.lua -s LuaLibs\ProcessVariant.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessProbing.lua -s LuaLibs\ProcessProbing.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcess.lua -s BatchProcess.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcessNew.lua -s BatchProcessNew.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\GetBeamData.lua -s GetBeamData.lua
|
||||
|
||||
@@ -108,6 +108,7 @@ _G.package.loaded.ProcessScarfJoint = nil
|
||||
_G.package.loaded.ProcessSimpleScarf = nil
|
||||
_G.package.loaded.ProcessStepJoint = nil
|
||||
_G.package.loaded.ProcessStepJointNotch = nil
|
||||
_G.package.loaded.ProcessProbing = nil
|
||||
_G.package.loaded.ProcessProfFront = nil
|
||||
_G.package.loaded.ProcessProfConcave = nil
|
||||
_G.package.loaded.ProcessProfConvex = nil
|
||||
|
||||
+50
-30
@@ -25,11 +25,14 @@ EgtOutLog( ' MachiningLib started', 1)
|
||||
|
||||
-- Dati
|
||||
local BD = require( 'BeamData')
|
||||
local Cuttings = require( 'CutData')
|
||||
local Millings = require( 'MillingData')
|
||||
local Pocketings = require( 'PocketingData')
|
||||
local Sawings = require( 'SawingData')
|
||||
local Drillings = require( 'DrillData')
|
||||
-- librerie lavorazioni caricate con pcall perchè potrebbero non esserci
|
||||
local Cuttings, Millings, Pocketings, Sawings, Drillings, Probing
|
||||
if pcall( require, 'CutData') then Cuttings = require( 'CutData') end
|
||||
if pcall( require, 'MillingData') then Millings = require( 'MillingData') end
|
||||
if pcall( require, 'PocketingData') then Pocketings = require( 'PocketingData') end
|
||||
if pcall( require, 'SawingData') then Sawings = require( 'SawingData') end
|
||||
if pcall( require, 'DrillData') then Drillings = require( 'DrillData') end
|
||||
if pcall( require, 'ProbingData') then Probing = require( 'ProbingData') end
|
||||
|
||||
-- tipo di teste macchina
|
||||
local ONE_HEAD = 1 -- una testa (Fast, One, Turn1T)
|
||||
@@ -184,18 +187,32 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetMachinings( MachiningType, sType)
|
||||
local Machinings
|
||||
local Machinings = {}
|
||||
-- leggo le lavorazioni disponibili
|
||||
if MachiningType == MCH_MY.DRILLING then
|
||||
Machinings = Drillings
|
||||
if Drillings and type( Drillings) == "table" then
|
||||
Machinings = Drillings
|
||||
end
|
||||
elseif MachiningType == MCH_MY.SAWING then
|
||||
Machinings = Cuttings
|
||||
if Cuttings and type( Cuttings) == "table" then
|
||||
Machinings = Cuttings
|
||||
end
|
||||
elseif MachiningType == MCH_MY.MILLING then
|
||||
Machinings = Millings
|
||||
if Millings and type( Millings) == "table" then
|
||||
Machinings = Millings
|
||||
end
|
||||
elseif MachiningType == MCH_MY.POCKETING then
|
||||
Machinings = Pocketings
|
||||
if Pocketings and type( Pocketings) == "table" then
|
||||
Machinings = Pocketings
|
||||
end
|
||||
elseif MachiningType == MCH_MY.MORTISING then
|
||||
Machinings = Sawings
|
||||
if Sawings and type( Sawings) == "table" then
|
||||
Machinings = Sawings
|
||||
end
|
||||
elseif MachiningType == MCH_MY.PROBING then
|
||||
if Probing and type( Probing) == "table" then
|
||||
Machinings = Probing
|
||||
end
|
||||
end
|
||||
-- scrivo i parametri utensile nella lavorazione
|
||||
local validMachinings = {}
|
||||
@@ -208,27 +225,30 @@ function GetMachinings( MachiningType, sType)
|
||||
if Machining.Tool.Name then
|
||||
if EgtTdbSetCurrTool( Machining.Tool.Name) then
|
||||
table.insert( validMachinings, Machining)
|
||||
if ( MachiningType == MCH_MY.MILLING) or ( MachiningType == MCH_MY.POCKETING) or ( MachiningType == MCH_MY.DRILLING and EgtStartsWith( sType, 'Pocket')) then
|
||||
Machining.Tool.MaxMat = EgtTdbGetCurrToolMaxDepth()
|
||||
else
|
||||
Machining.Tool.MaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT)
|
||||
end
|
||||
if MachiningType == MCH_MY.DRILLING then
|
||||
if EgtStartsWith( Machining.Type, 'Drill') then
|
||||
Machining.SubType = 'Drill'
|
||||
elseif EgtStartsWith( Machining.Type, 'AngleDrill') then
|
||||
Machining.SubType = 'AngleDrill'
|
||||
elseif EgtStartsWith( Machining.Type, 'Pocket') then
|
||||
Machining.SubType = 'DrillPocket'
|
||||
elseif EgtStartsWith( Machining.Type, 'Predrill') then
|
||||
Machining.SubType = 'Predrill'
|
||||
-- se non è tastatura, recupero dati utensile
|
||||
if MachiningType ~= MCH_MY.PROBING then
|
||||
if ( MachiningType == MCH_MY.MILLING) or ( MachiningType == MCH_MY.POCKETING) or ( MachiningType == MCH_MY.DRILLING and EgtStartsWith( sType, 'Pocket')) then
|
||||
Machining.Tool.MaxMat = EgtTdbGetCurrToolMaxDepth()
|
||||
else
|
||||
Machining.Tool.MaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT)
|
||||
end
|
||||
if MachiningType == MCH_MY.DRILLING then
|
||||
if EgtStartsWith( Machining.Type, 'Drill') then
|
||||
Machining.SubType = 'Drill'
|
||||
elseif EgtStartsWith( Machining.Type, 'AngleDrill') then
|
||||
Machining.SubType = 'AngleDrill'
|
||||
elseif EgtStartsWith( Machining.Type, 'Pocket') then
|
||||
Machining.SubType = 'DrillPocket'
|
||||
elseif EgtStartsWith( Machining.Type, 'Predrill') then
|
||||
Machining.SubType = 'Predrill'
|
||||
end
|
||||
end
|
||||
Machining.Tool.Diameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
|
||||
Machining.Tool.Length = EgtTdbGetCurrToolParam( MCH_TP.LEN)
|
||||
Machining.Tool.TotalLength = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
Machining.Tool.ToolHolderDiameter = EgtTdbGetCurrToolThDiam()
|
||||
Machining.Tool.ToolHolderLength = EgtTdbGetCurrToolThLength() or 72
|
||||
end
|
||||
Machining.Tool.Diameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
|
||||
Machining.Tool.Length = EgtTdbGetCurrToolParam( MCH_TP.LEN)
|
||||
Machining.Tool.TotalLength = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
Machining.Tool.ToolHolderDiameter = EgtTdbGetCurrToolThDiam()
|
||||
Machining.Tool.ToolHolderLength = EgtTdbGetCurrToolThLength() or 72
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -20,6 +20,7 @@ local ProcessDtMortise = {}
|
||||
require( 'EgtBase')
|
||||
local BL = require( 'BeamLib')
|
||||
local Cut = require( 'ProcessCut')
|
||||
local Probe = require( 'ProcessProbing')
|
||||
|
||||
EgtOutLog( ' ProcessDtMortise started', 1)
|
||||
|
||||
@@ -273,6 +274,7 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
local dToolDiam = 100
|
||||
local dMaxMat = 30
|
||||
local dSideAng = 0
|
||||
local sHeadTool = 'H1'
|
||||
local bCW = true
|
||||
local bMillOnAggregate = sMchExt == '_AT'
|
||||
if EgtMdbSetCurrMachining( sMilling) then
|
||||
@@ -282,6 +284,7 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
dToolDiam = max( dToolDiam, 10)
|
||||
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
|
||||
dSideAng = EgtTdbGetCurrToolParam( MCH_TP.SIDEANG) or dSideAng
|
||||
sHeadTool = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
local dSpeed = EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) or 0
|
||||
bCW = ( dSpeed >= 0)
|
||||
end
|
||||
@@ -292,6 +295,11 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
|
||||
-- tastatura se richiesta
|
||||
local Info = { vtProbe = vtExtr, ptProbe = ptBC, sType = 'DTMortise', sHead = sHeadTool}
|
||||
local bProbeExecuted, sErr = Probe.Make( Proc, nPartId, Info)
|
||||
|
||||
-- se con tasca, la lavoro (mai in doppio)
|
||||
if bPocket then
|
||||
-- recupero il contorno della tasca (seconda curva ausiliaria)
|
||||
@@ -522,7 +530,7 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
end
|
||||
end
|
||||
-- se necessario, imposto SCC
|
||||
if nSCC then
|
||||
if nSCC then
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
||||
end
|
||||
-- dichiaro massima elevazione e assenza sfridi per VMill
|
||||
@@ -539,6 +547,10 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2)
|
||||
end
|
||||
end
|
||||
-- se c'è stata tastatura, si disattiva sull'ultima lavorazione
|
||||
if bProbeExecuted and i == 1 then
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'END-PROBE', true)
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||
-- eseguo
|
||||
if not ML.ApplyMachining( true, false) then
|
||||
|
||||
@@ -7515,6 +7515,22 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
return MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, true)
|
||||
-- se ortogonali e non forzata lama, con fresa
|
||||
elseif not bUseBlade then
|
||||
-- verifico se devo fare prima gli smussi
|
||||
-- recupero gruppo per geometria addizionale
|
||||
local nAddGrpId = BL.GetAddGroup( nPartId)
|
||||
if not nAddGrpId then
|
||||
local sErr = 'Error : missing AddGroup'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- verifiche per smusso
|
||||
local nChamfer, dDepthCham, sErrCham = EvaluateQParam( Proc)
|
||||
-- se smusso da fare
|
||||
if nChamfer > 0 then
|
||||
local _, _, _, vtOrtho, _, nSurfInt = BL.GetTunnelDimension( Proc, nPartId)
|
||||
local nOk, sErr = MakeChamfer( Proc, true, nAddGrpId, vtOrtho, b3Solid, nSurfInt, dDepthCham)
|
||||
if nOk < 0 then return false, sErr end
|
||||
end
|
||||
-- se piccole
|
||||
if Proc.Box:getDimX() < MAX_MILL_LIN and ( Proc.Box:getDimZ() < MAX_MILL_LIN or Proc.Box:getDimY() < MAX_MILL_LIN) and bAdj and abs( dAng + 90) < 1 then
|
||||
return MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId, bDownHeadMill)
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
-- ProcessSplit.lua by Egaltech s.r.l. 2025/06/20
|
||||
-- Gestione tastatura
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessProbing = {}
|
||||
|
||||
-- Include
|
||||
require( 'EgtBase')
|
||||
local BL = require( 'BeamLib')
|
||||
|
||||
-- Dati
|
||||
local ML = require( 'MachiningLib')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetProbingMachining( Machinings, sHead)
|
||||
local sProbeMachining, sHeadTool
|
||||
|
||||
-- TODO questa associazione "testa utensile"-"testa tastatore" dovrebbe essere spostata nella macchina.
|
||||
-- Non è detto che se testa utensile inizia con "H2" allora bisogna prendere lavorazione con "_H2"
|
||||
|
||||
-- se la testa utilizzata dalla lavorazione inizia con H2, dovrebbe essere la seconda testa
|
||||
if EgtStartsWith( sHead, 'H2') then
|
||||
sHeadTool = '_H2'
|
||||
else
|
||||
sHeadTool = '_H1'
|
||||
end
|
||||
|
||||
for i = 1, #Machinings do
|
||||
if EgtEndsWith( Machinings[i].Name, sHeadTool) then
|
||||
sProbeMachining = Machinings[i]
|
||||
return sProbeMachining
|
||||
end
|
||||
end
|
||||
sProbeMachining = Machinings[1]
|
||||
return sProbeMachining
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function MoveProbePointToRawFaces( ptProbe, vtProbe, nPartId)
|
||||
local b3BoxPart = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
-- si porta linea di tastatura su grezzo
|
||||
if AreSameVectorApprox( vtProbe, Z_AX()) then
|
||||
ptProbe[3] = b3BoxPart:getMax():getZ()
|
||||
elseif AreSameVectorApprox( vtProbe, -Z_AX()) then
|
||||
ptProbe[3] = b3BoxPart:getMin():getZ()
|
||||
elseif AreSameVectorApprox( vtProbe, Y_AX()) then
|
||||
ptProbe[2] = b3BoxPart:getMax():getY()
|
||||
elseif AreSameVectorApprox( vtProbe, -Y_AX()) then
|
||||
ptProbe[2] = b3BoxPart:getMin():getY()
|
||||
end
|
||||
return ptProbe
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Applicazione della lavorazione
|
||||
function ProcessProbing.Make( Proc, nPartId, Info)
|
||||
local bOk, sErr
|
||||
|
||||
-- per eseguire tastatura servono tutti i dati, altriemnti impossibile
|
||||
if Info.vtProbe and Info.ptProbe and Info.sType then
|
||||
Info.ptProbe = MoveProbePointToRawFaces( Info.ptProbe, Info.vtProbe, nPartId)
|
||||
-- recupero gruppo per geometria addizionale
|
||||
local nAddGrpId = BL.GetAddGroup( nPartId)
|
||||
local nIdLine = EgtLinePVL( nAddGrpId, Info.ptProbe, Info.vtProbe, 10, GDB_RT.GLOB) -- TODO lunghezza da portare fuori come parametro
|
||||
local Machinings = GetMachinings( MCH_MY.PROBING, Info.sType)
|
||||
-- se c'è almeno una lavorazione, allora devo fare tastatura
|
||||
if Machinings and #Machinings > 0 then
|
||||
local sProbing = GetProbingMachining( Machinings, Info.sHead)
|
||||
-- se c'è la linea e la lavorazione, applico
|
||||
if sProbing and nIdLine then
|
||||
local sName = 'DtMtProbe_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
local nMchFId = EgtAddMachining( sName, sProbing.Name)
|
||||
-- si inverte la direzione della linea, deve essere entrante, oppostaa vettore estrusione
|
||||
EgtInvertCurve( nIdLine)
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ nIdLine, -1}})
|
||||
|
||||
-- eseguo
|
||||
if not ML.ApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nMchFId, false)
|
||||
return false, sErr
|
||||
else
|
||||
bOk = true
|
||||
end
|
||||
else
|
||||
bOk = false
|
||||
sErr = 'Error on probing'
|
||||
end
|
||||
-- altrimenti tastatura non richiesta, esco
|
||||
else
|
||||
return true
|
||||
end
|
||||
else
|
||||
bOk = false
|
||||
sErr = 'Error on probing'
|
||||
end
|
||||
|
||||
return bOk, sErr
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return ProcessProbing
|
||||
@@ -288,8 +288,8 @@ local function MachineByMill( Proc, nPhase, nRawId, nPartId, b3Solid, ptC, vtN,
|
||||
-- setto a 0 eventuali offset
|
||||
EgtSetMachiningParam( MCH_MP.OFFSR, 0)
|
||||
-- applico gli allungamenti o accorciamenti considerando che la lavorazione è invertita
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, EgtIf( bOpenStart, dTDiam / 2, - dTDiam / 2))
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, EgtIf( bOpenEnd, dTDiam / 2, - dTDiam / 2))
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, EgtIf( bOpenStart, dTDiam / 2 + 10, - dTDiam / 2))
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, EgtIf( bOpenEnd, dTDiam / 2 + 10, - dTDiam / 2))
|
||||
-- attacchi e uscite lineari con parte tg nulla
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.LINEAR)
|
||||
EgtSetMachiningParam( MCH_MP.LITANG, 0)
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
==== Beam Update Log ====
|
||||
|
||||
Versione 2.7f3 (19/06/2025)
|
||||
- Modifx : in StepJointNotch corretta distanza attacco in/out
|
||||
|
||||
Versione 2.7f2 (18/06/2025)
|
||||
- Modif : in LongDoubleCut aggiunto messaggio feature non completa se utensile non arriva sul fondo
|
||||
- Modif : in StepJointNotch, se si forza truciolatore, si prende utensile più grande
|
||||
|
||||
+1
-1
@@ -2,5 +2,5 @@
|
||||
-- Gestione della versione di Beam
|
||||
|
||||
NAME = 'Beam'
|
||||
VERSION = '2.7f2'
|
||||
VERSION = '2.7f3'
|
||||
MIN_EXE = '2.6e5'
|
||||
|
||||
Reference in New Issue
Block a user