- correzioni nel posizionamento lavorazioni ferramenta.
This commit is contained in:
SaraP
2026-08-10 15:07:25 +02:00
parent d90659b4f6
commit 19db63babe
+36 -10
View File
@@ -6757,7 +6757,7 @@ end
----------------------------------------------------------------------------------
-- funzione che aggiorna il solido principale con quello associato ad una lavorazione partendo dalla sua curva
local function UpdateSolidWithProcessingCrv( nProcId, nSolidId, nLayerId)
local function UpdateSolidWithProcessingCrv( nProcId, nSolidId, nLayerId, bExtend)
if not EgtCurveIsClosed( nProcId) then
return
@@ -6771,9 +6771,21 @@ local function UpdateSolidWithProcessingCrv( nProcId, nSolidId, nLayerId)
nRefCrv = EgtCopyGlob( nProcId, nLayerId)
EgtApproxCurve( nRefCrv, GDB_CA.LINES, s_dSimplSolidApprox)
end
local nProcSolidId = EgtSurfTmByRegionExtrusion( nLayerId, nRefCrv, ( dThick - 0.05) * vtExtr)
-- piccola traslazione per non essere a filo con la superficie
EgtMove( nProcSolidId, 0.05 * vtExtr)
-- calcolo traslazione per non essere a filo con superficie
local dMove = 0
if bExtend then
-- estensione delle dimensioni del pezzo per essere sicuri di arrivare sul bordo
local nPartId = EgtGetParent( EgtGetParent( nSolidId))
local nProfileLayerId = EgtGetFirstNameInGroup( nPartId, WIN_PROFILE)
local nProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_MAIN)
local b3Profile = GetProfileLocalBox( nProfileId)
dMove = max( b3Profile:getDimX(), b3Profile:getDimY())
end
dMove = dMove + 0.05
local nProcSolidId = EgtSurfTmByRegionExtrusion( nLayerId, nRefCrv, ( dThick - dMove - 0.05) * vtExtr)
EgtMove( nProcSolidId, dMove * vtExtr)
-- sottraggo al solido
EgtSurfTmSubtract( nSolidId, nProcSolidId)
@@ -8821,7 +8833,11 @@ local function CalcHdwMachining( tMachining, SashList)
-- setto info di lavorazione
EgtSetInfo( nPocketOutlineId, WIN_PRC_FEATURE_TYPE, WIN_PRC_TYPE.PROFILING)
EgtSetInfo( nPocketOutlineId, WIN_PRC_PROFILE_INFO, WIN_PRC_PROFILE_TYPE.GENERIC)
EgtSetInfo( nPocketOutlineId, WIN_PRC_SIDE, WIN_PRC_SIDETYPE.IN)
if sPart == 'TELAIO' then
EgtSetInfo( nPocketOutlineId, WIN_PRC_SIDE, WIN_PRC_SIDETYPE.IN)
else
EgtSetInfo( nPocketOutlineId, WIN_PRC_SIDE, WIN_PRC_SIDETYPE.OUT)
end
EgtModifyCurveExtrusion( nPocketOutlineId, Z_AX())
EgtModifyCurveThickness( nPocketOutlineId, - dHeight)
-- porto la lavorazione in globale
@@ -8829,20 +8845,25 @@ local function CalcHdwMachining( tMachining, SashList)
EgtSetName( nPocketOutlineId, WIN_PRC_HDW)
-- aggiornamento del solido
if s_bCalcSolid then
UpdateSolidWithProcessingCrv( nPocketOutlineId, nMainExtrusionId, nSolidLayerId)
UpdateSolidWithProcessingCrv( nPocketOutlineId, nMainExtrusionId, nSolidLayerId, true)
end
elseif vMacro[1] == 'TASCA' then
elseif vMacro[1] == 'VITE' then
local dRadius = 1.5
local dDepth = 2
if vMacro[2] == 'CANALINO' then
dRadius = 2
dDepth = 3
dDepth = 6
elseif vMacro[2] == 'ANTA' then
dRadius = 2.5
dDepth = 4
end
if sPart == 'ANTA' then
-- la posizione è data sul riferimento ( parte più esterna del canalino), ma la posizione corretta è sulla parte più interna del canalino
ptCenter:setZ( -11.5)
end
local nHoleId = EgtCircle( nProcLayerId, ptCenter, dRadius)
EgtMove( nHoleId, Z_AX())
EgtModifyCurveExtrusion( nHoleId, Z_AX())
@@ -8857,10 +8878,15 @@ local function CalcHdwMachining( tMachining, SashList)
local nHoleId = EgtCircle( nProcLayerId, ptCenter, dRadius)
-- setto info di lavorazione
EgtModifyCurveExtrusion( nHoleId, Z_AX())
-- TODO : come gestire profondità non definita?
local dDepth = tonumber(25)
local dDepth
if #vMacro == 3 then
dDepth = tonumber( vMacro[3])
else
-- se profondità non definita ( e.g. fori per maniglia) faccio arrivare il foro sul canalino della ferramenta
local nProfileLayerId = EgtGetFirstNameInGroup( nPartId, WIN_PROFILE)
local nProfileId = EgtGetFirstNameInGroup( nProfileLayerId, WIN_PRF_MAIN)
local dGapDeltaZ = EgtGetInfo( nProfileId, WIN_GAPDELTAZ, 'd') -- porta a metà del canalino
dDepth = dGapDeltaZ + 6.15
end
EgtModifyCurveThickness( nHoleId, - dDepth)
EgtSetColor( nHoleId, EgtStdColor( 'GRAY'))
@@ -8870,7 +8896,7 @@ local function CalcHdwMachining( tMachining, SashList)
EgtTransform( nHoleId, frHdw)
-- aggiornamento del solido
if s_bCalcSolid then
UpdateSolidWithProcessingCrv( nHoleId, nMainExtrusionId, nSolidLayerId)
UpdateSolidWithProcessingCrv( nHoleId, nMainExtrusionId, nSolidLayerId, true)
end
end
end