DataWall 3.1c1 :
- modificati CleanCorner per gestire utensili conici con angolo di apertura tra 30 e 45 gradi (inclinazione calcolata in automatico) - piccola modifica a Process per rielaborare file bwe da EgtBeamWall.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2024/03/24
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2026/03/30
|
||||
-- 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.
|
||||
@@ -717,19 +717,19 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcInterference( nNewProc, vtExtr, ptCentr, dDiam1, dDiam2,
|
||||
dTall1, dTall2, dDiam3, dTall3)
|
||||
local ptCentrGrid1 = ptCentr + ( vtExtr * 0.01)
|
||||
local function CalcInterference( nNewProc, vtExtr, ptCentr,
|
||||
dDiam1, dTall1, dDiam2, dTall2, dDiam3, dTall3)
|
||||
local ptCentrGrid1 = ptCentr + 0.1 * vtExtr
|
||||
local frOriTool = Frame3d( ptCentrGrid1, vtExtr)
|
||||
local bColl1 = EgtTestConeSurface( frOriTool, dDiam1/2, dDiam2/2, dTall1, nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl1 = EgtTestConeSurface( frOriTool, dDiam1 / 2, dDiam2 / 2 - 0.1, dTall1, nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl1 then return true end
|
||||
local ptCentrGrid2 = ptCentr + ( vtExtr * ( dTall1 + 0.01))
|
||||
local ptCentrGrid2 = ptCentr + dTall1 * vtExtr
|
||||
frOriTool = Frame3d( ptCentrGrid2, vtExtr)
|
||||
local bColl2 = EgtTestCylSurface( frOriTool, dDiam2/2, (dTall2-dTall1), nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl2 = EgtTestCylSurface( frOriTool, dDiam2 / 2 - 0.1, dTall2, nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl2 then return true end
|
||||
local ptCentrGrid3 = ptCentr + ( vtExtr * ( dTall2 + 0.01))
|
||||
local ptCentrGrid3 = ptCentr + ( dTall1 + dTall2) * vtExtr
|
||||
frOriTool = Frame3d( ptCentrGrid3, vtExtr)
|
||||
local bColl3 = EgtTestCylSurface( frOriTool, dDiam3/2, (dTall3-dTall2), nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl3 = EgtTestCylSurface( frOriTool, dDiam3 / 2 - 0.1, dTall3, nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl3 then return true end
|
||||
-- restituisco risultato controllo collisioni
|
||||
return false
|
||||
@@ -785,8 +785,8 @@ end
|
||||
---------------------------------------------------------------------
|
||||
local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTypeConeCut, nAddGrpId,
|
||||
dToolDiam, dThick, sMilling, dOffsAng, dDepthMach,
|
||||
bThruThick, dThSurf, dDiam1, dDiam2, dTall1,
|
||||
dTall2, dDiam3, dTall3, bMakeLocSurf, vFace)
|
||||
bThruThick, dThSurf, dConeSideAng, dDiam1, dTall1,
|
||||
dDiam2, dTall2, dDiam3, dTall3, bMakeLocSurf, vFace)
|
||||
-- variabili costruzione geometria
|
||||
local pAuxId = {}
|
||||
local nAuxId
|
||||
@@ -854,23 +854,21 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp
|
||||
-- sommo i tre versori per avere una direzione media
|
||||
vtExtrExit = vtN2 + vtN3
|
||||
vtExtrExit:normalize()
|
||||
-- se tipo 1 calcolo angolo tilt di 45°
|
||||
if nTypeConeCut == 1 then
|
||||
vtExtr = vtExtrExit + Z_AX()
|
||||
-- altrimenti tipo 2, calcolo angolo tilt di 33° (dalla verticale)
|
||||
else
|
||||
vtExtr = vtExtrExit + Vector3d(0,0,1.539865)
|
||||
end
|
||||
-- calcolo la componente Z dipendente dall'angolo tilt
|
||||
local dAlfa = EgtClamp( dConeSideAng, 15, 30)
|
||||
local dGamma = 90 - asin( sqrt( 2) * sin( dConeSideAng))
|
||||
local dTanGamma = sin( dGamma) / cos( dGamma)
|
||||
vtExtr = vtExtrExit + Vector3d( 0, 0, dTanGamma)
|
||||
vtExtr:normalize()
|
||||
local vtCheck = Vector3d(vtExtr)
|
||||
local vtCheck = Vector3d( vtExtr)
|
||||
-- se ho un offset angolare ruoto il percorso
|
||||
if abs(dOffsAng) > 100 * GEO.EPS_SMALL then
|
||||
if abs( dOffsAng) > 100 * GEO.EPS_ANG_SMALL then
|
||||
vtCheck:rotate( Z_AX(), dOffsAng)
|
||||
end
|
||||
-- controllo se c'è collisione con le facce della superfice
|
||||
if nTypeConeCut == 1 and CalcInterference( nNewProc.Id, vtCheck, tFacAdj[nIdEndPoint] + Point3d( 0, 0, -dDepthMach), dDiam1, dDiam2,
|
||||
dTall1, dTall2, dDiam3, dTall3) then
|
||||
local sErr = 'Collision detect from clean corner tool and surface'
|
||||
if nTypeConeCut == 1 and CalcInterference( nNewProc.Id, vtCheck, tFacAdj[nIdEndPoint] + Point3d( 0, 0, -dDepthMach),
|
||||
dDiam1, dTall1, dDiam2, dTall2, dDiam3, dTall3) then
|
||||
local sErr = 'Collision detected between clean corner tool and surface'
|
||||
EgtOutLog( sErr)
|
||||
return true, ''
|
||||
end
|
||||
@@ -1054,22 +1052,26 @@ local function AddMillCorner( nTypeConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
-- recupero i dati dell'utensile
|
||||
local dMillDiam = 20
|
||||
local dMillTotDiam = 20
|
||||
local dMillDiamTh = 20
|
||||
local dToolLength = 20
|
||||
local dThickTool = 20
|
||||
local dSideAng = 0
|
||||
local dMillLength = 20
|
||||
local dMillThick = 20
|
||||
local dMillSideAng = 0
|
||||
local dMillStemLength = 10
|
||||
local dMillThDiam = 70
|
||||
local dMillThLength = 20
|
||||
if EgtMdbSetCurrMachining( sMilling) then
|
||||
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||
dMillDiamTh = EgtTdbGetCurrToolThDiam() or dMillDiamTh
|
||||
dMillThDiam = EgtTdbGetCurrToolThDiam() or dMillThDiam
|
||||
dMillThLength = EgtTdbGetCurrToolThLength() or dMillThLength
|
||||
dMillTotDiam = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM) or dMillTotDiam
|
||||
dSideAng = EgtTdbGetCurrToolParam( MCH_TP.SIDEANG) or dSideAng
|
||||
dMillSideAng = EgtTdbGetCurrToolParam( MCH_TP.SIDEANG) or dMillSideAng
|
||||
dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam
|
||||
dThickTool = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dThickTool
|
||||
dToolLength = EgtTdbGetCurrToolParam( MCH_TP.LEN) or dToolLength
|
||||
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth -- qui è la distanza dal portautensile
|
||||
-- calcolo il secondo diametro del cono
|
||||
dMillTotDiam = dMillDiam + ( abs( dThickTool) * tan( dSideAng)) * 2
|
||||
dMillThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dMillThick
|
||||
dMillLength = EgtTdbGetCurrToolParam( MCH_TP.LEN) or dMillLength
|
||||
-- diametro massimo del cono
|
||||
dMillTotDiam = dMillDiam + ( abs( dMillThick) * tan( dMillSideAng)) * 2
|
||||
-- lunghezza del gambo
|
||||
dMillStemLength = dMillLength - abs( dMillThick) - dMillThLength
|
||||
end
|
||||
end
|
||||
-- verifico se ciclo chiuso
|
||||
@@ -1157,21 +1159,21 @@ local function AddMillCorner( nTypeConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
-- primo taglio
|
||||
local bOk, sErr = AddMillCornerMachining( Proc.PartId, nNewProc, nFacInd, tFacAdj, nTypeConeCut, nAddGrpId,
|
||||
dToolDiam, dThick, sMilling, -dAngOffs, dDepthMach,
|
||||
bThruThick, dDepth, dMillDiam, dMillTotDiam, abs(dThickTool),
|
||||
dMaxDepth, dMillDiamTh, dToolLength, bMakeLocSurf, vFace)
|
||||
bThruThick, dDepth, dMillSideAng, dMillDiam, abs( dMillThick),
|
||||
dMillTotDiam, dMillStemLength, dMillThDiam, dMillThLength, bMakeLocSurf, vFace)
|
||||
if not bOk then return bOk, sErr end
|
||||
-- secondo taglio
|
||||
bOk, sErr = AddMillCornerMachining( Proc.PartId, nNewProc, nFacInd, tFacAdj, nTypeConeCut, nAddGrpId,
|
||||
dToolDiam, dThick, sMilling, dAngOffs, dDepthMach,
|
||||
bThruThick, dDepth, dMillDiam, dMillTotDiam, abs(dThickTool),
|
||||
dMaxDepth, dMillDiamTh, dToolLength, bMakeLocSurf, vFace)
|
||||
bThruThick, dDepth, dMillSideAng, dMillDiam, abs( dMillThick),
|
||||
dMillTotDiam, dMillStemLength, dMillThDiam, dMillThLength, bMakeLocSurf, vFace)
|
||||
if not bOk then return bOk, sErr end
|
||||
-- altrimenti ho un solo percorso
|
||||
else
|
||||
local bOk, sErr = AddMillCornerMachining( Proc.PartId, nNewProc, nFacInd, tFacAdj, nTypeConeCut, nAddGrpId,
|
||||
dToolDiam, dThick, sMilling, 0, dDepthMach,
|
||||
bThruThick, dDepth, dMillDiam, dMillTotDiam, abs(dThickTool),
|
||||
dMaxDepth, dMillDiamTh, dToolLength, bMakeLocSurf, vFace)
|
||||
bThruThick, dDepth, dMillSideAng, dMillDiam, abs( dMillThick),
|
||||
dMillTotDiam, dMillStemLength, dMillThDiam, dMillThLength, bMakeLocSurf, vFace)
|
||||
if not bOk then return bOk, sErr end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user