diff --git a/BatchProcess.lua b/BatchProcess.lua index 0a6b6a6..8963e43 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -27,9 +27,6 @@ EgtEnableDebug( false) --BEAM.MACHINE = 'FAST' --BEAM.FLAG = 3 --- Flag abilitazione controllo collisione -local bVerifyCollision = true - -- Log dati in input local sFlag = '' if BEAM.FLAG == 0 then @@ -418,8 +415,8 @@ else EgtSetCurrMachGroup( EgtGetLastMachGroup()) end --- *** Eseguo simulazione in cieco *** ( se richiesta verifica) -if ( BEAM.FLAG == 3 or BEAM.FLAG == 4) and bVerifyCollision then +-- *** Eseguo simulazione in cieco *** +if ( BEAM.FLAG == 3 or BEAM.FLAG == 4) then local bSimOk, nErr, sErr = EgtSimulate() if not bSimOk then if nErr == MCH_SHE.INIT then diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index 63b783b..f678fe4 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -34,6 +34,93 @@ function ProcessCut.Classify( Proc, b3Raw) return true, false end +--------------------------------------------------------------------- +-- lavorazione smussi +local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) + -- verifico che lo smusso sia richiesto + local dDepth = EgtGetInfo( Proc.Id, 'Q06', 'd') or 0 + if dDepth < 0.1 then return true end + -- ingombro del grezzo + local b3Raw = EgtGetRawPartBBox( nRawId) + -- recupero e verifico l'entità curva associata + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') + if AuxId then AuxId = AuxId + Proc.Id end + if not AuxId then return true end + if ( EgtGetType( AuxId) & GDB_FY.GEO_CURVE) == 0 then + local sErr = 'Error : missing profile geometry' + EgtOutLog( sErr) + return false, sErr + end + -- recupero i dati della curva e del profilo + local dWidth = abs( EgtCurveThickness( AuxId)) + local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) + -- eseguo lo smusso solo se direzione orizzontale (non propago la segnalazione a TS3) + if abs( vtExtr:getZ()) > 0.1 then + local sWarn = 'Warning : skipped not horizontal chamfer' + EgtOutLog( sWarn) + return true + end + -- eseguo lo smusso solo se feature larga come la trave + if dWidth < b3Raw:getDimY() - 1 then + local sWarn = 'Warning : skipped chamfer (feature smaller than beam)' + EgtOutLog( sWarn) + return true, sWarn + end + local dExtra = 2 + -- recupero la lavorazione + local sMilling = ML.FindMilling( 'Mark') + if not sMilling then + local sErr = 'Error : milling not found in library' + EgtOutLog( sErr) + return false, sErr + end + -- Inserisco la lavorazione del lato standard + local sName1 = 'SJN_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local nMch1Id = EgtAddMachining( sName1, sMilling) + if not nMch1Id then + local sErr = 'Error adding machining ' .. sName1 .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ AuxId, -1}}) + -- assegno affondamento e offset radiale + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth + dExtra) + EgtSetMachiningParam( MCH_MP.OFFSR, dExtra) + -- assegno lato di lavoro + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT) + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchId, false) + return false, sErr + end + -- Inserisco la lavorazione del lato opposto + local sName2 = 'SJN_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local nMch2Id = EgtAddMachining( sName2, sMilling) + if not nMch2Id then + local sErr = 'Error adding machining ' .. sName2 .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ AuxId, -1}}) + -- inverto direzione utensile + EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) + -- assegno affondamento e offset radiale + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth + dExtra) + EgtSetMachiningParam( MCH_MP.OFFSR, dExtra) + -- assegno lato di lavoro + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchId, false) + return false, sErr + end + return true +end + --------------------------------------------------------------------- -- Applicazione della lavorazione function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom) @@ -43,7 +130,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom) local Ls = EgtGetFirstNameInGroup( nPartId, 'Box') local b3Solid = EgtGetBBoxGlob( Ls or GDB_ID.NULL, GDB_BB.STANDARD) if not b3Solid then - local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' part box not found' + local sErr = 'Error : part box not found' EgtOutLog( sErr) return false, sErr end @@ -64,10 +151,13 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom) return true end end + -- inserimento smussi + local bOkc, sErrC = MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) + if not bOkc then return bOkc, sErrC end -- recupero la lavorazione local sCutting = ML.FindCutting( EgtIf( Proc.Head, 'HeadSide', 'TailSide')) if not sCutting then - local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' cutting not found in library' + local sErr = 'Error : cutting not found in library' EgtOutLog( sErr) return false, sErr end @@ -97,7 +187,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom) -- recupero gruppo per geometria addizionale local nAddGrpId = BL.GetAddGroup( nPartId) if not nAddGrpId then - local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' missing AddGroup' + local sErr = 'Error : missing AddGroup' EgtOutLog( sErr) return false, sErr end diff --git a/LuaLibs/ProcessScarfJoint.lua b/LuaLibs/ProcessScarfJoint.lua index 1f2f769..17c494e 100644 --- a/LuaLibs/ProcessScarfJoint.lua +++ b/LuaLibs/ProcessScarfJoint.lua @@ -44,7 +44,7 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- recupero e verifico l'entità curva associata - local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') or 0 + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if AuxId then AuxId = AuxId + Proc.Id end if not AuxId or ( EgtGetType( AuxId) & GDB_FY.GEO_CURVE) == 0 then local sErr = 'Error : missing profile geometry' @@ -54,11 +54,11 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- recupero i dati della curva e del profilo local dWidth = abs( EgtCurveThickness( AuxId)) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) - -- eseguo lo smusso solo se direzione orizzontale + -- eseguo lo smusso solo se direzione orizzontale (non propago la segnalazione a TS3) if abs( vtExtr:getZ()) > 0.1 then local sWarn = 'Warning : skipped not horizontal chamfer' EgtOutLog( sWarn) - return true, sWarn + return true end -- eseguo lo smusso solo se feature larga come la trave if dWidth < b3Raw:getDimY() - 1 then diff --git a/LuaLibs/ProcessSimpleScarf.lua b/LuaLibs/ProcessSimpleScarf.lua index d6605ec..8a6115c 100644 --- a/LuaLibs/ProcessSimpleScarf.lua +++ b/LuaLibs/ProcessSimpleScarf.lua @@ -44,7 +44,7 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- recupero e verifico l'entità curva associata - local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') or 0 + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if AuxId then AuxId = AuxId + Proc.Id end if not AuxId or ( EgtGetType( AuxId) & GDB_FY.GEO_CURVE) == 0 then local sErr = 'Error : missing profile geometry' @@ -54,11 +54,11 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- recupero i dati della curva e del profilo local dWidth = abs( EgtCurveThickness( AuxId)) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) - -- eseguo lo smusso solo se direzione orizzontale + -- eseguo lo smusso solo se direzione orizzontale (non propago la segnalazione a TS3) if abs( vtExtr:getZ()) > 0.1 then local sWarn = 'Warning : skipped not horizontal chamfer' EgtOutLog( sWarn) - return true, sWarn + return true end -- eseguo lo smusso solo se feature larga come la trave if dWidth < b3Raw:getDimY() - 1 then diff --git a/LuaLibs/ProcessStepJoint.lua b/LuaLibs/ProcessStepJoint.lua index dcab9ee..2e96b93 100644 --- a/LuaLibs/ProcessStepJoint.lua +++ b/LuaLibs/ProcessStepJoint.lua @@ -57,7 +57,7 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- recupero e verifico l'entità curva associata - local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') or 0 + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if AuxId then AuxId = AuxId + Proc.Id end if not AuxId or ( EgtGetType( AuxId) & GDB_FY.GEO_CURVE) == 0 then local sErr = 'Error : missing profile geometry' @@ -67,11 +67,11 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- recupero i dati della curva e del profilo local dWidth = abs( EgtCurveThickness( AuxId)) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) - -- eseguo lo smusso solo se direzione orizzontale + -- eseguo lo smusso solo se direzione orizzontale (non propago la segnalazione a TS3) if abs( vtExtr:getZ()) > 0.1 then local sWarn = 'Warning : skipped not horizontal chamfer' EgtOutLog( sWarn) - return true, sWarn + return true end -- eseguo lo smusso solo se feature larga come la trave if dWidth < b3Raw:getDimY() - 1 then diff --git a/LuaLibs/ProcessStepJointNotch.lua b/LuaLibs/ProcessStepJointNotch.lua index 2199a8f..e573d83 100644 --- a/LuaLibs/ProcessStepJointNotch.lua +++ b/LuaLibs/ProcessStepJointNotch.lua @@ -389,7 +389,7 @@ local function MakeChamfer( Proc, nPhase, nRawId, nPartId, dOvmHead) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- recupero e verifico l'entità curva associata - local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') or 0 + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if AuxId then AuxId = AuxId + Proc.Id end if not AuxId or ( EgtGetType( AuxId) & GDB_FY.GEO_CURVE) == 0 then local sErr = 'Error : missing profile geometry'