Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Public Module IniFile Friend EgaltechBlue1 As New SolidColorBrush(Color.FromArgb(255, 77, 132, 196)) Friend EgaltechGreen As New SolidColorBrush(Color.FromArgb(255, 0, 255, 0)) Friend EgaltechRed As New SolidColorBrush(Color.FromArgb(255, 255, 0, 0)) Friend EgaltechYellow As New SolidColorBrush(Color.FromArgb(255, 255, 255, 0)) Friend ReferenceContactColRed As New Color3d(255, 0, 0) Friend ReferenceContactColGreen As New Color3d(0, 255, 0) Friend Enum ProjectModeOpt As Integer DRAW = 1 MACHINING = 2 ONLYDRAW = 3 End Enum Public Enum SceneSelModeOpt As Integer NULL = 0 PARTCURVES = 1 PARTSURFACES = 2 PARTCURVESANDSURFACES = 3 ALL = 99 End Enum Friend Enum SceneSelTypeOpt As Integer NULL = 0 MACHINING = 1 FIXTURE = 2 RAWPART = 3 RAWPARTWITHFIXTURE = 4 MACHPATH = 5 End Enum ' MainWindow Page Friend m_nInstance As Integer = 0 Friend m_nUserLevel As Integer = 1 Friend m_nKeyLevel As Integer = 0 Friend m_nKeyOptions As UInteger = 0 Friend Enum KEY_OPT As UInteger BASE = 1 ' Prodotto EgtCAM5 DOORS = 2 GUNSTOCK = 4 DOORCREATOR = 8 ' Prodotto DOORCreator VIRTUALMILLING = 16 JAMBS = 32 BEAM = 64 CAD2D = 128 STEELDORS = 256 WALL = 512 PLUGIN = 1024 ADVMACHINING = 2048 End Enum Friend m_sDataRoot As String Friend m_sConfigDir As String Friend m_sIniFile As String Friend m_sTempDir As String Friend m_sMachinesRoot As String Friend m_sResourcesRoot As String Friend m_sTablesRoot As String Friend m_sLogFile As String ' path della cartella BEAM Friend m_sBeamDirPath As String ' path della cartella WALL Friend m_sWallDirPath As String ' path della cartella BEAMWALL Friend m_sBeamWallDirPath As String ' path della cartella DOORS Friend m_sDoorsDirPath As String ' path della cartella GUNSTOCK Friend m_sGunstockDirPath As String ' path della cartella Printing3d Friend m_sPrinting3dDirPath As String Friend m_ProjectMode As ProjectModeOpt Friend m_bMmUnits As Boolean Friend m_bDrawShowGrid As Boolean Friend m_bMachiningShowGrid As Boolean = False Friend m_bShowGridFrame As Boolean ' Project Page Friend m_ProjectSceneContext As Integer = 0 Friend m_bScriptRunning As Boolean = False Friend m_bStopScript As Boolean = False Friend m_DDFFilePath As String = String.Empty Friend m_MODFilePath As String = String.Empty Friend m_PEZFilePath As String = String.Empty ' Grid data Friend dSnapStepMm As Double Friend dSnapStepInch As Double Friend nMinLineSStep As Integer Friend nMajLineSStep As Integer Friend nExtSStep As Integer Friend MinLnColor As Color3d Friend MajLnColor As Color3d ' TopCommandBar Friend m_MruFiles As New MruList Friend m_MruScripts As New MruList Friend m_MruDoors As New MruList Friend m_MruNewGunStock As New MruList Friend m_MruModifyGunStock As New MruList ' Current Machine Friend m_sMachineName As String Friend m_sCurrMachIniFilePath As String Friend m_sCurrMachToolsDirPath As String Friend m_sCurrMachSetUpDirPath As String Friend m_sCurrMachScriptsDirPath As String ' Variabile che contiene la path della cartella che contiene i ToolMaker Friend m_sToolMakersDir As String = String.Empty ' Variabile che contiene il contesto della scena presente nel database utensili Friend m_ToolsDbSceneContext As Integer = 0 ' Variabile che dice se sono abilitati i gruppi di lavorazione Friend m_bMachiningGroup As Boolean = False ' Variabile che indica se il programma e' riuscito ad avviarsi Friend m_bFailedRun As Boolean = False ' Flag visualizzazione solo tavola in definizione lavorazioni Friend m_bShowOnlyTable As Boolean = False ' Variabile che contiene il vettore di traslazione dei pezzi nel passaggio da modalità disegna a lavora Friend m_vtMachPartsPos As New Vector3d(Vector3d.NULL) ' Variabile che contiene stato simulazione per chiusura programma Friend m_bSimulExecuting As Boolean = False ' Variabile che fa chiudere il programma al termine della simulazione Friend m_bSimulEndExitApp As Boolean = False Public Function GetPrivateProfileInt(IpAppName As String, IpKeyName As String, nDefault As Integer) As Integer Return EgtUILib.GetPrivateProfileInt(IpAppName, IpKeyName, nDefault, m_sIniFile) End Function Public Function GetPrivateProfileDouble(IpAppName As String, IpKeyName As String, dDefault As Double) As Double Return EgtUILib.GetPrivateProfileDouble(IpAppName, IpKeyName, dDefault, m_sIniFile) End Function Public Function GetPrivateProfileString(IpAppName As String, IpKeyName As String, IpDefault As String, ByRef IpString As String) As Integer Return EgtUILib.GetPrivateProfileString(IpAppName, IpKeyName, IpDefault, IpString, m_sIniFile) End Function Public Function GetPrivateProfileStringUtf8(IpAppName As String, IpKeyName As String, IpDefault As String, ByRef IpString As String) As Boolean Return EgtGetStringUtf8FromIni(IpAppName, IpKeyName, IpDefault, IpString, m_sIniFile) End Function Public Function GetPrivateProfileColor(IpAppName As String, IpKeyName As String, ByRef Col As EgtUILib.EgtInterface.Color3d) As Boolean Return EgtUILib.GetPrivateProfileColor(IpAppName, IpKeyName, Col, m_sIniFile) End Function Public Function GetPrivateProfileWinPos(IpAppName As String, IpKeyName As String, ByRef nFlag As Integer, ByRef nLeft As Integer, ByRef nTop As Integer, ByRef nWidth As Integer, ByRef nHeight As Integer) As Boolean Return EgtUILib.GetPrivateProfileWinPos(IpAppName, IpKeyName, nFlag, nLeft, nTop, nWidth, nHeight, m_sIniFile) End Function Public Function GetPrivateProfileZoomWin(IpAppName As String, IpKeyName As String, ByRef bOutline As Boolean, ByRef Col As EgtUILib.EgtInterface.Color3d) As Boolean Return EgtUILib.GetPrivateProfileZoomWin(IpAppName, IpKeyName, bOutline, Col, m_sIniFile) End Function Public Function GetPrivateProfileFloatingWinPos(lpAppName As String, lpKeyName As String, ByRef nState As String, ByRef nIndex As Integer, ByRef nLeft As Integer, ByRef nTop As Integer) As Boolean Dim sVal As String = String.Empty GetPrivateProfileString(lpAppName, lpKeyName, "", sVal) Dim sItems() As String = sVal.Split(","c) If sItems.Count() >= 4 Then nState = sItems(0) nIndex = CInt(sItems(1)) nLeft = CInt(sItems(2)) nTop = CInt(sItems(3)) Return True End If Return False End Function Public Function GetPrivateProfileLanguage( ByVal lpAppName As String, ByVal lpKeyName As String) As Language Dim sVal As String = String.Empty GetPrivateProfileString(lpAppName, lpKeyName, "", sVal) Dim sItems() As String = sVal.Split(","c) If sItems.Count() = 2 Then Return New Language(sItems(0), sItems(1)) End If Return Nothing End Function Public Function GetPrivateProfileFixture( ByVal lpAppName As String, ByVal lpKeyName As String, ByRef sName As String, ByRef nTot As Integer) As Boolean Dim sVal As String = String.Empty EgtUILib.GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, m_sCurrMachIniFilePath) Dim sItems() As String = sVal.Split(","c) If sItems.Count() = 2 Then sName = sItems(0) nTot = CInt(sItems(1)) Return True End If Return False End Function Public Function GetPrivateProfileSetUpPosition( ByVal lpAppName As String, ByVal lpKeyName As String, ByRef sTcPos As String, ByRef sHead As String, ByRef nGroup As Integer) As Boolean Dim sVal As String = String.Empty EgtUILib.GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, m_sCurrMachIniFilePath) Dim sItems() As String = sVal.Split(";"c) If sItems.Count() >= 2 Then sTcPos = sItems(0) sHead = sItems(1) If sItems.Count() >= 3 Then nGroup = If(Integer.TryParse(sItems(2).Trim("G"c), nGroup), nGroup, 0) Else nGroup = 1 End If Return True End If Return False End Function Public Function GetPrivateProfileButton(sSection As String, sKey As String, sBaseDir As String, ByRef ReadButtonItem As ButtonItem) As Boolean ReadButtonItem = Nothing Dim sVal As String = String.Empty GetPrivateProfileString(sSection, sKey, "", sVal) If String.IsNullOrWhiteSpace(sVal) Then Return False Dim sItems() As String = sVal.Split(","c) If sItems.Count() >= 1 Then Dim sLuaPath As String = sItems(0) Dim sImagePath As String = If(sItems.Count() >= 2, sItems(1), "") Dim sToolTip As String = If(sItems.Count() >= 3, sItems(2), "") Dim sDrawMachOrBoth As String = If(sItems.Count() >= 4 AndAlso Not String.IsNullOrWhiteSpace(sItems(3)), sItems(3), "1") If Not String.IsNullOrWhiteSpace(sBaseDir) And Not String.IsNullOrWhiteSpace(sLuaPath) Then If sLuaPath.Contains(".lua") Then sLuaPath = sBaseDir & "\" & sLuaPath If Not String.IsNullOrWhiteSpace(sImagePath) Then sImagePath = sBaseDir & "\" & sImagePath End If ReadButtonItem = New ButtonItem(sSection, sLuaPath, sImagePath, sToolTip, sDrawMachOrBoth) Return True End If Return False End Function Public Function WritePrivateProfileString(IpAppName As String, IpKeyName As String, ByRef IpString As String) As Boolean Return EgtUILib.WritePrivateProfileString(IpAppName, IpKeyName, IpString, m_sIniFile) End Function Public Function WritePrivateProfileStringUtf8(IpAppName As String, IpKeyName As String, ByRef IpString As String) As Boolean Return EgtWriteStringUtf8toIni(IpAppName, IpKeyName, IpString, m_sIniFile) End Function Public Function WritePrivateProfileWinPos(IpAppName As String, IpKeyName As String, ByRef nFlag As Integer, ByRef nLeft As Integer, ByRef nTop As Integer, ByRef nWidth As Integer, ByRef nHeight As Integer) As Boolean Return EgtUILib.WritePrivateProfileWinPos(IpAppName, IpKeyName, nFlag, nLeft, nTop, nWidth, nHeight, m_sIniFile) End Function Public Function WritePrivateProfileColor(IpAppName As String, IpKeyName As String, ByRef Color As Color3d) As Boolean Dim sColor As String = Color.R & "," & Color.G & "," & Color.B Return EgtUILib.WritePrivateProfileString(IpAppName, IpKeyName, sColor, m_sIniFile) End Function Friend Function GetProgramVersion() As String Return My.Application.Info.Version.Major.ToString() & "." & My.Application.Info.Version.Minor.ToString() & (ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() & My.Application.Info.Version.Revision.ToString() End Function Friend Function IsActiveBeam() As Boolean Dim bIsActive As Boolean = (IniFile.m_nKeyOptions And KEY_OPT.BEAM) <> 0 And (GetPrivateProfileInt(S_BEAM, K_BEAMENABLE, 0) <> 0) If bIsActive Then Dim sTemp As String = "" GetPrivateProfileString(S_BEAM, K_BEAMBASEDIR, "", sTemp) m_sBeamDirPath = sTemp.TrimEnd( "\"c) End If Return bIsActive End Function Friend Function IsActiveWall() As Boolean Dim bIsActive As Boolean = (IniFile.m_nKeyOptions And KEY_OPT.WALL) <> 0 And (GetPrivateProfileInt(S_WALL, K_WALLENABLE, 0) <> 0) If bIsActive Then Dim sTemp As String = "" GetPrivateProfileString(S_WALL, K_WALLBASEDIR, "", sTemp) m_sWallDirPath = sTemp.TrimEnd( "\"c) End If Return bIsActive End Function Friend Function IsActiveDoors() As Boolean Dim bIsActive As Boolean = (IniFile.m_nKeyOptions And KEY_OPT.DOORS) <> 0 And (GetPrivateProfileInt(S_DOORS, K_DDFENABLE, 0) <> 0) If bIsActive Then GetPrivateProfileString(S_DOORS, K_BASEDIR, "", m_sDoorsDirPath) Return bIsActive End Function Friend Function IsActiveGunStock() As Boolean Dim bIsActive As Boolean = (IniFile.m_nKeyOptions And KEY_OPT.GUNSTOCK) <> 0 And (GetPrivateProfileInt(S_GUNSTOCK, K_GUNSTOCKENABLE, 0) <> 0) If bIsActive Then Dim sTemp As String = "" GetPrivateProfileString(S_GUNSTOCK, K_GUNSTOCKEXEC, "", sTemp) m_sGunstockDirPath = Path.GetDirectoryName( sTemp) End If Return bIsActive End Function Friend Function IsActivePlugin() As Boolean Dim bIsActive As Boolean = (IniFile.m_nKeyOptions And KEY_OPT.PLUGIN) <> 0 Dim nTemp As Integer = GetPrivateProfileInt(S_GENERAL, K_PLUGIN, 0) Return bIsActive And nTemp = 1 End Function Friend Function IsKeyEnabledVirtualMilling() As Boolean Return (IniFile.m_nKeyOptions And KEY_OPT.VIRTUALMILLING) <> 0 End Function Friend Function IsKeyEnabledAdvancedMachining() As Boolean Return (IniFile.m_nKeyOptions And KEY_OPT.ADVMACHINING) <> 0 End Function Friend Function IsActiveSpecialPanel() As Boolean Dim btDummy As ButtonItem = Nothing Return GetPrivateProfileInt(S_SPECIAL, K_SPECIALENABLE, 0) <> 0 AndAlso GetPrivateProfileButton(S_SPECIAL, K_BUTTON & "1", "", btDummy) End Function Friend Function GetSpecialLuaVersion( sSpecialLuaDir As String, ByRef sVersion As String) As Boolean Dim sExecPath As String = (sSpecialLuaDir & "\Version.lua") If Not EgtLuaExecFile(sExecPath, False) Then Return False If Not EgtLuaGetGlobStringVar("VERSION", sVersion) Then Return False EgtLuaResetGlobVar("VERSION") Return True End Function Friend Function GetSpecialLuaData( sSpecialLuaDir As String, ByRef sName As String, ByRef sVersion As String, ByRef sMinExe As String) As Boolean Dim sExecPath As String = (sSpecialLuaDir & "\Version.lua") If Not EgtLuaExecFile(sExecPath, False) Then Return False If Not EgtLuaGetGlobStringVar("NAME", sName) Then Return False If Not EgtLuaGetGlobStringVar("VERSION", sVersion) Then Return False If Not EgtLuaGetGlobStringVar("MIN_EXE", sMinExe) Then Return False EgtLuaResetGlobVar("NAME") EgtLuaResetGlobVar("VERSION") EgtLuaResetGlobVar("MIN_EXE") Return True End Function End Module