Inizio gestione cambio tavola

This commit is contained in:
Nicola Pievani
2025-07-22 12:19:24 +02:00
parent 5e824bf894
commit da178396f5
7 changed files with 321 additions and 1 deletions
+102 -1
View File
@@ -1,5 +1,6 @@
Imports EgtWPFLib5
Imports EgtUILib
Imports OmagOFFICE.ChangeTableVM
Public Class NestingTabVM
Inherits VMBase
@@ -2204,6 +2205,8 @@ Public Class NestingTabVM
While nId <> GDB_ID.NULL
' Recupero l'identificativo del pezzo cui appartiene
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
Dim sNamePartId As String = String.Empty
EgtGetName(nPartId, sNamePartId)
Dim bPartInTable As Boolean = (EgtGetParent(nPartId) = GetRawId())
If EgtIsPart(nPartId) Or bPartInTable Then
Dim nStat As Integer = GDB_ST.ON_
@@ -2241,7 +2244,105 @@ Public Class NestingTabVM
' Drag possibile
m_bDrag = True
Exit While
End If
Else
' verifico se l'elemento selezionato è il nome della tavola
If EgtGetType(nId) = GDB_TY.EXT_TEXT AndAlso (sNamePartId = MAIN_TAB Or
sNamePartId = SECOND_TAB Or
sNamePartId = THIRD_TAB Or
sNamePartId = FORTH_TAB) Then
' Apro la finestra per la selezione della tavola da usare
Dim ChgTbV As New ChangeTableV
Dim ChgTbVM As New ChangeTableVM(ChgTbV)
ChgTbV.DataContext = ChgTbVM
ChgTbV.ShowDialog()
' se non è stata eseguita nessuna scelta esco dal ciclo
If ChgTbVM.MyDialogResult = EnumDialogResult.CANCEL Or ChgTbVM.nSelectedTable = 0 Then Exit While
' recupero il nome della tavola corrente
Dim sOtherTab As String = GetTableName(ChgTbVM.nSelectedTable)
EgtChangeTable(sOtherTab, True)
'm_CurrProjPage.AdjustAdditionalTable(True)
EgtSetMachineLook(MCH_LOOK.TAB)
' aggiorno le lavorazioni
UpdateAllMachiningsToolpaths()
' aggiorno i movimenti pezzi tra disposizioni
For nI As Integer = 1 To EgtGetPhaseCount()
EgtSetCurrPhase(nI)
Dim nDispId As Integer = EgtGetPhaseDisposition(nI)
SpecialApplyDisposition(nDispId, True)
Next
' aggiorno posizionamento ventose per lavorazioni da sotto
UpdateVacuumsForDrip()
'' dichiaro tutto aggiornato
'm_CurrProjPage.SetOrderMachiningFlag()
EgtSetCurrPhase(1)
' aggiorno posizione pezzi in parcheggio
Dim nPPId As Integer = EgtGetFirstPart()
While nPPId <> GDB_ID.NULL
PackPartInStore(nPPId)
nPPId = EgtGetNextPart(nPPId)
End While
'' se prevista rotazione
'If GetPrivateProfileInt(S_TABLE, K_CHANGETABWD, 0, m_MainWindow.GetMachIniFile()) = 2 Then
' ' Dati tavola
' Dim b3Tab As New BBox3d
' EgtGetTableArea(1, b3Tab)
' ' Box lastra
' Dim b3OrigRaw As New BBox3d
' GetRawBox(b3OrigRaw)
' ' Allargo i limiti della tavola in tutte le fasi
' Const TAB_OFFS As Double = 3000
' For nI As Integer = 1 To EgtGetPhaseCount()
' EgtSetCurrPhase(nI)
' EgtSetTableAreaOffset(TAB_OFFS, TAB_OFFS, TAB_OFFS, TAB_OFFS)
' Next
' ' aggiorno posizionamento ventose per lavorazioni da sotto
' UpdateVacuumsForDrip()
' ' dichiaro tutto aggiornato
' m_CurrProjPage.SetOrderMachiningFlag()
' EgtSetCurrPhase(1)
' ' Rotazione
' Dim dAngRot As Double = If(sOtherTab = SECOND_TAB, 180, -180)
' If Not RotateAllRawParts(dAngRot, False) Then
' m_CurrProjPage.SetWarningMessage(EgtMsg(90339)) 'Rotazione impossibile
' End If
' ' Traslazione per riportare la lastra nella stessa posizione rispetto all'angolo BL che diveta TR e viceversa
' Dim b3Raw As New BBox3d
' GetRawBox(b3Raw)
' Dim vtMove As Vector3d
' If sOtherTab = SECOND_TAB Then
' Dim vtDiffIni As Vector3d = b3OrigRaw.Min() - b3Tab.Min()
' Dim vtDiffFin As Vector3d = b3Tab.Max() - b3Raw.Max()
' vtMove = vtDiffFin - vtDiffIni
' Else
' Dim vtDiffIni As Vector3d = b3Tab.Max() - b3OrigRaw.Max()
' Dim vtDiffFin As Vector3d = b3Raw.Min() - b3Tab.Min()
' vtMove = -(vtDiffFin - vtDiffIni)
' End If
' vtMove.z = 0
' MoveAllRawParts(vtMove)
' ' Ripristino i limiti della tavola in tutte le fasi
' For nI As Integer = 1 To EgtGetPhaseCount()
' EgtSetCurrPhase(nI)
' EgtSetTableAreaOffset(0, 0, 0, 0)
' Next
' EgtSetCurrPhase(1)
' HideAllMachinings()
'End If
' visualizzazione
EgtZoom(ZM.ALL)
' Elimino il datacontext della finsetra per la selezione della tavola
ChgTbVM = Nothing
Exit While
End If
End If
nId = EgtGetNextObjInSelWin()
End While
' Dati per drag