From 2d385229d2625b58f9936708910f9d791e255bb0 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 24 Feb 2026 08:43:01 +0100 Subject: [PATCH] OmagCUT : - piccole modifiche per scelta inizio e stacco lato per Waterjet. --- CadCuts/NestPageUC.xaml.vb | 91 ++++++++++---------------------- Machine/AlarmsPageUC.xaml.vb | 19 ++++++- Resources/NewIcons/SPLIT-WJ.png | Bin 9133 -> 917 bytes Resources/NewIcons/START-WJ.png | Bin 2077 -> 2550 bytes 4 files changed, 45 insertions(+), 65 deletions(-) diff --git a/CadCuts/NestPageUC.xaml.vb b/CadCuts/NestPageUC.xaml.vb index ff1eff3..26a01ed 100644 --- a/CadCuts/NestPageUC.xaml.vb +++ b/CadCuts/NestPageUC.xaml.vb @@ -107,27 +107,26 @@ Public Class NestPageUC RemovePartBtn.ToolTip = EgtMsg(90333) ' Remove part - Elimina pezzo SelectAllBtn.ToolTip = EgtMsg(90334) ' Select All - Seleziona Tutto DeselectAllBtn.ToolTip = EgtMsg(90335) ' Deselect All - Deseleziona Tutto - DragRettangleBtn.ToolTip = EgtMsg(91207) ' Strech ' Nascondo i pulsanti in uso quando attivo la modalità REG UG1_Reg.Visibility = Visibility.Hidden - Dim nColumsIn_UG1 As Integer = 2 + Dim nColumsIn_UG1 As Integer = 1 ' gestisco la visualizzazione del comando PAN (per il drag dei rettangoli) m_bIsVisibleDragRettangle = (GetPrivateProfileInt(S_NEST, K_DRAG_RETTANGLE, 0, m_MainWindow.GetIniFile()) <> 0) - If Not m_bIsVisibleDragRettangle Then - nColumsIn_UG1 = 1 - DragRettangleBtn.Visibility = Visibility.Collapsed - Else + If m_bIsVisibleDragRettangle Then + nColumsIn_UG1 += 1 DragRettangleBtn.Visibility = Visibility.Visible + DragRettangleBtn.ToolTip = EgtMsg(91207) ' Allunga/accorcia Rettangoli + Else + DragRettangleBtn.Visibility = Visibility.Collapsed End If - ' gestisco la visualizzazione del comando Splt (per i tagli waterjet) + ' gestisco la visualizzazione del comando Split (per i tagli waterjet) If m_MainWindow.m_CurrentMachine.WaterJettingActive Then nColumsIn_UG1 += 1 SplitCurveWJBtn.Visibility = Visibility.Visible - '91133=Separa - SplitCurveWJBtn.ToolTip = EgtMsg(91133) + SplitCurveWJBtn.ToolTip = EgtMsg(91133) ' Separa Lato per Wj Else SplitCurveWJBtn.Visibility = Visibility.Collapsed End If @@ -138,8 +137,7 @@ Public Class NestPageUC If m_MainWindow.m_CurrentMachine.WaterJettingActive Then nColumnIn_UG0 += 1 StartCurveWJBtn.Visibility = Visibility.Visible - ' 91132=Start - StartCurveWJBtn.ToolTip = EgtMsg(91132) + StartCurveWJBtn.ToolTip = EgtMsg(91132) ' Imposta Inizio per Wj Else StartCurveWJBtn.Visibility = Visibility.Collapsed End If @@ -279,10 +277,8 @@ Public Class NestPageUC ' Verifico di essere il gestore attivo e non in modalità registrazione If Not m_bActive Or m_bRegister Then Return ' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo - If e.Button <> Windows.Forms.MouseButtons.Left Or - Not m_bSelectCurv Then - Return - End If + If Not m_bSelectCurv Or e.Button <> Windows.Forms.MouseButtons.Left Then Return + ' Se esiste un elemento selezionato EgtResetMark(m_CurrSelectedSawCurv) m_CurrToolFromSelectedSawCurv = String.Empty @@ -337,19 +333,7 @@ Public Class NestPageUC EgtSetMark(nIdMachining) EgtSelectObj(nIdMy) EgtDraw() - - 'Dim nIdSaw As Integer = EgtGetFirstNameInGroup(nIdPV, "Saw" & nIdMy.ToString) - 'If Not EgtGetGroupObjs(nIdSaw) Then - ' m_CurrSelectedSawCurv = nIdSaw - ' m_CurrSelectedCurv = nIdMy - ' EgtSetMark(nIdSaw) - ' EgtSelectObj(nIdMy) - ' EgtDraw() - ' Exit While - 'End If - Exit While - End If End If nIdMy = EgtGetNextObjInSelWin() @@ -365,11 +349,9 @@ Public Class NestPageUC Private Sub OnMyMouseDownSceneSplitCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs) ' Verifico di essere il gestore attivo e non in modalità registrazione If Not m_bActive Or m_bRegister Then Return - ' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo - If e.Button <> Windows.Forms.MouseButtons.Left Or - Not m_bIsCheckedSplitCurveWJ Then - Return - End If + ' Se non abilitata separazione lato waterjet o bottone mouse non Left, esco + If Not m_bIsCheckedSplitCurveWJ Or e.Button <> Windows.Forms.MouseButtons.Left Then Return + ' Se esiste un elemento selezionato EgtResetMark(m_nIdSelectedWaterJet) ' Verifico se selezionato indicativo di pezzo @@ -392,26 +374,16 @@ Public Class NestPageUC ' recupero il gruppo della lavorazione associata Dim nIdParentPart As Integer = EgtGetParent(nIdParent) Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, NAME_PREVIEW) - ' VERIFICA: recupero l'elenco delle Preview di Tipo WaterJet associate a questo Part + ' recupero l'elenco delle Preview di Tipo WaterJet associate a questo Part Dim ListGroup As List(Of Integer) = ResearchGropuWJ(nIdParent, nIdPV) - ' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo - Dim ListGroupSaw As List(Of Integer) = ResearchGropuSaw(nIdParent, nIdPV) - ' se non esiste almeno 1 Preview di tipo WaterJet + ' se esiste almeno 1 Preview di tipo WaterJet If ListGroup.Count > 0 Then m_nIdSelectedSideWJ = nIdMy - Dim nValInfo As String = 1 - Dim nNewValInfo As Integer = nValInfo + Dim nValInfo As Integer = 0 If EgtGetInfo(nIdMy, INFO_JOINENTITY, nValInfo) Then - If nValInfo = 1 Then - nNewValInfo = 0 - Else - nNewValInfo = 1 - End If - Else - ' se manca l'info allora il taglio sValInfo = "1" quindi separo il taglio - nNewValInfo = 0 + nValInfo = If( nValInfo = 1, 0, 1) End If - EgtSetInfo(nIdMy, INFO_JOINENTITY, nNewValInfo) + EgtSetInfo(nIdMy, INFO_JOINENTITY, nValInfo) ' Ricalcolo tutte le lavorazioni Dim nWarn As Integer = 0 ResetAllMachinings(nWarn) @@ -419,14 +391,14 @@ Public Class NestPageUC ListGroup = ResearchGropuWJ(nIdParent, nIdPV) Dim nIdWJ As Integer = GetPVIdFromIdSide(ListGroup, nIdMy) GetCurrentPVFromIdSide(ListGroup, nIdMy, nIdWJ, nIdParent) - ' assegno un identificativo grafico per inidcare che è un taglio separato - If nNewValInfo = 0 Then + ' assegno un identificativo grafico per indicare che è un taglio separato + If nValInfo = 0 Then AssignFlagOnGraphic(nIdMy, nIdParentPart) Else EraseFlagOnGraphic(nIdMy, nIdParentPart) End If - m_nIdSelectedWaterJet = nIdWJ ' salvo il valore del PreView evidenziato + m_nIdSelectedWaterJet = nIdWJ EgtSetMark(nIdWJ) EgtSelectObj(nIdMy) EgtDraw() @@ -437,18 +409,14 @@ Public Class NestPageUC End If nIdMy = EgtGetNextObjInSelWin() End While - Return End Sub - ' funzione per la selezione del punto di inizio tagli waterjet (percorso chiuso) + ' funzione per l'indicazione del punto di inizio dei tagli waterjet (percorso chiuso) Private Sub OnMyMouseDownSceneStartCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs) ' Verifico di essere il gestore attivo e non in modalità registrazione If Not m_bActive Or m_bRegister Then Return - ' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo - If e.Button <> Windows.Forms.MouseButtons.Left Or - Not m_bIsCheckedStartCurveWJ Then - Return - End If + ' Se non abilitato spostamento punto inizio waterjet o bottone mouse non Left, esco + If Not m_bIsCheckedStartCurveWJ Or e.Button <> Windows.Forms.MouseButtons.Left Then Return ' Acquisisco punto da disegno Dim ptStartCurv As New Point3d @@ -478,8 +446,7 @@ Public Class NestPageUC If EgtGetType(nIdMy) = GDB_TY.CRV_ARC OrElse EgtGetType(nIdMy) = GDB_TY.CRV_COMPO OrElse EgtGetType(nIdMy) = GDB_TY.CRV_LINE Then ' verifico che il contorno sia chiuso, altrimenti esco If Not VerifyOutLoopIsClosed(nIdParent) Then - ' 91131=Il contorno non è chiuso - m_CurrProjPage.SetWarningMessage(EgtMsg(91131)) + m_CurrProjPage.SetWarningMessage(EgtMsg(91131)) ' Il contorno non è chiuso Exit While End If ' recupero il gruppo della lavorazione associata @@ -489,7 +456,7 @@ Public Class NestPageUC Dim ListGroup As List(Of Integer) = ResearchGropuWJ(nIdParent, nIdPV) ' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo Dim ListGroupSaw As List(Of Integer) = ResearchGropuSaw(nIdParent, nIdPV) - ' se non esiste almeno 1 Preview di tipo WaterJet + ' se esiste 1 Preview di tipo WaterJet e nessuno di tipo Saw If ListGroup.Count = 1 And ListGroupSaw.Count = 0 Then EgtSetInfo(nIdParent, INFO_START, ptStartCurv) ' Ricalcolo tutte le lavorazioni @@ -504,8 +471,7 @@ Public Class NestPageUC EgtDraw() Exit While Else - ' 91131=Il contorno non è chiuso - m_CurrProjPage.SetWarningMessage(EgtMsg(91131)) + m_CurrProjPage.SetWarningMessage(EgtMsg(91131)) ' Il contorno non è chiuso Exit While End If @@ -513,7 +479,6 @@ Public Class NestPageUC End If nIdMy = EgtGetNextObjInSelWin() End While - Return End Sub #Region "DRAG RETTANGLE" diff --git a/Machine/AlarmsPageUC.xaml.vb b/Machine/AlarmsPageUC.xaml.vb index f15777c..2717f53 100644 --- a/Machine/AlarmsPageUC.xaml.vb +++ b/Machine/AlarmsPageUC.xaml.vb @@ -352,7 +352,14 @@ Public Class AlarmsPageUC AutomaticChBx.IsChecked = (GetPrivateProfileInt(S_NEST, K_AUTOMATICOPTIMIZE, 0, m_MainWindow.GetIniFile()) <> 0) AdjustGhigliottinaTextOnAutomaticOrCompleteCuts() ' Flag per inserire la puasa dopo la sgrossatura delle cornici - FramePauseChBx.IsChecked = (GetPrivateProfileInt(S_MACH_FRAME, K_MACH_PAUSE, 1, m_MainWindow.GetMachIniFile()) <> 0) + If m_MainWindow.m_CurrentMachine.bSawRoughing Then + FrameGpBx.Visibility = Visibility.Visible + FramePauseChBx.IsChecked = (GetPrivateProfileInt(S_MACH_FRAME, K_MACH_PAUSE, 1, m_MainWindow.GetMachIniFile()) <> 0) + Else + FrameGpBx.Visibility = Visibility.Hidden + FramePauseChBx.IsChecked = False + End If + ' Aggiorno messaggio sovratavola con numero tavola If GetTableCount() > 1 Then AdditionalTableTxBl.Text = EgtMsg(90936) & " " & GetCurrentTable().ToString() ' Altezza sovratavola @@ -392,7 +399,15 @@ Public Class AlarmsPageUC UseLaserOriginChBx.IsChecked = (nUseLaserOrigin <> 0) End If - EnableFinalSawCutChBx.IsChecked = m_MainWindow.m_CurrentMachine.bEnableFinalSawCut + ' Taglio finale + If m_MainWindow.m_CurrentMachine.bSawing Then + FinalSawCutGpBx.Visibility = Visibility.Visible + EnableFinalSawCutChBx.IsChecked = m_MainWindow.m_CurrentMachine.bEnableFinalSawCut + Else + FinalSawCutGpBx.Visibility = Visibility.Hidden + EnableFinalSawCutChBx.IsChecked = False + End If + End Sub ' aggiorna le text delle lavorazioni (la selezione avviene nella pagina del grezzo o dalla pagina del progetto corrente) diff --git a/Resources/NewIcons/SPLIT-WJ.png b/Resources/NewIcons/SPLIT-WJ.png index 6d75944609863b99d1f919447836c5de42528ec6..bf574698222cde3208262482e42a75a12afad669 100644 GIT binary patch delta 876 zcmZ4MK9zlfay?^Hrn7T^r?ay{Kv8~LW=<*tgU0!(6MZ#Y0%eZYr*%j~&S+J+mlP4` zwCRd~rkC;J8r?nLkMWqkpLtLEW`tIB>ciyZ4I4J5Whbtl@+olBmQ6}#mp<>$zv7cM zC3^es*LSM@zR%-stU0#j&Z)c&Z{`R~_hwx--W>JSICM*pdxu&5-IC41A1AV;9zU)t znzi?3P~@NdE9&C0!dfN|9gSZt8?U_|Si~YYIy0FMrGr^S}L_{K)9Y)*j8i#IOw)YVBX~*Ok9sR#naA zxlkj-w(?%Ibx8i<>(ids%2nOFF32MP@Q~iG@J|LG^nQf}cFQ;%W}6c$W}3`?&V1oZ z#nslk^jTBcf;1~^C+5#;JeIv;uJ)I2o6mogRavt7qxOy4?R{HP&QGr__sz`bub=nv zxAHIE+{;BvgIUXLCht{}sFy5pjVKAuPb(=;EJ|evNX*PD(erZ+Q83jr)H5{f;t)H> zz`)R#8sVAd>8ZuQ0pzeUNHMZ9FalX#Kr9Vq2Lag{jLcwhCLr68k%>VNNJjy2W;+X5 zJO{`I0Z&Orh8N6Wx*p6xx0ZncXv73|1{R=V10!Pt#sv_A|NjT;X9)8AXSn@m`cEM5 zm#2$kNJZS+TaJ891_G^#uUx;XJ@Wms#Nzx)3DL=nF&7^GpX7GR>7@7l9Seb027CSe zlPS@by|+eV>6|xl@%7tpeV4vdZ(F=K#w|W0JLG-uwteRLjXs_8S{ASE{x;uJ`zi0c z`Rb2zUN5WO7wci4;C)Q_I+N{s`)}F`YZj{5Uf84lFu=aNS3qEiU**;roGS&HnyzTB z7c*8gb#j)I)o7n4j85K_K U3}0$7u@fZV>FVdQ&MBb@0M2V+<^TWy literal 9133 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 Wt}BJLScsPxT6 zh9P@)Zpl)VZMcIXku4FD@7(+Qo$vRY@9UiB>-~5w@7MdE_c^cM#kb(Mm4P^48yiQw zjg5k15Y5LofC2)k58lhNSGRSN?FM|3kpyOf^0cR$lXdlo_=&UFM+|iHc8`d`YTmTW zxSIx%GUMgNVpaM0lgsXII91nFqYU4EZKaKz^Seu|+gsv9o!>4Lj%D=Ja9&Ya%LQL^W(UN{Gi_U}}v=Oyqm*E=vGgjE85Anz1_eO&V z-Ax_jV7$ZO2ZzHy#i}X6rqYRa05%1rs1l(mcd~oZC?#Oyf`6Y(b z*oN<3N~w7L$4;=rw~nEQ=8~5hUnA_KyyEcsBCZ5gn+$D2ppysSS$!NmN88%Zp4IEB zO*@f6c4ZAkTYMIa30ry+8Fd(6tnOkSF->YtEJVvkPLE1JkI!^y?_S!_UDMum zbxM`B>=Y=tj4<#L95`9Ls90v&sKZYYa6S=ko<+-#?eTy5yXNK=dvIM&`El90=GbIX zMveDiZbX>9FAV?+*Y}imVS&RzB^UTZ%|IZ~A^I6YFbE_J|65>CegTq~lnTMQgfFyX}&XaEv^q)cikN-Bj6d3f0@4x5&J_`czM%)$zL3zEpdRSd> z(fFj!Y#7WN~;F$cU$I=$i}}l+R*x_-F^Oz` zKB>WYS~H83x<9up6K-D?4vgupEzR1H9*uq=mmp#)u{lC2a~q9H(f2WfN)n-Z(95cJ)JUNV5I|rOWrW{Rt>7L5Ė&b_9?7vTp4}0|C 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