Window :
- correzioni nel posizionamento lavorazioni ferramenta.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user