diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index f44c8f6..2083155 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -1,4 +1,4 @@ --- ProcessFreeContour.lua by Egaltech s.r.l. 2022/04/03 +-- ProcessFreeContour.lua by Egaltech s.r.l. 2022/04/04 -- Gestione calcolo profilo libero per Pareti -- 2021/11/15 Penna e chiodature sono sempre riportate sulla faccia sopra anche se nel progetto sono sotto. -- 2021/12/10 In taglio con lama aggiunta gestione SCC per testa Gearbox. @@ -358,9 +358,9 @@ local function GetFacesData( Proc, bOpposite, bCalclForBlade, dToolDiam, dToolMa end end -- recupero centro e normale della faccia - local ptCen, vtN = EgtSurfTmFacetCenter( nNewProc, nFac, GDB_ID.ROOT) + local vtN = EgtSurfTmFacetNormVersor( nNewProc, nFac, GDB_ID.ROOT) -- recupero le dimensioni della faccia - local _, dLen, dWidth = WL.GetFaceHvRefDim( nNewProc, nFac) + local frHV, dLen, dWidth = WL.GetFaceHvRefDim( nNewProc, nFac) -- recupero l'angolo con la faccia precedente local bAdj, ptLocP1, ptLocP2, dAng = EgtSurfTmFacetsContact( nNewProc, nPrecFac, nFac, GDB_ID.ROOT) local dPrevAng = EgtIf( bAdj, dAng, 0) @@ -374,7 +374,7 @@ local function GetFacesData( Proc, bOpposite, bCalclForBlade, dToolDiam, dToolMa -- calcolo l'angolo di inclinazione (dalla verticale) local dSideAng = asin( vtN:getZ()) -- salvo i dati - vFace[i] = { Fac = nFac, Cen = ptCen, Norm = vtN, Len = dLen, Width = dWidth, PrevAng = dPrevAng, PlPrevAng = dPlanePrevAng, SideAng = dSideAng} + vFace[i] = { Fac = nFac, Cen = frHV:getOrigin(), Norm = vtN, Len = dLen, Width = dWidth, PrevAng = dPrevAng, PlPrevAng = dPlanePrevAng, SideAng = dSideAng} if bAdj then if ptLocP1:getZ() < ptLocP2:getZ() then vFace[i].PPrev = ptLocP1 @@ -435,8 +435,8 @@ local function GetFacesData( Proc, bOpposite, bCalclForBlade, dToolDiam, dToolMa local vtDir = Vector3d( vtOrt) ; vtDir:rotate( Z_AX(), -90) local vtUp = Vector3d( vtDir) ; vtUp:rotate( vFace[i].Norm, -90) local ptIni = vFace[i].Cen + vFace[i].Width / 2 * vtUp + ( vFace[i].Len / 2 + WHISK_OFFS) * vtDir + WHISK_OFFS * vtOrt - local ptDir = ptIni + ( vFace[i].Whisk - WHISK_OFFS) * vtDir - local ptCross = ptDir + ( dToolThick - WHISK_OFFS) * vtOrt + local ptDir = ptIni + ( vFace[i].Whisk - 2 * WHISK_OFFS) * vtDir + local ptCross = ptDir + ( dToolThick - 2 * WHISK_OFFS) * vtOrt local WhId = EgtSurfFrRectangle3P( nAddGrpId, ptIni, ptCross, ptDir, GDB_RT.GLOB) local b3Wh = EgtGetBBoxGlob( WhId or GDB_ID.NULL, GDB_BB.STANDARD) -- verifico se interferisce con gli altri pezzi @@ -463,8 +463,8 @@ local function GetFacesData( Proc, bOpposite, bCalclForBlade, dToolDiam, dToolMa local vtDir = Vector3d( vtOrt) ; vtDir:rotate( Z_AX(), 90) local vtUp = Vector3d( vtDir) ; vtUp:rotate( vFace[i].Norm, 90) local ptIni = vFace[i].Cen + vFace[i].Width / 2 * vtUp + ( vFace[i].Len / 2 + WHISK_OFFS) * vtDir + WHISK_OFFS * vtOrt - local ptDir = ptIni + ( vFace[i].Whisk - WHISK_OFFS) * vtDir - local ptCross = ptDir + ( dToolThick - WHISK_OFFS) * vtOrt + local ptDir = ptIni + ( vFace[i].Whisk - 2 * WHISK_OFFS) * vtDir + local ptCross = ptDir + ( dToolThick - 2 * WHISK_OFFS) * vtOrt local WhId = EgtSurfFrRectangle3P( nAddGrpId, ptIni, ptCross, ptDir, GDB_RT.GLOB) local b3Wh = EgtGetBBoxGlob( WhId or GDB_ID.NULL, GDB_BB.STANDARD) -- verifico se interferisce con gli altri pezzi diff --git a/LuaLibs/WallLib.lua b/LuaLibs/WallLib.lua index b5f0150..e19d316 100644 --- a/LuaLibs/WallLib.lua +++ b/LuaLibs/WallLib.lua @@ -1,4 +1,4 @@ --- WallLib.lua by Egaltech s.r.l. 2020/11/18 +-- WallLib.lua by Egaltech s.r.l. 2022/04/04 -- Libreria globale per Pareti -- Tabella per definizione modulo @@ -241,6 +241,9 @@ function WallLib.GetFaceHvRefDim( nSurfId, nFacet) end -- determino l'ingombro in questo riferimento local b3HV = EgtSurfTmGetFacetBBoxRef( nSurfId, nFacet, GDB_BB.STANDARD, frHV) + -- aggiusto l'origine del riferimento per metterlo nel centro del box + local ptBoxCen = b3HV:getCenter() + frHV:move( ptBoxCen:getX() * frHV:getVersX() + ptBoxCen:getY() * frHV:getVersY()) -- restituisco i valori calcolati return frHV, b3HV:getDimX(), b3HV:getDimY() end diff --git a/NestFlipAndRotate.lua b/NestFlipAndRotate.lua index b2b655a..3990fab 100644 --- a/NestFlipAndRotate.lua +++ b/NestFlipAndRotate.lua @@ -439,8 +439,8 @@ if not bManualRot then -- setto info nel pezzo if nRotate > 0 then local nPartRot = EgtGetInfo( NFAR.PARTID, "ROTATED", 'i') or 0 - local nTotRot = nPartRot + nRotate - nTotRot = EgtIf( nTotRot < 360, nTotRot, nTotRot - 360) + local nTotRot = nPartRot - nRotate + nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot) EgtSetInfo( NFAR.PARTID, "ROTATED", nTotRot) EgtSetInfo( NFAR.PARTID, "FLIPROTMODIFIED", 1) end diff --git a/NestProcess.lua b/NestProcess.lua index d0927be..1c6e723 100644 --- a/NestProcess.lua +++ b/NestProcess.lua @@ -1115,8 +1115,8 @@ local function ClassifyAngles( nPartId, RawPart, sRefOrig, bLockedRot, dMinSheet end if nRotate > 0 then local nPartRot = EgtGetInfo( nPartId, "ROTATED", 'i') or 0 - local nTotRot = nPartRot + nRotate - nTotRot = EgtIf( nTotRot < 360, nTotRot, nTotRot - 360) + local nTotRot = nPartRot - nRotate + nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot) EgtSetInfo( nPartId, "ROTATED", nTotRot) EgtSetInfo( nPartId, "MODIFIEDFORNEST", 1) end @@ -1312,8 +1312,8 @@ local function ComputeRestrictedZones( RawParts) -- aggiorno le info di rotazione if res.nRotate > 0 then local nPartRot = EgtGetInfo( AngleClassification[nInd].PartId, "ROTATED", 'i') or 0 - local nTotRot = nPartRot + res.nRotate - nTotRot = EgtIf( nTotRot < 360, nTotRot, nTotRot - 360) + local nTotRot = nPartRot - res.nRotate + nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot) EgtSetInfo( AngleClassification[nInd].PartId, "ROTATED", nTotRot) EgtSetInfo( AngleClassification[nInd].PartId, "MODIFIEDFORNEST", 1) end @@ -2065,13 +2065,13 @@ if bNestingOk then EgtSetInfo( nPartDuploId, "POSY", ptPos:getY() + dYCorr) local nPartRot = EgtGetInfo( nId, "ROTATED", 'i') or 0 - local nTotRot = dAngRot + nPartRot - nTotRot = EgtIf( nTotRot < 360, nTotRot, nTotRot - 360) + local nTotRot = dAngRot - nPartRot + nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot) EgtSetInfo( nPartDuploId, "ROT", nTotRot) local nPartFlip = EgtGetInfo( nId, "INVERTED", 'i') nPartFlip = EgtIf( nPartFlip == 180, 1, 0) - local nTotFlip = EgtIf( nPartFlip ~ nFlag, 180, 0) + local nTotFlip = EgtIf( nPartFlip ~= nFlag, 180, 0) EgtSetInfo( nPartDuploId, "FLIP", nTotFlip) end