3740ec6de7
- eliminato parametro FinalDepth da config. macchina (ora viene preso dalla lavorazione "Ultimo Taglio").
1909 lines
71 KiB
VB.net
1909 lines
71 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports System.IO
|
|
|
|
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
|
|
|
|
' tempo di arresto sospensione dei Thread prima dopo aver lanciato il comando CN
|
|
Private m_nThreadSleep As Integer = 150
|
|
|
|
' Dati su linea di produzione
|
|
Private m_bDemo As Boolean = False
|
|
Public nLastProjSentToViewDEMO As Integer = 0
|
|
|
|
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_sVarProjFinished As String = "E81025"
|
|
Private m_sVarProjCopy As String = "E80025"
|
|
Private m_bSpecialUnload As Boolean = False
|
|
Private m_nSaveProduced As Integer = 0
|
|
Private m_sVarProgTwins As String = "E80027"
|
|
Private m_bAskNewOnResend As Boolean = False
|
|
Private m_nProdLiSawProbe As Integer = 0
|
|
Private m_sProdLiProbingStateVar As String = ""
|
|
Private m_sProdLiProbingTcPosVar As String = ""
|
|
Private m_sProdLiSawDiameterVar As String = ""
|
|
Private m_sProdLiProbingState2Var As String = ""
|
|
Private m_sProdLiProbingTcPos2Var As String = ""
|
|
Private m_sProdLiSawDiameter2Var As String = ""
|
|
Private m_sClickState As String = "E80028"
|
|
Private m_sClickDir As String = ""
|
|
' Gestione speciale per canali CN
|
|
Private m_sExtFileCN As String = ".0"
|
|
|
|
' 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
|
|
|
|
' Possibilità di ruotare i grezzi durante separa e muovi
|
|
Private m_bRawSplMovRotate As Boolean = False
|
|
' Possibilità di muovere i pezzi alla fine delle lavorazioni
|
|
Private m_bRawFinalMove As Boolean = False
|
|
|
|
' 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
|
|
Private m_bCupWheel As Boolean = False
|
|
Private m_bPolishingWheel As Boolean = False
|
|
Private m_bWaterJet As Boolean = False
|
|
|
|
' Flag che indica se gesire l'inversione del taglio nei tagli singoli
|
|
Private m_bEnableInvetrt As Boolean = True
|
|
|
|
' Abilitazione DB WaterJet
|
|
Private m_bFromDBWaterJet As Boolean = False
|
|
|
|
' Flag per visualizzazione TcPos, Testa/uscita e Note utente
|
|
Private m_nShowToolChanger As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
|
|
Private m_bShowHeadExit As Boolean = False
|
|
Private m_nShowUserNotes As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
|
|
Private m_nShowSpecials As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
|
|
|
|
' 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_bPocketing As Boolean = False
|
|
Private m_bPolishing As Boolean = False
|
|
Private m_bSawRoughing As Boolean = False
|
|
Private m_bSawFinishing As Boolean = False
|
|
Private m_bWaterJetting As Boolean = False
|
|
Private m_bSawingSpecialLeadIn As Boolean = False
|
|
|
|
' Variabili che contengono il nome degli utensili disponibili per tipo
|
|
Private m_sCurrSaw As String = String.Empty
|
|
Private m_sCurrSawTilted As String = String.Empty
|
|
Private m_sCurrDrill As String = String.Empty
|
|
Private m_sCurrMill As String = String.Empty
|
|
Private m_sCurrMillNoTip As String = String.Empty
|
|
Private m_sCurrDripSaw As String = String.Empty
|
|
Private m_sCurrDripDrill As String = String.Empty
|
|
Private m_sCurrWaterJet 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_sCurrSawingTilted As String = String.Empty
|
|
Private m_bApplySawingTilted As Boolean = False
|
|
Private m_sCurrDrilling As String = String.Empty
|
|
Private m_sCurrMilling As String = String.Empty
|
|
Private m_sCurrPocketing 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_sCurrSawSingle As String = String.Empty
|
|
Private m_sCurrDripSawing As String = String.Empty
|
|
Private m_sCurrDripDrilling As String = String.Empty
|
|
Private m_sCurrWaterJetting As String = String.Empty
|
|
Private m_sCurrWaterJettingQuality As String = String.Empty
|
|
|
|
' Spessore sottopezzo
|
|
Private m_dAdditionalTable As Double = 0
|
|
Private m_dTab2AdditionalTable As Double = 0
|
|
Private m_dTab3AdditionalTable As Double = 0
|
|
Private m_dTab4AdditionalTable As Double = 0
|
|
Private m_bCenterRawOnX As Boolean = False
|
|
|
|
' Offset aggiuntivi per fotografia
|
|
Private m_dPhotoOffsetX As Double = 0
|
|
Private m_dPhotoOffsetY As Double = 0
|
|
Private m_dTab2PhotoOffsetX As Double = 0
|
|
Private m_dTab2PhotoOffsetY As Double = 0
|
|
Private m_dTab3PhotoOffsetX As Double = 0
|
|
Private m_dTab3PhotoOffsetY As Double = 0
|
|
Private m_dTab4PhotoOffsetX As Double = 0
|
|
Private m_dTab4PhotoOffsetY As Double = 0
|
|
Private m_dHQPhotoOffsetX As Double = 0
|
|
Private m_dHQPhotoOffsetY As Double = 0
|
|
' Numero di camere attive in macchina
|
|
Private m_nCamCounter As Integer = 0
|
|
|
|
' Abilitazione scelta restart
|
|
Private m_bEnableRestart As Boolean = False
|
|
' Abilitazione scelta pausa a fine lavorazione
|
|
Private m_bEnablePause As Boolean = False
|
|
|
|
' Flag home finale per tagli diretti
|
|
Private m_bDirectCutsFinalHome As Boolean = True
|
|
' Flag aggiunta spessore lama a movimento manuale 5assi
|
|
Private m_bAddSawThTo5AxMove As Boolean = False
|
|
|
|
' Variazione iniziale/finale della feed dei tagli
|
|
Private m_bFsevEnable As Boolean = False
|
|
Private m_dFsevLength As Double = 0
|
|
Private m_dFsevPerc As Double = 0
|
|
|
|
' 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)
|
|
|
|
' Lista delle qualità di lavorazioni disponibili nel WaterJet
|
|
Private m_Qualities As New ObservableCollection(Of String)
|
|
|
|
' 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
|
|
|
|
' Indica se la macchina ha il lettore di codice a barre
|
|
Private m_nEnableBarCodeReader As Integer = 0
|
|
|
|
' Tipi di attrezzaggio
|
|
Friend Enum MountedToolConfigs As Integer
|
|
SAW = 0
|
|
SAWANDAUXTOOL = 1
|
|
MANUALTOOLCHANGER = 2
|
|
TOOLCHANGER = 3
|
|
TOOLCHANGERWITHSAW = 4
|
|
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
|
|
|
|
' Massima profondità lavorabile nei tagli diretti
|
|
Private m_MaxTabDepth As Double = 10.0
|
|
|
|
' Massima altezza lavorabile con lama grande
|
|
Private m_dHighPieceZ As Double = 200.0
|
|
|
|
' Flag che abilita l'esecuzione del taglio finale
|
|
Private m_bEnableFinalSawCut As Boolean = False
|
|
|
|
#Region "Proprietà che leggono e scrivono i valori anche da o su file ini"
|
|
Friend ReadOnly Property MaxTabDepth As Double
|
|
Get
|
|
Return m_MaxTabDepth
|
|
End Get
|
|
End Property
|
|
|
|
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 nThreadSleep As Integer
|
|
Get
|
|
Return m_nThreadSleep
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bDemo As Boolean
|
|
Get
|
|
Return m_bDemo
|
|
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 sVarProjFinished As String
|
|
Get
|
|
Return m_sVarProjFinished
|
|
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 nSaveProduced As Integer
|
|
Get
|
|
Return m_nSaveProduced
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sVarProgTwins As String
|
|
Get
|
|
Return m_sVarProgTwins
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bAskNewOnResend As Boolean
|
|
Get
|
|
Return m_bAskNewOnResend
|
|
End Get
|
|
End Property
|
|
|
|
|
|
Friend ReadOnly Property nProdLiSawProbe As Integer
|
|
Get
|
|
Return m_nProdLiSawProbe
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sClickState As String
|
|
Get
|
|
Return m_sClickState
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sClickDir As String
|
|
Get
|
|
Return m_sClickDir
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sExtFileCN As String
|
|
Get
|
|
Return m_sExtFileCN
|
|
End Get
|
|
End Property
|
|
|
|
Friend Function sProdLiProbingStateVar(nI As Integer) As String
|
|
If nI = 1 Then Return m_sProdLiProbingStateVar
|
|
If nI = 2 Then Return m_sProdLiProbingState2Var
|
|
Return Nothing
|
|
End Function
|
|
|
|
Friend Function sProdLiProbingTcPosVar(nI As Integer) As String
|
|
If nI = 1 Then Return m_sProdLiProbingTcPosVar
|
|
If nI = 2 Then Return m_sProdLiProbingTcPos2Var
|
|
Return Nothing
|
|
End Function
|
|
|
|
Friend Function sProdLiSawDiameterVar(nI As Integer) As String
|
|
If nI = 1 Then Return m_sProdLiSawDiameterVar
|
|
If nI = 2 Then Return m_sProdLiSawDiameter2Var
|
|
Return Nothing
|
|
End Function
|
|
|
|
Friend ReadOnly Property sProdLiProbingState2Var As String
|
|
Get
|
|
Return m_sProdLiProbingState2Var
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sProdLiProbingTcPos2Var As String
|
|
Get
|
|
Return m_sProdLiProbingTcPos2Var
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property sProdLiSawDiameter2Var As String
|
|
Get
|
|
Return m_sProdLiSawDiameter2Var
|
|
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 ReadOnly Property bRawSplMovRotate As Boolean
|
|
Get
|
|
Return m_bRawSplMovRotate
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bRawFinalMove As Boolean
|
|
Get
|
|
Return m_bRawFinalMove
|
|
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 bCupWheel As Boolean
|
|
Get
|
|
Return m_bCupWheel
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bPolishingWheel As Boolean
|
|
Get
|
|
Return m_bPolishingWheel
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bWaterJet As Boolean
|
|
Get
|
|
Return m_bWaterJet
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bFromDBWaterJet As Boolean
|
|
Get
|
|
Return m_bFromDBWaterJet
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ShowToolChanger As Integer
|
|
Get
|
|
Return m_nShowToolChanger
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bShowHeadExit As Boolean
|
|
Get
|
|
Return m_bShowHeadExit
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ShowUserNotes As Integer
|
|
Get
|
|
Return m_nShowUserNotes
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property ShowSpecials As Integer
|
|
Get
|
|
Return m_nShowSpecials
|
|
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 bPocketing As Boolean
|
|
Get
|
|
Return m_bPocketing
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bPolishing As Boolean
|
|
Get
|
|
Return m_bPolishing
|
|
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 ReadOnly Property bWaterJetting As Boolean
|
|
Get
|
|
Return m_bWaterJetting
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bSawingSpecialLeadIn As Boolean
|
|
Get
|
|
Return m_bSawingSpecialLeadIn
|
|
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 sCurrSawTilted As String
|
|
Get
|
|
Return m_sCurrSawTilted
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWTILTED, value, sMachIniFile) Then
|
|
m_sCurrSawTilted = 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 sCurrMillNoTip As String
|
|
Get
|
|
Return m_sCurrMillNoTip
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRMILLNOTIP, value, sMachIniFile) Then
|
|
m_sCurrMillNoTip = 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 sCurrDripDrill As String
|
|
Get
|
|
Return m_sCurrDripDrill
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILL, value, sMachIniFile) Then
|
|
m_sCurrDripDrill = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrWaterJet As String
|
|
Get
|
|
Return m_sCurrWaterJet
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJET, value, sMachIniFile) Then
|
|
m_sCurrWaterJet = 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
|
|
m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrSawingTilted As String
|
|
Get
|
|
Return m_sCurrSawingTilted
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWINGTILTED, value, sMachIniFile) Then
|
|
m_sCurrSawingTilted = value
|
|
'm_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property bApplySawingTilted As Boolean
|
|
Get
|
|
Return m_bApplySawingTilted
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bApplySawingTilted = value
|
|
If m_bApplySawingTilted Then
|
|
WritePrivateProfileString(S_MACH_MACH, K_APPLYSAWINGTILTED, "1", sMachIniFile)
|
|
Else
|
|
WritePrivateProfileString(S_MACH_MACH, K_APPLYSAWINGTILTED, "0", sMachIniFile)
|
|
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 sCurrPocketing As String
|
|
Get
|
|
Return m_sCurrPocketing
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRPOCKETING, value, sMachIniFile) Then
|
|
m_sCurrPocketing = 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 sCurrSawSingle As String
|
|
Get
|
|
Return m_sCurrSawSingle
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWSINGLE, value, sMachIniFile) Then
|
|
m_sCurrSawSingle = 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 sCurrDripDrilling As String
|
|
Get
|
|
Return m_sCurrDripDrilling
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILLING, value, sMachIniFile) Then
|
|
m_sCurrDripDrilling = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrWaterJetting As String
|
|
Get
|
|
Return m_sCurrWaterJetting
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, value, sMachIniFile) Then
|
|
m_sCurrWaterJetting = value
|
|
If m_MainWindow.m_CurrentMachine.bWaterJet And EgtGetHeadId("H1") = GDB_ID.NULL Then
|
|
m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
|
|
End If
|
|
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend Property sCurrWaterJettingQuality As String
|
|
Get
|
|
Return m_sCurrWaterJettingQuality
|
|
End Get
|
|
Set(value As String)
|
|
If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, value, sMachIniFile) Then
|
|
m_sCurrWaterJettingQuality = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property WaterJettingActive As Double
|
|
Get
|
|
Return m_bWaterJetting AndAlso Not String.IsNullOrWhiteSpace(m_sCurrWaterJetting)
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bEnableInvert As Boolean
|
|
Get
|
|
Return m_bEnableInvetrt
|
|
End Get
|
|
End Property
|
|
|
|
Friend Property dAdditionalTable As Double
|
|
Get
|
|
Select Case GetCurrentTable()
|
|
Case 2
|
|
Return m_dTab2AdditionalTable
|
|
Case 3
|
|
Return m_dTab3AdditionalTable
|
|
Case 4
|
|
Return m_dTab4AdditionalTable
|
|
Case Else
|
|
Return m_dAdditionalTable
|
|
End Select
|
|
End Get
|
|
Set(value As Double)
|
|
Dim dValue As Double = 0
|
|
Select Case GetCurrentTable()
|
|
Case 4
|
|
If Math.Abs(value - m_dTab4AdditionalTable) > EPS_SMALL And
|
|
WritePrivateProfileString(S_TABLE, K_TAB4_ADDITIONALTABLE, DoubleToString(value, 3), sMachIniFile) Then
|
|
' Aggiorno il valore corrente
|
|
m_dTab4AdditionalTable = value
|
|
' Aggiorno il progetto corrente
|
|
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
|
|
' salvo il valore della sovratavola nel progetto
|
|
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, dValue)
|
|
If Math.Abs(dValue - value) > EPS_SMALL Then
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, value)
|
|
End If
|
|
End If
|
|
Case 3
|
|
If Math.Abs(value - m_dTab3AdditionalTable) > EPS_SMALL And
|
|
WritePrivateProfileString(S_TABLE, K_TAB3_ADDITIONALTABLE, DoubleToString(value, 3), sMachIniFile) Then
|
|
' Aggiorno il valore corrente
|
|
m_dTab3AdditionalTable = value
|
|
' Aggiorno il progetto corrente
|
|
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
|
|
' salvo il valore della sovratavola nel progetto
|
|
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, dValue)
|
|
If Math.Abs(dValue - value) > EPS_SMALL Then
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, value)
|
|
End If
|
|
End If
|
|
Case 2
|
|
If Math.Abs(value - m_dTab2AdditionalTable) > EPS_SMALL And
|
|
WritePrivateProfileString(S_TABLE, K_TAB2_ADDITIONALTABLE, DoubleToString(value, 3), sMachIniFile) Then
|
|
' Aggiorno il valore corrente
|
|
m_dTab2AdditionalTable = value
|
|
' Aggiorno il progetto corrente
|
|
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
|
|
' salvo il valore della sovratavola nel progetto
|
|
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB2_ADDITIONALTABLE, dValue)
|
|
If Math.Abs(dValue - value) > EPS_SMALL Then
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB2_ADDITIONALTABLE, value)
|
|
End If
|
|
End If
|
|
Case Else
|
|
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()
|
|
' salvo il valore della sovratavola nel progetto
|
|
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_ADDITIONALTABLE, dValue)
|
|
If Math.Abs(dValue - value) > EPS_SMALL Then
|
|
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_ADDITIONALTABLE, value)
|
|
End If
|
|
End If
|
|
End Select
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property CenterRawOnX As Boolean
|
|
Get
|
|
Return m_bCenterRawOnX
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property PhotoOffset As Vector3d
|
|
Get
|
|
Select Case GetCurrentTable()
|
|
Case 4
|
|
Return New Vector3d(m_dTab4PhotoOffsetX, m_dTab4PhotoOffsetY, 0)
|
|
Case 3
|
|
Return New Vector3d(m_dTab3PhotoOffsetX, m_dTab3PhotoOffsetY, 0)
|
|
Case 2
|
|
Return New Vector3d(m_dTab2PhotoOffsetX, m_dTab2PhotoOffsetY, 0)
|
|
Case 1
|
|
' verifico quale delle due fotocamere è attualmente attiva
|
|
If GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, 0, m_MainWindow.GetMachIniFile()) = 1 Then
|
|
Return New Vector3d(m_dHQPhotoOffsetX, m_dHQPhotoOffsetY, 0)
|
|
End If
|
|
Return New Vector3d(m_dPhotoOffsetX, m_dPhotoOffsetY, 0)
|
|
Case Else
|
|
Return New Vector3d(m_dPhotoOffsetX, m_dPhotoOffsetY, 0)
|
|
End Select
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property CameraCounter As Integer
|
|
Get
|
|
Return m_nCamCounter
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bEnableRestart As Boolean
|
|
Get
|
|
Return m_bEnableRestart
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bEnablePause As Boolean
|
|
Get
|
|
Return m_bEnablePause
|
|
End Get
|
|
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 Property bAddSawThTo5AxMove As Boolean
|
|
Get
|
|
Return m_bAddSawThTo5AxMove
|
|
End Get
|
|
Set(value As Boolean)
|
|
If WritePrivateProfileString(S_MACH_DIRECTCUTS, K_ADDSAWTHTO5AXMOVE, If(value, "1", "0"), sMachIniFile) Then
|
|
m_bAddSawThTo5AxMove = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Friend ReadOnly Property bFsevEnable As Boolean
|
|
Get
|
|
Return m_bFsevEnable
|
|
End Get
|
|
End Property
|
|
|
|
Friend Property dFsevLength As Double
|
|
Get
|
|
Return m_dFsevLength
|
|
End Get
|
|
Set(value As Double)
|
|
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVLEN, DoubleToString(value, 3), sMachIniFile) Then
|
|
m_dFsevLength = value
|
|
' salvo il dato nelle UserNote della lavorazione
|
|
'MdbSetCurrMachiningUserNote("FsevLength", m_dFsevLength.ToString, sCurrSawing, false)
|
|
' salvo il dato nelle UserNote dell'utensile
|
|
TdbSetCurrToolUserNote("FsevLength", m_dFsevLength.ToString, sCurrSaw)
|
|
End If
|
|
End Set
|
|
End Property
|
|
Friend Sub SetFsevLength(value As Double)
|
|
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVLEN, DoubleToString(value, 3), sMachIniFile) Then
|
|
m_dFsevLength = value
|
|
End If
|
|
End Sub
|
|
|
|
Friend Property dFsevPerc As Double
|
|
Get
|
|
Return m_dFsevPerc
|
|
End Get
|
|
Set(value As Double)
|
|
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVPERC, DoubleToString(value, 3), sMachIniFile) Then
|
|
m_dFsevPerc = value
|
|
'' salvo il dato nelle UserNote della lavorazione
|
|
'MdbSetCurrMachiningUserNote("FsevPerc", m_dFsevPerc.ToString, sCurrSawing)
|
|
' salvo il dato nelle UserNote dell'utensile
|
|
TdbSetCurrToolUserNote("FsevPerc", m_dFsevPerc.ToString, sCurrSaw)
|
|
End If
|
|
End Set
|
|
End Property
|
|
Friend Sub SetFsevPerc(value As Double)
|
|
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVPERC, DoubleToString(value, 3), sMachIniFile) Then
|
|
m_dFsevPerc = value
|
|
End If
|
|
End Sub
|
|
|
|
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 ReadOnly Property Qualities As ObservableCollection(Of String)
|
|
Get
|
|
Return m_Qualities
|
|
End Get
|
|
End Property
|
|
|
|
Friend Sub AddMaterial(value As Material)
|
|
For Each Material As 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 As Integer = 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 As Object 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, "")
|
|
If bWaterJet And bFromDBWaterJet Then
|
|
WritePrivateProfileString(S_MATERIALS, K_CURRMATERIAL, CurrMatId & If(Not IsNothing(value), "." & value.SubId, ""), sMachIniFile)
|
|
Else
|
|
WritePrivateProfileString(S_MATERIALS, K_CURRMATERIAL, CurrMatId, sMachIniFile)
|
|
End If
|
|
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 As Integer = 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
|
|
|
|
Friend ReadOnly Property bHasRawBarCodeReader As Boolean
|
|
Get
|
|
Return (m_nEnableBarCodeReader = 1)
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property bHasOpenBarCodeReader As Boolean
|
|
Get
|
|
Return (m_nEnableBarCodeReader = 2)
|
|
End Get
|
|
End Property
|
|
|
|
Friend ReadOnly Property dHighPieceZ As Double
|
|
Get
|
|
Return m_dHighPieceZ
|
|
End Get
|
|
End Property
|
|
|
|
Friend Property bEnableFinalSawCut As Boolean
|
|
Get
|
|
Return m_bEnableFinalSawCut
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bEnableFinalSawCut = value
|
|
End Set
|
|
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)
|
|
' per gestione canali separati (macchina NUM con più di 5 Assi) ver. 2.5g1
|
|
GetPrivateProfileString(S_PARTPROGRAM, K_EXTFILECN, ".0", m_sExtFileCN, 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 ritardo tra reset e send per NUM
|
|
m_nThreadSleep = GetPrivateProfileInt(S_NCNUM, K_THREADSLEEP, 150, 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.PRODUCTION_LINE) Then
|
|
m_bProdLine = False
|
|
EgtOutLog("Error - Production line requested but not key enabled")
|
|
End If
|
|
m_bDemo = (GetPrivateProfileInt(S_PRODUCTIONLINE, "Demo", 0, sMachIniFile) <> 0)
|
|
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_VARPROJFINISHED, "", m_sVarProjFinished, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROJCOPY, "", m_sVarProjCopy, sMachIniFile)
|
|
m_bSpecialUnload = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_SPECIALUNLOAD, 0, sMachIniFile) <> 0)
|
|
m_nSaveProduced = GetPrivateProfileInt(S_PRODUCTIONLINE, K_SAVEPRODUCED, 0, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_VARPROGTWINS, "", m_sVarProgTwins, sMachIniFile)
|
|
m_bAskNewOnResend = (GetPrivateProfileInt(S_PRODUCTIONLINE, K_ASKNEWONRESEND, 0, sMachIniFile) <> 0)
|
|
m_nProdLiSawProbe = GetPrivateProfileInt(S_PRODUCTIONLINE, K_PRODLIENABLESAWPROBE, 0, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGSTATEVAR, "", m_sProdLiProbingStateVar, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOSVAR, "0", m_sProdLiProbingTcPosVar, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETERVAR, "", m_sProdLiSawDiameterVar, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGSTATE2VAR, "", m_sProdLiProbingState2Var, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOS2VAR, "0", m_sProdLiProbingTcPos2Var, sMachIniFile)
|
|
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETER2VAR, "", m_sProdLiSawDiameter2Var, sMachIniFile)
|
|
|
|
GetPrivateProfileString(S_POLISHLINE, K_CLICKSTATE, "", m_sClickState, sMachIniFile)
|
|
GetPrivateProfileString(S_POLISHLINE, k_CLICKDIR, "", m_sClickDir, sMachIniFile)
|
|
If Not Directory.Exists(m_sClickDir) Then
|
|
m_sClickState = ""
|
|
EgtOutLog("Directory " & m_sClickDir & " does not exist")
|
|
End If
|
|
|
|
' 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)
|
|
' mola da scasso
|
|
m_bCupWheel = (GetPrivateProfileInt(S_TOOLS, K_CUPWHEEL, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_MILL)
|
|
' lucidante
|
|
m_bPolishingWheel = (GetPrivateProfileInt(S_TOOLS, K_POLISHINGWHEEL, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_POLISHING)
|
|
' waterjet
|
|
m_bWaterJet = (GetPrivateProfileInt(S_TOOLS, K_WATERJET, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_WJ)
|
|
' Leggo abilitazione DB WaterJet
|
|
m_bFromDBWaterJet = (GetPrivateProfileInt(S_MATERIALS, K_FROMDBWATERJET, 0, sMachIniFile) > 0)
|
|
' Leggo abilitazione visualizzazione TcPos, Head/exit e Note utente
|
|
m_nShowToolChanger = GetPrivateProfileInt(S_TOOLS, K_SHOWTOOLCHANGER, 0, sMachIniFile)
|
|
m_bShowHeadExit = (GetPrivateProfileInt(S_TOOLS, K_SHOWHEADEXIT, 0, sMachIniFile) > 0)
|
|
m_nShowUserNotes = GetPrivateProfileInt(S_TOOLS, K_SHOWUSERNOTES, 0, sMachIniFile)
|
|
m_nShowSpecials = GetPrivateProfileInt(S_TOOLS, K_SHOWSPECIALS, 0, sMachIniFile)
|
|
' 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 abilitazione rotazione grezzi durante spezza e muovi
|
|
m_bRawSplMovRotate = (GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_RM_ROTATE, 0, sMachIniFile) <> 0)
|
|
' Leggo flag abilitazione spostamento pezzi alla fine delle lavorazioni
|
|
m_bRawFinalMove = (GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_RM_FINALMOVE, 0, sMachIniFile) <> 0)
|
|
' Leggo flag presenza tipologie lavorazioni
|
|
' taglio con lama
|
|
m_bSawing = (GetPrivateProfileInt(S_MACHININGS, K_SAWING, 0, sMachIniFile) > 0)
|
|
' foratura
|
|
m_bDrilling = (GetPrivateProfileInt(S_MACHININGS, K_DRILLING, 0, sMachIniFile) > 0)
|
|
' fresatura
|
|
m_bMilling = (GetPrivateProfileInt(S_MACHININGS, K_MILLING, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_MILL)
|
|
' svuotatura
|
|
m_bPocketing = (GetPrivateProfileInt(S_MACHININGS, K_POCKETING, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_MILL)
|
|
' lucidatura
|
|
m_bPolishing = (GetPrivateProfileInt(S_MACHININGS, K_POLISHING, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_POLISHING)
|
|
' 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)
|
|
' taglio waterjet
|
|
m_bWaterJetting = (GetPrivateProfileInt(S_MACHININGS, K_WATERJETTING, 0, sMachIniFile) > 0) And
|
|
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_WJ)
|
|
' possibilità di definire attacco speciale per materiali ceramici
|
|
m_bSawingSpecialLeadIn = (GetPrivateProfileInt(S_MACHININGS, K_SAWINGSPECIALLEADIN, 0, sMachIniFile) > 0)
|
|
' mantengo la direzione del taglio definita nel taglio diretto
|
|
m_bEnableInvetrt = (GetPrivateProfileInt(S_DIRECTCUTS, K_ENABLEINVERT, 1, sMachIniFile) <> 0)
|
|
|
|
' Leggo utensili correnti
|
|
' lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAW, Nothing, m_sCurrSaw, sMachIniFile)
|
|
' lama inclinata
|
|
If m_MountedToolConfig = 4 Then
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWTILTED, Nothing, m_sCurrSawTilted, sMachIniFile)
|
|
Else
|
|
' se non è configurato il cambio utensile e allora imposto l'unica lama disponibile per i tagli inclinati
|
|
m_sCurrSawTilted = m_sCurrSaw
|
|
End If
|
|
|
|
' foretto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILL, Nothing, m_sCurrDrill, sMachIniFile)
|
|
' fresa
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRMILL, Nothing, m_sCurrMill, sMachIniFile)
|
|
' mola
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRMILLNOTIP, Nothing, m_sCurrMillNoTip, sMachIniFile)
|
|
' lama da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPSAW, Nothing, m_sCurrDripSaw, sMachIniFile)
|
|
' foretto da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILL, Nothing, m_sCurrDripDrill, sMachIniFile)
|
|
' waterjet
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJET, Nothing, m_sCurrWaterJet, sMachIniFile)
|
|
|
|
' Leggo lavorazioni correnti
|
|
' lama
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, m_sCurrSawing, sMachIniFile)
|
|
' lama inlicnata
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWINGTILTED, Nothing, m_sCurrSawingTilted, sMachIniFile)
|
|
' applica lavorazione di lama inclinata
|
|
m_bApplySawingTilted = (GetPrivateProfileInt(S_MACH_MACH, K_APPLYSAWINGTILTED, 0, sMachIniFile) <> 0)
|
|
' foretto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILLING, Nothing, m_sCurrDrilling, sMachIniFile)
|
|
' fresa
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRMILLING, Nothing, m_sCurrMilling, sMachIniFile)
|
|
' svuotatura
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRPOCKETING, Nothing, m_sCurrPocketing, 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)
|
|
' taglio singolo
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWSINGLE, Nothing, m_sCurrSawSingle, sMachIniFile)
|
|
' lama da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPSAWING, Nothing, m_sCurrDripSawing, sMachIniFile)
|
|
' foretto da sotto
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILLING, Nothing, m_sCurrDripDrilling, sMachIniFile)
|
|
' waterjetting
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, Nothing, m_sCurrWaterJetting, sMachIniFile)
|
|
' waterjettingquality
|
|
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, Nothing, m_sCurrWaterJettingQuality, 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 As Integer = 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)
|
|
m_dTab2AdditionalTable = GetPrivateProfileDouble(S_TABLE, K_TAB2_ADDITIONALTABLE, 0, sMachIniFile)
|
|
m_dTab3AdditionalTable = GetPrivateProfileDouble(S_TABLE, K_TAB3_ADDITIONALTABLE, 0, sMachIniFile)
|
|
m_dTab4AdditionalTable = GetPrivateProfileDouble(S_TABLE, K_TAB4_ADDITIONALTABLE, 0, sMachIniFile)
|
|
|
|
' Leggo centratura del pezzo in X sulla tavola (per macchine con nastro)
|
|
m_bCenterRawOnX = (GetPrivateProfileInt(S_TABLE, K_CENTER_RAW_ONX, 0, sMachIniFile) <> 0)
|
|
|
|
' Leggo il numero di camere installate a bordo macchina
|
|
m_nCamCounter = GetPrivateProfileInt(S_PHOTO, K_PHOTO_CAMERACOUNTER, -1, sMachIniFile)
|
|
' Leggo offset aggiuntivo a fotografia (Tab1 oppure Tab di carico)
|
|
m_dPhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_OFFSETX, 0, sMachIniFile)
|
|
m_dPhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_OFFSETY, 0, sMachIniFile)
|
|
' Tab2
|
|
m_dTab2PhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETX, 0, sMachIniFile)
|
|
m_dTab2PhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETY, 0, sMachIniFile)
|
|
' Tab3
|
|
m_dTab3PhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB3_OFFSETX, 0, sMachIniFile)
|
|
m_dTab3PhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB3_OFFSETY, 0, sMachIniFile)
|
|
' Tab4
|
|
m_dTab4PhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB4_OFFSETX, 0, sMachIniFile)
|
|
m_dTab4PhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB4_OFFSETY, 0, sMachIniFile)
|
|
' Tab1 Hq
|
|
m_dHQPhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_HQ_OFFSETX, 0, sMachIniFile)
|
|
m_dHQPhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_HQ_OFFSETY, 0, sMachIniFile)
|
|
|
|
' Leggo abilitazione per restart
|
|
m_bEnableRestart = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENABLERESTART, 0, sMachIniFile) <> 0)
|
|
' Leggo abilitazione scelta pausa a fine lavorazione
|
|
m_bEnablePause = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENABLEPAUSE, 0, sMachIniFile) <> 0)
|
|
|
|
' Leggo flag per posizione home alla fine dei tagli diretti
|
|
m_bDirectCutsFinalHome = (GetPrivateProfileInt(S_MACH_DIRECTCUTS, K_FINALHOME, 1, sMachIniFile) <> 0)
|
|
' Leggo flag per aggiunta spessore lama a movimento manuale 5assi
|
|
m_bAddSawThTo5AxMove = (GetPrivateProfileInt(S_MACH_DIRECTCUTS, K_ADDSAWTHTO5AXMOVE, 0, sMachIniFile) <> 0)
|
|
|
|
' Leggo dati per feed ridotta all'inizio/fine dei tagli
|
|
m_bFsevEnable = (GetPrivateProfileInt(S_NEST, K_MACH_CUTFSEVENABLE, 0, sMachIniFile) <> 0)
|
|
' sposto la lettura nel DB delle lavorazioni della lama corrente!
|
|
m_dFsevLength = GetPrivateProfileDouble(S_NEST, K_MACH_CUTFSEVLEN, 0, sMachIniFile)
|
|
m_dFsevPerc = GetPrivateProfileDouble(S_NEST, K_MACH_CUTFSEVPERC, 0, sMachIniFile)
|
|
|
|
' 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
|
|
|
|
If m_bWaterJet And m_bFromDBWaterJet Then
|
|
LoadWJMaterial(True)
|
|
Else
|
|
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
|
|
m_Materials.Add(Material)
|
|
nIndex += 1
|
|
End While
|
|
End If
|
|
|
|
' 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 sCurrMatId As String = String.Empty
|
|
EgtUILib.GetPrivateProfileString(S_MATERIALS, K_CURRMATERIAL, "0", sCurrMatId, sMachIniFile)
|
|
If bWaterJet And bFromDBWaterJet Then
|
|
Dim sCurrMatIds As String()
|
|
sCurrMatIds = sCurrMatId.Split("."c)
|
|
If sCurrMatIds.Length > 1 Then
|
|
Dim nCurrMatId As Integer
|
|
Dim nCurrSubMatId As Integer
|
|
If Not Integer.TryParse(sCurrMatIds(0), nCurrMatId) Then nCurrMatId = 0
|
|
If Not Integer.TryParse(sCurrMatIds(1), nCurrSubMatId) Then nCurrSubMatId = 0
|
|
For Each Material In Materials
|
|
If Material.nId = nCurrMatId AndAlso Material.SubId = nCurrSubMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Else
|
|
Dim nCurrMatId As Integer
|
|
If Not Integer.TryParse(sCurrMatId, nCurrMatId) Then nCurrMatId = 0
|
|
For Each Material In Materials
|
|
If Material.nId = nCurrMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' leggo se la macchina ha il tastatore dello spessore tavola
|
|
m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0)
|
|
' leggo se la macchina ha il lettore di codice a barre della lastra
|
|
m_nEnableBarCodeReader = GetPrivateProfileInt(S_MACH_BARCODEREADER, K_ENABLEBCR, 0, sMachIniFile)
|
|
|
|
' affonadamento massimo oltre la tavola (inidicata in positivo!)
|
|
m_MaxTabDepth = GetPrivateProfileDouble(S_MACH_NEST, "MaxTabDepth", 10.0, m_MainWindow.GetMachIniFile())
|
|
If m_MaxTabDepth < 0 Then
|
|
m_MaxTabDepth = 10.0
|
|
End If
|
|
|
|
' Massimo spessore lavorabile con lama grande
|
|
m_dHighPieceZ = GetPrivateProfileDouble(S_RAWMOVE, "MaxHeightPiece", 800.0, m_MainWindow.GetMachIniFile())
|
|
|
|
' Flag per abilitare taglio finale
|
|
m_bEnableFinalSawCut = GetPrivateProfileInt(S_MACH, K_ENABLEFINALSAWCUT, 0, m_MainWindow.GetMachIniFile()) <> 0
|
|
End Sub
|
|
|
|
' Per il controllo FANUC al momento dell'inizializzazione del CN devono essere lette alcune variabili
|
|
Public Sub InitFANUC(CN_Generic As CN_generico)
|
|
' Leggo ritardo tra reset e send per NUM
|
|
m_nResetSendDelay = GetPrivateProfileInt(S_NCFANUC, K_RESETSENDDELAY, 1000, sMachIniFile)
|
|
' Leggo ritardo tra reset e send per NUM
|
|
m_nThreadSleep = GetPrivateProfileInt(S_NCFANUC, K_THREADSLEEP, 150, sMachIniFile)
|
|
' Leggo i dati strettamente correlati alla comunicazione NC-PC
|
|
Dim CN As CN_generico = CN_Generic
|
|
' Leggo l'indirizzo in cui scrivere lo stato macchina
|
|
Dim dAddNcMode As String = CN.s_addr_set_nc_mode
|
|
GetPrivateProfileString(S_NCFANUC, K_SETNCMODE, CN.s_addr_set_nc_mode, CN.s_addr_set_nc_mode, sMachIniFile)
|
|
' Leggo primo indirizzo libero delle variabili di tipo intero
|
|
CN.n_Base_addr_int_vars = GetPrivateProfileInt(S_NCFANUC, K_BASEADDRINT, CN.n_Base_addr_int_vars, sMachIniFile)
|
|
' Leggo primo indirizzo libero delle variabili di tipo bit
|
|
CN.n_Base_addr_byte_for_bits_vars = GetPrivateProfileInt(S_NCFANUC, K_BASEADDRBIT, CN.n_Base_addr_byte_for_bits_vars, sMachIniFile)
|
|
' Leggo numero di variabili di tipo intero
|
|
CN.n_num_var_int_to_read = CShort(GetPrivateProfileInt(S_NCFANUC, K_NUMVARINT, CInt(CN.n_num_var_int_to_read), sMachIniFile))
|
|
' Leggo numero di varibili di tipo bit
|
|
CN.n_num_var_byte_for_bits_to_read = CShort(GetPrivateProfileInt(S_NCFANUC, K_NUMVARBIT, CInt(CN.n_num_var_byte_for_bits_to_read), sMachIniFile))
|
|
' Leggo variabile abilitata alla gestione di FeedHold
|
|
GetPrivateProfileString(S_NCFANUC, K_SETNCMODE, CN.s_addr_feedhold, CN.s_addr_feedhold, sMachIniFile)
|
|
End Sub
|
|
|
|
Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False)
|
|
Dim TempCurrMat As Material = CurrMat
|
|
' Svuoto l'attuale lista di materiali
|
|
m_Materials.Clear()
|
|
' Leggo valori da file Data e li carico nelle proprietà
|
|
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
|
|
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
|
|
Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
|
|
' definisco la lista delle qualità (solo se è vuota)
|
|
If m_Qualities.Count < 1 Then
|
|
m_Qualities.Add("Q1")
|
|
m_Qualities.Add("Q2")
|
|
m_Qualities.Add("Q3")
|
|
m_Qualities.Add("Q4")
|
|
m_Qualities.Add("Q5")
|
|
m_Qualities.Add("QExtra")
|
|
End If
|
|
' inserisco il materiale generico di default -- IN SOSPESO
|
|
'm_Materials.Add(New Material(0, "***", 0))
|
|
' costruiscoi la lista
|
|
Dim i As Integer = 0
|
|
Dim sName As String = String.Empty
|
|
For i = 0 To Local_MaterialList.Count - 1
|
|
sName = Local_MaterialList(i).Name
|
|
Dim j As Integer = 0
|
|
For j = 0 To Local_MaterialList(i).SubMaterialList.Count - 1
|
|
m_Materials.Add(New Material(i + 1, sName & "." & Local_MaterialList(i).SubMaterialList(j).Name, j + 1))
|
|
Next
|
|
Next
|
|
If Not bIsStart Then CurrMat = TempCurrMat
|
|
End Sub
|
|
|
|
Public Function GetMaxThicknessCurrMaterial(sCurMat As String) As Double
|
|
Dim bFound As Boolean = False
|
|
Dim dMaxThick As Double = 0
|
|
' Leggo valori da file Data e li carico nelle proprietà
|
|
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
|
|
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
|
|
Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
|
|
Dim sItems() As String = sCurMat.Split("."c)
|
|
If sItems.Count > 1 Then
|
|
Dim sMat As String = sItems(0)
|
|
Dim sSubMat As String = sItems(1)
|
|
For Each ItemMat As EgtWPFLib5.WjMaterial In Local_MaterialList
|
|
If ItemMat.Name = sMat Then
|
|
For Each ItemSubMat As EgtWPFLib5.WjSubMaterial In ItemMat.SubMaterialList
|
|
If ItemSubMat.Name = sSubMat Then
|
|
For Each ItemParam As EgtWPFLib5.WjParam In ItemSubMat.ParamList
|
|
Dim dParamThick As Double
|
|
StringToDouble(ItemParam.Thickness, dParamThick)
|
|
If dParamThick > dMaxThick Then
|
|
dMaxThick = dParamThick
|
|
End If
|
|
Next
|
|
bFound = True
|
|
Exit For
|
|
End If
|
|
If bFound Then Exit For
|
|
Next
|
|
End If
|
|
If bFound Then Exit For
|
|
Next
|
|
End If
|
|
' il valore resituito è già nell'unità corrente del programma -> converto il dato in mm
|
|
Dim dValmm As Double = 0
|
|
StringToLen(DoubleToString(dMaxThick, 3), dValmm)
|
|
Return dValmm
|
|
End Function
|
|
|
|
#Region "USERNOTE"
|
|
|
|
' recupero le note UserNote associate alla LAVORAZIONE Machining
|
|
Friend Function MdbGetCurrMachiningUserNote(Machining As String) As String
|
|
Dim UserNotes As String = String.Empty
|
|
' lavorazione corrente
|
|
Dim CurrMach As String = String.Empty
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.NAME, CurrMach)
|
|
' Imposto utensile lama corrente
|
|
If Not String.IsNullOrWhiteSpace(Machining) AndAlso EgtMdbSetCurrMachining(Machining) Then
|
|
' leggo nel db corrente della lavorazione questa info
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes)
|
|
' reimposto lavorazione corrente
|
|
EgtMdbSetCurrMachining(CurrMach)
|
|
End If
|
|
Return UserNotes
|
|
End Function
|
|
|
|
' recupero le note UserNote associate all'UTENSILE Tool
|
|
Friend Function TdbGetCurrToolUserNote(Tool As String) As String
|
|
Dim UserNotes As String = String.Empty
|
|
' lavorazione corrente
|
|
Dim CurrTool As String = String.Empty
|
|
EgtTdbGetCurrToolParam(MCH_TP.NAME, CurrTool)
|
|
' Imposto utensile lama corrente
|
|
If Not String.IsNullOrWhiteSpace(Tool) AndAlso EgtTdbSetCurrTool(Tool) Then
|
|
' leggo nel db corrente della lavorazione questa info
|
|
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, UserNotes)
|
|
' reimposto lavorazione corrente
|
|
EgtTdbSetCurrTool(CurrTool)
|
|
End If
|
|
Return UserNotes
|
|
End Function
|
|
|
|
' imposta il nuovo valore in UserNote della LAVORAZIONE Machining
|
|
Friend Sub MdbSetCurrMachiningUserNote(sKeyUserNote As String, sValUserNote As String, Machining As String)
|
|
' lavorazione corrente
|
|
Dim CurrMach As String = String.Empty
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.NAME, CurrMach)
|
|
' Imposto utensile lama corrente
|
|
If Not String.IsNullOrWhiteSpace(Machining) AndAlso EgtMdbSetCurrMachining(Machining) Then
|
|
Dim UserNotes As String = String.Empty
|
|
' salvo nel db corrente della lavorazione questa info → devo gestire l'inserimento: sovrascrivo NON ESEGUE un APPEND delle info
|
|
EgtMdbSetCurrMachiningParam(MCH_MP.USERNOTES, AssembUserNote(sKeyUserNote, sValUserNote, Machining))
|
|
EgtMdbSaveCurrMachining()
|
|
EgtMdbSave()
|
|
' reimposto lavorazione corrente
|
|
EgtMdbSetCurrMachining(CurrMach)
|
|
End If
|
|
End Sub
|
|
|
|
' imposta il nuovo valore in UserNote dell'UTENSILE Tool
|
|
Friend Sub TdbSetCurrToolUserNote(sKeyUserNote As String, sValUserNote As String, Tool As String)
|
|
' lavorazione corrente
|
|
Dim CurrTool As String = String.Empty
|
|
EgtTdbGetCurrToolParam(MCH_TP.NAME, CurrTool)
|
|
' Imposto utensile lama corrente
|
|
If Not String.IsNullOrWhiteSpace(Tool) AndAlso EgtTdbSetCurrTool(Tool) Then
|
|
Dim UserNotes As String = String.Empty
|
|
' salvo nel db corrente della lavorazione questa info → devo gestire l'inserimento: sovrascrivo NON ESEGUE un APPEND delle info
|
|
EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, AssembUserNote(sKeyUserNote, sValUserNote, Tool))
|
|
EgtTdbSaveCurrTool()
|
|
EgtTdbSave()
|
|
' reimposto lavorazione corrente
|
|
EgtTdbSetCurrTool(Tool)
|
|
End If
|
|
End Sub
|
|
|
|
' separa la le note UserNote della LAVORAZIONE
|
|
Private Function SplitUserNoteMachinig(Machining As String) As String()
|
|
Dim sUserNotes As String = MdbGetCurrMachiningUserNote(Machining)
|
|
If String.IsNullOrEmpty(sUserNotes) Then Return Nothing
|
|
Dim sItems As String() = sUserNotes.Split(";"c)
|
|
Return sItems
|
|
End Function
|
|
|
|
' separa la le note UserNote della LAVORAZIONE
|
|
Private Function SplitUserNoteTool(Tool As String) As String()
|
|
Dim sUserNotes As String = TdbGetCurrToolUserNote(Tool)
|
|
If String.IsNullOrEmpty(sUserNotes) Then Return Nothing
|
|
Dim sItems As String() = sUserNotes.Split(";"c)
|
|
Return sItems
|
|
End Function
|
|
|
|
' recupera il valore della associato alla chiave per la lavorazione oppure utensile (bIsToolNote)
|
|
Friend Function GetUserNote(sKeyUserNote As String, ByRef sValUserNote As String, sName As String, Optional bIsToolNote As Boolean = True) As Boolean
|
|
Dim sUserNotesList As String() = Nothing
|
|
If bIsToolNote Then
|
|
sUserNotesList = SplitUserNoteTool(sName)
|
|
Else
|
|
sUserNotesList = SplitUserNoteMachinig(sName)
|
|
End If
|
|
If IsNothing(sUserNotesList) Then Return False
|
|
For Index As Integer = 0 To sUserNotesList.Count - 1
|
|
Dim sNote As String() = sUserNotesList(Index).Split("="c)
|
|
If sNote.Count = 2 AndAlso sNote(0).Trim = sKeyUserNote Then
|
|
sValUserNote = sNote(1).Trim
|
|
End If
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
' ricostruisce la stringa UserNote da salvare
|
|
Friend Function AssembUserNote(sKeyUserNote As String, sValUserNote As String, sName As String, Optional bIsToolNote As Boolean = True) As String
|
|
Dim sUserNotes As String = String.Empty
|
|
Dim sUserNotesList As String() = Nothing
|
|
If bIsToolNote Then
|
|
sUserNotesList = SplitUserNoteTool(sName)
|
|
Else
|
|
sUserNotesList = SplitUserNoteMachinig(sName)
|
|
End If
|
|
Dim bExists As Boolean = False
|
|
If Not IsNothing(sUserNotesList) Then
|
|
For Index As Integer = 0 To sUserNotesList.Count - 1
|
|
Dim sNote As String() = sUserNotesList(Index).Split("="c)
|
|
If sNote.Count = 2 AndAlso sNote(0).Trim = sKeyUserNote Then
|
|
sUserNotesList(Index) = sKeyUserNote & "=" & sValUserNote
|
|
bExists = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
' riassemblo la stringa
|
|
For Each Item As String In sUserNotesList
|
|
If Not String.IsNullOrWhiteSpace(Item) Then
|
|
sUserNotes &= Item & ";"
|
|
End If
|
|
Next
|
|
End If
|
|
If Not bExists Then
|
|
sUserNotes &= sKeyUserNote & "=" & sValUserNote & ";"
|
|
End If
|
|
Return sUserNotes
|
|
End Function
|
|
|
|
#End Region ' USERNOTE
|
|
|
|
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
|
|
Dim bOk As Boolean = dToolDiam <= dMaxSawDiamForProbe
|
|
If Not bOk Then EgtOutLog("WARNING: Saw diameter to big for probing")
|
|
Return bOk
|
|
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
|
|
Private m_SubId As Integer = 0
|
|
|
|
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
|
|
|
|
Public Property SubId As Integer
|
|
Get
|
|
Return m_SubId
|
|
End Get
|
|
Set(value As Integer)
|
|
m_SubId = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sName As String, MaterialList As ObservableCollection(Of Material))
|
|
Dim nMaxId As Integer = 0
|
|
For Each Material As 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
|
|
|
|
Sub New(nId As Integer, sName As String, nSubId As Integer)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
m_SubId = nSubId
|
|
End Sub
|
|
|
|
End Class
|
|
|