Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ef5170b6e6 | |||
| 3d2b740e89 | |||
| b7078cfe11 | |||
| 30726886c1 | |||
| 0f4a0804e2 |
@@ -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
|
||||
@@ -1684,8 +1686,14 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
end
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, vFace[i].Fac}})
|
||||
-- si inverte il percorso, se necessario, per evitare che la sega a catena ruoti contro la traversa
|
||||
local bToInvert = vFace[i].Norm:getX() >= 0.018
|
||||
-- allungamento e accorciamento percorso
|
||||
local dSal = - dSawDiam / 2
|
||||
local dEal = vFace[i].Whisk - vFace[i].Len - dSawDiam / 2
|
||||
if bToInvert then
|
||||
dSal, dEal = dEal, dSal
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
|
||||
-- assegno utilizzo faccia
|
||||
@@ -1695,12 +1703,12 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
|
||||
-- assegno lato di lavoro e inversione direzione movimento
|
||||
if vFace[i].Norm:getX() < 0.018 then
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
else
|
||||
if bToInvert then
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, true)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
end
|
||||
-- posizione braccio porta testa
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
@@ -1732,11 +1740,17 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
end
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, vFace[i].Fac}})
|
||||
-- si inverte il percorso, se necessario, per evitare che la sega a catena ruoti contro la traversa
|
||||
local bToInvert = vFace[i].Norm:getX() >= 0.018
|
||||
-- allungamento e accorciamento percorso
|
||||
local dSal = - dSawDiam / 2
|
||||
local dEal = - dSawDiam / 2
|
||||
if ( vFace[i].Type & 2) ~= 0 then
|
||||
dSal = vFace[i].Whisk - vFace[i].Len - dSawDiam / 2
|
||||
end
|
||||
if bToInvert then
|
||||
dSal, dEal = dEal, dSal
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
|
||||
-- assegno utilizzo faccia
|
||||
@@ -1746,12 +1760,12 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
|
||||
-- assegno lato di lavoro e inversione direzione movimento
|
||||
if vFace[i].Norm:getX() < 0.018 then
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
else
|
||||
if bToInvert then
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, true)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
end
|
||||
-- posizione braccio porta testa
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- WProcessLapJoint.lua by Egaltech s.r.l. 2023/10/02
|
||||
-- WProcessLapJoint.lua by Egaltech s.r.l. 2026/03/30
|
||||
-- Gestione calcolo mezzo-legno per Pareti
|
||||
-- 2021/08/27 DS Se tre o più facce con flag PCKT=1 forzo svuotatura con fresa (per Variant).
|
||||
-- 2021/08/29 DS Se svuotatura di fianco setto flag per farla dopo i tagli.
|
||||
@@ -698,20 +698,20 @@ local function ReorderFacesFromTab( nIdSurf, vFace)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CalcInterference( nNewProc, vtExtr, ptCentr, dDiam1, dDiam2,
|
||||
dTall1, dTall2, dDiam3, dTall3)
|
||||
local function CalcInterference( nNewProc, vtExtr, ptCentr,
|
||||
dDiam1, dTall1, dDiam2, dTall2, dDiam3, dTall3)
|
||||
|
||||
local ptCentrGrid1 = ptCentr + ( vtExtr * 0.01)
|
||||
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
|
||||
@@ -758,8 +758,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
|
||||
@@ -826,23 +826,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)
|
||||
-- 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
|
||||
@@ -1029,22 +1027,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
|
||||
-- copio la feature nel layer di appoggio
|
||||
@@ -1135,21 +1137,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
|
||||
|
||||
+8
-4
@@ -1,4 +1,4 @@
|
||||
-- Process.lua by Egaltech s.r.l. 2022/05/09
|
||||
-- Process.lua by Egaltech s.r.l. 2026/03/30
|
||||
-- Gestione calcolo disposizione e lavorazioni per Pareti
|
||||
-- Si opera sulla macchina corrente
|
||||
-- 2020/12/09 Come per BatchProcess.lua si gestiscono anche rotazioni di inversione con valori negativi.
|
||||
@@ -108,6 +108,10 @@ local function MyProcessInputData()
|
||||
|
||||
-- Recupero informazione se progetto o produzione
|
||||
local bProj = ( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'PROJECT', 'i') == 1)
|
||||
|
||||
-- Verifico se progetto deriva da BeamWall
|
||||
local _, _, sExt = EgtSplitPath( EgtGetCurrFilePath() or '')
|
||||
local bBwProj = ( ( string.upper( sExt or '') == '.BWE'))
|
||||
|
||||
-- Eseguo eventuali rotazioni e inversioni testa-coda
|
||||
for i = 1, #vWall do
|
||||
@@ -115,7 +119,7 @@ local function MyProcessInputData()
|
||||
-- rotazione
|
||||
local dRotAng = EgtGetInfo( vWall[i].Id, 'ROTATED', 'd')
|
||||
if dRotAng then
|
||||
if abs( dRotAng) > GEO.EPS_ANG_SMALL and not EgtExistsInfo( vWall[i].Id, 'ROTATED_DONE') then
|
||||
if abs( dRotAng) > GEO.EPS_ANG_SMALL and not bBwProj and not EgtExistsInfo( vWall[i].Id, 'ROTATED_DONE') then
|
||||
local ptRotCen = b3Solid:getCenter()
|
||||
EgtRotate( vWall[i].Id, ptRotCen, X_AX(), dRotAng, GDB_RT.GLOB)
|
||||
b3Solid:rotate( ptRotCen, X_AX(), dRotAng)
|
||||
@@ -125,7 +129,7 @@ local function MyProcessInputData()
|
||||
-- inversione
|
||||
local dInvAng = EgtGetInfo( vWall[i].Id, 'INVERTED', 'd')
|
||||
if dInvAng then
|
||||
if abs( dInvAng - 180) > GEO.EPS_ANG_SMALL and abs( dInvAng + 180) > GEO.EPS_ANG_SMALL and not EgtExistsInfo( vWall[i].Id, 'INVERTED_DONE') then
|
||||
if abs( dInvAng - 180) > GEO.EPS_ANG_SMALL and abs( dInvAng + 180) > GEO.EPS_ANG_SMALL and not bBwProj and not EgtExistsInfo( vWall[i].Id, 'INVERTED_DONE') then
|
||||
local ptInvCen = b3Solid:getCenter()
|
||||
EgtRotate( vWall[i].Id, ptInvCen, Z_AX(), dInvAng - 180, GDB_RT.GLOB)
|
||||
b3Solid:rotate( ptInvCen, Z_AX(), dInvAng - 180)
|
||||
@@ -134,7 +138,7 @@ local function MyProcessInputData()
|
||||
end
|
||||
-- correzioni per rotazioni non centrate di produzioni TS3 (quasi sempre multipli di 90 deg)
|
||||
local sType = EgtGetInfo( vWall[i].Id, 'TYPE', 's')
|
||||
if not bProj and dRotAng and dInvAng and sType ~= 'LAYER' then
|
||||
if not bProj and not bBwProj and dRotAng and dInvAng and sType ~= 'LAYER' then
|
||||
if abs( dInvAng - 0) < GEO.EPS_ANG_SMALL then
|
||||
if abs( dRotAng - 180) < GEO.EPS_ANG_SMALL then
|
||||
vWall[i].PosZ = vWall[i].PosZ - vWall[i].Box:getDimY()
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
-- Version.lua by Egalware s.r.l. 2026/01/22
|
||||
-- Version.lua by Egalware s.r.l. 2026/03/30
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '3.1a1'
|
||||
VERSION = '3.1c1'
|
||||
MIN_EXE = '3.1a1'
|
||||
|
||||
Reference in New Issue
Block a user