LapJoint - CleanCorner ora funziona anche su tasche a 3 facce a U.
This commit is contained in:
@@ -4789,7 +4789,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
|
||||
end
|
||||
end
|
||||
end
|
||||
return 1, sWarn, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId
|
||||
return 1, sWarn, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId, nil, sPocketing
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -8110,7 +8110,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
bSetOpenBorders = true
|
||||
end
|
||||
nOk, sErr, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, dDiamTool, bDoubleSide, nPathInt, nSurfInt, bOneShot, bMillDown, nFirstMachId,
|
||||
bOrthoFaces = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL)
|
||||
bOrthoFaces, sPocketing = MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCham, nAddGrpId, sMyMchFind, bIs3Faces, b3Solid, bOrthoFacesMaster, bMillDown, bSetOpenBorders, bIsU, bIsL)
|
||||
if nOk == -3 then
|
||||
bTryWithBlades = true
|
||||
elseif nOk == -2 then
|
||||
@@ -8144,6 +8144,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
end
|
||||
-- se abilitato dal parametro Q inserisco pulitura spigoli o contorno con fresa più piccola
|
||||
local nContourSmallTool = EgtGetInfo( Proc.Id, Q_CONTOUR_SMALL_TOOL, 'i') or 0
|
||||
local nCleanCorner = EgtGetInfo( Proc.Id, Q_CLEAN_CORNER, 'i') or 0
|
||||
if nContourSmallTool > 0 then
|
||||
local bOk, sWarn2 = MakeRoundCleanCornerOrContour( Proc, nPhase, nRawId, nPartId, b3Raw,
|
||||
nFacInd, nAddGrpId, dDiamTool, nContourSmallTool, bMillDown,
|
||||
@@ -8155,6 +8156,43 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sWarn2, sWarn2)
|
||||
end
|
||||
end
|
||||
-- se richiesta pulizia spigoli con fresa a V
|
||||
if nCleanCorner > 0 then
|
||||
local dMaxToolMaterial = 0
|
||||
if EgtMdbSetCurrMachining( sPocketing) then
|
||||
local sTuuidPk = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuidPk) or '') then
|
||||
dMaxToolMaterial = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxToolMaterial
|
||||
end
|
||||
end
|
||||
local nNewProc
|
||||
local vtSpec = vtN
|
||||
if not ( Proc.Fct == 3 and bIsU) then
|
||||
nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
||||
-- se U passante ricavo vettore da "sopra" con componente Z forzata in positivo
|
||||
else
|
||||
nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL
|
||||
local nNumFacet = EgtSurfTmFacetCount( nNewProc)
|
||||
-- vettore normale ad una delle facce adiacenti
|
||||
local vtOther = EgtSurfTmFacetNormVersor( Proc.Id, Proc.Face[nFacInd+1].Adjacencies[1], GDB_ID.ROOT)
|
||||
-- ricavo vettore verso l'alto (simulo faccia di fondo)
|
||||
vtSpec = vtN ^ vtOther
|
||||
-- se negativo in Z forzo positivo
|
||||
if vtSpec:getZ() < 0 then
|
||||
vtSpec:mirror(vtSpec)
|
||||
end
|
||||
ReorderFaces( nNewProc, nNumFacet, vtSpec)
|
||||
-- normale della lavorazione clean corner
|
||||
vtN = vtSpec
|
||||
end
|
||||
local vFace, dDepth = GetFacesData( nNewProc, dDiamTool, dMaxToolMaterial, ( dDiamTool/2), nAddGrpId, Proc.PartId, vtN)
|
||||
local bCleanCornerOk, sCleanCornerWarn = AddMillCorner( vFace, Proc, dDiamTool, nAddGrpId, nNewProc, vtN)
|
||||
if not bCleanCornerOk then return false, sCleanCornerWarn end
|
||||
if sCleanCornerWarn then
|
||||
if not sWarn then sWarn = '' end
|
||||
sWarn = EgtIf( #sWarn > 0, sWarn .. '\n' .. sCleanCornerWarn, sCleanCornerWarn)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
bOk = true
|
||||
@@ -8370,7 +8408,26 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
-- se richiesta pulizia spigoli con fresa a V
|
||||
if nCleanCorner > 0 then
|
||||
local dThElev = dToolThDiameter / 2 * sqrt( vtN:getX() * vtN:getX() + vtN:getY() * vtN:getY())
|
||||
local nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
||||
local nNewProc
|
||||
local vtSpec = vtN
|
||||
if not ( Proc.Fct == 3 and bIsU) then
|
||||
nNewProc = RemoveBottomFaceAndReorder( Proc, nAddGrpId, nFacInd, vtN)
|
||||
-- se U passante ricavo vettore da "sopra" con componente Z forzata in positivo
|
||||
else
|
||||
nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL
|
||||
local nNumFacet = EgtSurfTmFacetCount( nNewProc)
|
||||
-- vettore normale ad una delle facce adiacenti
|
||||
local vtOther = EgtSurfTmFacetNormVersor( Proc.Id, Proc.Face[nFacInd+1].Adjacencies[1], GDB_ID.ROOT)
|
||||
-- ricavo vettore verso l'alto (simulo faccia di fondo)
|
||||
vtSpec = vtN ^ vtOther
|
||||
-- se negativo in Z forzo positivo
|
||||
if vtSpec:getZ() < 0 then
|
||||
vtSpec:mirror(vtSpec)
|
||||
end
|
||||
ReorderFaces( nNewProc, nNumFacet, vtSpec)
|
||||
-- normale della lavorazione clean corner
|
||||
vtN = vtSpec
|
||||
end
|
||||
local vFace, dDepth = GetFacesData( nNewProc, dToolDiameter, dMaxToolMaterial, ( dToolDiameter/2), nAddGrpId, Proc.PartId, vtN)
|
||||
local bCleanCornerOk, sCleanCornerWarn = AddMillCorner( vFace, Proc, dToolDiameter, nAddGrpId, nNewProc, vtN)
|
||||
if not bCleanCornerOk then return false, sCleanCornerWarn end
|
||||
|
||||
Reference in New Issue
Block a user