diff --git a/SolidProcess.lua b/SolidProcess.lua index 04b21ae..b5e0234 100644 --- a/SolidProcess.lua +++ b/SolidProcess.lua @@ -1,4 +1,4 @@ --- 2024/12/30 +-- 2025/01/13 -- Parti solide gestite come travi BTL @@ -10,11 +10,12 @@ EgtEnableDebug( false) -- calcolo del riferimento del minimo box local function SolidMinBox( nId, dMinFaceArea) + -- parto con orientamento corrente + local refMin = Frame3d() + local b3Min = EgtGetBBoxRef( nId, GDB_BB.STANDARD, refMin) + local dVolMin = 0.98 * b3Min:getDimX() * b3Min:getDimY() * b3Min:getDimZ() -- ciclo sulle facce della superficie local nFacCnt = EgtSurfTmFacetCount( nId) - local dVolMin - local refMin - local b3Min for i = 1, nFacCnt do local refFace, dL, dW = EgtSurfTmFacetMinAreaRectangle( nId, i - 1, GDB_ID.ROOT) if refFace and ( not dMinFaceArea or dL * dW > dMinFaceArea) then @@ -46,7 +47,7 @@ local function ProcessOneSolid( nId1, ptPos) return false, 0 end - -- Modifico il riferimento in modo che X sia sul più lungo, quindi Z e poi Y + -- Modifico il riferimento in modo che X sia sul più lungo local dDimX = b3Min:getDimX() local dDimY = b3Min:getDimY() local dDimZ = b3Min:getDimZ() @@ -58,10 +59,6 @@ local function ProcessOneSolid( nId1, ptPos) refMin:rotate( refMin:getOrigin(), refMin:getVersY(), 90) dDimX, dDimZ = dDimZ, dDimX end - if dDimZ < dDimY then - refMin:rotate( refMin:getOrigin(), refMin:getVersX(), 90) - dDimZ, dDimY = dDimY, dDimZ - end -- Porto il solido nell'origine refMin:invert()