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/EgtStone3D.vbproj b/EgtStone3D.vbproj
index 09052f6..77208ed 100644
--- a/EgtStone3D.vbproj
+++ b/EgtStone3D.vbproj
@@ -118,17 +118,11 @@
OptionWindowV.xaml
-
- PairV.xaml
- ProjManagerV.xaml
-
- RotateV.xaml
- SceneButtonV.xaml
@@ -196,18 +190,10 @@
DesignerMSBuild:Compile
-
- Designer
- MSBuild:Compile
- DesignerMSBuild:Compile
-
- Designer
- MSBuild:Compile
- DesignerMSBuild:Compile
diff --git a/Move/MoveVM.vb b/Move/MoveVM.vb
index a808576..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)))
- ParamList.Add(New _TextBoxParam("X", "0"))
- ParamList.Add(New _TextBoxParam("Y", "0"))
- ParamList.Add(New _TextBoxParam("Z", "0"))
+ 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
@@ -101,27 +151,21 @@ Public Class MoveVM
End Sub
Public Overrides Sub ShowPreview()
- If Map.refSceneHostV.m_bPreviewShown = False Then
- Dim Btn As SceneBtn = DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).GetButton(EGT_MOVE)
- If TypeOf (Btn) Is _ToggleButton Then
- If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
- Else
- EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
- Return
+ Dim Btn As SceneBtn = DirectCast(Map.refSceneButtonV.DataContext, SceneButtonVM).GetButton(EGT_MOVE)
+ If TypeOf (Btn) Is _ToggleButton Then
+ If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
+ Else
+ EgtOutLog("CONFIG ERR: Il pulsante di Move è stato definito come Button anziché ToggleButton")
+ Return
+ End If
+
+ 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
+ If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
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 Map.refSceneHostV.m_bPreviewShown Then Return
- 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))
'''' eventuale gestione di un'opzione 'All Selected
'If Not AllOption_Move.IsChecked And m_nIdPart <> -1 Then
' Dim PartSolidSelected As PartSolid = GetPartSolid(m_nIdPart)
@@ -136,11 +180,7 @@ Public Class MoveVM
' Next
'End If
- If Map.refSceneHostV.m_nIdPart <> GDB_ID.NULL And Not AreSameVectorExact(vtMove, New Vector3d) Then
- SolidManagerM.Move(Map.refSceneHostV.m_nIdPart, vtMove, False, True)
- Else
- Annulla()
- End If
+ SolidManagerM.Move(Map.refSceneHostV.m_nIdPart, vtMove, False, True)
Map.refSceneHostV.m_bPreviewShown = True
EgtDraw()
@@ -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/PairV.xaml b/Pair/PairV.xaml
deleted file mode 100644
index 14f488f..0000000
--- a/Pair/PairV.xaml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Pair/PairV.xaml.vb b/Pair/PairV.xaml.vb
deleted file mode 100644
index 1f348ba..0000000
--- a/Pair/PairV.xaml.vb
+++ /dev/null
@@ -1,44 +0,0 @@
-Imports EgtUILib
-
-Public Class PairV
-
-#Region "FIELDS & PROPERTIES"
-
- Private m_PairVM As PairVM
-
-#End Region ' Fields & Properties
-
-#Region "CONSTRUCTOR"
-
- Sub New()
-
- ' La chiamata è richiesta dalla finestra di progettazione.
- InitializeComponent()
-
- ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
- m_PairVM = New PairVM
- Me.DataContext = m_PairVM
-
- PairOption.ItemsSource = New List(Of String)({"Start-Start", "Start-End", "End-Start", "End-End", "Middle-Middle"})
- PairOption.SelectedIndex = 1
-
- '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
- Dim bSave As Boolean = False
- If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
- Dim bSaveTemp As Boolean = True
- If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
- End Sub
-
-#End Region ' Constructor
-
-#Region "EVENTS"
-
- Private Sub PairOption_Changed() Handles PairOption.SelectionChanged, FlipOption1.Click, FlipOption2.Click
- If Not IsNothing(Map.refSceneButtonV.m_PairUC) Then m_PairVM.PairPartsAgain()
- End Sub
-
-#End Region ' Events
-
-End Class
diff --git a/Pair/PairVM.vb b/Pair/PairVM.vb
index 9502aa1..67851b0 100644
--- a/Pair/PairVM.vb
+++ b/Pair/PairVM.vb
@@ -2,17 +2,27 @@
Imports EgtWPFLib5
Public Class PairVM
- Inherits VMBase
+ Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
#Region "Messages"
- Public ReadOnly Property TopBar_Msg As String
+ 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
@@ -26,82 +36,68 @@ Public Class PairVM
End Get
End Property
- Public ReadOnly Property Conferma_Msg As String
+#End Region ' Messages
+ 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 EgtMsg(110003)
+ Return m_MsgList
End Get
End Property
- Public ReadOnly Property Annulla_Msg As String
+ Private m_Stage As PairStage = PairStage.FirstLine
+ Private Property Stage As PairStage
Get
- Return EgtMsg(110004)
+ Return m_Stage
End Get
+ Set(value As PairStage)
+ m_Stage = value
+ DirectCast(ParamList(0), _TextBlockParam).MsgValue = MsgList(m_Stage)
+ If m_Stage = PairStage.FacePair Then SetAllVisible()
+ End Set
End Property
#End Region ' Messages
- ' Definizione Comandi
- Private m_ConfermaCmd As ICommand
- Private m_AnnullaCmd As ICommand
-
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
- Sub New()
+ 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
+ Dim bSave As Boolean = False
+ If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
+ Dim bSaveTemp As Boolean = True
+ If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+ LoadParamList()
End Sub
#End Region ' Constructor
#Region "METHODS"
- Private Sub Close()
- SolidManagerM.ResetOperationMarks(Map.refSceneHostV.m_nIdPart)
- EgtDraw()
- Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_PAIR)
- If TypeOf (Btn) Is _ToggleButton Then
- DirectCast(Btn, _ToggleButton).IsChecked = False
- Else
- EgtOutLog("CONFIG ERR: Il pulsante di Pair è stato definito come Button anziché ToggleButton")
- End If
- If EgtLuaCallFunction("ASS.ResetTempStory") Then AssLog("ASS.ResetTempStory()")
- Map.refSceneHostV.m_nTransfNum = 0
- ' setto le variabili per il salvataggio della storia normale
- Dim bSave As Boolean = True
- If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
- Dim bSaveTemp As Boolean = False
- If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
- ' rimuovo lo UC dalla griglia
- Map.refSceneButtonV.RemovePairUC()
+ Public Overrides Sub LoadParamList()
+ 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 PairPartsAgain()
- Dim nId As Integer = Map.refSceneHostV.m_nIdPart
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
- Dim nTransf As Integer = 0
- PairPart(nId, nOpInd, bFlip1, bFlip2, Map.refSceneHostV.m_bFlippedParal, Map.refSceneHostV.m_bFlippedPerp, nTransf)
- Map.refSceneHostV.m_nTransfNum += nTransf
+ Public Sub AdvanceStage()
+ Stage += 1
End Sub
-#End Region ' Methods
+ Public Function AtStage()
+ Return Stage
+ End Function
-#Region "COMMANDS"
-
-#Region "ConfermaCmd"
-
- Public ReadOnly Property ConfermaCmd As ICommand
- Get
- If m_ConfermaCmd Is Nothing Then
- m_ConfermaCmd = New Command(AddressOf Conferma)
- End If
- Return m_ConfermaCmd
- End Get
- End Property
-
- Public Sub Conferma()
+ Public Overrides Sub Conferma()
' salvo la storia delle operazioni svolte durante l'accoppiamento
Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
If IsNothing(PartSolidSel) Then
@@ -137,20 +133,7 @@ NoSecondLine:
Close()
End Sub
-#End Region ' ConfermaCmd
-
-#Region "AnnullaCmd"
-
- Public ReadOnly Property AnnullaCmd As ICommand
- Get
- If m_AnnullaCmd Is Nothing Then
- m_AnnullaCmd = New Command(AddressOf Annulla)
- End If
- Return m_AnnullaCmd
- End Get
- End Property
-
- Public Sub Annulla()
+ Public Overrides Sub Annulla()
' faccio il reset del pairing
If Map.refSceneHostV.m_nTransfNum > Map.refSceneHostV.m_MaxTempTime Then
Map.refSceneHostV.m_nTransfNum = Map.refSceneHostV.m_MaxTempTime
@@ -158,12 +141,62 @@ NoSecondLine:
For op As Integer = Map.refSceneHostV.m_nTransfNum To 0 Step -1
If EgtLuaCallFunction("ASS.UndoTemp") Then AssLog("ASS.UndoTemp()")
Next
+ 'resetto eventuali intersezioni
+ SolidManagerM.ResetInters()
' chiudo lo user control
Close()
End Sub
-#End Region ' AnnullaCmd
+ Private Sub Close()
+ SolidManagerM.ResetOperationMarks(Map.refSceneHostV.m_nIdPart)
+ EgtDraw()
+ Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_PAIR)
+ If TypeOf (Btn) Is _ToggleButton Then
+ DirectCast(Btn, _ToggleButton).IsChecked = False
+ Else
+ EgtOutLog("CONFIG ERR: Il pulsante di Pair è stato definito come Button anziché ToggleButton")
+ End If
+ If EgtLuaCallFunction("ASS.ResetTempStory") Then AssLog("ASS.ResetTempStory()")
+ Map.refSceneHostV.m_nTransfNum = 0
+ ' setto le variabili per il salvataggio della storia normale
+ Dim bSave As Boolean = True
+ If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
+ Dim bSaveTemp As Boolean = False
+ If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+ ' rimuovo lo UC dalla griglia
+ Map.refSceneButtonV.RemovePairUC()
+ SolidManagerM.ManageUndoRedo()
+ End Sub
-#End Region ' Commands
+ Private Sub SetAllVisible()
+ ParamList(1).nVisibility = Visibility.Visible
+ ParamList(2).nVisibility = Visibility.Visible
+ ParamList(3).nVisibility = Visibility.Visible
+ End Sub
+ Public Overrides Sub OnCheckboxCheckedChanged(sender As Object, checkedState As Boolean)
+ Dim CheckBox As _CheckBoxParam = DirectCast(sender, _CheckBoxParam)
+ Select Case CheckBox.Name
+ Case "FlipOption1"
+ PairParts()
+ Case "FlipOption2"
+ PairParts()
+ End Select
+ End Sub
+
+ Public Overrides Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
+ PairParts()
+ End Sub
+
+ Public Sub PairParts()
+ Dim nId As Integer = Map.refSceneHostV.m_nIdPart
+ Dim nOpInd As Integer = DirectCast(ParamList(1), _ComboBoxParam).ParamCmBxList.IndexOf(DirectCast(ParamList(1), _ComboBoxParam).SelParamCmBx)
+ Dim bFlip1 As Boolean = DirectCast(ParamList(2), _CheckBoxParam).IsChecked
+ Dim bFlip2 As Boolean = DirectCast(ParamList(3), _CheckBoxParam).IsChecked
+ Dim nTransf As Integer = 0
+ PairPart(nId, nOpInd, bFlip1, bFlip2, Map.refSceneHostV.m_bFlippedParal, Map.refSceneHostV.m_bFlippedPerp, nTransf)
+ Map.refSceneHostV.m_nTransfNum += nTransf
+ End Sub
+
+#End Region ' Methods
End Class
diff --git a/Rotate/RotateV.xaml b/Rotate/RotateV.xaml
index d6128a5..5f28270 100644
--- a/Rotate/RotateV.xaml
+++ b/Rotate/RotateV.xaml
@@ -1,44 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/Rotate/RotateV.xaml.vb b/Rotate/RotateV.xaml.vb
deleted file mode 100644
index 40e6b44..0000000
--- a/Rotate/RotateV.xaml.vb
+++ /dev/null
@@ -1,47 +0,0 @@
-Imports EgtUILib
-
-Public Class RotateV
-
-#Region "FIELDS & PROPERTIES"
-
- Private m_RotateVM As RotateVM
-
-#End Region ' Fields & Properties
-
-#Region "CONSTRUCTOR"
-
- Sub New()
-
- ' La chiamata è richiesta dalla finestra di progettazione.
- InitializeComponent()
- m_RotateVM = New RotateVM
- Me.DataContext = m_RotateVM
-
- ' 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()
-
- ' setto le variabili di salvataggio per le operazioni temporanee
- Dim bSave As Boolean = False
- If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
- Dim bSaveTemp As Boolean = True
- If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
- End Sub
-
-#End Region ' Constructor
-
-#Region "EVENTS"
-
- Private Sub Init() Handles Me.Loaded
- Dim PartSolidSel As PartSolidM = SolidManagerM.GetPartSolid(Map.refSceneHostV.m_nIdPart)
- If IsNothing(PartSolidSel) Then m_RotateVM.Annulla()
- End Sub
-
- Public Sub AngText_Changed() Handles RotInputData.TextChanged
- If Not IsNothing(Map.refSceneButtonV.m_RotateUC) Then m_RotateVM.AngText_Changed()
- End Sub
-
-#End Region ' Events
-
-End Class
diff --git a/Rotate/RotateVM.vb b/Rotate/RotateVM.vb
index 44e3bf4..27bd468 100644
--- a/Rotate/RotateVM.vb
+++ b/Rotate/RotateVM.vb
@@ -2,43 +2,28 @@
Imports EgtWPFLib5
Public Class RotateVM
- Inherits VMBase
+ Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
- Private m_bAxisSelected As Boolean = False
- Public Property bAxisSelected As Boolean
- Get
- Return m_bAxisSelected
- End Get
- Set(value As Boolean)
- m_bAxisSelected = value
- If m_bAxisSelected Then
- 'Map.refSceneButtonV.m_RotateUC.TopBar.Text = "Inserisci l'angolo di rotazione"
- End If
- NotifyPropertyChanged(NameOf(bAxisSelected))
- End Set
- End Property
-
#Region "Messages"
- Public ReadOnly Property Conferma_Msg As String
+ Public ReadOnly Property TopBar_Msg0 As String
Get
- Return EgtMsg(110003)
+ Return EgtMsg(110024)
End Get
End Property
- Public ReadOnly Property Annulla_Msg As String
- Get
- Return EgtMsg(110004)
- End Get
- End Property
-
- Public ReadOnly Property TopBar_Msg As String
+ Public ReadOnly Property TopBar_Msg1 As String
Get
Return EgtMsg(110005)
End Get
End Property
+ Public ReadOnly Property TopBar_Msg2 As String
+ Get
+ Return EgtMsg(110022)
+ End Get
+ End Property
Public ReadOnly Property Testo_Msg As String
Get
@@ -48,14 +33,97 @@ Public Class RotateVM
#End Region ' Messages
- ' Definizione Comandi
- Private m_ConfermaCmd As ICommand
- Private m_AnnullaCmd As ICommand
+ 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
+ End Get
+ End Property
+
+ Private m_bAxisSelected As Boolean = False
+ Public Property bAxisSelected As Boolean
+ Get
+ Return m_bAxisSelected
+ End Get
+ Set(value As Boolean)
+ m_bAxisSelected = value
+ 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
#End Region ' Fields & Properties
+#Region "CONSTRUCTOR"
+ Public Sub New()
+ MyBase.New()
+ Title = EGT_ROTATE.ToUpper()
+ ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
+
+ '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
+ Dim bSave As Boolean = False
+ If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
+ Dim bSaveTemp As Boolean = True
+ 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
+
#Region "METHODS"
+ Public Overrides Sub LoadParamList()
+ AddGenericParam(New _TextBlockParam("Messaggio", MsgList(Stage)))
+ AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, Visibility.Visible, False))
+ 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()
+ Close()
+ End Sub
+
+ Public Overrides Sub ShowPreview()
+ AngText_Changed()
+ End Sub
+
+ Public Overrides Sub Annulla()
+ ' faccio il reset del rotate
+ If Map.refSceneHostV.m_bRotated Then
+ SolidManagerM.ResetRotation(True, True)
+ End If
+ Close()
+ End Sub
+
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostV.m_nIdPart)
EgtDraw()
@@ -70,7 +138,10 @@ Public Class RotateVM
If EgtLuaSetGlobBoolVar("ASS.bSaveHist", bSave) Then AssLog("ASS.bSaveHist = " & bSave.ToString)
Dim bSaveTemp As Boolean = False
If EgtLuaSetGlobBoolVar("ASS.bSaveTemp", bSaveTemp) Then AssLog("ASS.bSaveTemp = " & bSaveTemp.ToString)
+ Map.refSceneHostV.m_bRotated = False
+ Map.refSceneHostV.m_dAngRot = 0
Map.refSceneButtonV.RemoveRotateUC()
+ SolidManagerM.ManageUndoRedo()
End Sub
Public Sub AngText_Changed()
@@ -84,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 = Map.refSceneButtonV.m_RotateUC.RotInputData.Text
+ 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)
@@ -102,50 +173,9 @@ Public Class RotateVM
Map.refSceneHostV.m_bRotated = True
Map.refSceneHostV.m_dAngRot = dAng
End If
+ EgtDraw()
End Sub
#End Region ' Methods
-#Region "COMMANDS"
-
-#Region "ConfermaCmd"
-
- Public ReadOnly Property ConfermaCmd As ICommand
- Get
- If m_ConfermaCmd Is Nothing Then
- m_ConfermaCmd = New Command(AddressOf Conferma)
- End If
- Return m_ConfermaCmd
- End Get
- End Property
-
- Public Sub Conferma()
- Close()
- End Sub
-
-#End Region ' ConfermaCmd
-
-#Region "AnnullaCmd"
-
- Public ReadOnly Property AnnullaCmd As ICommand
- Get
- If m_AnnullaCmd Is Nothing Then
- m_AnnullaCmd = New Command(AddressOf Annulla)
- End If
- Return m_AnnullaCmd
- End Get
- End Property
-
- Public Sub Annulla()
- ' faccio il reset del rotate
- If Map.refSceneHostV.m_bRotated Then
- SolidManagerM.ResetRotation(True, True)
- End If
- Close()
- End Sub
-
-#End Region ' AnnullaCmd
-
-#End Region ' Commands
-
End Class
diff --git a/SceneButton/SceneButtonV.xaml.vb b/SceneButton/SceneButtonV.xaml.vb
index 89e63f8..fe988f8 100644
--- a/SceneButton/SceneButtonV.xaml.vb
+++ b/SceneButton/SceneButtonV.xaml.vb
@@ -3,8 +3,8 @@
#Region "FIELDS & PROPERTIES"
Private m_refSceneButtonVM As SceneButtonVM
- Public m_PairUC As PairV
- Public m_RotateUC As RotateV
+ Public m_PairUC As SceneUserControlV
+ Public m_RotateUC As SceneUserControlV
Public m_SelOptionUC As SelOptionV
Public m_MoveUC As SceneUserControlV
Public m_SceneUserControlV As SceneUserControlV
@@ -41,11 +41,13 @@
Public Sub LoadPairUC()
If IsNothing(m_PairUC) Then
- m_PairUC = New PairV
+ m_PairUC = New SceneUserControlV
+ Dim m_PairVM As New PairVM()
+ m_PairUC.DataContext = m_PairVM
Grid.SetColumn(m_PairUC, 0)
Grid.SetRow(m_PairUC, 0)
Grid.SetColumnSpan(m_PairUC, 2)
- Grid.SetRowSpan(m_PairUC, 2)
+ Grid.SetRowSpan(m_PairUC, 3)
MainGrid.Children.Add(m_PairUC)
End If
End Sub
@@ -57,11 +59,13 @@
Public Sub LoadRotateUC()
If IsNothing(m_RotateUC) Then
- m_RotateUC = New RotateV
+ m_RotateUC = New SceneUserControlV
+ Dim m_RotateVM As New RotateVM()
+ m_RotateUC.DataContext = m_RotateVM
Grid.SetColumn(m_RotateUC, 0)
Grid.SetRow(m_RotateUC, 0)
Grid.SetColumnSpan(m_RotateUC, 2)
- Grid.SetRowSpan(m_RotateUC, 2)
+ Grid.SetRowSpan(m_RotateUC, 3)
MainGrid.Children.Add(m_RotateUC)
End If
End Sub
diff --git a/SceneHost/SceneHostV.xaml.vb b/SceneHost/SceneHostV.xaml.vb
index f5acc44..a88990a 100644
--- a/SceneHost/SceneHostV.xaml.vb
+++ b/SceneHost/SceneHostV.xaml.vb
@@ -340,39 +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
+
+ If Map.refSceneButtonVM.IsTgBtnChecked(EGT_ROTATE) Then
+ Dim RotateVM As RotateVM = DirectCast(Map.refSceneButtonV.m_RotateUC.DataContext, RotateVM)
+ 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
- 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
- Map.refSceneButtonV.m_RotateUC.DataContext.bAxisSelected = True
- Map.refSceneButtonV.m_RotateUC.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
- Map.refSceneButtonV.m_RotateUC.DataContext.m_bAxisSelected = True
- Map.refSceneButtonV.m_RotateUC.AngText_Changed()
- End If
- ' Passo al successivo
- nId = EgtGetNextObjInSelWin()
- Continue While
End If
''misura
@@ -397,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
@@ -405,31 +409,21 @@ Line1:
If IsNothing(PartSolidIdTempSel) Then Return
Dim PartSolidIdTempSel2 As PartSolidM = GetPartSolid(EgtGetParent(EgtGetParent(PartSolidIdTempSel.nIdLineSecond)))
Dim PartSolidIdTempSelNew As PartSolidM = GetPartSolid(nPartId)
+ Dim PairUC As PairVM = DirectCast(Map.refSceneButtonV.m_PairUC.DataContext, PairVM)
If EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineFirst = -1 Then
PartSolidIdTempSel.nIdLineFirst = nId
EgtSetMark(nId)
m_nIdMarked1 = nId
- Map.refSceneButtonV.m_PairUC.TopBar.Text = "Seleziona dal secondo Part il lato con cui vuoi accoppiare quello appena selezionato"
- 'PairOption
- 'MyMsgTxBl.Text = "Seleziona dal secondo Part il lato con cui vuoi accoppiare quello appena selezionato"
+ PairUC.AdvanceStage()
Return
' impongo anche che il secondo lato appartenga ad un solid diverso dal primo selezionato
ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineSecond = -1 And
nPartId <> PartSolidIdTempSel.PartId And nPartId <> PartSolidIdTempSel.PartSolidId Then
- 'MyMsgTxBl.Text = "Modifica le impostazioni di accoppiamento e conferma oppura annulla l'accoppiamento" & vbCrLf &
- ' "tenendo premuto SHIFT puoi anche selezionare per ogni Part una faccia adiacente ai due lati accoppiati, per farle coincidere"
- Map.refSceneButtonV.m_PairUC.TopBar.Text = "Modifica le impostazioni di accoppiamento;" &
- "tenendo premuto SHIFT puoi anche selezionare per ogni Part una faccia adiacente ai due lati accoppiati, per farle coincidere"
- Map.refSceneButtonV.m_PairUC.PairOption.Visibility = Visibility.Visible
- Map.refSceneButtonV.m_PairUC.FlipOption1.Visibility = Visibility.Visible
- Map.refSceneButtonV.m_PairUC.FlipOption2.Visibility = Visibility.Visible
+ PairUC.AdvanceStage()
PartSolidIdTempSel.nIdLineSecond = nId
EgtSetMark(nId)
m_nIdMarked2 = nId
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
- PairPart(m_nIdPart, nOpInd, bFlip1, bFlip2, m_bFlippedParal, m_bFlippedPerp, m_nTransfNum)
+ PairUC.PairParts()
Return
' impongo anche che il secondo lato appartenga ad un solid diverso dal primo selezionato
ElseIf EgtGetType(nId) = GDB_TY.CRV_LINE And PartSolidIdTempSel.nIdLineSecond <> -1 And
@@ -440,10 +434,7 @@ Line1:
EgtSetMark(nId)
m_nIdMarked2 = nId
PartSolidIdTempSel.nIdLineSecond = nId
- Dim nOpInd As Integer = Map.refSceneButtonV.m_PairUC.PairOption.SelectedIndex
- Dim bFlip1 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption1.IsChecked
- Dim bFlip2 As Boolean = Map.refSceneButtonV.m_PairUC.FlipOption2.IsChecked
- PairPart(m_nIdPart, nOpInd, bFlip1, bFlip2, m_bFlippedParal, m_bFlippedPerp, m_nTransfNum)
+ PairUC.PairParts()
Return
' impongo che la prima faccia appartenga al primo solido selezionato
ElseIf (ModifierKeys.Shift And Keyboard.Modifiers) > 0 And EgtGetType(nId) = GDB_TY.SRF_FRGN And
@@ -509,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()
@@ -554,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
@@ -593,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
@@ -629,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 096bc26..05bb1a2 100644
--- a/SceneUserControl/SceneUserControlV.xaml
+++ b/SceneUserControl/SceneUserControlV.xaml
@@ -34,24 +34,40 @@
+ Style="{StaticResource TextBlockParam_TxBl}"
+ Visibility="{Binding nVisibility}"/>
+ Style="{StaticResource SceneUserControl_UniformGrid}"
+ Visibility="{Binding nVisibility}">
-
+
+ Style="{StaticResource SceneUserControl_UniformGrid}"
+ Visibility="{Binding nVisibility}">
+ DisplayMemberPath="Name"
+ IsEnabled="{Binding IsEnabled}"/>
+
+
+
+
+
+
@@ -65,7 +81,6 @@
@@ -76,6 +91,7 @@
Style="{StaticResource Preview_Btn}"/>
diff --git a/SceneUserControl/SceneUserControlVM.vb b/SceneUserControl/SceneUserControlVM.vb
index 1d582c6..7481946 100644
--- a/SceneUserControl/SceneUserControlVM.vb
+++ b/SceneUserControl/SceneUserControlVM.vb
@@ -2,6 +2,7 @@
Imports EgtUILib
Public Class SceneUserControlVM
+ Inherits VMBase
#Region "FIELDS & PROPERTIES"
@@ -66,6 +67,29 @@ Public Class SceneUserControlVM
Public Overridable Sub LoadParamList()
End Sub
+ Public Sub AddGenericParam(Control As GenericParam)
+ If TypeOf Control Is _CheckBoxParam Then
+ AddHandler DirectCast(Control, _CheckBoxParam).CheckChanged, AddressOf OnCheckboxCheckedChanged
+ End If
+ If TypeOf Control Is _ComboBoxParam Then
+ AddHandler DirectCast(Control, _ComboBoxParam).SelectionChanged, AddressOf OnComboboxSelectionChanged
+ End If
+ If TypeOf Control Is _TextBoxParam Then
+ AddHandler DirectCast(Control, _TextBoxParam).TextChanged, AddressOf OnTextboxTextChanged
+ End If
+ ParamList.Add(Control)
+ End Sub
+
+ ' Event handler for checkbox CheckedChanged
+ Public Overridable Sub OnCheckboxCheckedChanged(sender As Object, CheckState As Boolean)
+ End Sub
+
+ Public Overridable Sub OnComboboxSelectionChanged(sender As Object, Selection As ParamCmBx)
+ End Sub
+
+ Public Overridable Sub OnTextboxTextChanged(sender As Object, Text As String)
+ End Sub
+
#End Region ' Methods
#Region "COMMANDS"
@@ -138,12 +162,36 @@ Public Class GenericParam
End Set
End Property
+ Private m_nVisibility As Visibility = Visibility.Visible
+ Public Property nVisibility As Visibility
+ Get
+ Return m_nVisibility
+ End Get
+ Set(value As Visibility)
+ m_nVisibility = value
+ NotifyPropertyChanged(NameOf(nVisibility))
+ End Set
+ End Property
+
+ Private m_IsEnabled As Boolean = True
+ Public Property IsEnabled As Boolean
+ Get
+ Return m_IsEnabled
+ End Get
+ Set(value As Boolean)
+ m_IsEnabled = value
+ NotifyPropertyChanged(NameOf(IsEnabled))
+ End Set
+ End Property
+
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
- Sub New(sName As String)
+ Sub New(sName As String, Optional Visibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
m_Name = sName
+ nVisibility = Visibility
+ IsEnabled = bIsEnabled
End Sub
#End Region ' Constructor
@@ -153,16 +201,18 @@ End Class
Public Class _TextBoxParam
Inherits GenericParam
+ 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
- NotifyPropertyChanged(NameOf(value))
+ m_sValue = value
+ RaiseEvent TextChanged(Me, m_sValue)
+ NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
@@ -170,9 +220,9 @@ Public Class _TextBoxParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, sValue As String)
- MyBase.New(sName)
- m_Value = sValue
+ 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_sValue = sValue
End Sub
#End Region ' Constructor
@@ -191,7 +241,7 @@ Public Class _TextBlockParam
End Get
Set(value As String)
m_MsgValue = value
- NotifyPropertyChanged(NameOf(value))
+ NotifyPropertyChanged(NameOf(MsgValue))
End Set
End Property
@@ -199,8 +249,8 @@ Public Class _TextBlockParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, sValue As String)
- MyBase.New(sName)
+ 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_MsgValue = sValue
End Sub
@@ -211,6 +261,7 @@ End Class
Public Class _ComboBoxParam
Inherits GenericParam
+ Public Event SelectionChanged(sender As Object, selection As ParamCmBx)
#Region "FIELDS & PROPERTIES"
Private m_ParamCmBxList As New List(Of ParamCmBx)
@@ -231,6 +282,7 @@ Public Class _ComboBoxParam
End Get
Set(value As ParamCmBx)
m_SelParamCmBx = value
+ RaiseEvent SelectionChanged(Me, m_SelParamCmBx)
NotifyPropertyChanged(NameOf(SelParamCmBx))
End Set
End Property
@@ -239,10 +291,11 @@ Public Class _ComboBoxParam
#Region "CONSTRUCTOR"
- Sub New(sName As String, _ParamCmBxList As List(Of ParamCmBx))
- MyBase.New(sName)
+ Sub New(sName As String, _ParamCmBxList As List(Of ParamCmBx), IndexSelected As Integer,
+ Optional nVisibility As Visibility = Visibility.Visible, Optional bIsEnabled As Boolean = True)
+ MyBase.New(sName, nVisibility, bIsEnabled)
m_ParamCmBxList = _ParamCmBxList
- m_SelParamCmBx = m_ParamCmBxList(0)
+ m_SelParamCmBx = m_ParamCmBxList(IndexSelected)
End Sub
#End Region ' Constructor
@@ -273,4 +326,46 @@ Public Class ParamCmBx
#End Region ' Constructor
+End Class
+
+Public Class _CheckBoxParam
+ Inherits GenericParam
+
+ Public Event CheckChanged(sender As Object, checked As Boolean)
+#Region "FIELDS & PROPERTIES"
+
+ Private m_MsgValue As String = String.Empty
+ Public Property MsgValue As String
+ Get
+ Return m_MsgValue
+ End Get
+ Set(value As String)
+ m_MsgValue = value
+ NotifyPropertyChanged(NameOf(value))
+ End Set
+ End Property
+
+ Private m_IsChecked As Boolean = False
+ Public Property IsChecked As Boolean
+ Get
+ Return m_IsChecked
+ End Get
+ Set(value As Boolean)
+ m_IsChecked = value
+ RaiseEvent CheckChanged(Me, m_IsChecked)
+ NotifyPropertyChanged(NameOf(value))
+ End Set
+ End Property
+
+#End Region ' Fields & Properties
+
+#Region "CONSTRUCTOR"
+
+ 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_MsgValue = sValue
+ End Sub
+
+#End Region ' Constructor
+
End Class
\ No newline at end of file
diff --git a/Utility/EgtStone3DDefaultStyle.xaml b/Utility/EgtStone3DDefaultStyle.xaml
index 5d32317..dbee9a8 100644
--- a/Utility/EgtStone3DDefaultStyle.xaml
+++ b/Utility/EgtStone3DDefaultStyle.xaml
@@ -564,6 +564,7 @@
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)