From 5da9d312d8d3cddb0ecbd5ed22a3b8e97d8f4d92 Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 17 Apr 2023 17:40:28 +0200 Subject: [PATCH] =?UTF-8?q?DataWall=20:=20-=20in=20gestione=20batch=20TS3v?= =?UTF-8?q?7=20aggiunta=20gestione=20flag=20per=20rotazione=20grezzo=20di?= =?UTF-8?q?=20180deg=20(da=20parametro=20macchina=20WD.RAWPART=5FROT)=20-?= =?UTF-8?q?=20in=20DoubleCut=20passate=20a=20LapJoint=20si=20trasforma=20i?= =?UTF-8?q?l=20Gruppo=20da=201=20a=203=20e=20da=202=20a=204=20(altrimenti?= =?UTF-8?q?=20sbaglia=20a=20ordinare=20le=20facce)=20-=20in=20FreeContour?= =?UTF-8?q?=20e=20LapJoint=20la=20lavorazione=20CleanCorner=20viene=20semp?= =?UTF-8?q?re=20forzata=20con=20lato=20di=20lavoro=20in=20centro=20-=20in?= =?UTF-8?q?=20LapJoint=20razionalizzata=20gestione=20parametri=20Q=20ed=20?= =?UTF-8?q?eliminta=20gestione=20forzatura=20lama=20non=20usatain=20realt?= =?UTF-8?q?=C3=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BatchProcess.lua | 10 ++++++++-- LuaLibs/WProcessDoubleCut.lua | 7 +++++-- LuaLibs/WProcessFreeContour.lua | 8 +++++--- LuaLibs/WProcessLapJoint.lua | 26 +++++++++++--------------- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/BatchProcess.lua b/BatchProcess.lua index b7a0bfe..a6c3a54 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -1,4 +1,4 @@ --- BatchProcess.lua by Egaltech s.r.l. 2023/04/09 +-- BatchProcess.lua by Egaltech s.r.l. 2023/04/17 -- Gestione calcolo batch disposizione e lavorazioni per Pareti -- 2020/07/24 Nuvola di punti riferita allo Zero Tavola. -- 2020/10/28 Corretto spostamento pezzi per rotazioni (0 o 180) e inversioni( 0, 90, 180, o 270). @@ -13,6 +13,7 @@ -- 2022/04/28 In info generazione aggiunta indicazione se 64bit. -- 2022/05/02 Consentito allargamento area disponibile per grezzi su tavola da WallData. -- 2023/04/09 Aggiunta gestione flag per taglio feature con outline (da WD.CUT_WITH_OUTLINE). +-- 2023/04/17 Aggiunta gestione flag per rotazione grezzo di 180deg (da WD.RAWPART_ROT). -- Intestazioni require( 'EgtBase') @@ -395,7 +396,12 @@ if bToProcess then PostErrView( WALL.ERR, WALL.MSG) return end - + + -- Se richiesto per la macchina, ruoto il grezzo di 180 gradi attorno a Z + if WD.RAWPART_ROT and abs( WD.RAWPART_ROT - 180) < 1 then + EgtRotateRawPart( EgtGetFirstRawPart() or GDB_ID.NULL, Z_AX(), 180) + end + -- Imposto Nome file CN local _, sName, _ = EgtSplitPath( WALL.FILE) EgtSetInfo( EgtGetCurrMachGroup(), 'NcName', sName .. '.cnc') diff --git a/LuaLibs/WProcessDoubleCut.lua b/LuaLibs/WProcessDoubleCut.lua index 74a0bc4..92e2ac9 100644 --- a/LuaLibs/WProcessDoubleCut.lua +++ b/LuaLibs/WProcessDoubleCut.lua @@ -1,5 +1,6 @@ --- WProcessDoubleCut.lua by Egaltech s.r.l. 2021/04/28 +-- WProcessDoubleCut.lua by Egaltech s.r.l. 2023/04/17 -- Gestione calcolo doppi tagli di lama per Pareti +-- 2023/04/17 Quando si chiama LapJoint si trasforma il Gruppo da 1 a 3 e da 2 a 4. -- Tabella per definizione modulo local WPDC = {} @@ -58,7 +59,9 @@ function WPDC.Make( Proc, nRawId, b3Raw) -- se singola faccia, passo a quella lavorazione if Proc.Fct == 1 then return Cut.Make( Proc, nRawId, b3Raw) end -- altrimenti due facce e passo alla LapJoint - return LapJoint.Make( Proc, nRawId, b3Raw) + local LapProc = { PartId = Proc.PartId, Id = Proc.Id, Grp = Proc.Grp + 2, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg, + Diam = Proc.Diam, Fcs = Proc.Fcs, Fce = Proc.Fce, CutId = Proc.CutId, TaskId = Proc.TaskId} + return LapJoint.Make( LapProc, nRawId, b3Raw) end --------------------------------------------------------------------- diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index f57cec3..d72f34b 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -1,4 +1,4 @@ --- ProcessFreeContour.lua by Egaltech s.r.l. 2023/04/14 +-- ProcessFreeContour.lua by Egaltech s.r.l. 2023/04/17 -- Gestione calcolo profilo libero per Pareti -- 2021/11/15 Penna e chiodature sono sempre riportate sulla faccia sopra anche se nel progetto sono sotto. -- 2021/12/10 In taglio con lama aggiunta gestione SCC per testa Gearbox. @@ -17,6 +17,7 @@ -- 2023/02/28 In lavorazioni con sega a catena per invertire lato mandrino ora Invert + Left invece di MCH_SCC.OPPOSITE. -- 2023/03/08 In lavorazione con fresa, se imposto Tool_ID non si controlla più possa lavorare di testa. -- 2023/04/14 Aggiunta pulitura spigoli Q05=1 anche su sole fresature. +-- 2023/04/17 Lavorazione CleanCorner sempre forzata con lato di lavoro in centro. -- Tabella per definizione modulo local WPF = {} @@ -300,7 +301,7 @@ local function ReorderFaces( nIdSurf, nNumFacet) end -- ordino le facce in modo da avere una sequenza di facce concatenate for i = 1, #vAdj - 1 do - -- recupero l'angolo con la faccia precedente + -- recupero l'angolo con la faccia successiva local bAdj, _, _, _ = EgtSurfTmFacetsContact( nIdSurf, i-1, i, GDB_ID.ROOT) -- se non ho adiacenza if not bAdj then @@ -1042,10 +1043,11 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp EgtSetMachiningParam( MCH_MP.ENDADDLEN, 10) -- setto affondamento 0 EgtSetMachiningParam( MCH_MP.DEPTH, 0) + -- forzo lato correzione a centrato + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.CENTER) -- Note utente con dichiarazione nessuna generazione sfridi per Vmill local sUserNotes = 'VMRS=0;' -- aggiungo alle note massima elevazione --- sUserNotes = sUserNotes .. 'MaxElev=' .. EgtNumToString( dMaxDepth, 1) .. ';' sUserNotes = sUserNotes .. 'MaxElev=' .. EgtNumToString( 0.0, 1) .. ';' EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) if not EgtApplyMachining( true, false) then diff --git a/LuaLibs/WProcessLapJoint.lua b/LuaLibs/WProcessLapJoint.lua index 3f3ece2..3df915d 100644 --- a/LuaLibs/WProcessLapJoint.lua +++ b/LuaLibs/WProcessLapJoint.lua @@ -1,4 +1,4 @@ --- WProcessLapJoint.lua by Egaltech s.r.l. 2023/04/15 +-- WProcessLapJoint.lua by Egaltech s.r.l. 2023/04/17 -- Gestione calcolo mezzo-legno per Pareti -- 2021/08/27 DS Se tre o più facce con flag PCKT=1 forzo svuotatura con fresa (per Variant). -- 2021/08/29 DS Se svuotatura di fianco setto flag per farla dopo i tagli. @@ -18,6 +18,8 @@ -- 2023/03/09 In MakeMoreFaces aggiunta la possibilità di lavorare le fessure con la lama. -- 2023/03/17 In MakeByMill gestito correttamente il caso di Workside destro. -- 2023/04/15 Corretta scelta tipo lavorazione 'SideGroove' aggiungendo massimo spessore. +-- 2023/04/17 Sistemata gestione parametri Q, eliminando quello non usato di forzatura lama e abilitandoli anche per DoubleCut. +-- Lavorazione CleanCorner sempre forzata con lato di lavoro in centro. -- Tabella per definizione modulo local WPL = {} @@ -37,11 +39,10 @@ local WHISK_SAFE = 5 local MIN_LEN_CUT = 30 -- variabili assegnazione parametri Q -local Q_FORCE_BLADE = '' -- i local Q_SIDE_MILL = '' -- d local Q_CORNER_CUT = '' -- i --- variabile settaggio doppia lavorazione su angoo > 90 +-- variabile settaggio doppia lavorazione su angolo > 90 local bMakeTwinCut = true -- angolo sottosquadra ammesso per fresa cono 30° local dAngleSmall = 70 @@ -62,20 +63,19 @@ end local function AssignQIdent( Proc) -- reset assegnazione parametri Q - Q_FORCE_BLADE = '' Q_SIDE_MILL = '' Q_CORNER_CUT = '' - if Proc.Grp == 0 and Proc.Prc == 12 then - Q_FORCE_BLADE = 'Q01' -- i + if Proc.Prc == 11 then + Q_SIDE_MILL = 'Q02' -- i + Q_CORNER_CUT = 'Q05' -- i + elseif Proc.Prc == 12 then Q_SIDE_MILL = 'Q02' -- i Q_CORNER_CUT = '' -- i elseif ( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 30 then - Q_FORCE_BLADE = '' -- i Q_SIDE_MILL = 'Q08' -- i Q_CORNER_CUT = 'Q05' -- i else - Q_FORCE_BLADE = 'Q01' -- i Q_SIDE_MILL = 'Q03' -- i Q_CORNER_CUT = 'Q05' -- i end @@ -85,11 +85,6 @@ end --------------------------------------------------------------------- local function EvaluateQParam( Proc) - local bForceUseBlade = false - if #Q_FORCE_BLADE == 0 or EgtGetInfo( Proc.Id, Q_FORCE_BLADE, 'i') == 1 then - bForceUseBlade = true - end - -- Verifico se utilizzare la fresa di lato : -- 0 : niente -- 1 : utilizzo fresa di lato (alla faccia selezionata) @@ -102,7 +97,7 @@ local function EvaluateQParam( Proc) -- 3 : scarico corner (tipo foro). local nTypeCornerCut = EgtGetInfo( Proc.Id, Q_CORNER_CUT, 'i') or 0 - return nTypeCornerCut, nUseSideMillAsBlade, bForceUseBlade + return nTypeCornerCut, nUseSideMillAsBlade end --------------------------------------------------------------------- @@ -1015,10 +1010,11 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp EgtSetMachiningParam( MCH_MP.ENDADDLEN, 10) -- setto affondamento 0 EgtSetMachiningParam( MCH_MP.DEPTH, 0) + -- forzo lato correzione a centrato + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.CENTER) -- Note utente con dichiarazione nessuna generazione sfridi per Vmill local sUserNotes = 'VMRS=0;' -- aggiungo alle note massima elevazione --- sUserNotes = sUserNotes .. 'MaxElev=' .. EgtNumToString( dMaxDepth, 1) .. ';' sUserNotes = sUserNotes .. 'MaxElev=' .. EgtNumToString( 0.0, 1) .. ';' EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) if not EgtApplyMachining( true, false) then