diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 9f1de4f..5a82940 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -376,12 +376,12 @@ function BeamExec.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, dOvmMid, PARTS) for i = 1, #PARTS do -- dati del pezzo local b3BoxExact = EgtGetBBoxGlob( PARTS[i].id or GDB_ID.NULL, GDB_BB.EXACT) - if b3BoxExact:isEmpty() or PARTS[i].b3Part:isEmpty() then break end + if b3BoxExact:isEmpty() or PARTS[i].b3PartOriginal:isEmpty() then break end EgtOutLog( 'PartSez=' .. EgtNumToString( b3BoxExact:getDimY(), 1) .. 'x' .. EgtNumToString( b3BoxExact:getDimZ(), 1), 3) -- se sezione compatibile e lunghezza disponibile sufficiente - local dPartLen = PARTS[i].b3Part:getDimX() - local dPartWidth = PARTS[i].b3Part:getDimY() - local dPartHeight = PARTS[i].b3Part:getDimZ() + local dPartLen = PARTS[i].b3PartOriginal:getDimX() + local dPartWidth = PARTS[i].b3PartOriginal:getDimY() + local dPartHeight = PARTS[i].b3PartOriginal:getDimZ() local dNextLen = dLen - EgtIf( i == 1, dDeltaS, 0) - dPartLen - dDeltaE if (( abs( dPartWidth - dRawW) < 100 * GEO.EPS_SMALL and abs( dPartHeight - dRawH) < 100 * GEO.EPS_SMALL) or ( abs( dPartHeight - dRawW) < 100 * GEO.EPS_SMALL and abs( dPartWidth - dRawH) < 100 * GEO.EPS_SMALL)) and @@ -411,7 +411,7 @@ function BeamExec.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, dOvmMid, PARTS) return false, sOut end -- aggiungo faccia per taglio iniziale al pezzo - BeamLib.AddPartStartFace( PARTS[i].id, PARTS[i].b3Part) + BeamLib.AddPartStartFace( PARTS[i].id, PARTS[i].b3PartOriginal) -- se sovramateriale di testa, lo notifico if dDeltaS > 0.09 then EgtSetInfo( PARTS[i].idRaw, 'HOVM', dDeltaS) @@ -423,16 +423,16 @@ function BeamExec.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, dOvmMid, PARTS) EgtSetInfo( PARTS[i].idRaw, 'TOVM', dDeltaE) end -- aggiungo faccia per taglio finale al pezzo - BeamLib.AddPartEndFace( PARTS[i].id, PARTS[i].b3Part) + BeamLib.AddPartEndFace( PARTS[i].id, PARTS[i].b3PartOriginal) -- inserisco il pezzo nel grezzo EgtDeselectPartObjs( PARTS[i].id) - local ptPos = b3BoxExact:getMin() - PARTS[i].b3Part:getMin() + Vector3d( dDelta, ( dRawW - dPartWidth) / 2, ( dRawH - dPartHeight) / 2) + local ptPos = b3BoxExact:getMin() - PARTS[i].b3PartOriginal:getMin() + Vector3d( dDelta, ( dRawW - dPartWidth) / 2, ( dRawH - dPartHeight) / 2) EgtAddPartToRawPart( PARTS[i].id, ptPos, PARTS[i].idRaw) if abs( dPartWidth - dRawW) > 100 * GEO.EPS_SMALL then -- rotazione attorno a centro geometria complessiva del pezzo EgtRotatePartInRawPart( PARTS[i].id, X_AX(), 90) -- correggo per eccentricità solido rispetto a geometria complessiva del pezzo - local vtEccOri = PARTS[i].b3Part:getCenter() - b3BoxExact:getCenter() + local vtEccOri = PARTS[i].b3PartOriginal:getCenter() - b3BoxExact:getCenter() local vtEccRot = Vector3d( vtEccOri) vtEccRot:rotate( X_AX(), 90) EgtMovePartInRawPart( PARTS[i].id, ( vtEccOri - vtEccRot)) @@ -450,6 +450,7 @@ function BeamExec.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, dOvmMid, PARTS) PARTS[i].dWidth = PARTS[i].b3Raw:getDimY() PARTS[i].dHeight = PARTS[i].b3Raw:getDimZ() PARTS[i].bSquareSection = abs( PARTS[i].dWidth - PARTS[i].dHeight) < 100 * GEO.EPS_SMALL + PARTS[i].b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( PARTS[i].id, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD) PARTS[i].nIndexInParts = i PARTS[i].CombinationList = GetAvailableCombinations( PARTS[i]) PARTS[i].SplittingPoints = BeamLib.GetPartSplittingPoints( PARTS[i]) diff --git a/Process.lua b/Process.lua index 071ebc6..310c05b 100644 --- a/Process.lua +++ b/Process.lua @@ -131,15 +131,15 @@ local function MyProcessInputData() EgtOutBox( 'Box non definito per la trave ' .. PARTS[i].sName, 'Lavora Travi', 'ERROR') return false else - PARTS[i].b3Part = b3Solid + PARTS[i].b3PartOriginal = b3Solid end end - dRawW = PARTS[1].b3Part:getDimY() - dRawH = PARTS[1].b3Part:getDimZ() + dRawW = PARTS[1].b3PartOriginal:getDimY() + dRawH = PARTS[1].b3PartOriginal:getDimZ() local vBeamErr = {} for i = 2, #PARTS do - local dDimW = PARTS[i].b3Part:getDimY() - local dDimH = PARTS[i].b3Part:getDimZ() + local dDimW = PARTS[i].b3PartOriginal:getDimY() + local dDimH = PARTS[i].b3PartOriginal:getDimZ() if ( abs( dDimW - dRawW) > 10 * GEO.EPS_SMALL or abs( dDimH - dRawH) > 10 * GEO.EPS_SMALL) and ( abs( dDimH - dRawW) > 10 * GEO.EPS_SMALL or abs( dDimW - dRawH) > 10 * GEO.EPS_SMALL) then table.insert( vBeamErr, i) @@ -186,9 +186,9 @@ local function MyProcessBeams() -- Lunghezza totale delle travi local dTotLen = 0 for i = 1, #PARTS - 1 do - dTotLen = dTotLen + PARTS[i].b3Part:getDimX() + dTotLen = dTotLen + PARTS[i].b3PartOriginal:getDimX() end - dTotLen = dTotLen + max( PARTS[#PARTS].b3Part:getDimX(), BeamData.dMinRaw) + dTotLen = dTotLen + max( PARTS[#PARTS].b3PartOriginal:getDimX(), BeamData.dMinRaw) local dAddLen = BeamData.OVM_HEAD + ( #PARTS - 1) * BeamData.OVM_MID EgtOutLog( 'Ltot : '..EgtNumToString( dTotLen, 1) .. ' Lagg : '..EgtNumToString( dAddLen, 1)..' MinUnloadRaw : '.. EgtNumToString( BeamData.dMinRaw + BeamData.OVM_MID, 1), 1) @@ -277,10 +277,10 @@ local function MyProcessBeams() local bOrd = ( vsVal[5] == 'true') if bOrd then table.sort( PARTS, function( B1, B2) - if abs( B1.b3Part:getDimX() - B2.b3Part:getDimX()) < 1 then + if abs( B1.b3PartOriginal:getDimX() - B2.b3PartOriginal:getDimX()) < 1 then return B1.nInd < B2.nInd else - return B1.b3Part:getDimX() < B2.b3Part:getDimX() + return B1.b3PartOriginal:getDimX() < B2.b3PartOriginal:getDimX() end end) end