From b19aeafdf3128d97773fd5f8b594cec91076cc1f Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 16 Jan 2025 11:56:46 +0100 Subject: [PATCH] - migliorata la gestione degli UC per le trasformazioni. --- Constants/ConstEgtStone3D.vb | 18 +++++ Constants/ConstGen.vb | 6 -- Move/MoveVM.vb | 91 ++++++++++++++++++------- Pair/PairVM.vb | 35 +++++++--- Rotate/RotateVM.vb | 55 ++++++++++----- SceneButton/SceneButtonV.xaml.vb | 7 +- SceneHost/SceneHostV.xaml.vb | 87 +++++++++++++---------- SceneUserControl/SceneUserControlV.xaml | 2 +- SceneUserControl/SceneUserControlVM.vb | 14 ++-- Utility/PartSolidM.vb | 1 + Utility/SolidManagerM.vb | 1 + 11 files changed, 211 insertions(+), 106 deletions(-) diff --git a/Constants/ConstEgtStone3D.vb b/Constants/ConstEgtStone3D.vb index e7c7dd7..6cad8c2 100644 --- a/Constants/ConstEgtStone3D.vb +++ b/Constants/ConstEgtStone3D.vb @@ -47,4 +47,22 @@ Public Const KEY_ISOFILE_PATH = "IsoFilePath" Public Const FILE_PATH = "FilePath" + + 'enum per le trasformazioni + Public Enum PairStage As Integer + FirstLine = 0 + SecondLine = 1 + FacePair = 2 + End Enum + + Public Enum RotateStage As Integer + SelectPart = 0 + SelectAxis = 1 + InsertAngle = 2 + End Enum + + Public Enum MoveStage As Integer + SelectPart = 0 + InsertMovement = 1 + End Enum End Module diff --git a/Constants/ConstGen.vb b/Constants/ConstGen.vb index d761f8b..09beb2b 100644 --- a/Constants/ConstGen.vb +++ b/Constants/ConstGen.vb @@ -39,10 +39,4 @@ ' Sottodirettorio dell'Operation Solid Public Const OPERATIONSOLID_DIR As String = "OperationSolid" - Public Enum PairStage As Integer - FirstLine = 1 - SecondLine = 2 - FacePair = 3 - End Enum - End Module diff --git a/Move/MoveVM.vb b/Move/MoveVM.vb index f78e530..9a1b9fc 100644 --- a/Move/MoveVM.vb +++ b/Move/MoveVM.vb @@ -3,12 +3,50 @@ Public Class MoveVM Inherits SceneUserControlVM +#Region "FIELDS & PROPERTIES" + +#Region "Messages" + Public ReadOnly Property TopBar_Msg_Stg0 As String + Get + Return EgtMsg(110023) + End Get + End Property + + Public ReadOnly Property TopBar_Msg_Stg1 As String + Get + Return EgtMsg(110025) + End Get + End Property + +#End Region ' Messages + + Private m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1}) + Public ReadOnly Property MsgList As List(Of String) + Get + Return m_MsgList + End Get + End Property + + Private m_Stage As MoveStage = MoveStage.SelectPart + Private Property Stage As MoveStage + Get + Return m_Stage + End Get + Set(value As MoveStage) + m_Stage = value + DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage) + End Set + End Property + +#End Region ' Fields & properties + #Region "CONTRUCTOR" Public Sub New() MyBase.New() - + Title = EGT_MOVE.ToUpper() LoadParamList() + Stage = If(Map.refSceneHostV.m_nIdPart = GDB_ID.NULL, MoveStage.SelectPart, MoveStage.InsertMovement) End Sub #End Region ' Contructor @@ -16,27 +54,39 @@ Public Class MoveVM #Region "METHODS" Public Overrides Sub LoadParamList() - Title = EgtMsg(110018).ToUpper() - ParamList.Add(New _TextBlockParam("Messaggio", EgtMsg(110005), Visibility.Visible)) + ParamList.Add(New _TextBlockParam("Messaggio", MsgList(Stage), Visibility.Visible)) ParamList.Add(New _TextBoxParam("X", "0", Visibility.Visible)) ParamList.Add(New _TextBoxParam("Y", "0", Visibility.Visible)) ParamList.Add(New _TextBoxParam("Z", "0", Visibility.Visible)) End Sub + Public Sub AdvanceStage() + Stage += 1 + End Sub + + Public Function AtStage() + Return Stage + End Function + + Private Function ReadMoveInput() + ' recupero i valori nelle box + Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam) + Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam) + Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam) + ' verifico che siano validi + If String.IsNullOrEmpty(x_TextBox.sValue) Then x_TextBox.sValue = "0" + If String.IsNullOrEmpty(y_TextBox.sValue) Then y_TextBox.sValue = "0" + If String.IsNullOrEmpty(z_TextBox.sValue) Then z_TextBox.sValue = "0" + ' restituisco il vettore + Return New Vector3d(CDbl(x_TextBox.sValue), + CDbl(y_TextBox.sValue), + CDbl(z_TextBox.sValue)) + End Function + Public Overrides Sub Conferma() ' se non avevo visualizzato la preview allora sposto il/i pezzo/i If Not Map.refSceneHostV.m_bPreviewShown Then - - Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam) - Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam) - Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam) - - If String.IsNullOrEmpty(x_TextBox.Value) Then x_TextBox.Value = "0" - If String.IsNullOrEmpty(y_TextBox.Value) Then y_TextBox.Value = "0" - If String.IsNullOrEmpty(z_TextBox.Value) Then z_TextBox.Value = "0" - Dim vtMove As New Vector3d(CDbl(x_TextBox.Value), - CDbl(y_TextBox.Value), - CDbl(z_TextBox.Value)) + Dim vtMove As Vector3d = ReadMoveInput() '''' gestione dell'opzione 'AllSelected 'If Not AreSameVectorExact(vtMove, New Vector3d) Then ' If Not AllOption_Move.IsChecked Then @@ -109,17 +159,7 @@ Public Class MoveVM Return End If - Dim x_TextBox As _TextBoxParam = DirectCast(ParamList(1), _TextBoxParam) - Dim y_TextBox As _TextBoxParam = DirectCast(ParamList(2), _TextBoxParam) - Dim z_TextBox As _TextBoxParam = DirectCast(ParamList(3), _TextBoxParam) - - ' leggo i dati del vettore di movimento dalle TextBox in m_MoveUC - If String.IsNullOrEmpty(x_TextBox.Value) Then x_TextBox.Value = "0" - If String.IsNullOrEmpty(y_TextBox.Value) Then y_TextBox.Value = "0" - If String.IsNullOrEmpty(z_TextBox.Value) Then z_TextBox.Value = "0" - Dim vtMove As New Vector3d(CDbl(x_TextBox.Value), - CDbl(y_TextBox.Value), - CDbl(z_TextBox.Value)) + Dim vtMove As Vector3d = ReadMoveInput() If Map.refSceneHostV.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then If Map.refSceneHostV.m_bPreviewShown = True Then ' resetto il movimento precedente @@ -168,6 +208,7 @@ Public Class MoveVM If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString) ' rimuovo lo UC dalla griglia Map.refSceneButtonV.RemoveMoveUC() + SolidManagerM.ManageUndoRedo() End Sub #End Region ' Methods diff --git a/Pair/PairVM.vb b/Pair/PairVM.vb index 4afca3e..61719f9 100644 --- a/Pair/PairVM.vb +++ b/Pair/PairVM.vb @@ -8,6 +8,22 @@ Public Class PairVM #Region "Messages" + Public ReadOnly Property TopBar_Msg_Stg0 As String + Get + Return EgtMsg(110000) + End Get + End Property + Public ReadOnly Property TopBar_Msg_Stg1 As String + Get + Return EgtMsg(110020) + End Get + End Property + Public ReadOnly Property TopBar_Msg_Stg2 As String + Get + Return EgtMsg(110021) + End Get + End Property + Public ReadOnly Property FlipOption1_Msg As String Get Return EgtMsg(110001) @@ -21,22 +37,22 @@ Public Class PairVM End Property #End Region ' Messages - Private m_MsgList As New List(Of String)({EgtMsg(110000), EgtMsg(110020), EgtMsg(110021)}) + Private m_MsgList As New List(Of String)({TopBar_Msg_Stg0, TopBar_Msg_Stg1, TopBar_Msg_Stg2}) Public ReadOnly Property MsgList As List(Of String) Get Return m_MsgList End Get End Property - Private m_Stage As Integer = 0 - Private Property Stage As Integer + Private m_Stage As PairStage = PairStage.FirstLine + Private Property Stage As PairStage Get Return m_Stage End Get - Set(value As Integer) + Set(value As PairStage) m_Stage = value DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage) - If m_Stage = 2 Then SetAllVisible() + If m_Stage = PairStage.FacePair Then SetAllVisible() End Set End Property @@ -46,7 +62,7 @@ Public Class PairVM Public Sub New() MyBase.New() - + Title = EGT_PAIR.ToUpper() 'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia Map.refSceneHostV.m_nTransfNum = 0 ' setto le variabili di salvataggio per le operazioni temporanee @@ -63,20 +79,22 @@ Public Class PairVM #Region "METHODS" Public Overrides Sub LoadParamList() - Title = "Pair".ToUpper() AddGenericParam(New _TextBlockParam("Messaggio", MsgList(0), Visibility.Visible)) Dim PairOptionList As New List(Of ParamCmBx)({New ParamCmBx("Start-Start"), New ParamCmBx("Start-End"), New ParamCmBx("End-Start"), New ParamCmBx("End-End"), New ParamCmBx("Middle-Middle")}) AddGenericParam(New _ComboBoxParam("PairOption", PairOptionList, 1, Visibility.Collapsed)) AddGenericParam(New _CheckBoxParam("FlipOption1", FlipOption1_Msg, Visibility.Collapsed)) AddGenericParam(New _CheckBoxParam("FlipOption2", FlipOption2_Msg, Visibility.Collapsed)) - End Sub Public Sub AdvanceStage() Stage += 1 End Sub + Public Function AtStage() + Return Stage + End Function + Public Overrides Sub Conferma() ' salvo la storia delle operazioni svolte durante l'accoppiamento Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart) @@ -145,6 +163,7 @@ NoSecondLine: If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString) ' rimuovo lo UC dalla griglia Map.refSceneButtonV.RemovePairUC() + SolidManagerM.ManageUndoRedo() End Sub Private Sub SetAllVisible() diff --git a/Rotate/RotateVM.vb b/Rotate/RotateVM.vb index 2dcdaee..27bd468 100644 --- a/Rotate/RotateVM.vb +++ b/Rotate/RotateVM.vb @@ -8,6 +8,12 @@ Public Class RotateVM #Region "Messages" + Public ReadOnly Property TopBar_Msg0 As String + Get + Return EgtMsg(110024) + End Get + End Property + Public ReadOnly Property TopBar_Msg1 As String Get Return EgtMsg(110005) @@ -27,7 +33,7 @@ Public Class RotateVM #End Region ' Messages - Private m_MsgList As New List(Of String)({TopBar_Msg1, TopBar_Msg2}) + Private m_MsgList As New List(Of String)({TopBar_Msg0, TopBar_Msg1, TopBar_Msg2}) Public ReadOnly Property MsgList As List(Of String) Get Return m_MsgList @@ -41,10 +47,20 @@ Public Class RotateVM End Get Set(value As Boolean) m_bAxisSelected = value - If m_bAxisSelected Then - DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(1) - DirectCast(ParamList(1), _TextBoxParam).IsEnabled = True - End If + If m_bAxisSelected Then AdvanceStage() + End Set + End Property + + Private m_Stage As RotateStage = RotateStage.SelectPart + Private Property Stage As RotateStage + Get + Return m_Stage + End Get + Set(value As RotateStage) + m_Stage = value + DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage) + If m_Stage = RotateStage.SelectAxis Then ShowAxis() + If m_Stage = RotateStage.InsertAngle Then DirectCast(ParamList(1), _TextBoxParam).IsEnabled = True End Set End Property @@ -53,11 +69,8 @@ Public Class RotateVM #Region "CONSTRUCTOR" Public Sub New() MyBase.New() - + Title = EGT_ROTATE.ToUpper() ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent(). - Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart) - If IsNothing(PartSolidSel) Then Return - PartSolidSel.ShowAxis() 'comincio a contare le operazioni temporanee per poterle poi salvare nella eventualmente nella storia Map.refSceneHostV.m_nTransfNum = 0 @@ -68,6 +81,7 @@ Public Class RotateVM If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString) LoadParamList() + Stage = If(Map.refSceneHostV.m_nIdPart = GDB_ID.NULL, RotateStage.SelectPart, RotateStage.SelectAxis) End Sub #End Region ' Constructor @@ -75,15 +89,23 @@ Public Class RotateVM #Region "METHODS" Public Overrides Sub LoadParamList() - Title = "Rotate".ToUpper() - AddGenericParam(New _TextBlockParam("Messaggio", MsgList(0))) + AddGenericParam(New _TextBlockParam("Messaggio", MsgList(Stage))) AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, Visibility.Visible, False)) End Sub - '' uso il tasto preview anziché passare dall'evento TextChanged - 'Public Overrides Sub OnTextboxTextChanged(sender As Object, Text As String) - ' AngText_Changed() - 'End Sub + Public Sub AdvanceStage() + Stage += 1 + End Sub + + Public Function AtStage() + Return Stage + End Function + + Private Sub ShowAxis() + Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart) + If IsNothing(PartSolidSel) Then Return + PartSolidSel.ShowAxis() + End Sub Public Overrides Sub Conferma() If Not Map.refSceneHostV.m_bRotated Then AngText_Changed() @@ -119,6 +141,7 @@ Public Class RotateVM Map.refSceneHostV.m_bRotated = False Map.refSceneHostV.m_dAngRot = 0 Map.refSceneButtonV.RemoveRotateUC() + SolidManagerM.ManageUndoRedo() End Sub Public Sub AngText_Changed() @@ -132,7 +155,7 @@ Public Class RotateVM Dim nId As Integer = Map.refSceneHostV.m_nIdPart If nId = GDB_ID.NULL Then Return - Dim sAng As String = DirectCast(ParamList(1), _TextBoxParam).Value + Dim sAng As String = DirectCast(ParamList(1), _TextBoxParam).sValue If String.IsNullOrEmpty(sAng) Then Return If Not IsNumeric(sAng) Then Return Dim dAng As Double = CDbl(sAng) diff --git a/SceneButton/SceneButtonV.xaml.vb b/SceneButton/SceneButtonV.xaml.vb index 45c49af..fe988f8 100644 --- a/SceneButton/SceneButtonV.xaml.vb +++ b/SceneButton/SceneButtonV.xaml.vb @@ -58,8 +58,7 @@ End Sub Public Sub LoadRotateUC() - Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart) - If Not IsNothing(PartSolidSel) And IsNothing(m_RotateUC) Then + If IsNothing(m_RotateUC) Then m_RotateUC = New SceneUserControlV Dim m_RotateVM As New RotateVM() m_RotateUC.DataContext = m_RotateVM @@ -68,10 +67,6 @@ Grid.SetColumnSpan(m_RotateUC, 2) Grid.SetRowSpan(m_RotateUC, 3) MainGrid.Children.Add(m_RotateUC) - Else - ' se non si è attivata la modalità di rotazione allora tolgo il check al toggle button - Dim RotateTgBtn As _ToggleButton = DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton) - RotateTgBtn.IsChecked = False End If End Sub diff --git a/SceneHost/SceneHostV.xaml.vb b/SceneHost/SceneHostV.xaml.vb index a1dff7d..a88990a 100644 --- a/SceneHost/SceneHostV.xaml.vb +++ b/SceneHost/SceneHostV.xaml.vb @@ -340,40 +340,43 @@ Public Class SceneHostV Line1: ' rotazione attiva - If DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).IsTgBtnChecked("Rotate") Then - ' se non identificato un part da ruotare aggiorno l'id - If m_nIdPart = -1 Then - m_nIdPart = nPartId - ' se avevo identificato un part da ruotare, ma ne ho identificato uno nuovo e non ho selezioni attive allora cambio id - ElseIf m_nIdPart <> -1 And m_nIdPart <> nPartId And Not IsAPartSelected() Then - Dim PartSolidIdSel As PartSolidM = GetPartSolid(m_nIdPart) - If IsNothing(PartSolidIdSel) Then Return - PartSolidIdSel.ResetData() - m_nIdPart = nPartId - End If - Dim PartSolidIdTempSel As PartSolidM = GetPartSolid(m_nIdPart) - If IsNothing(PartSolidIdTempSel) Then Return + + If Map.refSceneButtonVM.IsTgBtnChecked(EGT_ROTATE) Then Dim RotateVM As RotateVM = DirectCast(Map.refSceneButtonV.m_RotateUC.DataContext, RotateVM) - If EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate = -1 Then - PartSolidIdTempSel.nIdLineAxisRotate = nId - EgtSetMark(nId) - m_nIdMarked1 = nId - ' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato - RotateVM.bAxisSelected = True - RotateVM.AngText_Changed() - Return - ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate <> -1 Then - EgtResetMark(PartSolidIdTempSel.nIdLineAxisRotate) - PartSolidIdTempSel.nIdLineAxisRotate = nId - EgtSetMark(nId) - m_nIdMarked1 = nId - ' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato - RotateVM.bAxisSelected = True - RotateVM.AngText_Changed() + If RotateVM.AtStage() = RotateStage.SelectAxis Then + ' se non identificato un part da ruotare aggiorno l'id + If m_nIdPart = -1 Then + m_nIdPart = nPartId + ' se avevo identificato un part da ruotare, ma ne ho identificato uno nuovo e non ho selezioni attive allora cambio id + ElseIf m_nIdPart <> -1 And m_nIdPart <> nPartId And Not IsAPartSelected() Then + Dim PartSolidIdSel As PartSolidM = GetPartSolid(m_nIdPart) + If IsNothing(PartSolidIdSel) Then Return + PartSolidIdSel.ResetData() + m_nIdPart = nPartId + End If + Dim PartSolidIdTempSel As PartSolidM = GetPartSolid(m_nIdPart) + If IsNothing(PartSolidIdTempSel) Then Return + If EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate = -1 Then + PartSolidIdTempSel.nIdLineAxisRotate = nId + EgtSetMark(nId) + m_nIdMarked1 = nId + ' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato + RotateVM.bAxisSelected = True + RotateVM.AngText_Changed() + Return + ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineAxisRotate <> -1 Then + EgtResetMark(PartSolidIdTempSel.nIdLineAxisRotate) + PartSolidIdTempSel.nIdLineAxisRotate = nId + EgtSetMark(nId) + m_nIdMarked1 = nId + ' se trovo già un valore scritto nella casella di testo allora ruoto subito il part attorno all'asse indicato + RotateVM.bAxisSelected = True + RotateVM.AngText_Changed() + End If + ' Passo al successivo + nId = EgtGetNextObjInSelWin() + Continue While End If - ' Passo al successivo - nId = EgtGetNextObjInSelWin() - Continue While End If ''misura @@ -398,7 +401,7 @@ Line1: 'End If ' kiss kiss - If Map.refSceneButtonVM.IsTgBtnChecked("Pair") Then + If Map.refSceneButtonVM.IsTgBtnChecked(EGT_PAIR) Then If m_nIdPart = -1 Then m_nIdPart = nPartId End If @@ -497,7 +500,7 @@ Line1: Else ' Memorizzo Id da selezionare m_nIdToSel = nPartId - m_nIdPart = nPartId + 'm_nIdPart = nPartId End If If m_bEnableEdit Then m_bDrag = True EgtDraw() @@ -542,6 +545,19 @@ Line1: PartSolidIdToSel = GetPartSolid(m_nIdToSel) If IsNothing(PartSolidIdToSel) Then Return End If + If m_nIdPart = GDB_ID.NULL Then + If Map.refSceneButtonVM.IsTgBtnChecked(EGT_MOVE) Then + ' era attiva la modalità move ma non avevo selezionato un part + DirectCast(Map.refSceneButtonV.m_MoveUC.DataContext, MoveVM).AdvanceStage() + End If + If Map.refSceneButtonVM.IsTgBtnChecked(EGT_ROTATE) Then + ' era attiva la modalità rotate ma non avevo selezionato un part + m_nIdPart = PartSolidIdToSel.PartId + PartSolidIdToSel.SelectPart() + DirectCast(Map.refSceneButtonV.m_RotateUC.DataContext, RotateVM).AdvanceStage() + End If + End If + m_nIdToSel = PartSolidIdToSel.PartId m_nIdPart = PartSolidIdToSel.PartId '' seleziono l'oggetto nel tree @@ -581,8 +597,6 @@ Line1: ' WARNING WARNING WARNING WARNING WARNING WARNING ' questo controllo è stato tolto per poter selezionare gli oggetti importati nel vme e quindi non presenti nel nesting 'If bSelected Then PartSolidIdToSel.SelectPart() - 'If PartSolidIdToSel.nTime > -1 Then UndoBtn.IsEnabled = True - 'If PartSolidIdToSel.nTime < PartSolidIdToSel.vTransf.Count() - 1 Then RedoBtn.IsEnabled = True 'End If ' Se deselezione da eseguire ElseIf m_nIdToDesel <> GDB_ID.NULL Then @@ -617,7 +631,6 @@ Line1: 'If bDeselected Then PartSolidIdToDesel.DeselectPart() - 'MyMsgTxBl.Text = "" 'End If End If End If diff --git a/SceneUserControl/SceneUserControlV.xaml b/SceneUserControl/SceneUserControlV.xaml index 99b7acd..c41a64a 100644 --- a/SceneUserControl/SceneUserControlV.xaml +++ b/SceneUserControl/SceneUserControlV.xaml @@ -46,7 +46,7 @@ Visibility="{Binding nVisibility}"> - diff --git a/SceneUserControl/SceneUserControlVM.vb b/SceneUserControl/SceneUserControlVM.vb index eae65ae..1ec2394 100644 --- a/SceneUserControl/SceneUserControlVM.vb +++ b/SceneUserControl/SceneUserControlVM.vb @@ -204,15 +204,15 @@ Public Class _TextBoxParam Public Event TextChanged(sender As Object, text As String) #Region "FIELDS & PROPERTIES" - Private m_Value As String = String.Empty - Public Property Value As String + Private m_sValue As String = String.Empty + Public Property sValue As String Get - Return m_Value + Return m_sValue End Get Set(value As String) - m_Value = value - RaiseEvent TextChanged(Me, m_Value) - NotifyPropertyChanged(NameOf(value)) + m_sValue = value + RaiseEvent TextChanged(Me, m_sValue) + NotifyPropertyChanged(NameOf(sValue)) End Set End Property @@ -222,7 +222,7 @@ Public Class _TextBoxParam Sub New(sName As String, sValue As String, Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True) MyBase.New(sName, nVisibility, bIsEnabled) - m_Value = sValue + m_sValue = sValue End Sub #End Region ' Constructor diff --git a/Utility/PartSolidM.vb b/Utility/PartSolidM.vb index cab5ecb..08b32ae 100644 --- a/Utility/PartSolidM.vb +++ b/Utility/PartSolidM.vb @@ -257,6 +257,7 @@ Public Class PartSolidM End Sub Public Sub SelectPart() + If IsSelected() Then Return Dim lPair As List(Of Integer) = SolidManagerM.PairList(PartId) For Each nId As Integer In lPair Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(nId) diff --git a/Utility/SolidManagerM.vb b/Utility/SolidManagerM.vb index 3954e3b..6c4e7da 100644 --- a/Utility/SolidManagerM.vb +++ b/Utility/SolidManagerM.vb @@ -549,6 +549,7 @@ Module SolidManagerM Public Sub ResetOperationMarks(nId As Integer) Dim PartSolidSel As PartSolidM = GetPartSolid(nId) If Not IsNothing(PartSolidSel) Then PartSolidSel.DeselectSinglePart() + Map.refSceneHostV.m_nIdPart = GDB_ID.NULL EgtResetMark(Map.refSceneHostV.m_nIdMarked1) Map.refSceneHostV.m_nIdMarked1 = GDB_ID.NULL EgtResetMark(Map.refSceneHostV.m_nIdMarked2)