From fd8ac8f528980645489afff9691dc771a9e00146 Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 7 Feb 2022 18:07:05 +0100 Subject: [PATCH] OmagCUT : - modifiche per gestione migliorata ventose su macchine tipo Digitale5 con forti limiti di corsa in X - da polishing tolte epiclici su passate a zigzag. --- CadCuts/VacuumCups.vb | 22 ++++++++++++++++++---- Constants/ConstGen.vb | 2 ++ Constants/ConstKitData.vb | 1 - Machine/PolishingsPageUC.xaml | 8 ++++---- MainWindow.xaml.vb | 4 ++-- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/CadCuts/VacuumCups.vb b/CadCuts/VacuumCups.vb index a6fe441..d8560d1 100644 --- a/CadCuts/VacuumCups.vb +++ b/CadCuts/VacuumCups.vb @@ -8,6 +8,8 @@ Module VacuumCups Private m_nVacId As Integer = GDB_ID.NULL Private m_nRefId As Integer = GDB_ID.NULL Private m_dPreferredRot As Double = 0 + Private m_dPrefVertRotXMinus As Double = 0 + Private m_dPrefVertRotXPlus As Double = 0 Private m_dDripRefAng As Double = 0 ' Nome del gruppo temporaneo per le ventose @@ -74,6 +76,9 @@ Module VacuumCups If m_nVacId = GDB_ID.NULL Then Return False ' Angolo di rotazione preferito EgtGetInfo( m_nVacId, KEY_VACLAY_PREFROT, m_dPreferredRot) + ' Angoli di rotazione preferiti per ventosa in verticale (lungo Y) a sinistra e a destra del centro tavola + EgtGetInfo( m_nVacId, KEY_VACLAY_PREFVROTXMINUS, m_dPrefVertRotXMinus) + EgtGetInfo( m_nVacId, KEY_VACLAY_PREFVROTXPLUS, m_dPrefVertRotXPlus) ' Direzione di riferimento per tagli Drip EgtGetInfo( m_nVacId, KEY_VACLAY_DRIPREFDIR, m_dDripRefAng) ' Nascondo il gruppo ma rendo visibili le curve di contorno delle ventose @@ -363,6 +368,9 @@ Module VacuumCups If b3Vac.IsEmpty() Then Return INFINITO ' Se box maggiore di quello del pezzo, scarto soluzione If b3Vac.Radius() > b3Raw.Radius() Then Return INFINITO + ' Recupero l'area della tavola + Dim b3Tab As New BBox3d + EgtGetTableArea(1, b3Tab) ' Determino il movimento vtMove = ptRawCen - b3Vac.Center() b3Vac.Move(vtMove) @@ -374,11 +382,19 @@ Module VacuumCups frMinRect.VersX().ToSpherical(dLen, dAngVertDeg, dAngOrizzDeg) dRotAngDeg = dAngOrizzDeg If b3Vac.DimY() > b3Vac.DimX() + EPS_SMALL Then dRotAngDeg -= 90 + Dim dPreferredRot As Double = m_dPreferredRot + If Math.Abs( dRotAngDeg - 90) < 45 Or Math.Abs( dRotAngDeg - 270) < 45 Then + If frMinRect.Orig().x < b3Tab.Center().x Then + dPreferredRot = m_dPrefVertRotXMinus + else + dPreferredRot = m_dPrefVertRotXPlus + End If + End If Dim dAngDelta As Double = If( Math.Abs( b3Vac.DimY() - b3Vac.DimX()) < 10 * EPS_SMALL, 90, 180) - While dRotAngDeg - m_dPreferredRot >= dAngDelta / 2 + While dRotAngDeg - dPreferredRot >= dAngDelta / 2 dRotAngDeg -= dAngDelta End While - While dRotAngDeg - m_dPreferredRot <= -dAngDelta / 2 + While dRotAngDeg - dPreferredRot <= -dAngDelta / 2 dRotAngDeg += dAngDelta End While Else @@ -431,8 +447,6 @@ Module VacuumCups ptRef.Move(vtMove) ptRef.Rotate(ptRotCen, Vector3d.Z_AX(), dRotAngDeg) ' Ne calcolo la distanza dal centro della tavola - Dim b3Tab As New BBox3d - EgtGetTableArea(1, b3Tab) Dim dDist As Double = Point3d.DistXY(ptRef, b3Tab.Center()) Return dDist End Function diff --git a/Constants/ConstGen.vb b/Constants/ConstGen.vb index 594c859..fb2ed9e 100644 --- a/Constants/ConstGen.vb +++ b/Constants/ConstGen.vb @@ -92,6 +92,8 @@ Module ConstGen Public Const KEY_VACLAY_SEL As String = "Sel" ' Info in gruppo layout per angolo di rotazione preferito Public Const KEY_VACLAY_PREFROT As String = "PreferredRot" + Public Const KEY_VACLAY_PREFVROTXMINUS As String = "PrefVertRotXMinus" + Public Const KEY_VACLAY_PREFVROTXPLUS As String = "PrefVertRotXPlus" ' Info in gruppo layout per direzione di riferimento ventose per tagli da sotto Public Const KEY_VACLAY_DRIPREFDIR As String = "DripRefDir" ' Info in asse rotante ventosa per step discreti diff --git a/Constants/ConstKitData.vb b/Constants/ConstKitData.vb index 06379da..f8c3641 100644 --- a/Constants/ConstKitData.vb +++ b/Constants/ConstKitData.vb @@ -26,6 +26,5 @@ Public Const K_LILEN As String = "LiLen" Public Const K_LIHEIGHT As String = "LiHeight" Public Const K_LILOAD As String = "LiLoad" - End Module diff --git a/Machine/PolishingsPageUC.xaml b/Machine/PolishingsPageUC.xaml index 2f7cc1a..4ae4006 100644 --- a/Machine/PolishingsPageUC.xaml +++ b/Machine/PolishingsPageUC.xaml @@ -203,15 +203,15 @@ - - + + - - + + diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb index 8f7ba52..258d352 100644 --- a/MainWindow.xaml.vb +++ b/MainWindow.xaml.vb @@ -323,8 +323,8 @@ Class MainWindow ' Verifico abilitazione nesting automatico m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey) ' Recupero opzioni della chiave - Dim bKey As Boolean = EgtGetKeyLevel(9423, 2401, 1, m_nKeyLevel) And - EgtGetKeyOptions(9423, 2401, 1, m_nKeyOptions) + Dim bKey As Boolean = EgtGetKeyLevel(9423, 2402, 1, m_nKeyLevel) And + EgtGetKeyOptions(9423, 2402, 1, m_nKeyOptions) ' Verifico abilitazione prodotto Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE) ' Inizializzazione generale di EgtInterface