Files
OmagCUT/Project/ScrapsWD.xaml.vb
T
Demetrio Cassarino 01ced18fad -aggiornato messaggi
2025-06-11 12:47:23 +02:00

187 lines
7.4 KiB
VB.net

Imports EgtUILib
Imports EgtPHOTOLib
Imports System.IO
Public Class ScrapsWD
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_refProjectMgrUC As ProjectMgrUC
Private m_ScrapList As New List(Of Scrap)
Private m_CurrScrapId As Integer = GDB_ID.NULL
Private m_CurrScrapState As Integer = 2
Private m_sDatabaseId As String = ""
Private Sub Initalized()
' resetto eventuali errori mostrati nella pagina
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
' inserisco il titolo della pagina aperta
TitleTxBl.Content = EgtMsg(91246) ' Scraps List
ScrapsListBox.ItemsSource = m_ScrapList
' definzione posizione finetra
Me.Left = 25
Me.Top = 25
End Sub
Public Sub New(Owner As Window, LocalProjectMgrUC As ProjectMgrUC, MyScrapList As List(Of Scrap))
Me.Owner = Owner
InitializeComponent()
m_ScrapList = MyScrapList
m_refProjectMgrUC = LocalProjectMgrUC
Initalized()
End Sub
' visualizzo la fase del pezzo selezionato
Private Sub ScrapListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ScrapsListBox.PreviewMouseUp
Dim vItems As Scrap = ScrapsListBox.SelectedItems(0)
' elimino l'utimo selzione
EgtResetMark(m_CurrScrapId)
EgtDeselectObj(m_CurrScrapId)
' ricerco il grezzo associato a questo Id
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
If nRawId = vItems.IdRaw Then
m_CurrScrapId = nRawId
m_CurrScrapState = vItems.nState
If m_CurrScrapState = 2 Then
EgtGetInfo(nRawId, K_DATABASEID, m_sDatabaseId)
Else
m_sDatabaseId = String.Empty
End If
Dim nCurrRawPhase As Integer = 0
' recupero la fase del grezzo corrente
EgtGetInfo(nRawId, "Ph", nCurrRawPhase)
If nCurrRawPhase <> 0 Then
' evidenzio lo sfrido selezionato all'interno della fase
EgtSetCurrPhase(nCurrRawPhase)
EgtSetMark(m_CurrScrapId)
EgtSelectObj(m_CurrScrapId)
EgtDraw()
Return
End If
End If
nRawId = EgtGetNextRawPart(nRawId)
End While
End Sub
Private Sub OkBtn_Click() Handles OkBtn.Click
If m_CurrScrapId = GDB_ID.NULL Then Return
' creo una copia dell'immagine attuale (fotocamera 1)
Dim sImage As String = String.Empty
Dim sInfo As String = String.Empty
GetPrivateProfileString(S_CAMERA, K_CAM_IMAGE, "", sImage, m_MainWindow.GetIniFile())
GetPrivateProfileString(S_CAMERA, K_CAM_INFO, "", sInfo, m_MainWindow.GetIniFile())
' recupero dalla libreria il percoso del database
Dim sPhotoDir As String = String.Empty
EgtPHOTOLib.GetPhotoDir(sPhotoDir)
' recupero l'ora corrente
Dim sDate As String = Date.Now.ToString
sDate = sDate.Replace("/", "_")
sDate = sDate.Replace(" ", "_")
sDate = sDate.Replace(":", "_")
Dim sNewPath As String = sPhotoDir & "\Scrap_" & sDate
Try
File.Copy(sImage, sNewPath & ".jpg", False)
File.Copy(sInfo, sNewPath & ".txt", False)
Catch ex As Exception
EgtOutLog(ex.Message.ToString)
End Try
' se non esiste la classe StatusBar allora provo ad inizializzarla...
If IsNothing(EgtWPFLib5.LibMap.refStatusBarVM) Then
Dim objStatusBarVM As New EgtWPFLib5.StatusBarVM
End If
' salvo il contesto corrente del programma
Dim nCurrentContetxt As Integer = EgtGetCurrentContext()
' costruisco l'elenco ordinato dei punti che reppresentano il contorno del grezzo da salvare
Dim ContornScrapList As New List(Of Point3d)
Dim RefId As New Frame3d
Dim nRawSolidId As Integer = EgtGetFirstNameInGroup(m_CurrScrapId, "RawSolid")
EgtGetTextureFrame(nRawSolidId, nRawSolidId, RefId)
Dim nCurveCompoId As Integer = EgtGetFirstNameInGroup(m_CurrScrapId, "RawOutline")
Dim dStart As Double = 0
Dim dEnd As Double = 0
EgtCurveDomain(nCurveCompoId, dStart, dEnd)
Dim ptCurrPoint As Point3d
For dU As Integer = dStart To dEnd - 1
EgtAtParamPoint(nCurveCompoId, dU, m_CurrScrapId, ptCurrPoint)
ptCurrPoint.z = 0
ptCurrPoint.ToLoc(RefId)
ContornScrapList.Add(ptCurrPoint)
Next
MainData.SetPreviousContext(nCurrentContetxt)
'If Not IsNothing(MainData.ContextSTONELib) Or MainData.ContextSTONELib <> 0 Then
'If MainData.ContextSTONELib <> 0 Then
' EgtSetCurrentContext(MainData.ContextSTONELib)
'End If
' inizializzo PojectSlabV pechè si occupa di inizializzare le pagine Detail e Option
Dim MyProjectSlab As New EgtPHOTOLib.ProjectSlabV
' ACCELERARE il processo di creazione di questo oggetto!
MyProjectSlab.DataContext = New EgtPHOTOLib.ProjectSlabVM
' per ogni creazione della nuova pagina viene creata una nuova scena, ma non viene eliminata
Dim refProjectVMSceneContext As Integer = EgtGetCurrentContext()
' apro la finestra OmagPHOTO (passo il nome del file come copia dell'originale)
If ContornScrapList.Count > 2 Then
Dim MyOmagPhotoWD As New OmagPhotoWD(sNewPath & ".jpg", ContornScrapList, m_MainWindow, m_CurrScrapState, m_sDatabaseId)
OmagPhotoWD.m_IsAdded = False
OmagPhotoWD.m_sDtBsId = String.Empty
OmagPhotoWD.m_IsDeleted = False
MyOmagPhotoWD.ShowDialog()
Else
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
m_MainWindow.m_CurrentProjectPageUC.SetErrorMessage(EgtMsg(91247)) ' Error loading contour scrap
End If
' ripristino il contesto corrente dell'immagine
EgtSetCurrentContext(EgtPHOTOLib.MainData.PreviousContext)
' se l'inserimento è andatoa buon fine allora procedo a notificarlo
If OmagPhotoWD.m_IsAdded AndAlso Not String.IsNullOrEmpty(OmagPhotoWD.m_sDtBsId) Then
EgtSetInfo(m_CurrScrapId, K_ISNEWSCRAPS, 2)
EgtSetInfo(m_CurrScrapId, K_DATABASEID, OmagPhotoWD.m_sDtBsId)
Else
' se è stato eliminato dal DB allora aggiorno la lista dei grezzi
If OmagPhotoWD.m_IsDeleted Then
EgtSetInfo(m_CurrScrapId, K_ISNEWSCRAPS, 1)
EgtRemoveInfo(m_CurrScrapId, K_DATABASEID)
End If
Try
File.Delete(sNewPath & ".jpg")
File.Delete(sNewPath & ".txt")
Catch ex As Exception
EgtOutLog(ex.Message.ToString)
End Try
End If
'----------------INIZIO ELIMINAZIONE contesti generati da OmagPHOTOLib per la visualizzazione delle Texture
EgtDeleteContext(EgtPHOTOLib.MainData.ContextSTONELib)
EgtDeleteContext(refProjectVMSceneContext)
'---------------- FINE ELIMINAZIONE contesti
' aggiorno la lista degli scrap
m_refProjectMgrUC.UpDateScrapList(m_ScrapList)
ScrapsListBox.ItemsSource = m_ScrapList
ScrapsListBox.Items.Refresh()
End Sub
Private Sub ExitBtn_Click() Handles ExitBtn.Click
' resetto eventuali errori mostrati nella pagina
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
' deseleziono l'oggetto corrente
EgtResetMark(m_CurrScrapId)
EgtDeselectObj(m_CurrScrapId)
' reimposto la fase iniziale
EgtSetCurrPhase(1)
EgtDraw()
Me.Close()
End Sub
End Class