diff --git a/EgtStoneLib/CamAuto.vb b/EgtStoneLib/CamAuto.vb index bbe6d52..4eec3ba 100644 --- a/EgtStoneLib/CamAuto.vb +++ b/EgtStoneLib/CamAuto.vb @@ -149,6 +149,14 @@ Friend Module CamAuto Return bOk End Function + Friend Function ResetAllBridges() As Boolean + Dim bOk As Boolean = True + Dim nMachGroup As Integer = EgtGetCurrMachGroup() + Dim nBridgesGroup As Integer = EgtGetFirstNameInGroup(nMachGroup, "Bridges") + bOk = EgtErase(nBridgesGroup) + Return bOk + End Function + ' verifico che il contorno passato non sia stato separato Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer) As Boolean Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop) diff --git a/EgtStoneLib/ConstMach.vb b/EgtStoneLib/ConstMach.vb index 4fe8834..08507db 100644 --- a/EgtStoneLib/ConstMach.vb +++ b/EgtStoneLib/ConstMach.vb @@ -158,6 +158,8 @@ Module ConstMach Public Const NAME_UNDERDRILL As String = "UnderDrill" ' Nome layer preview Public Const NAME_PREVIEW As String = "PV" + Public Const NAME_BRIDGES As String = "Bridges" + Public Const NAME_BRIDGESLINE As String = "BridgeLine" ' Info in layer contorno interno per FiloTop Public Const INFO_FILOTOP As String = "FiloTop" Public Const INFO_ROUNDOFF As String = "RoundOff" diff --git a/EgtStoneLib/CurrentMachine.vb b/EgtStoneLib/CurrentMachine.vb index c95557d..1efb345 100644 --- a/EgtStoneLib/CurrentMachine.vb +++ b/EgtStoneLib/CurrentMachine.vb @@ -1415,6 +1415,16 @@ Friend Property sCurrMillNoTip As String OmagOFFICEMap.refMachinePanelVM.NotifyPropertyChanged(NameOf(OmagOFFICEMap.refMachinePanelVM.WjDb_Visibility)) End Sub + ' recupro dalla lista delle macchine l'oggetto associato al nome indicato + Public Sub GetMachineClass(sMachineName As String) + For Each Item In OmagOFFICEMap.refMachinePanelVM.MachineList + If Item.Name = sMachineName Then + OmagOFFICEMap.refMachinePanelVM.SelectedMachine = Item + Exit For + End If + Next + End Sub + Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False) Dim TempCurrMat As Material = CurrMat ' Svuoto l'attuale lista di materiali e delle qualità diff --git a/MachinePanel/MyMachinePanelVM.vb b/MachinePanel/MyMachinePanelVM.vb index 959b536..0c8e8be 100644 --- a/MachinePanel/MyMachinePanelVM.vb +++ b/MachinePanel/MyMachinePanelVM.vb @@ -95,16 +95,19 @@ Public Class MyMachinePanelVM OmagOFFICEMap.SetRefMachinePanelVM(Me) ' recupero cartella radice delle macchine m_sMachinesRoot = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot - ' Carica macchine da cartella delle macchine - Machine.MachineListInit(m_sMachinesRoot, MachineList) - ' Inizializzo valori visibilità parametri Db utensili e lavorazioni - OmagOFFICETMDbParamVisibility.Init() End Sub #End Region ' CONSTRUCTOR #Region "METHODS" + Public Sub Init( sMchRoots As String) + ' procedo ad inizializzare la classe → carico la lista "MachineList" che visualizzo per l'inserimento di nuovi MachGroup + Machine.MachineListInit(sMchRoots, MachineList) + ' Inizializzo valori visibilità parametri Db utensili e lavorazioni + OmagOFFICETMDbParamVisibility.Init() + End Sub + ''' ''' Execute the Exec. This method is invoked by the ExecCommand. ''' diff --git a/MainWindow/MainWindowM.vb b/MainWindow/MainWindowM.vb index cd6d1c4..62af047 100644 --- a/MainWindow/MainWindowM.vb +++ b/MainWindow/MainWindowM.vb @@ -86,13 +86,29 @@ Public Class MainWindowM Return m_sTempDir End Get End Property + + '------------------INIZIO Gestione elenco direttori macchine ------------------ + + Private m_sMachinesRootList As New List(Of String) + Friend ReadOnly Property sMachinesRootList As List(Of String) + Get + Return m_sMachinesRootList + End Get + End Property + + '------------------FINE Gestione elenco direttori macchine ------------------ + Private m_sMachinesRoot As String - Friend ReadOnly Property sMachinesRoot As String + Friend Property sMachinesRoot As String Get Return m_sMachinesRoot End Get + Set(value As String) + m_sMachinesRoot = value + End Set End Property Private m_sToolMakersDir As String + Friend ReadOnly Property sToolMakersDir As String Get Return m_sToolMakersDir @@ -172,6 +188,16 @@ Public Class MainWindowM If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR End If + ' Carico elenco dei direttori macchina + If Not String.IsNullOrEmpty(m_sMachinesRoot) Then m_sMachinesRootList.Add(m_sMachinesRoot) + Dim nIndexDir As Integer = 1 + Dim sCurrMachineDir As String = String.Empty + While GetMainPrivateProfileString(S_MACH, K_MACHINESDIR & nIndexDir.ToString, "", sCurrMachineDir) <> 0 + If VerifyMachineIsUnique(sCurrMachineDir) Then + m_sMachinesRootList.Add(sCurrMachineDir) + End If + nIndexDir += 1 + End While ' Impostazione direttorio per toolmakers If GetMainPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir) = 0 Then m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_DFL_DIR @@ -279,6 +305,16 @@ Public Class MainWindowM EgtPHOTOLib.MainData.SetKey(sIdKey) End Sub + ' verifico che il nome da inserire non esista già in elenco + Private Function VerifyMachineIsUnique(sMachDir As String) As Boolean + For Each sDir As String In m_sMachinesRootList + If sDir.ToLower.Trim = sMachDir.ToLower.Trim Then + Return False + End If + Next + Return True + End Function + Private Sub ManageInstance() Dim bCreated As Boolean Try diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index bd8943d..7f7623c 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -69,6 +69,6 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/MyMachGroupPanel/MyMachGroupPanelVM.vb b/MyMachGroupPanel/MyMachGroupPanelVM.vb index 9ba82b1..5aad441 100644 --- a/MyMachGroupPanel/MyMachGroupPanelVM.vb +++ b/MyMachGroupPanel/MyMachGroupPanelVM.vb @@ -33,19 +33,21 @@ Public Class MyMachGroupPanelVM Sub New() MyBase.New() - ' Recupero la macchina di default - Dim sDefaultMachine As String = String.Empty - GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine) ' Creo riferimento a questa classe in OmagOFFICEMap OmagOFFICEMap.SetRefMachGroupPanelVM(Me) - InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(), - sDefaultMachine, BASE_MACH_GROUP & "1") End Sub #End Region ' CONSTRUCTOR #Region "METHODS" + Public Sub Init() + ' Recupero la macchina di default + Dim sDefaultMachine As String = String.Empty + GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine) + InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(), sDefaultMachine, BASE_MACH_GROUP & "1") + End Sub + Public Overrides Sub AddMachGroup() If NewMachGroup() Then ' creo oggetto gruppo creato @@ -99,6 +101,8 @@ Public Class MyMachGroupPanelVM ' Salvo macchina del gruppo come nuovo default Dim sCurrMachName As String = String.Empty EgtGetCurrMachineName(sCurrMachName) + CurrentMachine.GetMachineClass(sCurrMachName) + OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath) WriteMainPrivateProfileString(S_MACH, K_CURRMACH, sCurrMachName) ' Ricarico la macchina corrente InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, sCurrMachName, @@ -152,6 +156,8 @@ Public Class MyMachGroupPanelVM Public Overrides Function OnPostSetCurrMachGroup() As Boolean ' Imposto vista solo tavola EgtSetMachineLook(MCH_LOOK.TAB) + CurrentMachine.GetMachineClass(SelectedMachGroup.Machine) + OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath) ' Ricarico la macchina corrente InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, SelectedMachGroup.Machine, OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE), diff --git a/MySceneHost/MySceneHostVM.vb b/MySceneHost/MySceneHostVM.vb index ff08e90..bcb8748 100644 --- a/MySceneHost/MySceneHostVM.vb +++ b/MySceneHost/MySceneHostVM.vb @@ -33,8 +33,13 @@ Public Class MySceneHostVM ' Recupero e imposto handle finestra principale Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle EgtSetMainWindowHandle(hMainWnd) + ' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02" + Dim sMchRoots As String = GetMachineBaseDirs() ' inizializzo gestore lavorazioni - EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) + EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) + ' inizializzo gestione più macchine + OmagOFFICEMap.refMachinePanelVM.Init(sMchRoots) + OmagOFFICEMap.refMachGroupPanelVM.Init() Return End If ' Problemi @@ -157,6 +162,18 @@ Public Class MySceneHostVM MainScene.SetStatusNull() End Sub + Private Function GetMachineBaseDirs() As String + ' Trasformo l'elenco dei direttori radice macchina in una stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02" + Dim sMchRoots As String = "" + For Each MachDir In OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRootList + sMchRoots &= MachDir & "|" + Next + ' rimuovo dalla stringa l'ultimo carattere "|" inserito + sMchRoots = sMchRoots.Remove(sMchRoots.Length - 1, 1) + If String.IsNullOrEmpty( sMchRoots) Then sMchRoots = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot + Return sMchRoots + End Function + #End Region ' METHODS #Region "ProjectManager" @@ -240,7 +257,9 @@ Public Class MySceneHostVM ' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto Dim nCurrCtx As Integer = EgtGetCurrentContext() Dim nCtx As Integer = EgtInitContext() - EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) + ' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02" + Dim sMchRoots As String = GetMachineBaseDirs() + EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) ' Per ogni gruppo di lavoro For Each nMchGrpId As Integer In vMchGrps ' Carico il progetto @@ -314,6 +333,8 @@ Public Class MySceneHostVM Dim sMachine As String = String.Empty EgtGetInfo(nMchGrpId, "Machine", sMachine) If Not String.IsNullOrEmpty(sMachine) Then + CurrentMachine.GetMachineClass(sMachine) + OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath) InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, sMachine, OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE), OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_MILL), @@ -347,6 +368,8 @@ Public Class MySceneHostVM ' Salvo il file If Not EgtSaveFile(sFileDest, NGE.CMPTEXT) Then bOk = False Next + CurrentMachine.GetMachineClass(CurrentSelectedMachGroup) + OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath) ' reimposto la macchina corrente InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, CurrentSelectedMachGroup, OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE), @@ -404,7 +427,9 @@ Public Class MySceneHostVM ' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto Dim nCurrCtx As Integer = EgtGetCurrentContext() Dim nCtx As Integer = EgtInitContext() - EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) + ' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02" + Dim sMchRoots As String = GetMachineBaseDirs() + EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) ' Per ogni gruppo di lavoro For Each nMchGrpId As Integer In vMchGrps ' Carico il progetto @@ -797,6 +822,7 @@ Public Class MySceneHostVM Case OptionPanelVM.Tabs.NESTING OmagOFFICEMap.refNestingTabVM.OnKeyDownScene(sender, e) Case OptionPanelVM.Tabs.MACHINING + OmagOFFICEMap.refSplitModeVM.OnKeyDownScene(sender, e) Case OptionPanelVM.Tabs.SIMUL End Select End Sub diff --git a/OptionPanel/MachiningTab/SplitModeV.xaml b/OptionPanel/MachiningTab/SplitModeV.xaml index 99c4c99..ddbcfe3 100644 --- a/OptionPanel/MachiningTab/SplitModeV.xaml +++ b/OptionPanel/MachiningTab/SplitModeV.xaml @@ -69,23 +69,38 @@ - -