Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 198031a3c1 | |||
| 2f312c5cb8 |
@@ -277,6 +277,15 @@ if bToProcess then
|
||||
else
|
||||
vBeam[i].Box = b3Solid
|
||||
end
|
||||
if BD.MAX_LENGTH and BD.MAX_LENGTH > 10 and b3Solid:getDimX() > BD.MAX_LENGTH then
|
||||
local sOut = 'Piece-Length (' .. EgtNumToString( b3Solid:getDimX(), 2) .. ') ' ..
|
||||
'out of machine limits (' .. EgtNumToString( BD.MAX_LENGTH, 2) .. ') '
|
||||
BEAM.ERR = 17
|
||||
BEAM.MSG = sOut
|
||||
WriteErrToLogFile( BEAM.ERR, BEAM.MSG)
|
||||
PostErrView( BEAM.ERR, BEAM.MSG)
|
||||
return
|
||||
end
|
||||
end
|
||||
-- Assegno lunghezza della barra
|
||||
dBarLen = vBeam[1].Box:getDimX() + 10
|
||||
@@ -330,6 +339,15 @@ if bToProcess then
|
||||
else
|
||||
vBeam[i].Box = b3Solid
|
||||
end
|
||||
if BD.MAX_LENGTH and BD.MAX_LENGTH > 10 and b3Solid:getDimX() > BD.MAX_LENGTH then
|
||||
local sOut = 'Piece-Length (' .. EgtNumToString( b3Solid:getDimX(), 2) .. ') ' ..
|
||||
'out of machine limits (' .. EgtNumToString( BD.MAX_LENGTH, 2) .. ') '
|
||||
BEAM.ERR = 17
|
||||
BEAM.MSG = sOut
|
||||
WriteErrToLogFile( BEAM.ERR, BEAM.MSG)
|
||||
PostErrView( BEAM.ERR, BEAM.MSG)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1641,7 +1641,8 @@ local function SetCutsOnFrontMortises( vProc)
|
||||
-- verifico se i piani coincidono
|
||||
local bSamePlane = ( ptC1 and vtN1 and ptC2 and vtN2 and AreSameVectorApprox( vtN1, vtN2) and ( ptC2 - ptC1) * vtN1 < 1.0)
|
||||
if bSamePlane then
|
||||
vProc[i].CutFront = vProc[j].Id
|
||||
--vProc[i].CutFront = vProc[j].Id
|
||||
vProc[j].bSkipCut = true
|
||||
end
|
||||
-- log
|
||||
local sMsg = string.format( 'Cut %d meet Mortise %d', vProc[i].Id, vProc[j].Id) .. EgtIf( bSamePlane, ' with same plane', '')
|
||||
@@ -1658,7 +1659,8 @@ local function SetCutsOnFrontMortises( vProc)
|
||||
-- verifico se i piani coincidono
|
||||
local bSamePlane = ( ptC1 and vtN1 and ptC2 and vtN2 and AreSameVectorApprox( vtN1, vtN2) and ( ptC2 - ptC1) * vtN1 < 1.0)
|
||||
if bSamePlane then
|
||||
vProc[i].CutFront = vProc[j].Id
|
||||
--vProc[i].CutFront = vProc[j].Id
|
||||
vProc[j].bSkipCut = true
|
||||
end
|
||||
-- log
|
||||
local sMsg = string.format( 'Cut %d meet DtMortise %d', vProc[i].Id, vProc[j].Id) .. EgtIf( bSamePlane, ' with same plane', '')
|
||||
|
||||
@@ -457,7 +457,7 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw
|
||||
-- se distanza al punto è maggiore del raggio lama, significa che non ho già lavorato, quindi calcolo entrata opportunamente
|
||||
if dDistPointToCenter > 0.5 * dSawDiam then
|
||||
dLiTang = -dAllStart * dCosAlpha
|
||||
dLiPerp = dDist1 * dSinAlpha
|
||||
dLiPerp = dDist1 * dSinAlpha
|
||||
end
|
||||
end
|
||||
-- se ho accorciato uscita, setto componente tangente e perpendicolare sul percorso di uscita
|
||||
|
||||
+1
-43
@@ -479,16 +479,12 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b
|
||||
-- determino il modo di tagliare
|
||||
local vtOrthoO
|
||||
local bNoPerpCuts = false
|
||||
local vtO
|
||||
-- Se tagli ortogonali (indice dispari)
|
||||
if i % 2 == 1 then
|
||||
vtOrthoO = Vector3d( vtN)
|
||||
-- Se tagli perpendicolari (indice pari)
|
||||
else
|
||||
-- Se elemento precedente contiene tagli ortogonali
|
||||
local vtO
|
||||
if #vCuts[i-1] > 0 then
|
||||
vtO = EgtSurfTmFacetNormVersor( vCuts[i-1][1], 0, GDB_ID.ROOT)
|
||||
-- Se elemento successivo contiene tagli ortogonali
|
||||
elseif vCuts[i+1] and #vCuts[i+1] > 0 then
|
||||
-- lunghezza faccia nell'eventuale direzione ortogonale
|
||||
local asseX = EgtSurfTmFacetNormVersor( vCuts[i+1][1], 0, GDB_ID.ROOT)
|
||||
@@ -556,46 +552,8 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b
|
||||
end
|
||||
local bOk2, sErr2 = Fbs.MakeOne( nSurfToCut, 0, sCutting, dSawDiam, nFaceUseCut2, nil, dCutExtra, BD.CUT_SIC, 0, 0, 0, '', b3Raw)
|
||||
if not bOk2 then return false, sErr2 end
|
||||
|
||||
-- caso standard
|
||||
else
|
||||
if ( i % 2) == 0 and Proc.Fct == 1 and AreSameOrOppositeVectorApprox( vtO, Z_AX()) then
|
||||
local vtOrthoVert = vtN ^ vtO
|
||||
if ( vtN:getY() > 0 and vtOrthoVert:getY() > 0) or ( vtN:getY() < 0 and vtOrthoVert:getY() < 0) then
|
||||
vtOrthoVert = -vtOrthoVert
|
||||
end
|
||||
local Frame = Frame3d( ptC, vtN, vtO)
|
||||
local b3Fac = EgtGetBBoxRef( vCuts[i][1], GDB_BB.STANDARD, Frame)
|
||||
if abs( b3Fac:getDimY() - BD.MAX_DIM_DICE) > 10 * GEO.EPS_SMALL then
|
||||
local nVerticalCuts = ceil( b3Fac:getDimY() / ( BD.MAX_LEN_DICE)) - 1
|
||||
local dVerticalSliceDist = b3Fac:getDimY() / ( nVerticalCuts + 1)
|
||||
local dSawDiam = 400
|
||||
if EgtMdbSetCurrMachining( sCutting) then
|
||||
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||
dSawDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawDiam
|
||||
end
|
||||
end
|
||||
-- tagli verticali
|
||||
for k = 1, nVerticalCuts do
|
||||
local nFaceUse = BL.GetNearestOrthoOpposite( vtN)
|
||||
local dVerticalCutOffset = dVerticalSliceDist * k
|
||||
local sLeadInOutType = 'Perpendicular'
|
||||
local nMergedParallelSurfId = EgtSurfTmBySewing( nAddGrpId, vCuts[i], false)
|
||||
local ptVertCut = EgtSurfTmFacetCenter( nMergedParallelSurfId, 0, GDB_ID.ROOT)
|
||||
ptVertCut = ptVertCut + ( -b3Fac:getDimY()/2 + dVerticalCutOffset) * vtOrthoVert
|
||||
local nSurfId = EgtSurfTmPlaneInBBox( nAddGrpId, ptVertCut, vtOrthoVert, b3Raw, GDB_RT.GLOB)
|
||||
if i ~= 2 then
|
||||
local nMergedPreviousParallelSurfId = EgtSurfTmBySewing( nAddGrpId, vCuts[i-2], false)
|
||||
local ptOnPreviousParallelSurf = EgtSurfTmFacetCenter( nMergedPreviousParallelSurfId, 0, GDB_ID.ROOT)
|
||||
EgtCutSurfTmPlane( nSurfId, ptOnPreviousParallelSurf, vtN, false, GDB_RT.GLOB)
|
||||
end
|
||||
EgtCutSurfTmPlane( nSurfId, ptVertCut, -vtN, false, GDB_RT.GLOB)
|
||||
local bOk, sErr = Fbs.MakeOne( nSurfId, 0, sCutting, dSawDiam, nFaceUse, nil, -0.1, BD.CUT_SIC, 0, 0, 0, '', b3Raw, nil, nil, nil, sLeadInOutType, nil, 0, nil)
|
||||
if not bOk then return bOk, sErr end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- lavoro la faccia
|
||||
for j = 1, #vCuts[i] do
|
||||
-- se taglio dal basso
|
||||
|
||||
@@ -236,7 +236,7 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
-- verifico se frontale
|
||||
local bFront = ( Proc.Prc == 56)
|
||||
-- se mortasa di fronte, eseguo il taglio della faccia
|
||||
if bFront then
|
||||
if bFront and not Proc.bSkipCut then
|
||||
-- verifico esista la faccia di taglio
|
||||
local ptCutC, vtCutN = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
if ptCutC and vtCutN and AreSameVectorApprox( vtExtr, vtCutN) then
|
||||
|
||||
@@ -467,7 +467,7 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
end
|
||||
|
||||
-- se mortasa di fronte, eseguo il taglio della faccia
|
||||
if bFront then
|
||||
if bFront and not Proc.bSkipCut then
|
||||
-- verifico esista la faccia di taglio
|
||||
local ptCutC, vtCutN = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
if ptCutC and vtCutN and AreSameVectorApprox( vtExtr, vtCutN) then
|
||||
|
||||
@@ -89,6 +89,14 @@ local function MyProcessInputData()
|
||||
else
|
||||
vBeam[i].Box = b3Solid
|
||||
end
|
||||
if BD.MAX_LENGTH and BD.MAX_LENGTH > 10 and b3Solid:getDimX() > BD.MAX_LENGTH then
|
||||
local sOut = 'Lunghezza (' .. EgtNumToString( b3Solid:getDimX(), 2) .. ') ' ..
|
||||
'oltre i limiti della macchina (' .. EgtNumToString( BD.MAX_LENGTH, 2) .. ') '
|
||||
EgtOutLog( sOut)
|
||||
EgtOutBox( sOut, 'Lavora Travi', 'WARNING')
|
||||
EgtDraw()
|
||||
return false
|
||||
end
|
||||
end
|
||||
dRawW = vBeam[1].Box:getDimY()
|
||||
dRawH = vBeam[1].Box:getDimZ()
|
||||
|
||||
Reference in New Issue
Block a user