diff --git a/BatchProcess.lua b/BatchProcess.lua index 1a69cb0..25a3dd3 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -199,9 +199,35 @@ if bToProcess then -- Aggiorno eventuali dati ausiliari UpdateAuxData( sBtmFile) + -- Recupero informazione se progetto o produzione + local bProj = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo'), 'PROJECT', 'i') == 1) + -- Dimensioni del pannello - local dRawL = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'PANELLEN', 'd') or 8000) - local dRawW = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'PANELWIDTH', 'd') or 4000) + local dRawL = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'PANELLEN', 'd') or 100) + local dRawW = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'PANELWIDTH', 'd') or 50) + local dExtraL = 0 + local dExtraW = 0 + if bProj then + if WD.BEAM_MACHINE then + if dRawL < WD.MIN_LENGTH then + dExtraL = WD.MIN_LENGTH - dRawL + dRawL = WD.MIN_LENGTH + elseif dRawL < WD.MAX_LENGTH then + dExtraL = min( WD.MAX_LENGTH - dRawL, 3000) + dRawL = dRawL + dExtraL + end + if dRawW + 10 < WD.MIN_WIDTH then + dExtraW = WD.MIN_WIDTH - dRawW + dRawW = WD.MIN_WIDTH + elseif dRawW < WD.MAX_WIDTH then + dExtraW = min( WD.MAX_WIDTH - dRawW, 10) + dRawW = dRawW + dExtraW + end + else + dExtraW = 10 + dRawW = dRawW + dExtraW + end + end -- Recupero l'elenco ordinato delle pareti local vWall = {} @@ -243,14 +269,11 @@ if bToProcess then -- Ne recupero la posizione for i = 1, #vWall do local PosX = EgtGetInfo( vWall[i].Id, 'POSX', 'd') - vWall[i].PosX = PosX + vWall[i].PosX = PosX + min( dExtraL, 1200) local PosZ = EgtGetInfo( vWall[i].Id, 'POSZ', 'd') - vWall[i].PosZ = PosZ + vWall[i].PosZ = PosZ + dExtraW / 2 end - -- Recupero informazione se progetto o produzione - local bProj = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo'), 'PROJECT', 'i') == 1) - -- Eseguo eventuali rotazioni e inversioni testa-coda for i = 1, #vWall do local b3Solid = vWall[i].Box diff --git a/LuaLibs/WallExec.lua b/LuaLibs/WallExec.lua index a6afd02..9176eec 100644 --- a/LuaLibs/WallExec.lua +++ b/LuaLibs/WallExec.lua @@ -66,6 +66,7 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bPartO -- Creazione del grezzo e suo posizionamento in macchina local nRaw = EgtAddRawPart( Point3d(0,0,0), dRawL, dRawW, dRawH, WD.RAWCOL) EgtMoveToCornerRawPart( nRaw, OrigOnTab, nCorner) + EgtSetInfo( nRaw, 'ORD', 1) -- Inserimento dei pezzi nel grezzo for i = 1, #vWall do -- assegno identificativo pezzo @@ -266,7 +267,10 @@ local function SortMach( nPhase, LastMch, nType, sStartName, bExistName, sInfo, ptE:getX(), ptE:getY(), ptE:getZ(), 0, 0) end EgtSpSetAngularParams( 1000, 40, 2000, 60) - EgtSpSetOpenBound( true,SHP_OB.NEAR_PNT,-2000,0,0,90,90) + EgtSpSetOpenBound( true, SHP_OB.NEAR_PNT, 50000, 0, 0, 0, 0) + if WD.BEAM_MACHINE and nType == MCH_OY.SAWING then + EgtSpSetOpenBound( false, SHP_OB.NEAR_PNT, -50000, 0, 0, 0, 0) + end local vOrd = EgtSpCalculate( SHP_TY.OPEN) EgtSpTerminate() @@ -357,6 +361,24 @@ function WallExec.ProcessFeatures() end -- riordino le lavorazioni SortMachinings() + -- se macchina travi + if WD.BEAM_MACHINE then + -- dati su prima disposizione + local nDispId = EgtGetPhaseDisposition( 1) + EgtSetInfo( nDispId, 'TYPE', 'START') + EgtSetInfo( nDispId, 'ORD', 1) + -- aggiungo flag su ultima lavorazione + local nLastMchId = EgtGetLastActiveOperation() + EgtSetCurrMachining( nLastMchId) + EgtSetMachiningParam( MCH_MP.USERNOTES, 'Cut;') + -- aggiungo disposizione per lo scarico + EgtAddPhase() + local nRawId = EgtGetFirstRawPart() + EgtKeepRawPart( nRawId, 1) + local nDisp2Id = EgtGetPhaseDisposition( 2) + EgtSetInfo( nDisp2Id, 'TYPE', 'END') + EgtSetInfo( nDisp2Id, 'ORD', 1) + end -- restituzione risultati return ( nTotErr == 0), Stats end