Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Public Module CurrentMachine Private m_Salt As String = "3,1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" ' Nome macchina corrente Private m_sMachineName As String = String.Empty Friend ReadOnly Property sMachineName As String Get Return m_sMachineName End Get End Property ' Direttorio macchina corrente Private m_sMachDir As String = String.Empty Friend ReadOnly Property sMachDir As String Get Return m_sMachDir End Get End Property ' File ini della macchina Private m_sMachIniFile As String = String.Empty Friend ReadOnly Property sMachIniFile As String Get Return m_sMachIniFile End Get End Property ' File script della macchina Private m_sMachScriptDir As String = String.Empty Friend ReadOnly Property sMachScriptDir As String Get Return m_sMachScriptDir End Get End Property ' Cartella delle lavorazioni Private m_sMachiningFilePath As String = String.Empty Friend ReadOnly Property sMachiningFilePath As String Get Return m_sMachiningFilePath End Get End Property Friend Sub SetMachiningFilePath(sValue As String) m_sMachiningFilePath = sValue End Sub ' Cartella dei materiali Private m_sMaterialsFilePath As String = String.Empty Friend ReadOnly Property sMaterialsFilePath As String Get Return m_sMaterialsFilePath End Get End Property ' box della tavola macchina Private m_b3Tab As New BBox3d Friend ReadOnly Property b3Tab As BBox3d Get Return m_b3Tab End Get End Property #Region "Init" Sub InitCurrentMachine(sMachinesRootDir As String, sMachineName As String) ' Nome macchina corrente m_sMachineName = sMachineName ' Impostazione direttorio macchina m_sMachDir = sMachinesRootDir & "\" & sMachineName ' Impostazione path MachIni file m_sMachIniFile = sMachinesRootDir & "\" & sMachineName & "\" & sMachineName & ".ini" ' impostazione cartella script m_sMachScriptDir = sMachinesRootDir & "\" & sMachineName & "\Scripts" ' impostazione cartella lavorazioni m_sMachiningFilePath = sMachinesRootDir & "\" & sMachineName & "\Machinings\Machinings.ini" ' impostazione cartella materiali m_sMaterialsFilePath = sMachinesRootDir & "\" & sMachineName & "\Materials\Materials.ini" ' Disabilito segnalazione modificato Dim DisableMgr As New DisableModifiedMgr ' recupero box macchina Dim nQqqId = EgtAddMachGroup("qqq") EgtSetTable("Tab") EgtGetTableArea(1, m_b3Tab) EgtResetCurrMachGroup() EgtRemoveMachGroup(nQqqId) ' carico materiali e lavorazioni Map.refTopPanelVM.InitMaterialList() Map.refMaterialDbVM.Init() Map.refTopPanelVM.InitMachiningsList() Map.refMachiningDbVM.Init() ' Ripristino stato segnalazione modifica DisableMgr.ReEnable() End Sub #End Region 'Init #Region "Methods" Public Sub CreateMachineTable() ' Disabilito segnalazione modificato Dim DisableMgr As New DisableModifiedMgr ' Recupero dati tavola (creando gruppo di lavoro temporaneo) Dim nTempId = EgtAddMachGroup("qqq") EgtSetTable("Tab") Dim b3Tab As New BBox3d EgtGetTableArea(1, b3Tab) Dim dTabX = b3Tab.DimX Dim dTabY = b3Tab.DimY() EgtRemoveMachGroup(nTempId) ' Disegno tavola Dim nTabPartId As Integer = EgtCreateGroup(GDB_ID.ROOT) EgtSetLevel(nTabPartId, GDB_LV.SYSTEM) EgtSetMode(nTabPartId, GDB_MD.LOCKED) EgtSetStatus(nTabPartId, GDB_ST.ON_) EgtSetName(nTabPartId, TABLE) Dim nTabLayerId As Integer = EgtCreateGroup(nTabPartId) EgtSetName(nTabLayerId, TABLE) Dim nTabOutlineId As Integer = EgtCreateRectangle2P(nTabLayerId, New Point3d(0, 0, 0), New Point3d(dTabX, dTabY, 0)) EgtSetName(nTabOutlineId, TABLE_OUTLINE) ' scrivo il nome macchina sulla tavola EgtSetInfo(nTabPartId, KEY_MACHINE_NAME, CurrentMachine.sMachineName) ' scrivo materiale sulla tavola If Not IsNothing(Map.refTopPanelVM.SelMaterial) Then EgtSetInfo(nTabPartId, KEY_MATERIAL_GUID, Map.refTopPanelVM.SelMaterial.sGUID) EgtSetInfo(nTabPartId, KEY_MATERIAL_NAME, Map.refTopPanelVM.SelMaterial.sName) End If ' Ripristino stato segnalazione modifica DisableMgr.ReEnable() End Sub Friend Function ReadMachiningParamString(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, "", lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath)) If Not String.IsNullOrWhiteSpace(lpString) Then lpString = EgwCrypto.PowerDecryptString(lpString, m_Salt) Else lpString = lpDefault End If Return nResult End Function Friend Function ReadMachiningParamSplit(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, "", lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath)) If Not String.IsNullOrWhiteSpace(lpString) Then Dim Values() As String = lpString.Split(";"c) Dim sCryptoValues As String = "" For ValueIndex = 0 To Values.Count - 1 sCryptoValues += EgwCrypto.PowerDecryptString(Values(ValueIndex), m_Salt) & If(ValueIndex < Values.Count - 1, ";", "") Next lpString = sCryptoValues Else lpString = lpDefault End If Return nResult End Function Friend Function ReadMachiningParamDouble(lpAppName As String, lpKeyName As String, dDefault As Double, Optional sFilePath As String = "") As Double Dim sParam As String = "" Dim dParam As Double = dDefault ReadMachiningParamString(lpAppName, lpKeyName, dDefault, sParam, sFilePath) StringToDouble(sParam, dParam) Return dParam End Function Friend Function WriteMachiningParam(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean Return WritePrivateProfileString(lpAppName, lpKeyName, EgwCrypto.PowerEncryptString(lpString, m_Salt), If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath)) End Function Friend Function WriteMachiningParamSplit(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean If Not String.IsNullOrWhiteSpace(lpString) Then Dim Values() As String = lpString.Split(";"c) Dim sCryptoValues As String = "" For ValueIndex = 0 To Values.Count - 1 sCryptoValues += EgwCrypto.PowerEncryptString(Values(ValueIndex), m_Salt) & If(ValueIndex < Values.Count - 1, ";", "") Next Return WritePrivateProfileString(lpAppName, lpKeyName, sCryptoValues, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMachiningFilePath)) Else Return False End If End Function Friend Function ReadMaterialParamString(lpAppName As String, lpKeyName As String, lpDefault As String, ByRef lpString As String, Optional sFilePath As String = "") As Integer Dim nResult As Integer = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, lpString, If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMaterialsFilePath)) If Not String.IsNullOrWhiteSpace(lpString) Then lpString = EgwCrypto.PowerDecryptString(lpString, m_Salt) Else lpString = "" End If Return nResult End Function Friend Function ReadMaterialParamDouble(lpAppName As String, lpKeyName As String, dDefault As Double, Optional sFilePath As String = "") As Double Dim sParam As String = "" Dim dParam As Double = dDefault ReadMaterialParamString(lpAppName, lpKeyName, dDefault, sParam, sFilePath) StringToDouble(sParam, dParam) Return dParam End Function Friend Function WriteMaterialParam(lpAppName As String, lpKeyName As String, lpString As String, Optional sFilePath As String = "") As Boolean Return WritePrivateProfileString(lpAppName, lpKeyName, EgwCrypto.PowerEncryptString(lpString, m_Salt), If(Not String.IsNullOrWhiteSpace(sFilePath), sFilePath, m_sMaterialsFilePath)) End Function #End Region 'Methods End Module