diff --git a/Assembly/Assembly.vb b/Assembly/Assembly.vb index 2245d2d..e44c32e 100644 --- a/Assembly/Assembly.vb +++ b/Assembly/Assembly.vb @@ -285,6 +285,31 @@ Public Class Assembly End Get End Property + Public ReadOnly Property DispositionList As ObservableCollection(Of EdgeType) + Get + Return Part.m_DispositionList + End Get + End Property + + ' elemento selezionato dalla lista delle disposizinioni + Private m_DispositionItem As EdgeType + Public Property DispositionItem As EdgeType + Get + Return m_DispositionItem + End Get + Set(value As EdgeType) + m_DispositionItem = value + Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True + NotifyPropertyChanged("DispositionItem") + End Set + End Property + Public Sub SetDispositionItem(ObjDisposition As EdgeType) + If IsNothing(m_DispositionItem) Then + m_DispositionItem = ObjDisposition + End If + NotifyPropertyChanged("DispositionItem") + End Sub + Private m_LockEdgeType As New EdgeType("", Visibility.Visible) Public Property LockEdgeType As EdgeType Get @@ -1080,7 +1105,7 @@ Public Class Assembly Door.CompoList(IndexCompo).refJambCompo.IsReadOnly = False Door.CompoList(IndexCompo).IsReadOnly = True - If Not LoadCompoParam(Door.CompoList(IndexCompo)) Then Return + If Not LoadCompoParam(Door.CompoList(IndexCompo), Door.TypePart) Then Return For IndexParam As Integer = 0 To Door.CompoList(IndexCompo).refJambCompo.CompoParamList.Count - 1 Dim CmpPar As CompoParam = Door.CompoList(IndexCompo).CompoParamList(IndexParam) @@ -1121,7 +1146,7 @@ Public Class Assembly DoorActive.CompoList(IndexCompo).refJambCompo = DoorInactive.CompoList(IndexCompoInactiveDoor) DoorActive.CompoList(IndexCompo).refJambCompo.IsReadOnly = False DoorActive.CompoList(IndexCompo).IsReadOnly = True - If Not LoadCompoParam(DoorActive.CompoList(IndexCompo)) Then Return + If Not LoadCompoParam(DoorActive.CompoList(IndexCompo), DoorActive.TypePart) Then Return For IndexParam As Integer = 0 To DoorActive.CompoList(IndexCompo).refJambCompo.CompoParamList.Count - 1 Dim CmpPar As CompoParam = DoorActive.CompoList(IndexCompo).CompoParamList(IndexParam) Dim CmpRefPar As CompoParam = DoorActive.CompoList(IndexCompo).refJambCompo.CompoParamList(IndexParam) @@ -1190,7 +1215,7 @@ Public Class Assembly Dim dWidth As Double Dim dThickness As Double If Not IsNothing(Map.refPartPageVM.CurrPart) Then - If Map.refPartPageVM.CurrPart.TypePart.Contains("DO_1") Then + If IsNothing(Map.refPartPageVM.CurrPart.TypePart) OrElse Map.refPartPageVM.CurrPart.TypePart.Contains("DO_1") Then If Not IsNothing(Map.refPartPageVM.CurrPart.Height) And Not IsNothing(Map.refPartPageVM.CurrPart.Width) And Not IsNothing(Map.refPartPageVM.CurrPart.Thickness) Then If StringToDouble(Map.refPartPageVM.CurrPart.Height, dHeight) Then EgtLuaSetGlobNumVar("H", dHeight) @@ -1232,7 +1257,7 @@ Public Class Assembly For IndexCompo As Integer = 0 To GetArrayPartDoor(IndexDoor).Door.CompoList.Count - 1 Dim CurrCompo As Compo = GetArrayPartDoor(IndexDoor).Door.CompoList(IndexCompo) If Not IsNothing(CurrCompo.refJambCompo) Then - If LoadCompoParam(CurrCompo) Then + If LoadCompoParam(CurrCompo, GetArrayPartDoor(IndexDoor).Door.TypePart) Then UpDateCurrCompoJamb(CurrCompo) ResetCompoParam() Else diff --git a/AssemblyManager/AssemblyManagerVM.vb b/AssemblyManager/AssemblyManagerVM.vb index 2164a61..686d678 100644 --- a/AssemblyManager/AssemblyManagerVM.vb +++ b/AssemblyManager/AssemblyManagerVM.vb @@ -212,6 +212,23 @@ Public Class AssemblyManagerVM Local_SelAssembly.SetTopOverMaterial(OptionModule.m_TopOverMaterialAssembly) Local_SelAssembly.SetBottomOverMaterial(OptionModule.m_BottomOverMaterialAssembly) Local_SelAssembly.SetDoorNumber(OptionModule.m_DoorsNumber) + Local_SelAssembly.SetDispositionItem(OptionModule.m_Disposition) + + ' riaggiorno la lista dei bevel con quello che è stato settato nel Confi.ini + If OptionModule.m_Disposition.Name.Contains("BU") Then + Part.m_DispositionList(0).IsActive = Visibility.Visible + OptionModule.m_bBevelUp = Visibility.Visible + Part.m_DispositionList(1).IsActive = Visibility.Collapsed + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Collapsed + ElseIf OptionModule.m_Disposition.Name.Contains("BD") Then + Part.m_DispositionList(0).IsActive = Visibility.Collapsed + OptionModule.m_bBevelUp = Visibility.Collapsed + Part.m_DispositionList(1).IsActive = Visibility.Visible + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Visible + End If + ' costruisco e carico le parti CreatePart(Local_SelAssembly) ' carico l'assemblato che sto creando in locale (così da poter gestire i Jamb) @@ -309,6 +326,23 @@ Public Class AssemblyManagerVM ref_Part.HingeEdgeOverMaterial = OptionModule.m_HingeEdgeOverMaterial ref_Part.TopOverMaterial = OptionModule.m_TopOverMaterial ref_Part.BottomOverMaterial = OptionModule.m_BottomOverMaterial + ref_Part.DispositionItem = OptionModule.m_Disposition + + ' riaggiorno la lista dei bevel con quello che è stato settato nel Confi.ini + If OptionModule.m_Disposition.Name.Contains("BU") Then + Part.m_DispositionList(0).IsActive = Visibility.Visible + OptionModule.m_bBevelUp = Visibility.Visible + Part.m_DispositionList(1).IsActive = Visibility.Collapsed + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Collapsed + ElseIf OptionModule.m_Disposition.Name.Contains("BD") Then + Part.m_DispositionList(0).IsActive = Visibility.Collapsed + OptionModule.m_bBevelUp = Visibility.Collapsed + Part.m_DispositionList(1).IsActive = Visibility.Visible + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Visible + End If + End Sub #End Region ' Creazione e caricamento degli oggetti dell'assemblato diff --git a/CompoMatch.vb b/CompoMatch.vb index c56dd04..9bef5a7 100644 --- a/CompoMatch.vb +++ b/CompoMatch.vb @@ -30,7 +30,7 @@ Module CompoMatch Return True End Function - Friend Function LoadCompoParam(CurrCompo As Compo) As Boolean + Friend Function LoadCompoParam(CurrCompo As Compo, sDoor As String) As Boolean ' Path del lua da utilizzare Dim sLuaPath As String = CurrCompo.CompoType.Path & "\Matching.lua" ' Verifico esistenza file Matching nel direttorio passato @@ -45,6 +45,8 @@ Module CompoMatch Dim nDoorNbr As Integer = 1 Int32.TryParse(CurrAssembly.DoorNumber, nDoorNbr) EgtLuaSetGlobIntVar("STU.DoorNumber", nDoorNbr) + ' indica se è la prima o la seconda anta selezionata + EgtLuaSetGlobStringVar("STU.Door", sDoor) EgtLuaSetGlobStringVar("STU.CompoPath", CurrCompo.CompoType.Path) EgtLuaSetGlobStringVar("STU.Template", CurrCompo.refJambCompo.TemplateSelItem) Dim bExterior As Boolean = CurrAssembly.Exterior diff --git a/CompoPanel/CompoPanelVM.vb b/CompoPanel/CompoPanelVM.vb index ad5f0e4..1d3b967 100644 --- a/CompoPanel/CompoPanelVM.vb +++ b/CompoPanel/CompoPanelVM.vb @@ -108,7 +108,7 @@ Public Class CompoPanelVM Dim NewCompo As Compo = Map.refPartPageVM.CurrPart.AddNewCompo(m_CurrCompoType) ' appena aggiungo una componente nuova calcolo le sue componenti correttamente modificate If Not IsNothing(NewCompo.refJambCompo) Then - If Not LoadCompoParam(NewCompo) Then Return + If Not LoadCompoParam(NewCompo, Map.refPartPageVM.CurrPart.TypePart) Then Return Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(NewCompo) ResetCompoParam() End If diff --git a/DdfFile.vb b/DdfFile.vb index 00cfefd..70b3692 100644 --- a/DdfFile.vb +++ b/DdfFile.vb @@ -170,34 +170,35 @@ Friend Module DdfFile DdfFileContent.Add("" & ConstCompo.K_SWING & ": " & Part.Swing) ' aggiungo una riga vuota per separare la lista successiva DdfFileContent.Add("") - + '---------------------------------------------------------------------------------------------------------------------------------------------------- ' aggiungo il secure nullo al DDF - DdfFileContent.Add("" & ConstCompo.K_SECURE & ": " & "0") + DdfFileContent.Add("" & ConstCompo.K_SECURE & ": " & SetSecure(Part.Swing, Part.DispositionItem.Name)) ' aggiungo una riga vuota per separare la lista successiva DdfFileContent.Add("") + '---------------------------------------------------------------------------------------------------------------------------------------------------- DdfFileContent.Add("" & ConstCompo.K_PROFILES & ":") - DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_LOCKEDGE & ": " & Part.LockEdgeType.Name) + DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_LOCKEDGE & ": " & SetBevel(Part.LockEdgeType.Name, Part.DispositionItem.Name, Part.Swing)) DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.LockEdgeMachining)) If Not StringToDouble(Part.LockEdgeOverMaterial, dVal) Then MessageBox.Show(EgtMsg(50106) & K_LOCKEDGEOVERMATERIAL_INI, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error) Return End If DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5)) - DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_HINGEEDGE & ": " & Part.HingeEdgeType.Name) + DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_HINGEEDGE & ": " & SetBevel(Part.HingeEdgeType.Name, Part.DispositionItem.Name, Part.Swing)) DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.HingeEdgeMachining)) If Not StringToDouble(Part.HingeEdgeOverMaterial, dVal) Then MessageBox.Show(EgtMsg(50106) & K_HINGEDGEOVERMATERIAL_INI, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error) Return End If DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5)) - DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_TOP & ": " & Part.TopType.Name) + DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_TOP & ": " & SetBevel(Part.TopType.Name, Part.DispositionItem.Name, Part.Swing)) DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.TopMachining)) If Not StringToDouble(Part.TopOverMaterial, dVal) Then MessageBox.Show(EgtMsg(50106) & K_TOPOVERMATERIAL_INI, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error) Return End If DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5)) - DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_BOTTOM & ": " & Part.BottomType.Name) + DdfFileContent.Add(ConstCompo.K_SPACE3 & ConstCompo.K_BOTTOM & ": " & SetBevel(Part.BottomType.Name, Part.DispositionItem.Name, Part.Swing)) DdfFileContent.Add(ConstCompo.K_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.BottomMachining)) If Not StringToDouble(Part.BottomOverMaterial, dVal) Then MessageBox.Show(EgtMsg(50106) & K_BOTTOMOVERMATERIAL_INI, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error) @@ -513,6 +514,44 @@ Friend Module DdfFile Return CompoListDDF End Function + ' calcola il secure da salvare e il tipo di bevel + Public Function SetSecure(sSwing As String, DispositionItem As String) As String + Dim sSecure As String + If DispositionItem = "BU" Then + If sSwing.Contains("HR") Then + sSecure = "UP" + Else + sSecure = "DN" + End If + ElseIf DispositionItem = "BD" Then + If sSwing.Contains("HR") Then + sSecure = "DN" + Else + sSecure = "UP" + End If + Else + sSecure = "0" + End If + Return sSecure + End Function + + ' calcola il bevel da stamapare nel ddf + Public Function SetBevel(sCurrBevel As String, DispositionItem As String, sSwing As String) As String + If sCurrBevel = "BV" And DispositionItem = "BD" Then + Return "BD" + ElseIf sCurrBevel = "BV" And DispositionItem = "BU" Then + Return "BU" + ElseIf sCurrBevel = "BV" And DispositionItem <> "BU" And DispositionItem <> "BD" Then + If sSwing.Contains("HR") Then + Return "BD" + Else + Return "BU" + End If + Else + Return sCurrBevel + End If + End Function + #End Region ' Scrittura DDF #Region "SCRITTURA ASSEMBLATO" diff --git a/DoorParameters/Compo.vb b/DoorParameters/Compo.vb index 6a5a109..9666f5e 100644 --- a/DoorParameters/Compo.vb +++ b/DoorParameters/Compo.vb @@ -238,7 +238,7 @@ Public Class Compo '------------------------------------------------------------------------------------------------------------------------------- If IsNothing(Me.refJambCompo) Then Part.CreateRefCompo(Me.CompoType, Me, Map.refAssemblyPageVM.CurrAssembly, FrameCompoFileConfig, FrameCompoFile, Map.refPartPageVM.CurrPart) - If CompoMatch.LoadCompoParam(Me) Then Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(Me) + If CompoMatch.LoadCompoParam(Me, Map.refPartPageVM.CurrPart.TypePart) Then Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(Me) For IndexParam As Integer = 0 To Me.refJambCompo.CompoParamList.Count - 1 If Me.refJambCompo.CompoParamList(IndexParam).DDFName.ToLower = "side" Then DirectCast(Me.refJambCompo.CompoParamList(IndexParam), ComboBoxParam).SetSelItem(Me.CompoType.JambSide) @@ -259,7 +259,7 @@ Public Class Compo ' Carico il nome FrameCompoFile = FrameCompoFile.Substring(FrameCompoFileConfig.LastIndexOf("\") + 1) Me.refJambCompo.SetTemplateSelItemRefCompo(FrameCompoFile, Me.refJambCompo) - LoadCompoParam(Me) + LoadCompoParam(Me, Map.refPartPageVM.CurrPart.TypePart) Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(Me) ResetCompoParam() Else @@ -856,7 +856,7 @@ Public Class TextBoxParam ' se la componente non ha un riferimento esce If IsNothing(CurrCompo.refJambCompo) Then Return ' se fallisce il caricamento dei parametri esce - If Not LoadCompoParam(CurrCompo) Then Return + If Not LoadCompoParam(CurrCompo, Map.refPartPageVM.CurrPart.TypePart) Then Return If Not UpdateParam() Then MessageBox.Show("No matching param ", EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error) ResetCompoParam() End Set diff --git a/DoorParameters/Part.vb b/DoorParameters/Part.vb index adc5242..9a4d224 100644 --- a/DoorParameters/Part.vb +++ b/DoorParameters/Part.vb @@ -40,16 +40,34 @@ Public Class Part m_IsActive = bIsActive NotifyPropertyChanged("IsActive") End Sub + + ' lista delle disposizioni da mostrare a video + Friend Shared m_DispositionList As New ObservableCollection(Of EdgeType) + Public ReadOnly Property DispositionList As ObservableCollection(Of EdgeType) + Get + Return m_DispositionList + End Get + End Property - 'Private m_IsAssembly As Boolean = False - 'Public Property IsAssembly As Boolean - ' Get - ' Return m_IsAssembly - ' End Get - ' Set(value As Boolean) - ' m_IsAssembly = value - ' End Set - 'End Property + ' elemento selezionato dalla lista delle disposizinioni + Private m_DispositionItem As EdgeType + Public Property DispositionItem As EdgeType + Get + Return m_DispositionItem + End Get + Set(value As EdgeType) + m_DispositionItem = value + Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True + OptionModule.m_Disposition = m_DispositionItem + NotifyPropertyChanged("DispositionItem") + End Set + End Property + Public Sub SetDispositionItem(ObjDisposition As EdgeType) + If IsNothing(m_DispositionItem) Then + m_DispositionItem = ObjDisposition + End If + NotifyPropertyChanged("DispositionItem") + End Sub #End Region ' Nuove proprietà delle parti @@ -1025,8 +1043,13 @@ Public Class Part ' secure If LineIndex < ReadDoor.FileContent.Count - 1 Then If SearchKey(ReadDoor.FileContent(LineIndex), K_SECURE) Then - bSecure = True - LineIndex += 1 + LineIndex = ReadDoor.GetSecure(LineIndex) + If LineIndex = -1 Then + InvalidValue += String.Format(EgtMsg(50102), K_SECURE + vbCrLf) + ' assegno una porta vuota ed esco dal ciclo + ReadDoor = Nothing + Exit While + End If End If End If ' profiles @@ -1077,6 +1100,9 @@ Public Class Part LineIndex += 1 If LineIndex > ReadDoor.FileContent.Count - 1 Then Exit While End While + ' aggiorno + Map.refPartPageVM.CurrPart = ReadDoor + Map.refOptionsVM.RefreshEdgeTypeList() ' quando finisce la lettura di tutte le righe esci dal ciclo ' se la stringa dei messaggi contiene delle informazioni allora stampa If Not String.IsNullOrWhiteSpace(InvalidValue) Then @@ -1431,6 +1457,141 @@ Public Class Part Return Index End Function + ' attivo e disattivo il posizionamento in macchina della porta + Public Function GetSecure(Index As Integer) As Integer + Dim sSecure As String = SearchKeyValue(FileContent(Index), K_SECURE) + ' riaggiorno la lista dei bevel con quello che è stato settato nel Confi.ini + If OptionModule.m_Disposition.Name.Contains("BU") Then + Part.m_DispositionList(0).IsActive = Visibility.Visible + OptionModule.m_bBevelUp = Visibility.Visible + Part.m_DispositionList(1).IsActive = Visibility.Collapsed + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Collapsed + ElseIf OptionModule.m_Disposition.Name.Contains("BD") Then + Part.m_DispositionList(0).IsActive = Visibility.Collapsed + OptionModule.m_bBevelUp = Visibility.Collapsed + Part.m_DispositionList(1).IsActive = Visibility.Visible + Part.m_DispositionList(2).IsActive = Visibility.Collapsed + OptionModule.m_bBevelDown = Visibility.Visible + End If + + ' creo l'oggetto OptionsVM per la prima volta se non esiste + If IsNothing(Map.refOptionsVM) Then + Dim OptionsPage As OptionsVM = Map.refMainWindowVM.OptionPage + End If + If String.IsNullOrWhiteSpace(sSecure) Then + ' se non c'è la parola chiave allora esci + If Not SearchKey(FileContent(Index), K_SECURE) Then Return -1 + ' altrimenti lascia il valore vuoto + Index += 1 + Else + ' carico il valore nella porta corrente + m_Secure = sSecure + If sSecure = "UP" And m_Swing.Contains("HR") Then + ' devo controllare che nella optionpage sia selezionato il tipo di spigolo + If m_DispositionList(0).IsActive = Visibility.Visible Then + SetDispositionItem(m_DispositionList(0)) + Else + If MessageBox.Show("Disposition BU is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + ' seleziono l'elemento dall'elenco + SetDispositionItem(m_DispositionList(0)) + ' modifico la visibilità dei bevel + OptionModule.m_bBevelUp = Visibility.Visible + If OptionModule.m_Disposition.Name = "BD" Then + OptionModule.m_bBevelDown = Visibility.Collapsed + Else + ' salvo nel Default.ini la modifica della visibilità + DefaultWritePrivateProfileString(S_EDGE, K_BEVELU_INI, "1") + End If + Else + SetDispositionItem(OptionModule.m_Disposition) + End If + End If + ElseIf sSecure = "UP" And Not m_Swing.Contains("HR") Then + If m_DispositionList(1).IsActive = Visibility.Visible Then + SetDispositionItem(m_DispositionList(1)) + Else + If MessageBox.Show("Disposition BD is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + SetDispositionItem(m_DispositionList(1)) + OptionModule.m_bBevelDown = Visibility.Visible + If OptionModule.m_Disposition.Name = "BU" Then + OptionModule.m_bBevelUp = Visibility.Collapsed + Else + ' salvo nel Default.ini la modifica della visibilità + DefaultWritePrivateProfileString(S_EDGE, K_BEVELD_INI, "1") + End If + Else + SetDispositionItem(OptionModule.m_Disposition) + End If + End If + ElseIf sSecure = "DN" And m_Swing.Contains("HR") Then + If m_DispositionList(1).IsActive = Visibility.Visible Then + SetDispositionItem(m_DispositionList(1)) + Else + If MessageBox.Show("Disposition BD is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + SetDispositionItem(m_DispositionList(1)) + OptionModule.m_bBevelDown = Visibility.Visible + If OptionModule.m_Disposition.Name = "BU" Then + OptionModule.m_bBevelUp = Visibility.Collapsed + Else + ' salvo nel Default.ini la modifica della visibilità + DefaultWritePrivateProfileString(S_EDGE, K_BEVELD_INI, "1") + End If + Else + SetDispositionItem(m_DispositionList(2)) + End If + End If + ElseIf sSecure = "DN" And Not m_Swing.Contains("HR") Then + If m_DispositionList(0).IsActive = Visibility.Visible Then + SetDispositionItem(m_DispositionList(0)) + Else + If MessageBox.Show("Disposition BU is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + SetDispositionItem(m_DispositionList(0)) + OptionModule.m_bBevelUp = Visibility.Visible + If OptionModule.m_Disposition.Name = "BD" Then + OptionModule.m_bBevelDown = Visibility.Collapsed + Else + ' salvo nel Default.ini la modifica della visibilità + DefaultWritePrivateProfileString(S_EDGE, K_BEVELU_INI, "1") + End If + Else + SetDispositionItem(OptionModule.m_Disposition) + End If + End If + ElseIf sSecure = "0" Then + If OptionModule.m_Disposition.Name = "BD" Then + If m_Swing.Contains("HR") Then + SetDispositionItem(m_DispositionList(1)) + Else + If MessageBox.Show("Disposition BU is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + SetDispositionItem(m_DispositionList(0)) + OptionModule.m_bBevelUp = Visibility.Visible + Else + SetDispositionItem(OptionModule.m_Disposition) + End If + End If + + ElseIf OptionModule.m_Disposition.Name = "BU" Then + If m_Swing.Contains("HR") Then + SetDispositionItem(m_DispositionList(1)) + Else + If MessageBox.Show("Disposition BD is not setted in OptionPage, do you want to set?", EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.Yes Then + SetDispositionItem(m_DispositionList(1)) + OptionModule.m_bBevelDown = Visibility.Visible + Else + SetDispositionItem(OptionModule.m_Disposition) + End If + End If + Else + SetDispositionItem(Part.m_DispositionList(2)) + End If + End If + ' passo alla riga successiva + Index += 1 + End If + Return Index + End Function + ' carico valori profiles Public Function GetProfiles(Index As Integer, TypePart As String) As Integer ' Creo una stringa per scrivere gli errori @@ -1451,7 +1612,14 @@ Public Class Part ' controllo che il valore sia nella lista If EdgeTypeControl(LockEdgeType) Then ' carico il valore nella porta corrente - m_LockEdgeType = EdgeTypeList.First(Function(x) x.Name = LockEdgeType) + 'm_LockEdgeType = EdgeTypeList.First(Function(x) x.Name = LockEdgeType) + If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then + If Trim(LockEdgeType) = "BU" Or Trim(LockEdgeType) = "BD" Then + m_LockEdgeType = EdgeTypeList(1) + Else + m_LockEdgeType = EdgeTypeList.First(Function(x) x.Name = LockEdgeType) + End If + End If ' restituisco la riga successiva all'ultimo valore letto Else m_LockEdgeType = EdgeTypeList(0) @@ -1488,7 +1656,14 @@ Public Class Part Index += 1 Else If EdgeTypeControl(HingeEdgeType) Then - m_HingeEdgeType = EdgeTypeList.First(Function(x) x.Name = HingeEdgeType) + 'm_HingeEdgeType = EdgeTypeList.First(Function(x) x.Name = HingeEdgeType) + If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then + If Trim(HingeEdgeType) = "BU" Or Trim(HingeEdgeType) = "BD" Then + m_HingeEdgeType = EdgeTypeList(1) + Else + m_HingeEdgeType = EdgeTypeList.First(Function(x) x.Name = HingeEdgeType) + End If + End If Else m_HingeEdgeType = m_EdgeTypeList(0) bError = True @@ -1519,7 +1694,14 @@ Public Class Part Index += 1 Else If EdgeTypeControl(TopType) Then - m_TopType = EdgeTypeList.First(Function(x) x.Name = TopType) + 'm_TopType = EdgeTypeList.First(Function(x) x.Name = TopType) + If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then + If Trim(TopType) = "BU" Or Trim(TopType) = "BD" Then + m_TopType = EdgeTypeList(1) + Else + m_TopType = EdgeTypeList.First(Function(x) x.Name = TopType) + End If + End If Else m_TopType = m_EdgeTypeList(0) bError = True @@ -1550,7 +1732,14 @@ Public Class Part Index += 1 Else If EdgeTypeControl(BottomType) Then - m_BottomType = EdgeTypeList.First(Function(x) x.Name = BottomType) + 'm_BottomType = EdgeTypeList.First(Function(x) x.Name = BottomType) + If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then + If Trim(BottomType) = "BU" Or Trim(BottomType) = "BD" Then + m_BottomType = EdgeTypeList(1) + Else + m_BottomType = EdgeTypeList.First(Function(x) x.Name = BottomType) + End If + End If Else m_BottomType = m_EdgeTypeList(0) bError = True @@ -1944,20 +2133,20 @@ Public Class Part DirectCast(CurrCompoParam, ComboBoxOnOffParam).SetIsActive(False) Exit For End If + End If End If - End If - Else - ' se il file è più corto di quel che dovrebbe essere (mancono alcuni parametri nel file prima della fine) - If TypeOf DirectCast(CompoTemplateItem.CompoParamList(IndexParam), CompoParam) Is TextBoxOnOffParam Then - DirectCast(CurrCompoParam, TextBoxOnOffParam).SetIsActive(False) - ElseIf TypeOf DirectCast(CompoTemplateItem.CompoParamList(IndexParam), CompoParam) Is ComboBoxOnOffParam Then - DirectCast(CurrCompoParam, ComboBoxOnOffParam).SetIsActive(False) - Else - If Not String.IsNullOrEmpty(InvalidValue) Then InvalidValue &= Environment.NewLine - InvalidValue &= String.Format(EgtMsg(50139), IndexLine + IndexParam, Trim(CompoTemplateItem.CompoParamList(IndexParam).DDFName)) - InvalidValue &= String.Format(Environment.NewLine & EgtMsg(50140)) - End If + Else + ' se il file è più corto di quel che dovrebbe essere (mancono alcuni parametri nel file prima della fine) + If TypeOf DirectCast(CompoTemplateItem.CompoParamList(IndexParam), CompoParam) Is TextBoxOnOffParam Then + DirectCast(CurrCompoParam, TextBoxOnOffParam).SetIsActive(False) + ElseIf TypeOf DirectCast(CompoTemplateItem.CompoParamList(IndexParam), CompoParam) Is ComboBoxOnOffParam Then + DirectCast(CurrCompoParam, ComboBoxOnOffParam).SetIsActive(False) + Else + If Not String.IsNullOrEmpty(InvalidValue) Then InvalidValue &= Environment.NewLine + InvalidValue &= String.Format(EgtMsg(50139), IndexLine + IndexParam, Trim(CompoTemplateItem.CompoParamList(IndexParam).DDFName)) + InvalidValue &= String.Format(Environment.NewLine & EgtMsg(50140)) + End If End If End If Else @@ -1971,16 +2160,16 @@ Public Class Part InvalidValue &= String.Format(Environment.NewLine & EgtMsg(50140)) End If End If - If IndexLine + IndexParam < FileContent.Count Then - If Search3Score(FileContent(IndexLine + IndexParam)) Then - Exit For - End If - If Search3Dots(FileContent(IndexLine + IndexParam)) Then - Exit For - End If - Else + If IndexLine + IndexParam < FileContent.Count Then + If Search3Score(FileContent(IndexLine + IndexParam)) Then Exit For End If + If Search3Dots(FileContent(IndexLine + IndexParam)) Then + Exit For + End If + Else + Exit For + End If Next ' terminata la lettura dei parametri diff --git a/DoorParameters/PartPageV.xaml b/DoorParameters/PartPageV.xaml index ebebb91..554f7cf 100644 --- a/DoorParameters/PartPageV.xaml +++ b/DoorParameters/PartPageV.xaml @@ -62,6 +62,7 @@ + @@ -174,8 +175,21 @@ Style="{StaticResource DoorEdgeParamsCmBx}" Margin="0.4,2,40,4" IsEnabled="{Binding IsRaedOnly, Converter={StaticResource TrueToFalse}}"/> - - + + + + - - + + diff --git a/OptionsWindow/OptionModule.vb b/OptionsWindow/OptionModule.vb index af1a298..ff6d6ba 100644 --- a/OptionsWindow/OptionModule.vb +++ b/OptionsWindow/OptionModule.vb @@ -59,6 +59,8 @@ Friend Module OptionModule Friend m_ConfigurationSoftware As ConfigType + Friend m_Disposition As New EdgeType("", Visibility.Visible) + Friend m_ThicknessJamb As String Friend m_WidthJamb As String Friend m_LightUp As String @@ -194,6 +196,19 @@ Friend Module OptionModule DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELD_INI, BevelDown) m_bBevelDown = BevelDown + 'disposizione in macchina delle porte + Dim Disp As String = String.Empty + GetMainPrivateProfileString(S_GENERAL, "Disposition", "0", Disp) + m_Disposition.Name = Disp + ' se esizte una selezione allora non mostrare a video + If Not IsNothing(m_Disposition) And m_Disposition.Name.Contains("BU") Then + m_bBevelUp = Visibility.Visible + m_bBevelDown = Visibility.Collapsed + ElseIf Not IsNothing(m_Disposition) And m_Disposition.Name.Contains("BD") Then + m_bBevelUp = Visibility.Collapsed + m_bBevelDown = Visibility.Visible + End If + ' Leggo le dimensioni della porta dal file Default.ini Dim Width As String = String.Empty DefaultGetPrivateProfileString(S_SIZE, K_WIDTH_INI, "33.125", Width) @@ -425,6 +440,28 @@ Friend Module OptionModule Next End Sub + Public Function DispositionVisibility() As Visibility + ' se non è selezionata nessuna disposizione allora deve essere selezionabile da interfaccia + If IsNothing(m_Disposition) Then + Return Visibility.Visible + ElseIf m_Disposition.Name <> "BU" And m_Disposition.Name <> "BD" Then + Return Visibility.Visible + Else + Return Visibility.Collapsed + End If + End Function + + Public Function DispositionBoolean() As Boolean + ' per rendere selezionabile la disposizione dalla pagina delle opzioni + If IsNothing(m_Disposition) Then + Return True + ElseIf m_Disposition.Name <> "BU" And m_Disposition.Name <> "BD" Then + Return True + Else + Return False + End If + End Function + End Module ' Classe che identifica una lingua del programma con nome e path del file dei messaggi diff --git a/OptionsWindow/OptionsV.xaml b/OptionsWindow/OptionsV.xaml index ce601e0..c574af7 100644 --- a/OptionsWindow/OptionsV.xaml +++ b/OptionsWindow/OptionsV.xaml @@ -467,12 +467,14 @@ diff --git a/OptionsWindow/OptionsViewModel.vb b/OptionsWindow/OptionsViewModel.vb index 5e3108d..7f1ea17 100644 --- a/OptionsWindow/OptionsViewModel.vb +++ b/OptionsWindow/OptionsViewModel.vb @@ -6,8 +6,6 @@ Imports EgtWPFLib5 Public Class OptionsVM Implements INotifyPropertyChanged - Dim m_rfMainWindowVM As MainWindowVM - ' serve per definire l'indirizzo per la guida (senza aggiungere l'estenzione!) Dim m_Chapter As String @@ -83,6 +81,12 @@ Public Class OptionsVM End Set End Property + Public ReadOnly Property DispositionIsEnable As Boolean + Get + Return OptionModule.DispositionBoolean + End Get + End Property + ' Carico i parametri associati al Bevel Up Public Property BevelUpIsChecked As Boolean Get @@ -94,7 +98,7 @@ Public Class OptionsVM End Get Set(value As Boolean) ' se sto accendendo o spegmemdo un bevel - If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelUp, value)) Then + If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelUp, value), "BU") Then If value Then OptionModule.m_bBevelUp = Visibility.Visible Else @@ -123,7 +127,7 @@ Public Class OptionsVM End If End Get Set(value As Boolean) - If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelDown, value)) Then + If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelDown, value), "BD") Then If value Then OptionModule.m_bBevelDown = Visibility.Visible Else @@ -1028,15 +1032,13 @@ Public Class OptionsVM End Function ' chiedo se vuole continuare: vero se cambia li lista - Private Function QuestionSetBevel(bCheckBevel As Integer) As Boolean + Private Function QuestionSetBevel(bCheckBevel As Integer, sBevel As String) As Boolean If Not IsNothing(Map.refPartPageVM.CurrPart) Or IsNothing(Map.refAssemblyPageVM.CurrAssembly) Then ' se la porta esiste If bCheckBevel = 1 Then ' controllo se sto eliminando da uno degli elementi della lista: se si chiedo di continuare - If Map.refPartPageVM.CurrPart.LockEdgeType.Name = "BU" Or Map.refPartPageVM.CurrPart.LockEdgeType.Name = "BD" Or Map.refPartPageVM.CurrPart.HingeEdgeType.Name = "BU" Or Map.refPartPageVM.CurrPart.HingeEdgeType.Name = "BD" Or - Map.refAssemblyPageVM.CurrAssembly.LockEdgeType.Name = "BU" Or Map.refAssemblyPageVM.CurrAssembly.LockEdgeType.Name = "BD" Or Map.refAssemblyPageVM.CurrAssembly.HingeEdgeType.Name = "BU" Or Map.refAssemblyPageVM.CurrAssembly.HingeEdgeType.Name = "BD" Then - - ' Se blocco tutto non accade nulla + If Map.refPartPageVM.CurrPart.DispositionItem.Name = sBevel Then + ' Se blocco tutto non accade nulla -- It is the bevel of the current door. Do You want to proced? If MessageBox.Show(EgtMsg(50154), EgtMsg(50115), MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.No Then Return False Else @@ -1062,81 +1064,68 @@ Public Class OptionsVM ' creo la lista di oggetti aggiornando la visibilità dei bevel Up e Down Public Sub RefreshEdgeTypeList() - NotifyPropertyChanged("EdgeTypeList") - For Index = 0 To Part.m_EdgeTypeList.Count - 1 - If m_StaticEdgeTypeList(Index) = "BU" Then - Part.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index) - Part.m_EdgeTypeList(Index).IsActive = OptionModule.m_bBevelUp - ElseIf m_StaticEdgeTypeList(Index) = "BD" Then - Part.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index) - Part.m_EdgeTypeList(Index).IsActive = OptionModule.m_bBevelDown - Else - Part.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index) - Part.m_EdgeTypeList(Index).IsActive = Visibility.Visible - End If - Next - For IndexTop = 0 To 2 - If m_StaticEdgeTypeList(IndexTop) = "BU" Then - Part.m_TopEdgeTypeList(IndexTop).Name = m_StaticEdgeTypeList(IndexTop) - Part.m_TopEdgeTypeList(IndexTop).IsActive = OptionModule.m_bBevelUp - ElseIf m_StaticEdgeTypeList(IndexTop) = "BD" Then - Part.m_TopEdgeTypeList(IndexTop).Name = m_StaticEdgeTypeList(IndexTop) - Part.m_TopEdgeTypeList(IndexTop).IsActive = OptionModule.m_bBevelDown - Else - Part.m_TopEdgeTypeList(IndexTop).Name = m_StaticEdgeTypeList(IndexTop) - Part.m_TopEdgeTypeList(IndexTop).IsActive = Visibility.Visible + For IndexBeveDisp As Integer = 0 To Part.m_DispositionList.Count - 1 + If Part.m_DispositionList(IndexBeveDisp).Name = "BU" Then + Part.m_DispositionList(IndexBeveDisp).IsActive = OptionModule.m_bBevelUp + ElseIf Part.m_DispositionList(IndexBeveDisp).Name = "BD" Then + Part.m_DispositionList(IndexBeveDisp).IsActive = OptionModule.m_bBevelDown End If Next + Map.refPartPageVM.CurrPart.NotifyPropertyChanged("DispositionList") + If Not IsNothing(Map.refPartPageVM.CurrPart) Then - NotifyPropertyChanged("LockEdgeType") - NotifyPropertyChanged("LockEdgeTypeAssembly") - Map.refPartPageVM.CurrPart.NotifyPropertyChanged("LockEdgeType") - NotifyPropertyChanged("HingeEdgeType") - NotifyPropertyChanged("HingeEdgeTypeAssembly") - Map.refPartPageVM.CurrPart.NotifyPropertyChanged("HingeEdgeType") - NotifyPropertyChanged("TopType") - NotifyPropertyChanged("TopTypeAssembly") - Map.refPartPageVM.CurrPart.NotifyPropertyChanged("TopType") - NotifyPropertyChanged("BottomType") - NotifyPropertyChanged("BottomTypeAssembly") - Map.refPartPageVM.CurrPart.NotifyPropertyChanged("BottomType") + If Map.refPartPageVM.CurrPart.DispositionItem.IsActive = Visibility.Collapsed Then Map.refPartPageVM.CurrPart.DispositionItem = Part.m_DispositionList(2) + 'NotifyPropertyChanged("LockEdgeType") + 'NotifyPropertyChanged("LockEdgeTypeAssembly") + 'Map.refPartPageVM.CurrPart.NotifyPropertyChanged("LockEdgeType") + 'NotifyPropertyChanged("HingeEdgeType") + 'NotifyPropertyChanged("HingeEdgeTypeAssembly") + 'Map.refPartPageVM.CurrPart.NotifyPropertyChanged("HingeEdgeType") + 'NotifyPropertyChanged("TopType") + 'NotifyPropertyChanged("TopTypeAssembly") + 'Map.refPartPageVM.CurrPart.NotifyPropertyChanged("TopType") + 'NotifyPropertyChanged("BottomType") + 'NotifyPropertyChanged("BottomTypeAssembly") + 'Map.refPartPageVM.CurrPart.NotifyPropertyChanged("BottomType") + 'Map.refPartPageVM.CurrPart.NotifyPropertyChanged("DispositionItem") End If If Not IsNothing(Map.refAssemblyPageVM.CurrAssembly) Then - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("EdgeTypeList") - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("TopEdgeTypeList") - NotifyPropertyChanged("LockEdgeType") - NotifyPropertyChanged("LockEdgeTypeAssembly") - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("LockEdgeType") - NotifyPropertyChanged("HingeEdgeType") - NotifyPropertyChanged("HingeEdgeTypeAssembly") - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("HingeEdgeType") - NotifyPropertyChanged("TopType") - NotifyPropertyChanged("TopTypeAssembly") - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("TopType") - NotifyPropertyChanged("BottomType") - NotifyPropertyChanged("BottomTypeAssembly") - Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("BottomType") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("EdgeTypeList") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("TopEdgeTypeList") + 'NotifyPropertyChanged("LockEdgeType") + 'NotifyPropertyChanged("LockEdgeTypeAssembly") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("LockEdgeType") + 'NotifyPropertyChanged("HingeEdgeType") + 'NotifyPropertyChanged("HingeEdgeTypeAssembly") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("HingeEdgeType") + 'NotifyPropertyChanged("TopType") + 'NotifyPropertyChanged("TopTypeAssembly") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("TopType") + 'NotifyPropertyChanged("BottomType") + 'NotifyPropertyChanged("BottomTypeAssembly") + 'Map.refAssemblyPageVM.CurrAssembly.NotifyPropertyChanged("BottomType") End If End Sub Public Shared Sub CreateEdgeTypeList() For Index = 0 To m_StaticEdgeTypeList.Count - 1 - If m_StaticEdgeTypeList(Index) = "BU" Then - Part.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), OptionModule.m_bBevelUp)) - ElseIf m_StaticEdgeTypeList(Index) = "BD" Then - Part.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), OptionModule.m_bBevelDown)) - Else - Part.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), Visibility.Visible)) - End If + Part.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), Visibility.Visible)) Next - For IndexTop = 0 To 2 + For IndexTop = 0 To 1 Part.m_TopEdgeTypeList.Add(Part.m_EdgeTypeList(IndexTop)) Next + Part.m_DispositionList.Add(New EdgeType("BU", OptionModule.m_bBevelUp)) + Part.m_DispositionList.Add(New EdgeType("BD", OptionModule.m_bBevelDown)) + Part.m_DispositionList.Add(New EdgeType("BySwing", Visibility.Visible)) + If IsNothing(OptionModule.m_Disposition) Then + OptionModule.m_Disposition = Part.m_DispositionList(2) + ElseIf OptionModule.m_Disposition.Name <> "BU" AndAlso OptionModule.m_Disposition.Name <> "BD" Then + OptionModule.m_Disposition = Part.m_DispositionList(2) + End If End Sub - Sub New(rfMainWindowVM As MainWindowVM) - m_rfCurrDoor = Map.refPartPageVM.CurrPart - m_rfMainWindowVM = rfMainWindowVM + Sub New() + Map.SetRefOptionsVM(Me) End Sub #Region "COMMANDS" diff --git a/ProjectManager/ProjectManagerVM.vb b/ProjectManager/ProjectManagerVM.vb index 3d4e1fb..4abed19 100644 --- a/ProjectManager/ProjectManagerVM.vb +++ b/ProjectManager/ProjectManagerVM.vb @@ -292,6 +292,7 @@ Public Class ProjectManagerVM End If ' Eseguo salvataggio Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) + Map.refSceneManagerVM.RefreshBtn() End Sub #End Region ' SaveCommand @@ -317,7 +318,7 @@ Public Class ProjectManagerVM Dim OptionsWindow As New OptionsV OptionsWindow.Height = 550 OptionsWindow.Width = 650 - OptionsWindow.DataContext = New OptionsVM(Map.refMainWindowVM) + OptionsWindow.DataContext = New OptionsVM() OptionsWindow.Owner = Application.Current.MainWindow OptionsWindow.ShowDialog() End Sub