diff --git a/BatchProcessNew.lua b/BatchProcessNew.lua index 5a45f9b..8ed784b 100644 --- a/BatchProcessNew.lua +++ b/BatchProcessNew.lua @@ -91,7 +91,7 @@ end PARTS = {} -- tabella contenente tutte le informazioni di ogni pezzo -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') -- carico librerie local BeamExec = require( 'BeamExec') local BeamLib = require( 'BeamLib') diff --git a/LuaLibs/BasicCustomerStrategies.lua b/LuaLibs/BasicCustomerStrategies.lua index 05bef53..0775998 100644 --- a/LuaLibs/BasicCustomerStrategies.lua +++ b/LuaLibs/BasicCustomerStrategies.lua @@ -9,7 +9,7 @@ local BasicCustomerStrategies = {} require( 'EgtBase') -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local BeamLib = require( 'BeamLib') local ID = require( 'Identity') diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 5c78146..9075f54 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -9,7 +9,7 @@ local BeamExec = {} require( 'EgtBase') -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') -- carico librerie local BeamLib = require( 'BeamLib') diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index b481bb9..dfc7061 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -8,7 +8,7 @@ local BeamLib = {} -- Include require( 'EgtBase') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') EgtOutLog( ' BeamLib started', 1) diff --git a/LuaLibs/DiceCut.lua b/LuaLibs/DiceCut.lua index 14db6ce..c3b9e11 100644 --- a/LuaLibs/DiceCut.lua +++ b/LuaLibs/DiceCut.lua @@ -11,7 +11,7 @@ local BeamLib = require( 'BeamLib') EgtOutLog( ' DiceCut started', 1) -- Dati -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') ---------------------------------------------------------------------------------------------------------------------------------------------------- -- creo i piani paralleli diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index f86d831..f86c6a5 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -6,7 +6,7 @@ local FeatureLib = {} -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') -- carico librerie local BeamLib = require( 'BeamLib') diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 1111e81..dc5496a 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -9,7 +9,7 @@ local MachiningLib = {} require( 'EgtBase') -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local BeamLib = require( 'BeamLib') local FeatureLib = require( 'FeatureLib') local BCS = require( 'BasicCustomerStrategies') diff --git a/LuaLibs/PreCollisionLib.lua b/LuaLibs/PreCollisionLib.lua index 4f89a25..c857b50 100644 --- a/LuaLibs/PreCollisionLib.lua +++ b/LuaLibs/PreCollisionLib.lua @@ -7,7 +7,7 @@ local PreCollisionLib = {} -- Include require( 'EgtBase') local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') -- Carico i dati globali @@ -74,10 +74,76 @@ local function GetMachiningPoints( Edge, dDepthToMachine) return MachiningPoints end +------------------------------------------------------------------------------------------------------------- +local function CheckCollisionPoint( ptPointToCheck, vtC, vtHead, PreCollisionData, Part, bCheckOnlyRestlength) + + local ptPivot = GetGlobalPivot( ptPointToCheck, vtC, vtHead, PreCollisionData.vtMovePivot) + + -- orientamento del riferimento locale + local vtDirectionX = PreCollisionData.Directions.vtDirectionX + local vtDirectionY = PreCollisionData.Directions.vtDirectionY + local vtDirectionZ = PreCollisionData.Directions.vtDirectionZ + + -- costruzione trimesh a partire dalla curva di collisione + -- recupero punti da macchina per costruire trimesh + local CollisionCurvePoints = PreCollisionData.Points + -- curva di collisione in riferimento locale + local idCollisionCurve = EgtCurveCompoFromPoints( Part.idTempGroup, CollisionCurvePoints) + -- curva in riferimento globale + local frReference = Frame3d( ptPivot, vtDirectionZ, vtDirectionX) + EgtTransform( idCollisionCurve, frReference, GDB_RT.GLOB) + -- trimesh di collisione + local idCollisionSurfTm + if PreCollisionData.bSurfTmByRevolve then + idCollisionSurfTm = EgtSurfTmByRevolve( Part.idTempGroup, idCollisionCurve, ptPivot, vtDirectionY, true, 0.05, GDB_RT.GLOB) + else + local vtPreMove = -vtDirectionZ * ( PreCollisionData.dExtrusionDepth / 2) + EgtMove( idCollisionCurve, vtPreMove, GDB_RT.GLOB) + local vtExtrusion = vtDirectionZ * PreCollisionData.dExtrusionDepth + idCollisionSurfTm = EgtSurfTmByRegionExtrusion( Part.idTempGroup, idCollisionCurve, vtExtrusion, 0.05, GDB_RT.GLOB) + end + + -- check collisione con pezzo + local bCollisionFoundPiece = false + if not bCheckOnlyRestlength then + bCollisionFoundPiece = EgtTestSurfaceSurface( Part.idBoxTm, idCollisionSurfTm, BeamData.COLL_SIC) + if not type( bCollisionFoundPiece) == "boolean" then + error( 'EgtTestSurfaceSurface fail') + end + if EgtGetDebugLevel() >= 3 and bCollisionFoundPiece then + EgtSetColor( idCollisionSurfTm, RED()) + end + + -- se trovata collisione con pezzo è inutile procedere con il grezzo + if bCollisionFoundPiece then + return true + end + end + + -- check collisione con grezzo restante, se con il pezzo non c'è collisione + local bCollisionFoundRestLength = false + if not bCollisionFoundPiece then + local idRestLengthSurfFr = GetRestlengthSurfTm( Part) + bCollisionFoundRestLength = EgtTestSurfaceSurface( idRestLengthSurfFr, idCollisionSurfTm, BeamData.COLL_SIC) + if not type( bCollisionFoundRestLength) == "boolean" then + error( 'EgtTestSurfaceSurface fail') + end + if EgtGetDebugLevel() >= 3 and bCollisionFoundRestLength then + EgtSetColor( idCollisionSurfTm, ORANGE()) + end + end + + return false, bCollisionFoundRestLength +end + ------------------------------------------------------------------------------------------------------------- -- controllo collisione con verifica intersezione trimesh e geometrie da macchina +-- TODO refactoring parametri in tabelle function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, Part, Tool, dDepthToMachine, bCheckOnlyRestlength) + -- parametri opzionali + bCheckOnlyRestlength = bCheckOnlyRestlength or false + -- se normale faccia non parallela a direzione testa c'è qualcosa che non va if not AreSameOrOppositeVectorApprox( vtNFace, vtHead) then error( 'CheckCollisionWithAxis : invalid directions') @@ -123,62 +189,17 @@ function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, P -- se non si trova collisione si ritorna se è necessario separare prima di effettuare la lavorazione (ossia non c'è collisione con il pezzo ma c'è con il grezzo restante) for i = 1, #ToolExitPoints do - local ptPivot = GetGlobalPivot( ToolExitPoints[i], vtC, vtHead, PreCollisionData.vtMovePivot) + local bCollisionFoundPiece, bCollisionFoundRestLength = CheckCollisionPoint( ToolExitPoints[i], vtC, vtHead, PreCollisionData, Part, bCheckOnlyRestlength) - -- orientamento del riferimento locale - local vtDirectionX = PreCollisionData.Directions.vtDirectionX - local vtDirectionY = PreCollisionData.Directions.vtDirectionY - local vtDirectionZ = PreCollisionData.Directions.vtDirectionZ - - -- costruzione trimesh a partire dalla curva di collisione - -- recupero punti da macchina per costruire trimesh - local CollisionCurvePoints = PreCollisionData.Points - -- curva di collisione in riferimento locale - local idCollisionCurve = EgtCurveCompoFromPoints( Part.idTempGroup, CollisionCurvePoints) - -- curva in riferimento globale - local frReference = Frame3d( ptPivot, vtDirectionZ, vtDirectionX) - EgtTransform( idCollisionCurve, frReference, GDB_RT.GLOB) - -- trimesh di collisione - local idCollisionSurfTm - if PreCollisionData.bSurfTmByRevolve then - idCollisionSurfTm = EgtSurfTmByRevolve( Part.idTempGroup, idCollisionCurve, ptPivot, vtDirectionY, true, 0.05, GDB_RT.GLOB) - else - local vtPreMove = -vtDirectionZ * ( PreCollisionData.dExtrusionDepth / 2) - EgtMove( idCollisionCurve, vtPreMove, GDB_RT.GLOB) - local vtExtrusion = vtDirectionZ * PreCollisionData.dExtrusionDepth - idCollisionSurfTm = EgtSurfTmByRegionExtrusion( Part.idTempGroup, idCollisionCurve, vtExtrusion, 0.05, GDB_RT.GLOB) - end - - -- check collisione con pezzo - local bCollisionFoundPiece = false - if not bCheckOnlyRestlength then - bCollisionFoundPiece = EgtTestSurfaceSurface( Part.idBoxTm, idCollisionSurfTm, BeamData.COLL_SIC) - if not type( bCollisionFoundPiece) == "boolean" then - error( 'EgtTestSurfaceSurface fail') - end - if EgtGetDebugLevel() >= 3 and bCollisionFoundPiece then - EgtSetColor( idCollisionSurfTm, RED()) - end - end - - -- check collisione con grezzo restante, se con il pezzo non c'è collisione - if not bCollisionFoundPiece then - local idRestLengthSurfFr = GetRestlengthSurfTm( Part) - local bCollisionFoundRestLength = EgtTestSurfaceSurface( idRestLengthSurfFr, idCollisionSurfTm, BeamData.COLL_SIC) - if not type( bCollisionFoundRestLength) == "boolean" then - error( 'EgtTestSurfaceSurface fail') - end - if EgtGetDebugLevel() >= 3 and bCollisionFoundRestLength then - EgtSetColor( idCollisionSurfTm, ORANGE()) - end - if bCollisionFoundRestLength then - bMoveAfterSplit = true - end - end - - -- se trovata collisione con pezzo si esce subito + -- se trovata collisione con pezzo è inutile controllare gli altri punti if bCollisionFoundPiece then + return true + + -- se trovata collisione con grezzo si ritorna che la lavorazione è da fare dopo separazione e si prosegue con gli altri punti + elseif bCollisionFoundRestLength then + + bMoveAfterSplit = true end end diff --git a/Process.lua b/Process.lua index 0bf3bb8..fc47804 100644 --- a/Process.lua +++ b/Process.lua @@ -79,7 +79,7 @@ end PARTS = {} -- tabella contenente tutte le informazioni di ogni pezzo -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') -- carico librerie local BeamExec = require( 'BeamExec') local BeamLib = require( 'BeamLib') diff --git a/Strategies/Standard/HEADCUT/HEADCUT.lua b/Strategies/Standard/HEADCUT/HEADCUT.lua index 183ce4e..0cd913d 100644 --- a/Strategies/Standard/HEADCUT/HEADCUT.lua +++ b/Strategies/Standard/HEADCUT/HEADCUT.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local FeatureLib = require( 'FeatureLib') local MachiningLib = require( 'MachiningLib') local SPLITCUT = require( 'SPLITCUT') diff --git a/Strategies/Standard/STR0001/STR0001.lua b/Strategies/Standard/STR0001/STR0001.lua index 8c81d8c..ff3681d 100644 --- a/Strategies/Standard/STR0001/STR0001.lua +++ b/Strategies/Standard/STR0001/STR0001.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index bbc2542..3b11a09 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -16,7 +16,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') diff --git a/Strategies/Standard/STR0003/STR0003.lua b/Strategies/Standard/STR0003/STR0003.lua index 95058d0..a0d689e 100644 --- a/Strategies/Standard/STR0003/STR0003.lua +++ b/Strategies/Standard/STR0003/STR0003.lua @@ -15,7 +15,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0004/STR0004.lua b/Strategies/Standard/STR0004/STR0004.lua index b0ac845..798ff5e 100644 --- a/Strategies/Standard/STR0004/STR0004.lua +++ b/Strategies/Standard/STR0004/STR0004.lua @@ -15,7 +15,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 9fe8b74..2af03f2 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0006/STR0006.lua b/Strategies/Standard/STR0006/STR0006.lua index 31c4c1d..dfda5cf 100644 --- a/Strategies/Standard/STR0006/STR0006.lua +++ b/Strategies/Standard/STR0006/STR0006.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0007/STR0007.lua b/Strategies/Standard/STR0007/STR0007.lua index 48b7b71..7891d2b 100644 --- a/Strategies/Standard/STR0007/STR0007.lua +++ b/Strategies/Standard/STR0007/STR0007.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0008/STR0008.lua b/Strategies/Standard/STR0008/STR0008.lua index 70c3084..b249bc9 100644 --- a/Strategies/Standard/STR0008/STR0008.lua +++ b/Strategies/Standard/STR0008/STR0008.lua @@ -6,7 +6,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0009/STR0009.lua b/Strategies/Standard/STR0009/STR0009.lua index f9840bd..8bd69cb 100644 --- a/Strategies/Standard/STR0009/STR0009.lua +++ b/Strategies/Standard/STR0009/STR0009.lua @@ -6,7 +6,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0010/STR0010.lua b/Strategies/Standard/STR0010/STR0010.lua index 9b7fcb2..4f6b767 100644 --- a/Strategies/Standard/STR0010/STR0010.lua +++ b/Strategies/Standard/STR0010/STR0010.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index d845e23..d45c727 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0012/STR0012.lua b/Strategies/Standard/STR0012/STR0012.lua index d0d06d4..ebb9e5f 100644 --- a/Strategies/Standard/STR0012/STR0012.lua +++ b/Strategies/Standard/STR0012/STR0012.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0013/STR0013.lua b/Strategies/Standard/STR0013/STR0013.lua index bae0a21..fb0320b 100644 --- a/Strategies/Standard/STR0013/STR0013.lua +++ b/Strategies/Standard/STR0013/STR0013.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') -- strategie di base diff --git a/Strategies/Standard/STR0014/STR0014.lua b/Strategies/Standard/STR0014/STR0014.lua index e5b03da..323e07d 100644 --- a/Strategies/Standard/STR0014/STR0014.lua +++ b/Strategies/Standard/STR0014/STR0014.lua @@ -9,7 +9,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') local ID = require( 'Identity') diff --git a/Strategies/Standard/STR0015/STR0015.lua b/Strategies/Standard/STR0015/STR0015.lua index 448d5b6..2a2ed09 100644 --- a/Strategies/Standard/STR0015/STR0015.lua +++ b/Strategies/Standard/STR0015/STR0015.lua @@ -6,7 +6,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') local FaceData = require( 'FaceData') diff --git a/Strategies/Standard/TAILCUT/TAILCUT.lua b/Strategies/Standard/TAILCUT/TAILCUT.lua index 7a911d7..f2d5f56 100644 --- a/Strategies/Standard/TAILCUT/TAILCUT.lua +++ b/Strategies/Standard/TAILCUT/TAILCUT.lua @@ -5,7 +5,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local FeatureLib = require( 'FeatureLib') local MachiningLib = require( 'MachiningLib') local SPLITCUT = require( 'SPLITCUT') diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index a4bf698..486da73 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -8,7 +8,7 @@ local BLADETOWASTE = {} require( 'EgtBase') -- Carico i dati globali -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local BeamLib = require( 'BeamLib') local FaceData = require( 'FaceData') local FeatureLib = require( 'FeatureLib') diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 3cc51fa..7d58e46 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -4,7 +4,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FaceData = require( 'FaceData') diff --git a/StrategyLibs/FACEBYCHAINSAW.lua b/StrategyLibs/FACEBYCHAINSAW.lua index 5f044fc..8a3d8b2 100644 --- a/StrategyLibs/FACEBYCHAINSAW.lua +++ b/StrategyLibs/FACEBYCHAINSAW.lua @@ -4,7 +4,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') -- Tabella per definizione modulo diff --git a/StrategyLibs/FACEBYMILL.lua b/StrategyLibs/FACEBYMILL.lua index ff40437..a8678a5 100644 --- a/StrategyLibs/FACEBYMILL.lua +++ b/StrategyLibs/FACEBYMILL.lua @@ -4,7 +4,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') -local BeamData = require( 'BeamData') +local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') -- Tabella per definizione modulo