Files
icarus/Icarus/Utility/CurrentMachine.vb
2022-11-14 20:12:49 +01:00

207 lines
8.5 KiB
VB.net

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