cecab9494c
- aggiunta gestione flag SpecialUnload per Linee di Produzione che non fa azzerare variabile di macchina con progetto in scarico.
893 lines
29 KiB
VB.net
893 lines
29 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
|
|
Public Class CurrentMachine
|
|
|
|
' Riferimento alla MainWindow
|
|
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
|
|
|
|
' Nome macchina corrente
|
|
Private m_sMachineName As String = String.Empty
|
|
|
|
' Direttorio macchina corrente
|
|
Private m_sMachDir As String = String.Empty
|
|
|
|
' File ini della macchina
|
|
Private m_sMachIniFile As String = String.Empty
|
|
|
|
' Estensione dei file programma pezzo (detti anche file Iso)
|
|
Private m_sIsoFileExt As String = String.Empty
|
|
|
|
' Incremento da dare all'asse C per far coincidere la linea della lama con l'asse X
|
|
Private m_dDeltaC As Double = 0
|
|
|
|
' Ritardo tra reset e invio programma per NUM
|
|
Private m_nResetSendDelay As Integer = 1000
|
|
|
|
' Dati su linea di produzione
|
|
Private m_bProdLine As Boolean = False
|
|
Private m_sVarProg1 As String = "E80021"
|
|
Private m_nProg1 As Integer = 901
|
|
Private m_sVarProg2 As String = "E80022"
|
|
Private m_nProg2 As Integer = 902
|
|
Private m_sLineDataDir As String = ""
|
|
Private m_sVarProjCopy As String = "E80025"
|
|
Private m_bSpecialUnload As Boolean = False
|
|
|
|
' Numero e tipo di utensili correntemente disponibili sulla macchina
|
|
Private m_MountedToolConfig As MountedToolConfigs = MountedToolConfigs.SAW
|
|
|
|
' Distanza di sicurezza
|
|
Private m_dSafeZ As Double = 0
|
|
|
|
' Massimo diametro lama per utilizzo ventose movimento pezzi
|
|
Private m_dMaxSawDiamForVac As Double = 630
|
|
|
|
' Massimo diametro lama per tastatura grezzo
|
|
Private m_dMaxSawDiamForProbe As Double = 630
|
|
|
|
' Flag che indicano stato tipologia utensili (attivo/non attivo)
|
|
Private m_bSaw As Boolean = False
|
|
Private m_bDrill As Boolean = False
|
|
Private m_bMill As Boolean = False
|
|
|
|
' Flag per visualizzazione TcPos e Testa/uscita
|
|
Private m_bShowToolChanger As Boolean = False
|
|
Private m_bShowHeadExit As Boolean = False
|
|
|
|
' Flag che indicano presenza tipologia lavorazioni (attivo/non attivo)
|
|
Private m_bSawing As Boolean = False
|
|
Private m_bDrilling As Boolean = False
|
|
Private m_bMilling As Boolean = False
|
|
Private m_bSawRoughing As Boolean = False
|
|
Private m_bSawFinishing As Boolean = False
|
|
|
|
' Variabili che contengono il nome degli utensili disponibili per tipo
|
|
Private m_sCurrSaw As String = String.Empty
|
|
Private m_sCurrDrill As String = String.Empty
|
|
Private m_sCurrMill As String = String.Empty
|
|
Private m_sCurrDripSaw As String = String.Empty
|
|
|
|
' Variabili che contengono le lavorazioni correntemente attive (utilizzate per definire lavorazioni nel programma)
|
|
Private m_sCurrSawing As String = String.Empty
|
|
Private m_sCurrDrilling As String = String.Empty
|
|
Private m_sCurrMilling As String = String.Empty
|
|
Private m_sCurrSawRoughing As String = String.Empty
|
|
Private m_sCurrSawFinishing As String = String.Empty
|
|
Private m_sCurrSawSideFinishing As String = String.Empty
|
|
Private m_sCurrDripSawing As String = String.Empty
|
|
|
|
' Spessore sottopezzo
|
|
Private m_dAdditionalTable As Double = 0
|
|
|
|
' Flag home finale per tagli diretti
|
|
Private m_bDirectCutsFinalHome As Boolean = True
|
|
|
|
' Numero portautensili presenti
|
|
Private m_ToolChangerNbr As Integer = 0
|
|
|
|
' Lista portautensili
|
|
Private m_ToolChanger As New List(Of ToolChangerPos)
|
|
|
|
' Numero portautensili manuali
|
|
Private m_ManualToolChangerNbr As Integer = 0
|
|
|
|
' Lista portautensili
|
|
Private m_ManualToolChanger As New List(Of ToolChangerPos)
|
|
|
|
' Lista dei materiali
|
|
Private m_Materials As New ObservableCollection(Of Material)
|
|
|
|
' Massimo id della lista materiali nel file ini
|
|
Private m_MaxIdMat As Integer = 0
|
|
|
|
' Materiale correntemente attivo (dell'ultimo grezzo impostato)
|
|
Private m_CurrMat As Material = Nothing
|
|
|
|
' Indica se la macchina ha il tastatore della lastra
|
|
Private m_HasRawProbe As Boolean = True
|
|
|
|
' Tipi di attrezzaggio
|
|
Friend Enum MountedToolConfigs As Integer
|
|
SAW = 0
|
|
SAWANDAUXTOOL = 1
|
|
MANUALTOOLCHANGER = 2
|
|
TOOLCHANGER = 3
|
|
End Enum
|
|
|
|
' Massimo numero di utensili su Tc
|
|
Friend MAX_TC_TOOLS As Integer = 60
|
|
|
|
' Massimo numero di utensili su Tc manuale
|
|
Friend MAX_TCMAN_TOOLS As Integer = 60
|
|
|
|
|
|
#Region "Proprietà che leggono e scrivono i valori anche da o su file ini"
|
|
|
|
Friend ReadOnly Property sMachineName As String
|
|
Get
|
|
Return m_sMachineName
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sMachDir As String
|
|
Get
|
|
Return m_sMachDir
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sMachIniFile As String
|
|
Get
|
|
Return m_sMachIniFile
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sIsoFileExt As String
|
|
Get
|
|
Return m_sIsoFileExt
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property dDeltaC As Double
|
|
Get
|
|
Return m_dDeltaC
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property nResetSendDelay As Integer
|
|
Get
|
|
Return m_nResetSendDelay
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bProdLine As Boolean
|
|
Get
|
|
Return m_bProdLine
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sVarProg1 As String
|
|
Get
|
|
Return m_sVarProg1
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property nProg1 As Integer
|
|
Get
|
|
Return m_nProg1
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sVarProg2 As String
|
|
Get
|
|
Return m_sVarProg2
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property nProg2 As Integer
|
|
Get
|
|
Return m_nProg2
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sLineDataDir As String
|
|
Get
|
|
Return m_sLineDataDir
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sVarProjCopy As String
|
|
Get
|
|
Return m_sVarProjCopy
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSpecialUnload As Boolean
|
|
Get
|
|
Return m_bSpecialUnload
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property MountedToolConfig As MountedToolConfigs
|
|
Get
|
|
Return m_MountedToolConfig
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property dMaxSawDiamForVac As Double
|
|
Get
|
|
Return m_dMaxSawDiamForVac
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property dMaxSawDiamForProbe As Double
|
|
Get
|
|
Return m_dMaxSawDiamForProbe
|
|
End Get
|
|
End Property
|
|
|
|
Friend Property dSafeZ As Double
|
|
Get
|
|
If EgtMdbGetGeneralParam(MCH_GP.SAFEZ, m_dSafeZ) Then
|
|
Return m_dSafeZ
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
End Get
|
|
Set(value As Double)
|
|
If EgtMdbSetGeneralParam(MCH_GP.SAFEZ, m_dSafeZ) And
|
|
EgtMdbSave() Then
|
|
m_dSafeZ = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSaw As Boolean
|
|
Get
|
|
Return m_bSaw
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bDrill As Boolean
|
|
Get
|
|
Return m_bDrill
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bMill As Boolean
|
|
Get
|
|
Return m_bMill
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bShowToolChanger As Boolean
|
|
Get
|
|
Return m_bShowToolChanger
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bShowHeadExit As Boolean
|
|
Get
|
|
Return m_bShowHeadExit
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSawing As Boolean
|
|
Get
|
|
Return m_bSawing
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bDrilling As Boolean
|
|
Get
|
|
Return m_bDrilling
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bMilling As Boolean
|
|
Get
|
|
Return m_bMilling
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSawRoughing As Boolean
|
|
Get
|
|
Return m_bSawRoughing
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSawFinishing As Boolean
|
|
Get
|
|
Return m_bSawFinishing
|
|
End Get
|
|
End Property
|
|
|
|
Friend Property sCurrSaw As String
|
|
Get
|
|
Return m_sCurrSaw
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAW, value, sMachIniFile) Then
|
|
m_sCurrSaw = value
|
|
m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrDrill As String
|
|
Get
|
|
Return m_sCurrDrill
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRILL, value, sMachIniFile) Then
|
|
m_sCurrDrill = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrMill As String
|
|
Get
|
|
Return m_sCurrMill
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRMILL, value, sMachIniFile) Then
|
|
m_sCurrMill = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrDripSaw As String
|
|
Get
|
|
Return m_sCurrDripSaw
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRIPSAW, value, sMachIniFile) Then
|
|
m_sCurrDripSaw = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrSawing As String
|
|
Get
|
|
Return m_sCurrSawing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWING, value, sMachIniFile) Then
|
|
m_sCurrSawing = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrDrilling As String
|
|
Get
|
|
Return m_sCurrDrilling
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRILLING, value, sMachIniFile) Then
|
|
m_sCurrDrilling = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrMilling As String
|
|
Get
|
|
Return m_sCurrMilling
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRMILLING, value, sMachIniFile) Then
|
|
m_sCurrMilling = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrSawRoughing As String
|
|
Get
|
|
Return m_sCurrSawRoughing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWROUGHING, value, sMachIniFile) Then
|
|
m_sCurrSawRoughing = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrSawFinishing As String
|
|
Get
|
|
Return m_sCurrSawFinishing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWFINISHING, value, sMachIniFile) Then
|
|
m_sCurrSawFinishing = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrSawSideFinishing As String
|
|
Get
|
|
Return m_sCurrSawSideFinishing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWSIDEFINISHING, value, sMachIniFile) Then
|
|
m_sCurrSawSideFinishing = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrDripSawing As String
|
|
Get
|
|
Return m_sCurrDripSawing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRIPSAWING, value, sMachIniFile) Then
|
|
m_sCurrDripSawing = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property dAdditionalTable As Double
|
|
Get
|
|
Return m_dAdditionalTable
|
|
End Get
|
|
Set(value As Double)
|
|
If Math.Abs(value - m_dAdditionalTable) > EPS_SMALL And
|
|
WritePrivateProfileString(S_TABLE, K_ADDITIONALTABLE, DoubleToString(value, 3), sMachIniFile) Then
|
|
' Aggiorno il valore corrente
|
|
m_dAdditionalTable = value
|
|
' Aggiorno il progetto corrente
|
|
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property bDirectCutsFinalHome As Boolean
|
|
Get
|
|
Return m_bDirectCutsFinalHome
|
|
End Get
|
|
Set(value As Boolean)
|
|
If WritePrivateProfileString(S_MACH_DIRECTCUTS, K_FINALHOME, If(value, "1", "0"), sMachIniFile) Then
|
|
m_bDirectCutsFinalHome = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property ToolChangerNbr As Integer
|
|
Get
|
|
Return m_ToolChangerNbr
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ToolChanger As List(Of ToolChangerPos)
|
|
Get
|
|
Return m_ToolChanger
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ToolChangerName(Index As Integer) As String
|
|
Get
|
|
If Index >= 0 And Index < m_ToolChanger.Count Then
|
|
Return m_ToolChanger(Index).sName
|
|
Else
|
|
Return String.Empty
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Friend WriteOnly Property ToolPos(Index As Integer) As String
|
|
Set(value As String)
|
|
If value <> m_ToolChanger(Index).sTool Then
|
|
m_ToolChanger(Index).sTool = value
|
|
WritePrivateProfileString(S_TOOLCHANGER, K_POS & Index + 1, value, sMachIniFile)
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property ManualToolChangerNbr As Integer
|
|
Get
|
|
Return m_ManualToolChangerNbr
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ManualToolChanger As List(Of ToolChangerPos)
|
|
Get
|
|
Return m_ManualToolChanger
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ManualToolChangerName(Index As Integer) As String
|
|
Get
|
|
If Index >= 0 And Index < m_ManualToolChanger.Count Then
|
|
Return m_ManualToolChanger(Index).sName
|
|
Else
|
|
Return String.Empty
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Friend WriteOnly Property ManualToolPos(Index As Integer) As String
|
|
Set(value As String)
|
|
If value <> m_ManualToolChanger(Index).sTool Then
|
|
m_ManualToolChanger(Index).sTool = value
|
|
WritePrivateProfileString(S_TOOLCHANGER, K_MANUALPOS & Index + 1, value, sMachIniFile)
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property Materials As ObservableCollection(Of Material)
|
|
Get
|
|
Return m_Materials
|
|
End Get
|
|
End Property
|
|
|
|
Friend Sub AddMaterial(value As Material)
|
|
For Each Material In Materials
|
|
If Material.nId = value.nId Then
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat + 1, value, sMachIniFile)
|
|
m_MaxIdMat += 1
|
|
Materials.Add(value)
|
|
End Sub
|
|
|
|
Friend Sub RemoveMaterial(value As Material)
|
|
' Se è il materiale corrente lo tolgo
|
|
If Not IsNothing(CurrMat) AndAlso CurrMat.nId = value.nId Then
|
|
CurrMat = Nothing
|
|
End If
|
|
' Rimuovo il materiale dall'elenco
|
|
Dim Index As Integer
|
|
For Index = 0 To Materials.Count - 1
|
|
If Materials(Index).nId = value.nId Then
|
|
m_Materials.Remove(Materials(Index))
|
|
Exit For
|
|
End If
|
|
Next
|
|
Dim TempMat As Material = Nothing
|
|
For I = Index To m_MaxIdMat - 1
|
|
GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 2, TempMat, sMachIniFile)
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 1, TempMat, sMachIniFile)
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat, Nothing, sMachIniFile)
|
|
m_MaxIdMat -= 1
|
|
' Rimuovo il materiale dall'elenco di tutte le lavorazioni
|
|
Dim MachiningName As String = String.Empty
|
|
Dim bFound As Boolean = EgtMdbGetFirstMachining(MCH_MY.SAWING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.SAWING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.DRILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.MILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
|
|
End Sub
|
|
|
|
' Funzione che dato l'Id di un materiale lo rimuove dalla lavorazione corrente
|
|
Friend Sub SearchAndRemoveMat(valueId As Integer)
|
|
Dim SysNotes As String = String.Empty
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
If SysNotes <> String.Empty Then
|
|
Dim MachiningMaterials() = SysNotes.Split(";".ToCharArray)
|
|
SysNotes = String.Empty
|
|
For Each Material In MachiningMaterials
|
|
Dim Param() As String = Material.Split(",".ToCharArray)
|
|
If Param(0) <> valueId.ToString Then
|
|
SysNotes &= Material & ";"
|
|
End If
|
|
Next
|
|
If SysNotes(SysNotes.Length - 1) = ";" Then
|
|
SysNotes = SysNotes.Substring(0, SysNotes.Length - 1)
|
|
End If
|
|
EgtMdbSetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
End If
|
|
EgtMdbSaveCurrMachining()
|
|
End Sub
|
|
|
|
Friend Property CurrMat As Material
|
|
Get
|
|
Return m_CurrMat
|
|
End Get
|
|
Set(value As Material)
|
|
Dim CurrMatId As String = If(Not IsNothing(value), value.nId.ToString, "")
|
|
WritePrivateProfileString(S_MATERIALS, K_CURRMATERIAL, CurrMatId, sMachIniFile)
|
|
m_CurrMat = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Function SetCurrMatByName(sMatName As String) As Boolean
|
|
' Se stringa vuota
|
|
If String.IsNullOrWhiteSpace(sMatName) Then Return False
|
|
' Cerco il nome nella lista dei materiali
|
|
For Index = 0 To Materials.Count - 1
|
|
If String.Compare(Materials(Index).sName, sMatName, True) = 0 Then
|
|
CurrMat = Materials(Index)
|
|
End If
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
|
|
Friend ReadOnly Property bHasRawProbe As Boolean
|
|
Get
|
|
Return m_HasRawProbe
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
Sub New()
|
|
' Leggo da file ini nome macchina corrente
|
|
GetPrivateProfileString(S_MACH, K_CURRMACH, "", m_sMachineName, m_MainWindow.GetIniFile())
|
|
' Impostazione direttorio macchina
|
|
m_sMachDir = m_MainWindow.GetMachinesRootDir & "\" & sMachineName
|
|
' Impostazione path MachIni file
|
|
m_sMachIniFile = m_MainWindow.GetMachinesRootDir & "\" & sMachineName & "\" & sMachineName & ".ini"
|
|
' Leggo estensione del file programma pezzo
|
|
GetPrivateProfileString(S_PARTPROGRAM, K_EXTENSION, "xpi", m_sIsoFileExt, sMachIniFile)
|
|
If m_sIsoFileExt(0) <> "." Then m_sIsoFileExt = "." & m_sIsoFileExt
|
|
' Leggo flag incremento asse C
|
|
m_dDeltaC = GetPrivateProfileDouble(S_AXES, K_DELTA_C, 0.0, sMachIniFile)
|
|
' Leggo ritardo tra reset e send per NUM
|
|
m_nResetSendDelay = GetPrivateProfileInt(S_NCNUM, K_RESETSENDDELAY, 1000, sMachIniFile)
|
|
' Leggo se linea di produzione e parametri relativi
|
|
m_bProdLine = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_ACTIVE, 0, sMachIniFile) <> 0)
|
|
If m_bProdLine And Not m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.PROCUCTION_LINE) Then
|
|
m_bProdLine = False
|
|
EgtOutLog("Error - Production line requested but not key enabled")
|
|
End If
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROG1, "", m_sVarProg1, sMachIniFile)
|
|
m_nProg1 = GetPrivateProfileInt(S_PRODUCTIONLINE, K_NAMEPROG1, 0, m_MainWindow.GetMachIniFile())
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROG2, "", m_sVarProg2, sMachIniFile)
|
|
m_nProg2 = GetPrivateProfileInt(S_PRODUCTIONLINE, K_NAMEPROG2, 0, m_MainWindow.GetMachIniFile())
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_LINEDATADIR, "", m_sLineDataDir, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROJCOPY, "", m_sVarProjCopy, sMachIniFile)
|
|
m_bSpecialUnload = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_SPECIALUNLOAD, 0, sMachIniFile) <> 0)
|
|
' Leggo configurazione degli utensili in macchina
|
|
m_MountedToolConfig = GetPrivateProfileInt(S_TOOLS, K_MOUNTEDTOOLCONFIG, 0, sMachIniFile)
|
|
' Leggo flag presenza tipologie utensili
|
|
' lama
|
|
m_bSaw = (GetPrivateProfileInt(S_TOOLS, K_SAWBLADE, 0, sMachIniFile) > 0)
|
|
' foretto
|
|
m_bDrill = (GetPrivateProfileInt(S_TOOLS, K_DRILLBIT, 0, sMachIniFile) > 0)
|
|
' fresa
|
|
m_bMill = (GetPrivateProfileInt(S_TOOLS, K_MILL, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_MILL)
|
|
' Leggo abilitazione visualizzazione TcPos e Head/exit
|
|
m_bShowToolChanger = (GetPrivateProfileInt(S_TOOLS, K_SHOWTOOLCHANGER, 0, sMachIniFile) > 0)
|
|
m_bShowHeadExit = (GetPrivateProfileInt(S_TOOLS, K_SHOWHEADEXIT, 0, sMachIniFile) > 0)
|
|
' Leggo limiti diametro lama per altre operazioni
|
|
m_dMaxSawDiamForVac = GetPrivateProfileDouble(S_TOOLS, K_MAXSAWDIAMFORVAC, 630, sMachIniFile)
|
|
m_dMaxSawDiamForProbe = GetPrivateProfileDouble(S_TOOLS, K_MAXSAWDIAMFORPROBE, 630, sMachIniFile)
|
|
' Leggo flag presenza tipologie lavorazioni
|
|
' lama
|
|
m_bSawing = (GetPrivateProfileInt(S_MACHININGS, K_SAWING, 0, sMachIniFile) > 0)
|
|
' foretto
|
|
m_bDrilling = (GetPrivateProfileInt(S_MACHININGS, K_DRILLING, 0, sMachIniFile) > 0)
|
|
' fresa
|
|
m_bMilling = (GetPrivateProfileInt(S_MACHININGS, K_MILLING, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_MILL)
|
|
' sgrossatura con lama
|
|
m_bSawRoughing = (GetPrivateProfileInt(S_MACHININGS, K_SAWROUGHING, 0, sMachIniFile) > 0)
|
|
' finitura con lama
|
|
m_bSawFinishing = (GetPrivateProfileInt(S_MACHININGS, K_SAWFINISHING, 0, sMachIniFile) > 0)
|
|
|
|
' Leggo utensili correnti
|
|
' lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAW, Nothing, m_sCurrSaw, sMachIniFile)
|
|
' foretto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILL, Nothing, m_sCurrDrill, sMachIniFile)
|
|
' fresa
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRMILL, Nothing, m_sCurrMill, sMachIniFile)
|
|
' lama da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPSAW, Nothing, m_sCurrDripSaw, sMachIniFile)
|
|
|
|
' Leggo lavorazioni correnti
|
|
' lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, m_sCurrSawing, sMachIniFile)
|
|
' foretto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILLING, Nothing, m_sCurrDrilling, sMachIniFile)
|
|
' fresa
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRMILLING, Nothing, m_sCurrMilling, sMachIniFile)
|
|
' sgrossatura con lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWROUGHING, Nothing, m_sCurrSawRoughing, sMachIniFile)
|
|
' finitura con lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWFINISHING, Nothing, m_sCurrSawFinishing, sMachIniFile)
|
|
' spatolatura con lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWSIDEFINISHING, Nothing, m_sCurrSawSideFinishing, sMachIniFile)
|
|
' lama da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPSAWING, Nothing, m_sCurrDripSawing, sMachIniFile)
|
|
|
|
' Leggo numero di portautensili
|
|
m_ToolChangerNbr = GetPrivateProfileInt(S_TOOLCHANGER, K_NUMBER, 0, sMachIniFile)
|
|
m_ToolChangerNbr = Math.Min(m_ToolChangerNbr, MAX_TC_TOOLS)
|
|
|
|
' Leggo da file ini nomi e utensili presenti in portautensili
|
|
For Index As Integer = 1 To m_ToolChangerNbr
|
|
Dim sName As String = String.Empty
|
|
Dim sTool As String = String.Empty
|
|
GetPrivateProfileString(S_TOOLCHANGER, K_NAME & Index, Nothing, sName, sMachIniFile)
|
|
GetPrivateProfileString(S_TOOLCHANGER, K_POS & Index, Nothing, sTool, sMachIniFile)
|
|
m_ToolChanger.Add(New ToolChangerPos(Index, sName, sTool))
|
|
Next
|
|
|
|
' Leggo numero portautensili manuali
|
|
m_ManualToolChangerNbr = GetPrivateProfileInt(S_TOOLCHANGER, K_MANUALNUMBER, 0, sMachIniFile)
|
|
m_ManualToolChangerNbr = Math.Min(m_ManualToolChangerNbr, MAX_TCMAN_TOOLS)
|
|
|
|
' Leggo da file ini nomi e utensili manuali presenti
|
|
For Index = 1 To m_ManualToolChangerNbr
|
|
Dim sName As String = String.Empty
|
|
Dim sTool As String = String.Empty
|
|
GetPrivateProfileString(S_TOOLCHANGER, K_MANUALNAME & Index, Nothing, sName, sMachIniFile)
|
|
GetPrivateProfileString(S_TOOLCHANGER, K_MANUALPOS & Index, Nothing, sTool, sMachIniFile)
|
|
m_ManualToolChanger.Add(New ToolChangerPos(Index, sName, sTool))
|
|
Next
|
|
|
|
' Leggo altezza sopratavola
|
|
m_dAdditionalTable = GetPrivateProfileDouble(S_TABLE, K_ADDITIONALTABLE, 0, sMachIniFile)
|
|
|
|
' Leggo flag per posizione home alla fine dei tagli diretti
|
|
m_bDirectCutsFinalHome = (GetPrivateProfileInt(S_MACH_DIRECTCUTS, K_FINALHOME, 1, sMachIniFile) <> 0)
|
|
|
|
' Creo materiale di default e lo aggiungo alla lista
|
|
' m_Materials.Add(New Material(0, "Generico"))
|
|
' Leggo la lista dei materiali
|
|
Dim Material As Material = Nothing
|
|
Dim nIndex As Integer = 1
|
|
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
|
|
m_Materials.Add(Material)
|
|
nIndex += 1
|
|
End While
|
|
' Salvo massimo indice a cui sono arrivato per usarlo quando devo aggiungere nuovi elementi alla lista
|
|
m_MaxIdMat = nIndex - 1
|
|
|
|
' Leggo materiale correntemente attivo
|
|
Dim CurrMatId As Integer = GetPrivateProfileInt(S_MATERIALS, K_CURRMATERIAL, 0, sMachIniFile)
|
|
For Each Material In Materials
|
|
If Material.nId = CurrMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
' leggo se la macchina ha il tastatore dello spessore tavola
|
|
m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0)
|
|
End Sub
|
|
|
|
Friend Function IsVacuumMovePossible() As Boolean
|
|
' Recupero diametro lama corrente
|
|
EgtTdbSetCurrTool(sCurrSaw)
|
|
Dim dToolDiam As Double = 0
|
|
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam)
|
|
' Confronto con massimo ammesso
|
|
Return (dToolDiam <= dMaxSawDiamForVac)
|
|
End Function
|
|
|
|
Friend Function IsRawProbingPossible() As Boolean
|
|
' Recupero diametro lama corrente
|
|
EgtTdbSetCurrTool(sCurrSaw)
|
|
Dim dToolDiam As Double = 0
|
|
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam)
|
|
' Confronto con massimo ammesso
|
|
Return (dToolDiam <= dMaxSawDiamForProbe)
|
|
End Function
|
|
|
|
Friend Function GetPrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByRef Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim sVal As String = String.Empty
|
|
GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
|
|
Dim sItems() As String = sVal.Split(",".ToCharArray)
|
|
If sItems.Count() = 2 Then
|
|
Dim nId As Integer = 0
|
|
StringToInt(sItems(0), nId)
|
|
Material = New Material(nId, sItems(1))
|
|
Return True
|
|
End If
|
|
Return False
|
|
|
|
End Function
|
|
|
|
Friend Function WritePrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByVal Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim MatStr As String = Nothing
|
|
If Not IsNothing(Material) Then
|
|
MatStr = Material.nId.ToString & "," & Material.sName
|
|
End If
|
|
If WritePrivateProfileString(lpAppName, lpKeyName, MatStr, sMachIniFile) Then
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
End Class
|
|
|
|
Class ToolChangerPos
|
|
|
|
Private m_nPosition As Integer
|
|
Private m_sName As String = String.Empty
|
|
Private m_sTool As String = String.Empty
|
|
|
|
Public ReadOnly Property nPosition As Integer
|
|
Get
|
|
Return m_nPosition
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
End Property
|
|
|
|
Public Property sTool As String
|
|
Get
|
|
Return m_sTool
|
|
End Get
|
|
Set(value As String)
|
|
m_sTool = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sPosition As Integer, sName As String, sTool As String)
|
|
m_nPosition = sPosition
|
|
m_sName = sName
|
|
m_sTool = sTool
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Friend Class Material
|
|
|
|
Private m_nId As Integer
|
|
Private m_sName As String
|
|
|
|
Public ReadOnly Property nId As Integer
|
|
Get
|
|
Return m_nId
|
|
End Get
|
|
End Property
|
|
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sName As String, MaterialList As ObservableCollection(Of Material))
|
|
Dim nMaxId As Integer = 0
|
|
For Each Material In MaterialList
|
|
If Material.nId > nMaxId Then
|
|
nMaxId = Material.nId
|
|
End If
|
|
Next
|
|
m_nId = nMaxId + 1
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
Sub New(nId As Integer, sName As String)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
End Class
|