Compare commits

..

20 Commits

Author SHA1 Message Date
luca.mazzoleni e0f27b9abe Merge branch 'release/2.5l2' 2023-12-20 17:42:28 +01:00
luca.mazzoleni c8b29241ca update log 2023-12-20 17:41:39 +01:00
luca.mazzoleni a9462e189c Merge branch 'master' into develop 2023-12-15 17:57:26 +01:00
Dario Sassi 27ee10d1ec DataBeam :
- piccola miglioria alla precedente correzione, rimanevano non cancellate delle regioni di uso temporaneo.
2023-12-15 17:29:01 +01:00
luca.mazzoleni d73f535a55 Merge remote-tracking branch 'origin/master' into develop 2023-12-15 10:04:02 +01:00
Dario Sassi 5ae487cb20 DataBeam 2.5l2 :
- correzione a GetFaceWithMostAdj per calcoli con facce che fanno ombra.
2023-12-15 09:53:48 +01:00
luca.mazzoleni a3dcabf860 Merge remote-tracking branch 'origin/master' into develop 2023-12-11 09:04:41 +01:00
Dario Sassi 7b854c87c0 DataBeam :
- altra correzione a RoundArch per senso rotazione fresa e modalità climb.
2023-12-08 16:14:06 +01:00
luca.mazzoleni d2fc60b7f1 Merge branch 'master' into develop 2023-12-07 12:53:32 +01:00
Dario Sassi 286816e8e9 DataBeam :
- in ProcessRoundArch aggiunta gestione senso di rotazione della fresa per lavorare sempre in concordanza (climb milling).
2023-12-07 11:16:11 +01:00
luca.mazzoleni 01fbcbbd01 Merge branch 'CutAvoidCollisionsWhenDownUp' into develop 2023-12-07 09:56:49 +01:00
luca.mazzoleni d1c014e20c In ProcessCut e DoubleCut correzione in scelta ribaltamento trave quando si è in condizioni downUp. 2023-12-07 09:55:19 +01:00
luca.mazzoleni 92a924dde1 Merge branch 'develop' into CutAvoidCollisionsWhenDownUp 2023-12-06 18:38:56 +01:00
luca.mazzoleni d033fee929 Merge branch 'SideMillAsSawImprovement' into develop 2023-12-06 18:12:21 +01:00
luca.mazzoleni 1070910b8c - In ProcessLapJoint -> VerifySideMillAsSaw, se SIDEDEPTH non definita, viene calcolata
- update commenti
2023-12-06 17:50:26 +01:00
luca.mazzoleni 306b5b6dff in ProcessCut -> Classify si forza la rotazione della trave se inclinata in Y e la lama non riesce a lavorare solo da un lato, come per doublecut 2023-12-06 15:12:08 +01:00
luca.mazzoleni d2a6d7e75c in ProcessDoubleCut -> Classify si forza la rotazione della trave se inclinata in Y e la lama non riesce a lavorare solo da un lato 2023-12-06 10:44:21 +01:00
luca.mazzoleni 6309092689 In FacesBySaw -> CalcLeadInOutPerpGeom gestito caso in cui la geometria della feature esce dal grezzo 2023-12-05 18:37:28 +01:00
luca.mazzoleni 2ec0d8162e in LapJoint->MakeMoreFaces, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2) 2023-12-01 10:40:15 +01:00
luca.mazzoleni 60919c595d Merge tag '2.5l1' into develop
Finish Release: 2.5l1
2023-12-01 09:33:29 +01:00
8 changed files with 111 additions and 27 deletions
+13 -7
View File
@@ -1,4 +1,4 @@
-- BeamLib.lua by Egaltech s.r.l. 2023/03/22
-- BeamLib.lua by Egaltech s.r.l. 2023/12/15
-- Libreria globale per Travi
-- 2020/07/28 Corretto calcolo attacchi e uscite di lame per non uscire dalla faccia sotto.
-- 2020/08/18 Aggiunto a GetNearestParalOpposite e GetNearestOrthoOpposite parametro opzionale vtNorm.
@@ -27,6 +27,7 @@
-- 2023/09/26 In GetFaceWithMostAdj gestito primo parametro anche come Proc; gestito caso strip con facce tutte in sottosquadro.
-- 2023/09/26 Spostata qui funzione IsFeatureCuttingEntireSection da BeamExec.
-- 2023/11/30 Calcolo elevazione velocizzato e centralizzato tramite la funzione GetFaceElevation. Se l'elevazione è già calcolata la recupera da Proc, altrimenti la calcola al momento.
-- 2023/12/15 Correzione a GetFaceWithMostAdj per calcoli con facce che fanno ombra.
-- Tabella per definizione modulo
local BeamLib = {}
@@ -560,14 +561,19 @@ function BeamLib.GetFaceWithMostAdj( Proc, nPartId, bCompare3Fc, dCosSideAng)
local frOCSMaster = Frame3d( vPtC[i], vvtN[i])
EgtScale( nShadowContourId, frOCSMaster, 1, 1, 0, GDB_RT.GLOB)
EgtModifyCurveExtrusion( nShadowContourId, vvtN[i], GDB_RT.GLOB)
local nShadowSurfFlatId
-- se non troppo ortogonale (almeno 0.5deg di delta)
local dResV = vvtN[i] * vvtN[j]
EgtOffsetCurve( nShadowContourId, EgtIf( dResV > GEO.EPS_SMALL, - 50, 50) * GEO.EPS_SMALL)
local nShadowSurfFlatId = EgtSurfFlatRegion( nAddGrpId, nShadowContourId)
local bShadowSurfIsExternal = EgtSurfFrTestExternal( nMasterSurfFlatId, nShadowSurfFlatId)
if not bShadowSurfIsExternal then
bUcut = true
if abs( dResV) > 0.087 then
EgtOffsetCurve( nShadowContourId, EgtIf( dResV > GEO.EPS_SMALL, - 50, 50) * GEO.EPS_SMALL)
local nShadowSurfFlatId = EgtSurfFlatRegion( nAddGrpId, nShadowContourId)
local bShadowSurfIsExternal = EgtSurfFrTestExternal( nMasterSurfFlatId, nShadowSurfFlatId)
if not bShadowSurfIsExternal then
bUcut = true
end
EgtErase( nShadowSurfFlatId)
end
EgtErase( { nMasterSurfFlatId, nShadowSurfFlatId})
EgtErase( nMasterSurfFlatId)
end
EgtErase( { nMasterContourId, nShadowContourId, nShadowFacetId})
end
+35
View File
@@ -21,6 +21,7 @@
-- 2023/10/24 In MakeOne migliorata gestione taglio con percorso bilinea. Aggiunta funzione GetNameSolidFaceIncludingLine.
-- 2023/11/14 In MakeOne migliorato calcolo scelta soluzione per macchina TURN
-- 2023/11/28 In MakeTwo raffinamento calcolo vtRef per casi dubbi.
-- 2023/12/06 In CalcLeadInOutPerpGeom gestito caso in cui la geometria della feature esce dal grezzo.
-- Tabella per definizione modulo
local FacesBySaw = {}
@@ -715,6 +716,40 @@ function FacesBySaw.CalcLeadInOutPerpGeom( ptP1, ptP2, vtV1, vtV2, vtN, dRad, vt
-- Spostamento punti per effetto dell'extra o della deficienza di taglio
ptP1 = ptP1 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra))
ptP2 = ptP2 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra))
-- Spostamento punti se fuori dal pezzo: si riportano sul bordo del grezzo
local dDeltaMovePt1, dDeltaMovePt2 = 0, 0
local dPt1X, dPt1Y, dPt1Z = ptP1:getX(), ptP1:getY(), ptP1:getZ()
local dPt2X, dPt2Y, dPt2Z = ptP2:getX(), ptP2:getY(), ptP2:getZ()
local dBoxMinX, dBoxMinY, dBoxMinZ = b3Box:getMin():getX(), b3Box:getMin():getY(), b3Box:getMin():getZ()
local dBoxMaxX, dBoxMaxY, dBoxMaxZ = b3Box:getMax():getX(), b3Box:getMax():getY(), b3Box:getMax():getZ()
if dPt1X < dBoxMinX then
dDeltaMovePt1 = dBoxMinX - dPt1X
elseif dPt1X > dBoxMaxX then
dDeltaMovePt1 = dBoxMaxX - dPt1X
elseif dPt1Y < dBoxMinY then
dDeltaMovePt1 = dBoxMinY - dPt1Y
elseif dPt1Y > dBoxMaxY then
dDeltaMovePt1 = dBoxMaxY - dPt1Y
elseif dPt1Z < dBoxMinZ then
dDeltaMovePt1 = dBoxMinZ - dPt1Z
elseif dPt1Z > dBoxMaxZ then
dDeltaMovePt1 = dBoxMaxZ - dPt1Z
end
if dPt2X < dBoxMinX then
dDeltaMovePt2 = dPt2X - dBoxMinX
elseif dPt2X > dBoxMaxX then
dDeltaMovePt2 = dPt2X - dBoxMaxX
elseif dPt2Y < dBoxMinY then
dDeltaMovePt2 = dPt2Y - dBoxMinY
elseif dPt2Y > dBoxMaxY then
dDeltaMovePt2 = dPt2Y - dBoxMaxY
elseif dPt2Z < dBoxMinZ then
dDeltaMovePt2 = dPt2Z - dBoxMinZ
elseif dPt2Z > dBoxMaxZ then
dDeltaMovePt2 = dPt2Z - dBoxMaxZ
end
ptP1 = ptP1 + vtTg * dDeltaMovePt1
ptP2 = ptP2 + vtTg * dDeltaMovePt2
-- Non va considerata l'uscita dalla faccia sotto, pertanto va abbassata
-- 2021/02/26 Abilito anche uscita sotto
local b3MyBox = BBox3d( b3Box) ; --b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX())
+15 -2
View File
@@ -23,6 +23,7 @@
-- 2023/08/01 In caso di pezzi alti su macchina tipo PF i tagli doppi di lato non vengono usati, si usa il metodo standard.
-- 2023/09/12 In MakeFromTop abbassato a 590 mm il limite per convertire in LongCut.
-- 2023/10/27 In MakeFromTop corretto massimo materiale in caso di lavorazione da sotto.
-- 2023/12/07 Correzione in Classify in scelta ribaltamento trave quando si è in condizioni downUp.
-- Tabella per definizione modulo
local ProcessCut = {}
@@ -67,10 +68,22 @@ function ProcessCut.Classify( Proc, b3Raw)
local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw)
local bDownCut = ( vtN:getZ() <= dNzLimDwnUp)
if bDownCut then
-- recupero i dati della lama
local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide')
local sCutting = ML.FindCutting( sCutType, true, false)
local dMaxDepth = 0
local dMaxMat = 0
if EgtMdbSetCurrMachining( sCutting) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
end
end
-- calcolo l'ingombro orizzontale della faccia
local _, DimH, DimV = BL.GetFaceHvRefDim( Proc.Id, 0)
-- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli)
if DimH > 2 * BD.MAX_DIM_DICE then
-- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli oppure se tipo PF, taglio inclinato in Y e non taglio singolo orizzontale)
if DimH > 2 * BD.MAX_DIM_DICE or ( BD.C_SIMM and abs( vtN:getY()) > 0.1 and dMaxMat < DimH + BD.CUT_EXTRA) then
return true, true
end
end
+16 -3
View File
@@ -2,6 +2,7 @@
-- Gestione calcolo doppi tagli di lama per Travi
-- 2022/08/29 Implementata la fresatura dal lato per tagli problematici per PF1250.
-- 2023/03/22 Eliminata SetOpenSide locale, si usa quella di libreria.
-- 2023/12/07 Correzione in Classify in scelta ribaltamento trave quando si è in condizioni downUp
-- Tabella per definizione modulo
local ProcessDoubleCut = {}
@@ -54,10 +55,22 @@ function ProcessDoubleCut.Classify( Proc, b3Raw)
local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN)
local bDownCut = ( vtN:getZ() <= dNzLimDwnUp)
if bDownCut then
-- recupero i dati della lama
local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide')
local sCutting = ML.FindCutting( sCutType, true, false)
local dMaxDepth = 0
local dMaxMat = 0
if EgtMdbSetCurrMachining( sCutting) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
end
end
-- calcolo l'ingombro orizzontale della faccia
local _, DimH, DimV = BL.GetFaceHvRefDim( Proc.Id, nFac)
-- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli)
if DimH > 2 * BD.MAX_DIM_DICE then
local _, DimH = BL.GetFaceHvRefDim( Proc.Id, nFac)
-- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli oppure se tipo PF, taglio inclinato in Y e non taglio singolo orizzontale)
if DimH > 2 * BD.MAX_DIM_DICE or ( BD.C_SIMM and abs( vtN:getY()) > 0.1 and dMaxMat < DimH + BD.CUT_EXTRA) then
return true, true
end
end
+6 -2
View File
@@ -85,6 +85,8 @@
-- 2023/11/06 In MakeStaircaseStep gestito ritorno.
-- 2023/11/06 Migliorie per lavorazione con AngularTransmission con FAST.
-- 2023/11/30 Calcolo elevazione velocizzato e centralizzato tramite la funzione GetFaceElevation.
-- 2023/12/01 In MakeMoreFaces, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2).
-- 2023/12/06 In VerifySideMillAsSaw, se SIDEDEPTH non definita, viene calcolata.
-- Tabella per definizione modulo
local ProcessLapJoint = {}
@@ -548,12 +550,14 @@ local function VerifySideMillAsSaw( Proc, nAddGrpId, vtN, dDiam, dFacElev)
local dToolDiamOnSide = 0
local dThickMillOnSide = 0
local dMaxDepthOnSide = 0
local dTDiamStem = 50
if EgtMdbSetCurrMachining( sMillingOnSide) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dToolDiamOnSide = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiamOnSide
dThickMillOnSide = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dThickMillOnSide
dMaxDepthOnSide = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or dMaxDepthOnSide
dTDiamStem = EgtTdbGetCurrToolParam( MCH_TP.STEMDIAM) or dTDiamStem
dMaxDepthOnSide = min( EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or 999, 0.5 * ( dToolDiamOnSide - dTDiamStem)) or dMaxDepthOnSide
end
end
local bSpecialMillOnSide = ( dDiam > dThickMillOnSide - 10 * GEO.EPS_SMALL and dFacElev < dMaxDepthOnSide + 10 * GEO.EPS_SMALL)
@@ -4936,7 +4940,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
-- per rifinire gli angoli premio utensile diam 25 o da BD
dDiam = min( 2 * dDiam + 10 * GEO.EPS_SMALL, BD.MAXDIAM_POCK_CORNER)
else
dDiam = 2 * dDiam
dDiam = 3 * dDiam
end
end
sMchFindBackUp = sMchFind
+16 -10
View File
@@ -1,4 +1,4 @@
-- ProcessRoundArch.lua by Egaltech s.r.l. 2023/05/18
-- ProcessRoundArch.lua by Egaltech s.r.l. 2023/12/07
-- Gestione calcolo archi per Travi
-- Tabella per definizione modulo
@@ -118,10 +118,13 @@ function ProcessRoundArch.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
end
-- recupero i dati dell'utensile
local dMaxDepth = 0
local bCW = true
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
local dSpeed = EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) or 0
bCW = ( dSpeed >= 0)
end
end
-- ne verifico la lunghezza per eventuale spezzatura e lavorazione in doppio
@@ -180,6 +183,10 @@ function ProcessRoundArch.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
end
end
end
-- se lavorazione in doppio senza codolo, aggiungo sovrapposizione
if nDouble == 2 and dDimStrip < 10 * GEO.EPS_SMALL then
dDepth = dDepth + BD.MILL_OVERLAP / 2
end
-- se utensile orizzontale verso Y+, non in doppio e codolo da lasciare, devo invertire per lavorare sempre da Y-
if vtExtr:getY() > 0.707 and nDouble == 1 and bStripOnSide then
bToolInv = true
@@ -188,7 +195,7 @@ function ProcessRoundArch.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
for i = 1, nStep do
for j = 1, nDouble do
-- inserisco la lavorazione
local sName = 'Free_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
local sName = 'Arch_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchId = EgtAddMachining( sName, sMilling)
if not nMchId then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
@@ -212,20 +219,19 @@ function ProcessRoundArch.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
end
-- se seconda passata, inverto direzione di lavoro
if j == 2 then
EgtSetMachiningParam( MCH_MP.INVERT, true)
if ( j == 1 and not bToolInv) or ( j == 2 and bToolInv) then
EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( bCW, true, false))
else
EgtSetMachiningParam( MCH_MP.INVERT, EgtIf( bCW, false, true))
end
-- assegno affondamento
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
-- assegno lato di lavoro
if bToolInv then
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
else
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
end
-- assegno lato di lavoro (per avere lavorazione climb)
EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( bCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT))
-- posizione braccio porta testa
local nSCC = MCH_SCC.NONE
if not BD.C_SIMM and not BD.TURN then
nSCC = MCH_SCC.ADIR_XP
if Proc.Head then
nSCC = MCH_SCC.ADIR_XP
elseif Proc.Tail then
+8 -1
View File
@@ -1,6 +1,13 @@
==== Beam Update Log ====
Versione 2.5l1 /01/12/2023)
Versione 2.5l2 (20/12/2023)
- Modif : in Cut e DoubleCut modifica in scelta ribaltamento trave quando si è in condizioni downUp
- Modif : migliorato e esteso il funzionamento di SideMillAsSaw
- Modif : in LapJoint con più facce, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2)
- Modif : in RoundArch aggiunta gestione senso di rotazione fresa per lavorare sempre in concordanza
- Fixed : correzione a GetFaceWithMostAdj per calcoli con facce che fanno ombra
Versione 2.5l1 (01/12/2023)
- Added : in LongDoubleCut aggiunta Q05 per utilizzo lama anche in feature cieche conme per LongCut
- Modif : Migliorato e velocizzato il calcolo elevazione (EgtSurfTmFacetElevationInBBox)
- Fixed : in MakeTwo di FacesBySaw raffinamento calcolo vtRef per casi dubbi.
+2 -2
View File
@@ -1,6 +1,6 @@
-- Version.lua by Egaltech s.r.l. 2023/11/16
-- Version.lua by Egaltech s.r.l. 2023/12/15
-- Gestione della versione di Beam
NAME = 'Beam'
VERSION = '2.5l1'
VERSION = '2.5l2'
MIN_EXE = '2.5l1'