diff --git a/LuaLibs/FaceData.lua b/LuaLibs/FaceData.lua index fa426fa..bae8104 100644 --- a/LuaLibs/FaceData.lua +++ b/LuaLibs/FaceData.lua @@ -114,7 +114,7 @@ local function GetEdgesInfo( Proc, idFace ) local CurrentEdge = {} CurrentEdge.idAdjacentFace = EdgesEgt[i].Adj - CurrentEdge.vtToolDirection = Vector3d( EdgesEgt[i].Norm) + CurrentEdge.vtN = Vector3d( EdgesEgt[i].Norm) CurrentEdge.dLength = EdgesEgt[i].Len CurrentEdge.dElevation = abs( EdgesEgt[i].Elev) CurrentEdge.bIsOpen = EdgesEgt[i].Open @@ -298,7 +298,7 @@ local function GetBottomFaces( Proc) local CurrentEdge = {} CurrentEdge.idAdjacentFace = BottomFaces[1].Edges[i].idAdjacentFace - CurrentEdge.vtToolDirection = BottomFaces[1].Edges[i].vtToolDirection + CurrentEdge.vtN = BottomFaces[1].Edges[i].vtN CurrentEdge.dLength = BottomFaces[1].Edges[i].dLength CurrentEdge.bIsOpen = BottomFaces[1].Edges[i].bIsOpen CurrentEdge.dElevation = BottomFaces[1].Edges[i].dElevation @@ -386,7 +386,7 @@ local function GetLongFaces( Proc, MainFaces) local CurrentEdge = {} CurrentEdge.idAdjacentFace = LongFaces[i].Edges[j].idAdjacentFace - CurrentEdge.vtToolDirection = LongFaces[i].Edges[j].vtToolDirection + CurrentEdge.vtN = LongFaces[i].Edges[j].vtN CurrentEdge.dLength = LongFaces[i].Edges[j].dLength CurrentEdge.bIsOpen = LongFaces[i].Edges[j].bIsOpen CurrentEdge.dElevation = LongFaces[i].Edges[j].dElevation @@ -475,7 +475,7 @@ local function GetSideFaces( Proc, MainFaces) local CurrentEdge = {} CurrentEdge.idAdjacentFace = SideFaces[i].Edges[j].idAdjacentFace - CurrentEdge.vtToolDirection = SideFaces[i].Edges[j].vtToolDirection + CurrentEdge.vtN = SideFaces[i].Edges[j].vtN CurrentEdge.dLength = SideFaces[i].Edges[j].dLength CurrentEdge.bIsOpen = SideFaces[i].Edges[j].bIsOpen CurrentEdge.dElevation = SideFaces[i].Edges[j].dElevation diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 3c1692a..9f2f937 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -362,16 +362,16 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) -- parametri obbligatori if type( ToolSearchParameters.vtToolDirection) ~= 'table' then - error( 'FindBlade : missing tool direction') + error( 'FindChainSaw : missing tool direction') end if type( ToolSearchParameters.bAllowTopHead) ~= 'boolean' then - error( 'FindBlade : missing top head info') + error( 'FindChainSaw : missing top head info') end if type( ToolSearchParameters.bAllowBottomHead) ~= 'boolean' then - error( 'FindBlade : missing bottom head info') + error( 'FindChainSaw : missing bottom head info') end if not ToolSearchParameters.bAllowTopHead and not ToolSearchParameters.bAllowBottomHead then - error( 'FindBlade : wrong head info') + error( 'FindChainSaw : wrong head info') end -- parametri opzionali diff --git a/Strategies/Standard/HEADCUT/HEADCUT.lua b/Strategies/Standard/HEADCUT/HEADCUT.lua index 7d9bd60..7f2a524 100644 --- a/Strategies/Standard/HEADCUT/HEADCUT.lua +++ b/Strategies/Standard/HEADCUT/HEADCUT.lua @@ -72,7 +72,7 @@ end local function GetEdgeToMachine( Proc, vtEdge) local Edge for i = 1, #Proc.Faces[1].Edges do - if AreSameVectorApprox( Proc.Faces[1].Edges[i].vtToolDirection, vtEdge) then + if AreSameVectorApprox( Proc.Faces[1].Edges[i].vtN, vtEdge) then Edge = Proc.Faces[1].Edges[i] end end diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 26e98e4..6424be7 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -21,21 +21,21 @@ Blade.Result = {} ------------------------------------------------------------------------------------------------------------- local function CompareEdges( EdgeA, EdgeB) -- prima i lati orientati lungo X - if abs( EdgeA.vtToolDirection:getX()) < abs( EdgeB.vtToolDirection:getX()) - 10 * GEO.EPS_SMALL then + if abs( EdgeA.vtN:getX()) < abs( EdgeB.vtN:getX()) - 10 * GEO.EPS_SMALL then return true - elseif abs( EdgeA.vtToolDirection:getX()) > abs( EdgeB.vtToolDirection:getX()) + 10 * GEO.EPS_SMALL then + elseif abs( EdgeA.vtN:getX()) > abs( EdgeB.vtN:getX()) + 10 * GEO.EPS_SMALL then return false -- se stessa X si preferiscono i lati più in basso else - if EdgeA.vtToolDirection:getZ() > EdgeB.vtToolDirection:getZ() + 10 * GEO.EPS_SMALL then + if EdgeA.vtN:getZ() > EdgeB.vtN:getZ() + 10 * GEO.EPS_SMALL then return true - elseif EdgeA.vtToolDirection:getZ() < EdgeB.vtToolDirection:getZ() - 10 * GEO.EPS_SMALL then + elseif EdgeA.vtN:getZ() < EdgeB.vtN:getZ() - 10 * GEO.EPS_SMALL then return false -- se stessa Z si preferiscono i lati verso il fronte della trave else - if EdgeA.vtToolDirection:getY() > EdgeB.vtToolDirection:getY() + 10 * GEO.EPS_SMALL then + if EdgeA.vtN:getY() > EdgeB.vtN:getY() + 10 * GEO.EPS_SMALL then return true - elseif EdgeA.vtToolDirection:getY() < EdgeB.vtToolDirection:getY() - 10 * GEO.EPS_SMALL then + elseif EdgeA.vtN:getY() < EdgeB.vtN:getY() - 10 * GEO.EPS_SMALL then return false else return false @@ -119,7 +119,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) -- ricerca utensile local ToolSearchParameters = {} ToolSearchParameters.dElevation = dDepthToMachine - ToolSearchParameters.vtToolDirection = EdgesSorted[1].vtToolDirection + ToolSearchParameters.vtToolDirection = EdgesSorted[1].vtN ToolSearchParameters.bAllowTopHead = true ToolSearchParameters.bAllowBottomHead = true ToolSearchParameters.bForceLongcutBlade = bForceLongcutBlade diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 1d093e8..07dbdca 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -67,7 +67,7 @@ end function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalParameters) local Cutting = {} - local vtMachiningDirection = EdgeToMachine.vtToolDirection + local vtMachiningDirection = EdgeToMachine.vtN local vtN = Proc.Faces[FaceToMachine.id+1].vtN Cutting.sDepth = OptionalParameters.sDepth or 0 Cutting.dLongitudinalOffset = OptionalParameters.dLongitudinalOffset or 0 diff --git a/StrategyLibs/SLOTBYBLADE.lua b/StrategyLibs/SLOTBYBLADE.lua index 7a7b595..0b1beb2 100644 --- a/StrategyLibs/SLOTBYBLADE.lua +++ b/StrategyLibs/SLOTBYBLADE.lua @@ -109,21 +109,21 @@ function SLOTBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.dLengthToMachine = EdgeToMachine.dLength Cutting.dEdgeLength = EdgeToMachine.dLength -- TODO conviene spostare questi calcoli nel FaceData? - Cutting.ptEdge1, _, Cutting.ptEdge2 = EgtSurfTmFacetOppositeSide( Proc.id, FaceToMachine.id, -EdgeToMachine.vtToolDirection, GDB_ID.ROOT) + Cutting.ptEdge1, _, Cutting.ptEdge2 = EgtSurfTmFacetOppositeSide( Proc.id, FaceToMachine.id, -EdgeToMachine.vtN, GDB_ID.ROOT) local b3BoxEdge = BBox3d( Cutting.ptEdge1, Cutting.ptEdge2) Cutting.dLengthOnX = b3BoxEdge:getDimX() -- - Cutting.vtToolDirection = EdgeToMachine.vtToolDirection + Cutting.vtToolDirection = EdgeToMachine.vtN if EdgeToMachine.bIsOpen then - Cutting.vtEdgeDirection = -EdgeToMachine.vtToolDirection ^ FaceToMachine.vtN + Cutting.vtEdgeDirection = -EdgeToMachine.vtN ^ FaceToMachine.vtN else - Cutting.vtEdgeDirection = EdgeToMachine.vtToolDirection ^ FaceToMachine.vtN + Cutting.vtEdgeDirection = EdgeToMachine.vtN ^ FaceToMachine.vtN end -- ricerca utensile local ToolSearchParameters = {} ToolSearchParameters.dElevation = abs( EdgeToMachine.dElevation) - ToolSearchParameters.vtToolDirection = EdgeToMachine.vtToolDirection + ToolSearchParameters.vtToolDirection = EdgeToMachine.vtN ToolSearchParameters.bAllowTopHead = true ToolSearchParameters.bAllowBottomHead = false ToolSearchParameters.bForceLongcutBlade = bForceLongcutBlade @@ -215,12 +215,12 @@ function SLOTBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.dOverlap = 0 -- faceuse if EdgeToMachine.dElevation > - 10 * GEO.EPS_SMALL then - Cutting.nFaceuse = BeamLib.GetNearestOrthoOpposite( EdgeToMachine.vtToolDirection) + Cutting.nFaceuse = BeamLib.GetNearestOrthoOpposite( EdgeToMachine.vtN) else - Cutting.nFaceuse = BeamLib.GetNearestOrthoOpposite( -EdgeToMachine.vtToolDirection) + Cutting.nFaceuse = BeamLib.GetNearestOrthoOpposite( -EdgeToMachine.vtN) end -- SCC - Cutting.nSCC = GetSCC( EdgeToMachine.vtToolDirection) + Cutting.nSCC = GetSCC( EdgeToMachine.vtN) -- asse bloccato Cutting.sBlockedAxis = BeamLib.GetBlockedAxis( Cutting.nToolIndex, 'perpendicular', Part.b3Raw, FaceToMachine.vtN, EgtIf( FaceToMachine.vtN:getX() > 0, X_AX(), -X_AX())) -- approccio e retrazione @@ -248,7 +248,7 @@ function SLOTBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar -- se lavorazione aperta sulla coda, eventuali aggiustamenti -- TODO valutare se fare funzione a parte - if Proc.AffectedFaces.bLeft and ( EdgeToMachine.sType == 'Bottom' or ( EdgeToMachine.vtToolDirection:getX() < 0.707)) then + if Proc.AffectedFaces.bLeft and ( EdgeToMachine.sType == 'Bottom' or ( EdgeToMachine.vtN:getX() < 0.707)) then local dLengthOnX = Cutting.dLengthOnX -- se feature splittata non si considera la lunghezza della feature per il check spostamento dopo separazione if bIsSplitFeature then @@ -260,7 +260,7 @@ function SLOTBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar if bStartLeft then dAddLengthLeftSide = Cutting.LeadIn.dStartAddLength end - if not AreSameOrOppositeVectorApprox( EdgeToMachine.vtToolDirection, Y_AX()) then + if not AreSameOrOppositeVectorApprox( EdgeToMachine.vtN, Y_AX()) then if MachiningLib.CanMoveAfterSplitcut( dLengthOnX, Part) then Cutting.sStage = 'AfterTail' else diff --git a/StrategyLibs/SLOTBYCHAINSAW.lua b/StrategyLibs/SLOTBYCHAINSAW.lua index 5ce1e26..dbf2bff 100644 --- a/StrategyLibs/SLOTBYCHAINSAW.lua +++ b/StrategyLibs/SLOTBYCHAINSAW.lua @@ -74,14 +74,14 @@ function SLOTBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional -- lunghezze e punti caratteristici della lavorazione e del lato lavorato Mortising.dLengthToMachine = dLengthToMachine -- TODO serve un modo migliore di calcolare la lunghezza lungo X; attenzione che serve la lunghezza reale di lavoro, non quella del lato - Mortising.dLengthOnX = abs( dLengthToMachine * EdgeToMachine.vtToolDirection:getY()) + Mortising.dLengthOnX = abs( dLengthToMachine * EdgeToMachine.vtN:getY()) Mortising.dEdgeLength = EdgeToMachine.dLength - Mortising.ptEdge1, _, Mortising.ptEdge2 = EgtSurfTmFacetOppositeSide( Proc.id, FaceToMachine.id, -EdgeToMachine.vtToolDirection, GDB_ID.ROOT) - Mortising.vtToolDirection = EdgeToMachine.vtToolDirection + Mortising.ptEdge1, _, Mortising.ptEdge2 = EgtSurfTmFacetOppositeSide( Proc.id, FaceToMachine.id, -EdgeToMachine.vtN, GDB_ID.ROOT) + Mortising.vtToolDirection = EdgeToMachine.vtN if EdgeToMachine.bIsOpen then - Mortising.vtEdgeDirection = -EdgeToMachine.vtToolDirection ^ FaceToMachine.vtN + Mortising.vtEdgeDirection = -EdgeToMachine.vtN ^ FaceToMachine.vtN else - Mortising.vtEdgeDirection = EdgeToMachine.vtToolDirection ^ FaceToMachine.vtN + Mortising.vtEdgeDirection = EdgeToMachine.vtN ^ FaceToMachine.vtN end -- ricerca utensile @@ -101,7 +101,7 @@ function SLOTBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional end local ToolSearchParameters = {} local ToolInfo = {} - ToolSearchParameters.vtToolDirection = EdgeToMachine.vtToolDirection + ToolSearchParameters.vtToolDirection = EdgeToMachine.vtN ToolSearchParameters.bAllowTopHead = true ToolSearchParameters.bAllowBottomHead = true ToolSearchParameters.dElevation = Mortising.dDepthToMachine @@ -194,20 +194,20 @@ function SLOTBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional Mortising.Steps.dStep = TOOLS[Mortising.nToolIndex].dStep -- faceuse if EdgeToMachine.dElevation > - 10 * GEO.EPS_SMALL then - Mortising.nFaceuse = BeamLib.GetNearestParalOpposite( EdgeToMachine.vtToolDirection) + Mortising.nFaceuse = BeamLib.GetNearestParalOpposite( EdgeToMachine.vtN) else - Mortising.nFaceuse = BeamLib.GetNearestParalOpposite( -EdgeToMachine.vtToolDirection) + Mortising.nFaceuse = BeamLib.GetNearestParalOpposite( -EdgeToMachine.vtN) end -- SCC Mortising.SCC = MCH_SCC.NONE -- asse bloccato e angoli suggeriti - local vtRes = FaceToMachine.vtN ^ EdgeToMachine.vtToolDirection + local vtRes = FaceToMachine.vtN ^ EdgeToMachine.vtN if abs( vtRes:getZ()) < 10 * GEO.EPS_SMALL then Mortising.sBlockedAxis = BeamLib.GetBlockedAxis( Mortising.nToolIndex, 'perpendicular', Part.b3Raw, FaceToMachine.vtN) - Mortising.sSuggestedAngles = BeamLib.GetChainSawInitAngs( FaceToMachine.vtN, EdgeToMachine.vtToolDirection, 1) - elseif EdgeToMachine.vtToolDirection:getZ() < 10 * GEO.EPS_SMALL then + Mortising.sSuggestedAngles = BeamLib.GetChainSawInitAngs( FaceToMachine.vtN, EdgeToMachine.vtN, 1) + elseif EdgeToMachine.vtN:getZ() < 10 * GEO.EPS_SMALL then Mortising.sBlockedAxis = BeamLib.GetBlockedAxis( Mortising.nToolIndex, 'parallel', Part.b3Raw, FaceToMachine.vtN) - Mortising.sSuggestedAngles = BeamLib.GetChainSawInitAngs( FaceToMachine.vtN, EdgeToMachine.vtToolDirection, 2) + Mortising.sSuggestedAngles = BeamLib.GetChainSawInitAngs( FaceToMachine.vtN, EdgeToMachine.vtN, 2) end -- approccio e retrazione Mortising.LeadIn, Mortising.LeadOut = CalculateLeadInOut( Mortising, EdgeToMachine, sSideToMachine, dLengthToMachine) @@ -220,7 +220,7 @@ function SLOTBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional -- se lavorazione aperta sulla coda, eventuali aggiustamenti -- TODO valutare se fare funzione a parte - if Proc.AffectedFaces.bLeft and ( EdgeToMachine.sType == 'Bottom' or ( EdgeToMachine.vtToolDirection:getX() < 0.707)) then + if Proc.AffectedFaces.bLeft and ( EdgeToMachine.sType == 'Bottom' or ( EdgeToMachine.vtN:getX() < 0.707)) then local dLengthOnX = Mortising.dLengthOnX -- se feature splittata non si considera la lunghezza della feature per il check spostamento dopo separazione if bIsSplitFeature then @@ -231,7 +231,7 @@ function SLOTBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional if bStartLeft then dAddLengthLeftSide = Mortising.LeadIn.dStartAddLength end - if not AreSameOrOppositeVectorApprox( EdgeToMachine.vtToolDirection, Y_AX()) then + if not AreSameOrOppositeVectorApprox( EdgeToMachine.vtN, Y_AX()) then if MachiningLib.CanMoveAfterSplitcut( dLengthOnX, Part) then Mortising.sStage = 'AfterTail' else diff --git a/StrategyLibs/SPLITCUT.lua b/StrategyLibs/SPLITCUT.lua index 8d68db5..d56cab5 100644 --- a/StrategyLibs/SPLITCUT.lua +++ b/StrategyLibs/SPLITCUT.lua @@ -185,7 +185,7 @@ function SPLITCUT.GetStrategy( Proc, Part, OptionalParameters) function SPLITCUT.GetEdgeToMachine( Proc, vtEdge) local Edge for i = 1, #Proc.Faces[1].Edges do - if AreSameVectorApprox( Proc.Faces[1].Edges[i].vtToolDirection, vtEdge) then + if AreSameVectorApprox( Proc.Faces[1].Edges[i].vtN, vtEdge) then Edge = Proc.Faces[1].Edges[i] end end