|
|
|
@@ -12,12 +12,19 @@ Module CsvM
|
|
|
|
|
Return m_sCsvPath
|
|
|
|
|
End Get
|
|
|
|
|
End Property
|
|
|
|
|
Private m_sFilePath As String = String.Empty
|
|
|
|
|
Public ReadOnly Property FilePath As String
|
|
|
|
|
Get
|
|
|
|
|
Return m_sFilePath
|
|
|
|
|
End Get
|
|
|
|
|
End Property
|
|
|
|
|
Private m_CsvPartList As New List(Of CsvPart)
|
|
|
|
|
Public ReadOnly Property CsvPartList As List(Of CsvPart)
|
|
|
|
|
Get
|
|
|
|
|
Return m_CsvPartList
|
|
|
|
|
End Get
|
|
|
|
|
End Property
|
|
|
|
|
|
|
|
|
|
Private m_bCsvPartListModified As Boolean = False
|
|
|
|
|
Private m_sCompoDir As String = String.Empty
|
|
|
|
|
|
|
|
|
@@ -36,12 +43,7 @@ Module CsvM
|
|
|
|
|
|
|
|
|
|
Public Sub NewCmd()
|
|
|
|
|
' Salvo lista dei pezzi attuale (se modificata)
|
|
|
|
|
If Not SaveCsvPartList() Then
|
|
|
|
|
' Errore nel salvataggio del file CSV, vuoi continuare lo stesso ? - Errore
|
|
|
|
|
If MessageBox.Show(EgtMsg(MSG_CSVPAGEUC + 5), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.YesNo, MessageBoxImage.Error) <> MessageBoxResult.Yes Then
|
|
|
|
|
Return
|
|
|
|
|
End If
|
|
|
|
|
End If
|
|
|
|
|
SaveCsvPartList()
|
|
|
|
|
' Pulisco path e lista dei pezzi Csv
|
|
|
|
|
m_sCsvPath = String.Empty
|
|
|
|
|
m_CsvPartList.Clear()
|
|
|
|
@@ -51,25 +53,33 @@ Module CsvM
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Sub Open()
|
|
|
|
|
' Salvo lista dei pezzi attuale (se modificata)
|
|
|
|
|
If Not SaveCsvPartList() Then
|
|
|
|
|
' Errore nel salvataggio del file CSV, vuoi continuare lo stesso ? - Errore
|
|
|
|
|
If MessageBox.Show(EgtMsg(MSG_CSVPAGEUC + 5), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.YesNo, MessageBoxImage.Error) <> MessageBoxResult.Yes Then
|
|
|
|
|
Return
|
|
|
|
|
End If
|
|
|
|
|
End If
|
|
|
|
|
' Leggo direttorio corrente dei file CSV
|
|
|
|
|
Dim sCurrDir As String = ""
|
|
|
|
|
GetMainPrivateProfileString(S_CSV, K_CSVCURRDIR, "C:\", sCurrDir)
|
|
|
|
|
' Apro dialogo scelta file
|
|
|
|
|
Dim CsvFileDlg As New Microsoft.Win32.OpenFileDialog()
|
|
|
|
|
If Directory.Exists(sCurrDir) Then CsvFileDlg.InitialDirectory = sCurrDir
|
|
|
|
|
CsvFileDlg.Filter = "Csv file (*.csv;*.epl)|*.csv;*.epl"
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
Dim sFilterDialog As String = String.Empty
|
|
|
|
|
Dim sDeniedFiles As List(Of String) = CreateListOfDeniedFiles()
|
|
|
|
|
If bFull Then
|
|
|
|
|
sFilterDialog = "Csv file (*.csv;*.epl)|*.csv;*.epl;Merge.epl"
|
|
|
|
|
Else
|
|
|
|
|
sFilterDialog = "Csv file (*.csv)|*.csv"
|
|
|
|
|
End If
|
|
|
|
|
CsvFileDlg.Filter = sFilterDialog
|
|
|
|
|
|
|
|
|
|
If Not CsvFileDlg.ShowDialog() Then Return
|
|
|
|
|
|
|
|
|
|
' Salvo lista dei pezzi attuale
|
|
|
|
|
SaveCsvPartList()
|
|
|
|
|
|
|
|
|
|
' Salvo direttorio corrente
|
|
|
|
|
WriteMainPrivateProfileString(S_CSV, K_CSVCURRDIR, Path.GetDirectoryName(CsvFileDlg.FileName))
|
|
|
|
|
' Apertura file
|
|
|
|
|
Dim sPath = CsvFileDlg.FileName
|
|
|
|
|
' se necessario cambio estensione del file
|
|
|
|
|
If String.Compare(Path.GetExtension(sPath), ".CSV", True) = 0 Then
|
|
|
|
|
LoadCsvFile(sPath)
|
|
|
|
|
Else
|
|
|
|
@@ -77,6 +87,93 @@ Module CsvM
|
|
|
|
|
End If
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Private Function CreateListOfDeniedFiles() As List(Of String)
|
|
|
|
|
Dim LocalList As New List(Of String)
|
|
|
|
|
LocalList.Add("MERGE")
|
|
|
|
|
Dim Index1 As Integer = 0
|
|
|
|
|
Dim Index2 As Integer = 0
|
|
|
|
|
For Index1 = 0 To m_CsvPartList.Count - 1
|
|
|
|
|
Dim sFileName As String = m_CsvPartList(Index1).m_sPath
|
|
|
|
|
sFileName = Path.GetFileNameWithoutExtension(sFileName).ToUpper.Trim()
|
|
|
|
|
Dim bNewFile As Boolean = True
|
|
|
|
|
For Index2 = 0 To LocalList.Count - 1
|
|
|
|
|
If sFileName = LocalList(Index2) Then
|
|
|
|
|
bNewFile = False
|
|
|
|
|
Exit For
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
If bNewFile Then
|
|
|
|
|
LocalList.Add(Path.GetFileNameWithoutExtension(sFileName).ToUpper.Trim)
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
Return LocalList
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Private Function LoadCsvFile(sCsvPath As String) As Boolean
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
' aggiungo i pezzi su una lista temporanea
|
|
|
|
|
Dim LocalPartList As New List(Of CsvPart)
|
|
|
|
|
' Eseguo la lettura del file Csv
|
|
|
|
|
If Not ReadCsvFile(sCsvPath, LocalPartList) Then
|
|
|
|
|
'Errore nella lettura del file CSV
|
|
|
|
|
MessageBox.Show(EgtMsg(91206), "Error", MessageBoxButton.OK, MessageBoxImage.Error)
|
|
|
|
|
Return False
|
|
|
|
|
End If
|
|
|
|
|
|
|
|
|
|
' Creo un nuovo file che ospitarà il merge de
|
|
|
|
|
Dim sNewMergeFile As String = Path.GetDirectoryName(m_sCsvPath) & "\Merge.csv"
|
|
|
|
|
m_sCsvPath = sNewMergeFile
|
|
|
|
|
m_sFilePath = m_sCsvPath
|
|
|
|
|
|
|
|
|
|
' Elimino pezzi nulli
|
|
|
|
|
RemoveWrongParts(LocalPartList)
|
|
|
|
|
' Aggiorno
|
|
|
|
|
If bFull Then
|
|
|
|
|
MySaveCsvPartList(LocalPartList)
|
|
|
|
|
' Salvo come epl
|
|
|
|
|
SaveCsvPartList()
|
|
|
|
|
' Rinomino file originale
|
|
|
|
|
Dim sBakPath As String = sCsvPath & ".bak"
|
|
|
|
|
Dim sBakName As String = Path.GetFileName(sBakPath)
|
|
|
|
|
' cancello eventuale vecchio backup
|
|
|
|
|
If My.Computer.FileSystem.FileExists(sBakPath) Then
|
|
|
|
|
My.Computer.FileSystem.DeleteFile(sBakPath)
|
|
|
|
|
End If
|
|
|
|
|
' eseguo rinomina
|
|
|
|
|
My.Computer.FileSystem.RenameFile(sCsvPath, sBakName)
|
|
|
|
|
End If
|
|
|
|
|
' attacco i nuovi pezzi alla lista corrente
|
|
|
|
|
For Each Item As CsvPart In LocalPartList
|
|
|
|
|
m_CsvPartList.Add(Item)
|
|
|
|
|
Next
|
|
|
|
|
Return True
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Private Sub LoadCsvPartList(sFile As String)
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
' Se Csv semplificato non va letta
|
|
|
|
|
If Not bFull Then Return
|
|
|
|
|
|
|
|
|
|
' aggiungo i pezzi su una lista temporanea
|
|
|
|
|
Dim LocalPartList As New List(Of CsvPart)
|
|
|
|
|
|
|
|
|
|
' Lettura del file
|
|
|
|
|
If ReadCsvPartList(sFile, LocalPartList) Then
|
|
|
|
|
' Creo un nuovo file che ospitarà il merge de
|
|
|
|
|
Dim sNewMergeFile As String = Path.GetDirectoryName(m_sCsvPath) & "\Merge.csv"
|
|
|
|
|
m_sCsvPath = sNewMergeFile
|
|
|
|
|
m_sFilePath = m_sCsvPath
|
|
|
|
|
End If
|
|
|
|
|
' Elimino pezzi nulli
|
|
|
|
|
RemoveWrongParts(LocalPartList)
|
|
|
|
|
' attacco i nuovi pezzi alla lista corrente
|
|
|
|
|
For Each Item As CsvPart In LocalPartList
|
|
|
|
|
m_CsvPartList.Add(Item)
|
|
|
|
|
Next
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Sub Insert()
|
|
|
|
|
' Recupero lo spessore della lastra corrente
|
|
|
|
|
Dim dRawHeight As Double = EstCalc.GetRawHeight()
|
|
|
|
@@ -88,7 +185,7 @@ Module CsvM
|
|
|
|
|
End If
|
|
|
|
|
' Recupero la tolleranza sullo spessore
|
|
|
|
|
Dim dToler As Double = GetMainPrivateProfileDouble(S_CSV, K_THICKTOLERANCE, 100 * EPS_SMALL)
|
|
|
|
|
dToler = Math.Max( dToler, 100 * EPS_SMALL)
|
|
|
|
|
dToler = Math.Max(dToler, 100 * EPS_SMALL)
|
|
|
|
|
' Creo la lista dei pezzi inseribili nella lastra corrente
|
|
|
|
|
Dim InsPartList As New List(Of CsvPart)
|
|
|
|
|
For i As Integer = 1 To m_CsvPartList.Count()
|
|
|
|
@@ -174,18 +271,18 @@ Module CsvM
|
|
|
|
|
If Not bMaxDimOnX Then
|
|
|
|
|
Dim dH As Double = Math.Min(0.1 * dDimY, 30)
|
|
|
|
|
Dim nText As Integer = EgtCreateTextAdv(nRegId, New Point3d(dDimX / 2, dDimY - 0.6 * dH, 0), 0, "*TOP*", "", 500, False, dH, 1, 0, INS_POS.MC)
|
|
|
|
|
EgtSetColor(nText, New Color3d( 0, 0, 0))
|
|
|
|
|
EgtSetColor(nText, New Color3d(0, 0, 0))
|
|
|
|
|
End If
|
|
|
|
|
' Aggiusto per lavorazioni
|
|
|
|
|
AdjustFlatPart(nId)
|
|
|
|
|
' Aggiungo info su CSV di origine
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_PATH, m_sCsvPath)
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_PATH, CurrPart.m_sPath)
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_PART, CurrPart.m_sName)
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_ORD, CurrPart.m_sOrd)
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_DIST, CurrPart.m_sDist)
|
|
|
|
|
EgtSetInfo(nId, INFO_CSV_MAT, CurrPart.m_sMaterial)
|
|
|
|
|
' Imposto colore testi
|
|
|
|
|
EstCalc.SetTextColor( nRegId)
|
|
|
|
|
EstCalc.SetTextColor(nRegId)
|
|
|
|
|
' Lo sposto nel gruppo speciale
|
|
|
|
|
EgtRelocate(nId, nIpGrp)
|
|
|
|
|
|
|
|
|
@@ -211,7 +308,9 @@ Module CsvM
|
|
|
|
|
EgtLuaResetGlobVar("CMP")
|
|
|
|
|
EgtLuaResetGlobVar("CMP_Draw")
|
|
|
|
|
' Provo ad inserire i pezzi
|
|
|
|
|
Dim bDirect As Boolean = (GetMainPrivateProfileInt(S_CSV, K_CSVDIRECT, 1) <> 0)
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
Dim bDirect As Boolean = bFull And (GetMainPrivateProfileInt(S_CSV, K_CSVDIRECT, 1) <> 0)
|
|
|
|
|
For i As Integer = 1 To InsPartList.Count()
|
|
|
|
|
Dim CurrPart As CsvPart = InsPartList(i - 1)
|
|
|
|
|
While CurrPart.m_nToNest > 0
|
|
|
|
@@ -248,7 +347,7 @@ Module CsvM
|
|
|
|
|
EgtErase(nId2)
|
|
|
|
|
Return False
|
|
|
|
|
End If
|
|
|
|
|
' altrimenti lo metto in parcheggio
|
|
|
|
|
' altrimenti lo metto in parcheggio
|
|
|
|
|
Else
|
|
|
|
|
' Aggiungo riferimento e lo inserisco in VeinMatching
|
|
|
|
|
VeinMatching.SetRefOnPart(nId2)
|
|
|
|
@@ -289,11 +388,11 @@ Module CsvM
|
|
|
|
|
Dim sName As String = String.Empty
|
|
|
|
|
EgtGetInfo(nId, INFO_CSV_PART, sName)
|
|
|
|
|
' Verifico che il pezzo appartenga a questo Csv
|
|
|
|
|
If String.Compare(sCsvPath, m_sCsvPath, True) = 0 Then
|
|
|
|
|
If SearchCurrCSV(sCsvPath) Then
|
|
|
|
|
' Cerco il pezzo nella lista dei pezzi
|
|
|
|
|
For i = 1 To m_CsvPartList.Count()
|
|
|
|
|
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
|
|
|
|
|
If String.Compare(sName, CurrPart.m_sName, True) = 0 Then
|
|
|
|
|
If String.Compare(sName, CurrPart.m_sName, True) = 0 And String.Compare(sCsvPath, CurrPart.m_sPath, True) = 0 Then
|
|
|
|
|
' Se era nel grezzo
|
|
|
|
|
If EgtGetParent(nId) = EstCalc.GetRawId() Then
|
|
|
|
|
' Rimuovo le lavorazioni
|
|
|
|
@@ -323,10 +422,19 @@ Module CsvM
|
|
|
|
|
Return False
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Private Function LoadCsvFile(sCsvPath As String) As Boolean
|
|
|
|
|
Private Function SearchCurrCSV(ByVal sCSVFile As String) As Boolean
|
|
|
|
|
For i As Integer = 1 To m_CsvPartList.Count()
|
|
|
|
|
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
|
|
|
|
|
If String.Compare(sCSVFile, CurrPart.m_sPath, True) = 0 Then
|
|
|
|
|
Return True
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
Return False
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Private Function ReadCsvFile(sCsvPath As String, ByRef LocalCsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
' Pulisco path e lista dei pezzi Csv
|
|
|
|
|
m_sCsvPath = String.Empty
|
|
|
|
|
m_CsvPartList.Clear()
|
|
|
|
|
' Definizione variabili
|
|
|
|
|
EgtLuaCreateGlobTable("CSV")
|
|
|
|
|
EgtLuaSetGlobStringVar("CSV.FILE", sCsvPath)
|
|
|
|
@@ -334,7 +442,10 @@ Module CsvM
|
|
|
|
|
Dim nErr As Integer = 999
|
|
|
|
|
Dim sReader As String = String.Empty
|
|
|
|
|
GetMainPrivateProfileString(S_CSV, K_READER, "CsvRead.lua", sReader)
|
|
|
|
|
If EgtLuaExecFile(OmagOFFICEMap.refMainWindowVM.MainWindowM.sCsvAutoDir & "\" & sReader) AndAlso
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
Dim sLuaScript As String = OmagOFFICEMap.refMainWindowVM.MainWindowM.sCsvAutoDir & If(bFull, "\" & sReader, "\CsvSimplRead.lua")
|
|
|
|
|
If EgtLuaExecFile(sLuaScript) AndAlso
|
|
|
|
|
EgtLuaCallFunction("CSV.Read") Then
|
|
|
|
|
' Verifica stato di errore
|
|
|
|
|
EgtLuaGetGlobIntVar("CSV.ERR", nErr)
|
|
|
|
@@ -351,6 +462,7 @@ Module CsvM
|
|
|
|
|
For i As Integer = 1 To nNbr
|
|
|
|
|
Dim OnePart As New CsvPart
|
|
|
|
|
Dim sN As String = i.ToString()
|
|
|
|
|
OnePart.m_sPath = sCsvPath
|
|
|
|
|
EgtLuaGetGlobStringVar("CSV.NAME" & sN, OnePart.m_sName)
|
|
|
|
|
OnePart.m_bActive = True
|
|
|
|
|
EgtLuaGetGlobStringVar("CSV.ORD" & sN, OnePart.m_sOrd)
|
|
|
|
@@ -362,66 +474,50 @@ Module CsvM
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.DIMX" & sN, OnePart.m_dDimX)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.DIMY" & sN, OnePart.m_dDimY)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.TH" & sN, OnePart.m_dTh)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.A1_" & sN, OnePart.m_dAng1)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.H1_" & sN, OnePart.m_dHeel1)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.A2_" & sN, OnePart.m_dAng2)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.H2_" & sN, OnePart.m_dHeel2)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.A3_" & sN, OnePart.m_dAng3)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.H3_" & sN, OnePart.m_dHeel3)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.A4_" & sN, OnePart.m_dAng4)
|
|
|
|
|
EgtLuaGetGlobNumVar("CSV.H4_" & sN, OnePart.m_dHeel4)
|
|
|
|
|
OnePart.m_nOriInd = i
|
|
|
|
|
If OnePart.m_nCount > 1 Then
|
|
|
|
|
OnePart.m_sRefGuid = System.Guid.NewGuid.ToString
|
|
|
|
|
End If
|
|
|
|
|
' inserisco in lista
|
|
|
|
|
m_CsvPartList.Add(OnePart)
|
|
|
|
|
LocalCsvPartList.Add(OnePart)
|
|
|
|
|
Next
|
|
|
|
|
EgtLuaResetGlobVar("CSV")
|
|
|
|
|
' Ordinamento lista dei pezzi (ordine crescente su materiale e spessore)
|
|
|
|
|
m_CsvPartList.Sort(Function(x, y)
|
|
|
|
|
Dim nComp As Integer = String.Compare(x.m_sMaterial, y.m_sMaterial, True)
|
|
|
|
|
If nComp = 0 Then
|
|
|
|
|
If Math.Abs(x.m_dTh - y.m_dTh) < EPS_SMALL Then
|
|
|
|
|
Return (x.m_nOriInd - y.m_nOriInd)
|
|
|
|
|
LocalCsvPartList.Sort(Function(x, y)
|
|
|
|
|
Dim nComp As Integer = String.Compare(x.m_sMaterial, y.m_sMaterial, True)
|
|
|
|
|
If nComp = 0 Then
|
|
|
|
|
If Math.Abs(x.m_dTh - y.m_dTh) < EPS_SMALL Then
|
|
|
|
|
Return (x.m_nOriInd - y.m_nOriInd)
|
|
|
|
|
Else
|
|
|
|
|
Return CInt(Math.Ceiling(x.m_dTh - y.m_dTh))
|
|
|
|
|
End If
|
|
|
|
|
Else
|
|
|
|
|
Return CInt(Math.Ceiling(x.m_dTh - y.m_dTh))
|
|
|
|
|
Return nComp
|
|
|
|
|
End If
|
|
|
|
|
Else
|
|
|
|
|
Return nComp
|
|
|
|
|
End If
|
|
|
|
|
End Function)
|
|
|
|
|
' Salvo come epl
|
|
|
|
|
m_bCsvPartListModified = True
|
|
|
|
|
SaveCsvPartList()
|
|
|
|
|
' Rinomino file originale
|
|
|
|
|
Dim sBakPath As String = sCsvPath & ".bak"
|
|
|
|
|
Dim sBakName As String = Path.GetFileName(sBakPath)
|
|
|
|
|
' cancello eventuale vecchio backup
|
|
|
|
|
If My.Computer.FileSystem.FileExists(sBakPath) Then
|
|
|
|
|
My.Computer.FileSystem.DeleteFile(sBakPath)
|
|
|
|
|
End If
|
|
|
|
|
' eseguo rinomina
|
|
|
|
|
My.Computer.FileSystem.RenameFile(sCsvPath, sBakName)
|
|
|
|
|
End Function)
|
|
|
|
|
Return True
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Public Function SaveCsvPartList() As Boolean
|
|
|
|
|
' Se non c'è nulla di attivo, non faccio alcunché
|
|
|
|
|
If String.IsNullOrEmpty(m_sCsvPath) Then
|
|
|
|
|
EgtOutLog("CSV List Save Skipped : missing")
|
|
|
|
|
Return True
|
|
|
|
|
End If
|
|
|
|
|
' Se lista non modificata, non faccio alcunchhé
|
|
|
|
|
If Not m_bCsvPartListModified Then
|
|
|
|
|
EgtOutLog("CSV List Save Skipped : not modified")
|
|
|
|
|
Return True
|
|
|
|
|
End If
|
|
|
|
|
' Path del file
|
|
|
|
|
Dim sFile As String = Path.ChangeExtension(m_sCsvPath, ".epl")
|
|
|
|
|
' Gestione file
|
|
|
|
|
Public Function WriteCsvPartList(sFile As String, sCsvPath As String, LocalCsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
Try
|
|
|
|
|
' Apro file
|
|
|
|
|
Dim Writer As New IO.StreamWriter(sFile, False)
|
|
|
|
|
' Intestazione
|
|
|
|
|
Writer.WriteLine("[General]")
|
|
|
|
|
Writer.WriteLine("Path=" & m_sCsvPath)
|
|
|
|
|
Writer.WriteLine("Path=" & sCsvPath)
|
|
|
|
|
' Ciclo sui pezzi
|
|
|
|
|
For i As Integer = 1 To m_CsvPartList.Count()
|
|
|
|
|
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
|
|
|
|
|
For i As Integer = 1 To LocalCsvPartList.Count()
|
|
|
|
|
Dim CurrPart As CsvPart = LocalCsvPartList(i - 1)
|
|
|
|
|
Writer.WriteLine("[P" & i.ToString() & "]")
|
|
|
|
|
Writer.WriteLine("Path=" & CurrPart.m_sPath)
|
|
|
|
|
Writer.WriteLine("Nam=" & CurrPart.m_sName)
|
|
|
|
|
Writer.WriteLine("Ord=" & CurrPart.m_sOrd)
|
|
|
|
|
Writer.WriteLine("Dist=" & CurrPart.m_sDist)
|
|
|
|
@@ -434,6 +530,14 @@ Module CsvM
|
|
|
|
|
Writer.WriteLine("DX=" & DoubleToString(CurrPart.m_dDimX, 4))
|
|
|
|
|
Writer.WriteLine("DY=" & DoubleToString(CurrPart.m_dDimY, 4))
|
|
|
|
|
Writer.WriteLine("Th=" & DoubleToString(CurrPart.m_dTh, 4))
|
|
|
|
|
Writer.WriteLine("A1=" & DoubleToString(CurrPart.m_dAng1, 4))
|
|
|
|
|
Writer.WriteLine("H1=" & DoubleToString(CurrPart.m_dHeel1, 4))
|
|
|
|
|
Writer.WriteLine("A2=" & DoubleToString(CurrPart.m_dAng2, 4))
|
|
|
|
|
Writer.WriteLine("H2=" & DoubleToString(CurrPart.m_dHeel2, 4))
|
|
|
|
|
Writer.WriteLine("A3=" & DoubleToString(CurrPart.m_dAng3, 4))
|
|
|
|
|
Writer.WriteLine("H3=" & DoubleToString(CurrPart.m_dHeel3, 4))
|
|
|
|
|
Writer.WriteLine("A4=" & DoubleToString(CurrPart.m_dAng4, 4))
|
|
|
|
|
Writer.WriteLine("H4=" & DoubleToString(CurrPart.m_dHeel4, 4))
|
|
|
|
|
Writer.WriteLine("OIn=" & CurrPart.m_nOriInd.ToString())
|
|
|
|
|
Writer.WriteLine("Guid=" & CurrPart.m_sRefGuid)
|
|
|
|
|
Next
|
|
|
|
@@ -446,18 +550,80 @@ Module CsvM
|
|
|
|
|
' Registro in ini path
|
|
|
|
|
WriteMainPrivateProfileString(S_CSV, K_CSVLASTFILE, sFile)
|
|
|
|
|
Return True
|
|
|
|
|
' Errore
|
|
|
|
|
' Errore
|
|
|
|
|
Catch ex As Exception
|
|
|
|
|
EgtOutLog("CSV List error writing " & sFile)
|
|
|
|
|
Return False
|
|
|
|
|
End Try
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Private Function LoadCsvPartList(sFile As String) As Boolean
|
|
|
|
|
' Pulisco path e lista dei pezzi Csv
|
|
|
|
|
m_sCsvPath = String.Empty
|
|
|
|
|
m_CsvPartList.Clear()
|
|
|
|
|
' Gestione file
|
|
|
|
|
' dato l'elenco completo dei file salvo ogni singolo epl
|
|
|
|
|
Friend Function WriteCsvMergePartList(CsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
Dim bOk As Boolean = True
|
|
|
|
|
Dim LocalPartList As New List(Of CsvPart)
|
|
|
|
|
Dim Index As Integer = 0
|
|
|
|
|
' devo dividere la lista in tante parti quanti sono i file che lo costituiscono
|
|
|
|
|
While Index < CsvPartList.Count
|
|
|
|
|
Dim CurrFile As String = CsvPartList(Index).m_sPath
|
|
|
|
|
Dim sFile As String = Path.ChangeExtension(CurrFile, ".epl")
|
|
|
|
|
LocalPartList.Clear()
|
|
|
|
|
While CurrFile = CsvPartList(Index).m_sPath
|
|
|
|
|
LocalPartList.Add(CsvPartList(Index))
|
|
|
|
|
Index += 1
|
|
|
|
|
' se terminata la lista
|
|
|
|
|
If Index = CsvPartList.Count Then
|
|
|
|
|
Exit While
|
|
|
|
|
End If
|
|
|
|
|
End While
|
|
|
|
|
' salvo l'elenco corrente
|
|
|
|
|
bOk = WriteCsvPartList(sFile, CurrFile, LocalPartList) And bOk
|
|
|
|
|
End While
|
|
|
|
|
Return bOk
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Friend Sub SaveCsvPartList()
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
' Se Csv semplificato non va salvata
|
|
|
|
|
If Not bFull Then Return
|
|
|
|
|
' Se non c'è nulla di attivo, non faccio alcunché
|
|
|
|
|
If String.IsNullOrEmpty(m_sCsvPath) Then
|
|
|
|
|
EgtOutLog("CSV List missing")
|
|
|
|
|
Return
|
|
|
|
|
End If
|
|
|
|
|
' Path del file
|
|
|
|
|
Dim sFile As String = Path.ChangeExtension(m_sFilePath, ".epl")
|
|
|
|
|
' Scrittura dei file
|
|
|
|
|
If WriteCsvMergePartList(m_CsvPartList) Then
|
|
|
|
|
' Scrittura dei file Merge
|
|
|
|
|
If WriteCsvPartList(sFile, m_sCsvPath, m_CsvPartList) Then
|
|
|
|
|
WriteMainPrivateProfileString(S_CSV, K_CSVLASTFILE, sFile)
|
|
|
|
|
End If
|
|
|
|
|
End If
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Friend Sub MySaveCsvPartList(ByVal CurrPartList As List(Of CsvPart))
|
|
|
|
|
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
|
|
|
|
|
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
|
|
|
|
|
' Se Csv semplificato non va salvata
|
|
|
|
|
If Not bFull Then Return
|
|
|
|
|
Dim sCurrPath As String = String.Empty
|
|
|
|
|
' recupero dalla lista il nome del file corrente
|
|
|
|
|
For Each Item As CsvPart In CurrPartList
|
|
|
|
|
sCurrPath = Item.m_sPath
|
|
|
|
|
Next
|
|
|
|
|
' se non trov il nome del file assocciato all'elenco di pezzi esco
|
|
|
|
|
If String.IsNullOrEmpty(sCurrPath) Then
|
|
|
|
|
EgtOutLog("CSV Curr list missing")
|
|
|
|
|
Return
|
|
|
|
|
End If
|
|
|
|
|
' Path del file
|
|
|
|
|
Dim sFile As String = Path.ChangeExtension(sCurrPath, ".epl")
|
|
|
|
|
' Scrittura del file
|
|
|
|
|
WriteCsvPartList(sFile, sCurrPath, CurrPartList)
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Private Function ReadCsvPartList(sFile As String, LocalCsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
Try
|
|
|
|
|
' Apro file
|
|
|
|
|
Dim Reader As New IO.StreamReader(sFile, False)
|
|
|
|
@@ -486,7 +652,7 @@ Module CsvM
|
|
|
|
|
' se esiste pezzo precedente, lo salvo
|
|
|
|
|
If nI > 1 Then
|
|
|
|
|
' inserisco in lista
|
|
|
|
|
m_CsvPartList.Add(OnePart)
|
|
|
|
|
LocalCsvPartList.Add(OnePart)
|
|
|
|
|
End If
|
|
|
|
|
' predisposizioni per prossimo pezzo
|
|
|
|
|
nI += 1
|
|
|
|
@@ -496,7 +662,9 @@ Module CsvM
|
|
|
|
|
Else
|
|
|
|
|
Dim sItems() As String = sLine.Split("=".ToCharArray)
|
|
|
|
|
If sItems.Count() >= 2 Then
|
|
|
|
|
If sItems(0) = "Nam" Then
|
|
|
|
|
If sItems(0) = "Path" Then
|
|
|
|
|
OnePart.m_sPath = sItems(1)
|
|
|
|
|
ElseIf sItems(0) = "Nam" Then
|
|
|
|
|
OnePart.m_sName = sItems(1)
|
|
|
|
|
ElseIf sItems(0) = "Ord" Then
|
|
|
|
|
OnePart.m_sOrd = sItems(1)
|
|
|
|
@@ -520,6 +688,22 @@ Module CsvM
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dDimY)
|
|
|
|
|
ElseIf sItems(0) = "Th" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dTh)
|
|
|
|
|
ElseIf sItems(0) = "A1" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dAng1)
|
|
|
|
|
ElseIf sItems(0) = "H1" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dHeel1)
|
|
|
|
|
ElseIf sItems(0) = "A2" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dAng2)
|
|
|
|
|
ElseIf sItems(0) = "H2" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dHeel2)
|
|
|
|
|
ElseIf sItems(0) = "A3" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dAng3)
|
|
|
|
|
ElseIf sItems(0) = "H3" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dHeel3)
|
|
|
|
|
ElseIf sItems(0) = "A4" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dAng4)
|
|
|
|
|
ElseIf sItems(0) = "H4" Then
|
|
|
|
|
StringToDouble(sItems(1), OnePart.m_dHeel4)
|
|
|
|
|
ElseIf sItems(0) = "OIn" Then
|
|
|
|
|
StringToInt(sItems(1), OnePart.m_nOriInd)
|
|
|
|
|
ElseIf sItems(0) = "Guid" Then
|
|
|
|
@@ -534,18 +718,37 @@ Module CsvM
|
|
|
|
|
' Dichiaro lista non modificata
|
|
|
|
|
m_bCsvPartListModified = False
|
|
|
|
|
Return True
|
|
|
|
|
' Errore
|
|
|
|
|
' Errore
|
|
|
|
|
Catch ex As Exception
|
|
|
|
|
EgtOutLog("Error reading " & sFile)
|
|
|
|
|
Return False
|
|
|
|
|
End Try
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Friend Function RemoveNotToNestParts(ByRef CsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
For i As Integer = CsvPartList.Count() - 1 To 0 Step -1
|
|
|
|
|
If CsvPartList(i).m_nToNest = 0 Then
|
|
|
|
|
CsvPartList.RemoveAt(i)
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
Return True
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Friend Function RemoveWrongParts(ByRef CsvPartList As List(Of CsvPart)) As Boolean
|
|
|
|
|
For i As Integer = CsvPartList.Count() - 1 To 0 Step -1
|
|
|
|
|
If Not CsvPartList(i).m_bIsRect Or CsvPartList(i).m_dDimX < EPS_SMALL Or CsvPartList(i).m_dDimY < EPS_SMALL Then
|
|
|
|
|
CsvPartList.RemoveAt(i)
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
Return True
|
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
#End Region ' METHODS
|
|
|
|
|
|
|
|
|
|
End Module
|
|
|
|
|
|
|
|
|
|
Public Class CsvPart
|
|
|
|
|
Public m_sPath As String = String.Empty
|
|
|
|
|
Public m_sName As String = String.Empty
|
|
|
|
|
Public m_sOrd As String = String.Empty
|
|
|
|
|
Public m_sDist As String = String.Empty
|
|
|
|
@@ -558,6 +761,14 @@ Public Class CsvPart
|
|
|
|
|
Public m_dDimX As Double = 0
|
|
|
|
|
Public m_dDimY As Double = 0
|
|
|
|
|
Public m_dTh As Double = 0
|
|
|
|
|
Public m_dAng1 As Double = 0
|
|
|
|
|
Public m_dHeel1 As Double = 0
|
|
|
|
|
Public m_dAng2 As Double = 0
|
|
|
|
|
Public m_dHeel2 As Double = 0
|
|
|
|
|
Public m_dAng3 As Double = 0
|
|
|
|
|
Public m_dHeel3 As Double = 0
|
|
|
|
|
Public m_dAng4 As Double = 0
|
|
|
|
|
Public m_dHeel4 As Double = 0
|
|
|
|
|
Public m_nOriInd As Integer = 0
|
|
|
|
|
Public m_nId As Integer = GDB_ID.NULL
|
|
|
|
|
' definsco il riferimento al gruppo
|
|
|
|
|