In DtMortaise, migliorato ingresso/uscita in caso di mortasa con svuotatura
This commit is contained in:
@@ -638,20 +638,44 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
-- sistemo il lato e la direzione di lavoro
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT))
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( bCW, false, true))
|
||||
local ptS = EgtSP( AuxId, GDB_ID.ROOT)
|
||||
local ptE = EgtEP( AuxId, GDB_ID.ROOT)
|
||||
-- in presenza di pocket imposto dati ingresso e uscita
|
||||
if bPocket then
|
||||
-- recupero il contorno della tasca (seconda curva ausiliaria)
|
||||
local vAuxId = EgtGetInfo( Proc.Id, 'AUXID', 'vi')
|
||||
-- si prende il centro del percorso da svuotare ( non si controlla che sia presente perchè già verificata in precedenza)
|
||||
local ptPocketCenter = EgtGP( Proc.Id + vAuxId[2], GDB_ID.ROOT)
|
||||
-- calcolo componente tangente e lineare di ingresso
|
||||
local vtS = EgtSV( Proc.Id + vAuxId[1], GDB_ID.ROOT) -- vettore entrante percorso
|
||||
local vtOffS = EgtSV( Proc.Id + vAuxId[1], GDB_ID.ROOT) ; vtOffS:rotate( vtExtr, 90) -- vettore da punto iniziale a centro utensile
|
||||
local vtStartToCenter = ptPocketCenter - ( ptS + ( vtOffS * ( dToolDiam/2))) -- vettore da centro utensilenel punto iniziale e centro del percorso da svuotare
|
||||
local dLenStartToCenter = vtStartToCenter:len() -- distanza da centro utensile a centro del percorso da svuotare
|
||||
local dStartTangComp = abs( vtStartToCenter * vtS) -- prodotto scalare tra vettore entrante e vettore tra centro utensilee percordo da svuotare (componente tangente)
|
||||
local dStartPerpComp = sqrt( dLenStartToCenter^2 - dStartTangComp^2) -- pitagora tra componente tangente e la lunghezza tra i due centri
|
||||
-- calcolo componente tangente e lineare di uscita
|
||||
local vtE = EgtEV( Proc.Id + vAuxId[1], GDB_ID.ROOT)
|
||||
local vtOffE = EgtEV( Proc.Id + vAuxId[1], GDB_ID.ROOT) ; vtOffE:rotate( vtExtr, 90)
|
||||
local vtEndToCenter = ptPocketCenter - ( ptE + ( vtOffE * ( dToolDiam/2)))
|
||||
local dLenEndToCenter = vtEndToCenter:len()
|
||||
local dEndTangComp = abs( vtEndToCenter * vtE)
|
||||
local dEndPerpComp = sqrt( dLenEndToCenter^2 - dEndTangComp^2)
|
||||
|
||||
EgtSetMachiningParam( MCH_MP.STARTPOS, 5)
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_MILL_LI.TANGENT)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LO.AS_LI)
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, 5)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0)
|
||||
EgtSetMachiningParam( MCH_MP.LITANG, dToolDiam / 2)
|
||||
EgtSetMachiningParam( MCH_MP.LIPERP, 5)
|
||||
EgtSetMachiningParam( MCH_MP.LITANG, dStartTangComp)
|
||||
EgtSetMachiningParam( MCH_MP.LIPERP, dStartPerpComp)
|
||||
EgtSetMachiningParam( MCH_MP.LIELEV, 0)
|
||||
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, MCH_MILL_LI.TANGENT)
|
||||
EgtSetMachiningParam( MCH_MP.LOTANG, dEndTangComp)
|
||||
EgtSetMachiningParam( MCH_MP.LOPERP, dEndPerpComp)
|
||||
EgtSetMachiningParam( MCH_MP.LOELEV, 0)
|
||||
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, 0)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0)
|
||||
-- altrimenti verifico se sono bilanciati ingresso e uscita, per evitare inizio o fine nel legno
|
||||
else
|
||||
local ptS = EgtSP( AuxId, GDB_ID.ROOT)
|
||||
local ptE = EgtEP( AuxId, GDB_ID.ROOT)
|
||||
local dDistS = abs( ( ptS - rfDtMrt:getOrigin()) * rfDtMrt:getVersX())
|
||||
local dDistE = abs( ( ptE - rfDtMrt:getOrigin()) * rfDtMrt:getVersX())
|
||||
local dIni, dFin = EgtCurveDomain( AuxId)
|
||||
|
||||
Reference in New Issue
Block a user