Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 376f85d1f9 | |||
| 2124c7a25a | |||
| ef37486f34 | |||
| 711e6832c1 | |||
| 6eb3cd6429 | |||
| 091d710014 | |||
| 3f3e4db7f4 | |||
| dc2ea77a42 | |||
| 13c03ff601 | |||
| 9f73a85cd8 | |||
| 61f69ad50a | |||
| 16c3d8467d | |||
| df75f1c760 | |||
| 23afe7b256 | |||
| d5ebc24bf5 |
@@ -1,4 +1,4 @@
|
||||
-- ProcessDtMortise.lua by Egaltech s.r.l. 2023/03/06
|
||||
-- ProcessDtMortise.lua by Egaltech s.r.l. 2023/03/28
|
||||
-- Gestione calcolo mortase a coda di rondine per Travi
|
||||
-- 2021/04/08 Aggiunto controllo massimo materiale lavorabile dalla fresa.
|
||||
-- 2021/04/08 Miglioria scelta lavorazione in presenza di testa da sotto.
|
||||
@@ -10,6 +10,7 @@
|
||||
-- 2022/09/29 Aggiunto riconoscimento della sola feature laterale.
|
||||
-- 2022/12/28 Aggiunta gestione lavorazione in doppio.
|
||||
-- 2023/03/06 Aggiunta forzatura ingresso fuori dal grezzo con pocket.
|
||||
-- 2023/03/28 Corretto calcolo larghezza mortasa quando più larga che lunga.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessDtMortise = {}
|
||||
@@ -177,13 +178,17 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
-- determino l'altezza della mortasa (0=faccia di fondo)
|
||||
local rfDtMrt, dLenMrt, dWidthMrt = EgtSurfTmFacetMinAreaRectangle( Proc.Id, 0, GDB_RT.GLOB)
|
||||
local b3DtMrt = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, rfDtMrt)
|
||||
local dAltMort = b3DtMrt:getDimZ()
|
||||
-- ne determino l'asse (valido se non pocket)
|
||||
-- ne determino l'asse
|
||||
local vtAx = EgtEV( AuxId, GDB_RT.GLOB) - EgtSV( AuxId, GDB_RT.GLOB)
|
||||
vtAx:normalize()
|
||||
-- determino l'altezza della mortasa (0=faccia di fondo)
|
||||
local rfDtMrt, dLenMrt, dWidthMrt = EgtSurfTmFacetMinAreaRectangle( Proc.Id, 0, GDB_RT.GLOB)
|
||||
if abs( rfDtMrt:getVersY() * vtAx) > abs( rfDtMrt:getVersX() * vtAx) then
|
||||
rfDtMrt:rotate( rfDtMrt:getOrigin(), rfDtMrt:getVersZ(), 90)
|
||||
dLenMrt, dWidthMrt = dWidthMrt, dLenMrt
|
||||
end
|
||||
local b3DtMrt = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, rfDtMrt)
|
||||
local dAltMort = b3DtMrt:getDimZ()
|
||||
-- verifico se di tipo pocket
|
||||
local bPocket = ( EgtGetInfo( Proc.Id, 'P05', 'i') == 1)
|
||||
if bPocket then bMakeAntiSplitPath = false end
|
||||
|
||||
+23
-15
@@ -1,9 +1,10 @@
|
||||
-- ProcessTenon.lua by Egaltech s.r.l. 2023/03/09
|
||||
-- ProcessTenon.lua by Egaltech s.r.l. 2023/03/28
|
||||
-- Gestione calcolo tenone a coda di rondine per Travi
|
||||
-- 2021/04/08 Aggiunto controllo massimo materiale lavorabile dalla fresa.
|
||||
-- 2022/04/14 Aumentati un poco i limiti di orientamento verso il basso per FAST e PF.
|
||||
-- 2023/02/08 Aumentato il range per cui i tenoni vengono lavorati in sottosquadro.
|
||||
-- 2023/03/27 Migliorate condizioni scelta pretaglio con lama o fresa; gestione unificata con ProcessTenon.
|
||||
-- 2023/03/28 Corretta gestione faccia di base quando divisa in più parti per distanza massima da lavorare.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessDtTenon = {}
|
||||
@@ -240,22 +241,29 @@ function ProcessDtTenon.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
return false, sErr
|
||||
end
|
||||
-- calcolo distanza massima della curva dal punto più lontano della base tenone Dt (facet 0)
|
||||
local dMaxDist = 0
|
||||
local nLoopId, nLoopCnt = EgtExtractSurfTmFacetLoops( Proc.Id, 0, EgtGetParent( Proc.Id))
|
||||
if nLoopId then
|
||||
local dUmin, dUmax = EgtCurveDomain( nLoopId)
|
||||
for dU = dUmin, dUmax do
|
||||
local ptP = EgtUP( nLoopId, dU, GDB_ID.ROOT)
|
||||
local ptNear = EgtNP( AuxId, ptP, GDB_ID.ROOT)
|
||||
local dDist = dist( ptP, ptNear)
|
||||
if dDist > dMaxDist then
|
||||
dMaxDist = dDist
|
||||
local dMaxDist
|
||||
for i = 0, Proc.Fct - 1 do
|
||||
local ptFC, vtFN = EgtSurfTmFacetCenter( Proc.Id, i, GDB_ID.ROOT)
|
||||
if not AreSameVectorApprox( vtFN, vtN) or abs( ( ptFC - ptBC) * vtN) > 100 * GEO.EPS_SMALL then
|
||||
break
|
||||
end
|
||||
local nLoopId, nLoopCnt = EgtExtractSurfTmFacetLoops( Proc.Id, i, EgtGetParent( Proc.Id))
|
||||
if nLoopId then
|
||||
local dUmin, dUmax = EgtCurveDomain( nLoopId)
|
||||
for dU = dUmin, dUmax do
|
||||
local ptP = EgtUP( nLoopId, dU, GDB_ID.ROOT)
|
||||
local ptNear = EgtNP( AuxId, ptP, GDB_ID.ROOT)
|
||||
local dDist = dist( ptP, ptNear)
|
||||
if not dMaxDist or dDist > dMaxDist then
|
||||
dMaxDist = dDist
|
||||
end
|
||||
end
|
||||
for j = 1, nLoopCnt do
|
||||
EgtErase( nLoopId + j - 1)
|
||||
end
|
||||
end
|
||||
for i = 1, nLoopCnt do
|
||||
EgtErase( nLoopId + i - 1)
|
||||
end
|
||||
else
|
||||
end
|
||||
if not dMaxDist then
|
||||
local b3DtAux = EgtGetBBoxRef( AuxId, GDB_BB.STANDARD, frDtTen)
|
||||
dMaxDist = 2 * ( b3DtTen:getRadius() - b3DtAux:getRadius())
|
||||
end
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
-- 2023/02/06 Alla MakeDrillOnCorner aggiunto controllo distanza di sicurezza minima.
|
||||
-- 2023/02/16 Piccola correzione alla scelta utensile di svuotatura.
|
||||
-- 2023/02/21 Piccola correzione alla MakeByPocket.
|
||||
-- 2023/03/31 Correzione al calcolo della distanza di collisione nel caso in cui il gambo sia più piccolo dell'utensile.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessLapJoint = {}
|
||||
@@ -5390,8 +5391,34 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
-- eseguo la svuotatura della faccia principale, mi restituisce id utensile, il diametro utensile per il foro opzionale
|
||||
local tvtNx = {}
|
||||
tvtNx[2] = vtN
|
||||
-- recupero alcuni parametri dell'utensile per decidere la distanza di sicurezza da utilizzare
|
||||
local dMaxToolCutDepth = 0
|
||||
local dMaxToolMaterial = 0
|
||||
local dToolThLength = 999
|
||||
local dToolTotalLength = 0
|
||||
local dToolThDiameter = 999
|
||||
local dToolDiameter = 0
|
||||
if EgtMdbSetCurrMachining( sPocketing) then
|
||||
local sTuuidPk = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuidPk) or '') then
|
||||
dMaxToolCutDepth = EgtTdbGetCurrToolMaxDepth() or dMaxToolCutDepth
|
||||
dMaxToolMaterial = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxToolMaterial
|
||||
dToolDiameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiameter
|
||||
dToolThLength = EgtTdbGetCurrToolThLength() or dToolThLength
|
||||
dToolThDiameter = EgtTdbGetCurrToolParam( MCH_TP.STEMDIAM) or dToolThDiameter
|
||||
dToolTotalLength = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN) or dToolTotalLength
|
||||
end
|
||||
end
|
||||
local dMachiningDepth = 0
|
||||
-- se il gambo è più largo dell'utensile verifico se la lunghezza del gambo è maggiore della distanza di sicurezza calcolata
|
||||
local dShankLength = dToolTotalLength - dToolThLength - dMaxToolCutDepth
|
||||
if ( dMaxToolCutDepth < dMaxToolMaterial + 10 * GEO.EPS_SMALL) and ( dShankLength > dCollSic + 10 * GEO.EPS_SMALL) then
|
||||
dMachiningDepth = dFacElev + BD.COLL_SIC
|
||||
else
|
||||
dMachiningDepth = dFacElev + dCollSic
|
||||
end
|
||||
local bOk, sWarn2
|
||||
bOk, sWarn2, sTuuidPk, dDiamTool = MakePocket( Proc, nPartId, b3Solid, ptC, tvtNx, nFacInd, sMchFind, nUseRoughTool, sPocketing, dFacElev + dCollSic, nil, nil, bAllWithEndCap)
|
||||
bOk, sWarn2, sTuuidPk, dDiamTool = MakePocket( Proc, nPartId, b3Solid, ptC, tvtNx, nFacInd, sMchFind, nUseRoughTool, sPocketing, dMachiningDepth, nil, nil, bAllWithEndCap)
|
||||
if not bOk then return false, sWarn2 end
|
||||
if sWarn2 then
|
||||
if not sWarn then sWarn = '' end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- ProcessTenon.lua by Egaltech s.r.l. 2023/03/09
|
||||
-- ProcessTenon.lua by Egaltech s.r.l. 2023/03/27
|
||||
-- Gestione calcolo tenone per Travi
|
||||
-- 2021/10/04 Corretto calcolo HCING per pezzi piccoli.
|
||||
-- 2022/02/15 Aggiornata VerifyOrientation per macchine con testa da sotto.
|
||||
@@ -9,7 +9,7 @@
|
||||
-- 2022/12/12 Su macchine con rulli pressori e pinze separate si riduce di meno l'ingombro con tenoni inclinati.
|
||||
-- 2022/12/20 Aggiunta gestione smusso. Migliorata scelta tra sopra e sotto per il punto di inizio. In VerifyOrientation aggiunta trave medio alta.
|
||||
-- 2023/01/20 Modificata scelta lato di attacco per pezzo piccolo su macchine con pinza speciale (pinza 5).
|
||||
-- 2023/03/27 Migliorate condizioni scelta pretaglio con lama o fresa; gestione unificata con ProcessDtTenon.
|
||||
-- 2023/03/27 Migliorate condizioni scelta pretaglio con lama o fresa; gestione unificata con ProcessDtTenon. Migliorato calcolo altezza tenone.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessTenon = {}
|
||||
@@ -129,8 +129,8 @@ function ProcessTenon.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
end
|
||||
-- determino altezza del tenone
|
||||
local frTen = Frame3d( ptBC, vtExtr)
|
||||
local b3Ten = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, frTen)
|
||||
local dTenH = b3Ten:getDimZ()
|
||||
local b3Ten = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, frTen)
|
||||
local dTenH = b3Ten:getMax():getZ()
|
||||
-- assegno centro e normale della faccia top
|
||||
local vtN = vtExtr
|
||||
local ptC = ptBC + vtN * dTenH
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
==== Beam Update Log ====
|
||||
|
||||
Versione 2.5c8 (30/03/23)
|
||||
- Modif : nei tenoni (standard e coda di rondine) migliorate e unificate condizioni scelta pretaglio con lama o fresa [Ticket #1131]
|
||||
- Modif : le mortase a coda di rondine sono ora anticipate a prima dei tagli longitudinali indipendentemente dalla sovrapposizione in Y
|
||||
- Modif : modificato l'ingombro dei tagli inclinati per macchine con trascinatori tipo PF
|
||||
- Fixed : nelle mortase a coda di rondine corretto calcolo larghezza della mortasa per derivare numero e step passate [Ticket #1126, #1143]
|
||||
- Fixed : nei tenoni a coda di rondine corretto calcolo distanza lato da lavorare quando la faccia di base è divisa in più parti.
|
||||
+1
-1
@@ -2,5 +2,5 @@
|
||||
-- Gestione della versione di Beam
|
||||
|
||||
NAME = 'Beam'
|
||||
VERSION = '2.5c7'
|
||||
VERSION = '2.5c8'
|
||||
MIN_EXE = '2.5c1'
|
||||
|
||||
Reference in New Issue
Block a user