Files
2025-02-24 16:20:26 +01:00

208 lines
7.0 KiB
VB.net

Imports EgtUILib
Public Class RotateVM
Inherits SceneUserControlVM
#Region "FIELDS & PROPERTIES"
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
ChangeTextColor()
End Set
End Property
#Region "Messages"
Public ReadOnly Property TopBar_Msg0 As String
Get
Return EgtMsg(110024) ' Seleziona il pezzo da ruotare
End Get
End Property
Public ReadOnly Property TopBar_Msg1 As String
Get
Return EgtMsg(110005) ' Seleziona l'asse di rotazione
End Get
End Property
Public ReadOnly Property TopBar_Msg2 As String
Get
Return EgtMsg(110022) ' Inserisci l'angolo di rotazione
End Get
End Property
Public ReadOnly Property Testo_Msg As String
Get
Return EgtMsg(110006) ' Angolo
End Get
End Property
#End Region ' Messages
#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.refSceneHostVM.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.refSceneHostVM.m_nIdPart = GDB_ID.NULL, RotateStage.SelectPart, RotateStage.SelectAxis)
ActivateButton()
RemoveAllUC()
End Sub
#End Region ' Constructor
#Region "METHODS"
Public Overrides Sub LoadParamList()
AddGenericParam(New _TextBlockParam(EGT_MESSAGE, MsgList(Stage), ParamType.STR))
' Angolo
AddGenericParam(New _TextBoxParam(EgtMsg(110006), 0, ParamType.DOUB, 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.refSceneHostVM.m_nIdPart)
If IsNothing(PartSolidSel) Then Return
PartSolidSel.ShowAxis()
End Sub
Public Overrides Sub Conferma()
If Not Map.refSceneHostVM.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.refSceneHostVM.m_bRotated Then
SolidManagerM.ResetRotation(True, True)
End If
Close()
End Sub
Private Sub Close()
SolidManagerM.ResetOperationMarks(Map.refSceneHostVM.m_nIdPart)
EgtDraw()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ROTATE)
If TypeOf (Btn) Is _ToggleButton Then
DirectCast(Btn, _ToggleButton).IsChecked = False
Else
EgtOutLog("CONFIG ERR: Il pulsante di Rotate è stato definito come Button anziché ToggleButton")
End If
' setto le variabili di salvataggio per le operazioni temporanee
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)
Map.refSceneHostVM.m_bRotated = False
Map.refSceneHostVM.m_dAngRot = 0
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_RotateUC)
SolidManagerM.ManageUndoRedo()
End Sub
Public Sub AngText_Changed()
Dim Btn As SceneBtn = Map.refSceneButtonVM.GetButton(EGT_ROTATE)
If TypeOf (Btn) Is _ToggleButton Then
If Not DirectCast(Btn, _ToggleButton).IsChecked Then Return
Else
EgtOutLog("CONFIG ERR: Il pulsante di Rotate è stato definito come Button anziché ToggleButton")
Return
End If
Dim nId As Integer = Map.refSceneHostVM.m_nIdPart
If nId = GDB_ID.NULL Then Return
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)
If dAng <> 0 Then
If Map.refSceneHostVM.m_dAngRot <> 0 Then
ResetRotation(False, False)
End If
Dim PartSolidIdSel = SolidManagerM.GetPartSolid(nId)
Dim vtDir As Vector3d
Dim ptStart As Point3d
If PartSolidIdSel.nIdLineAxisRotate = GDB_ID.NULL Then Return
EgtStartPoint(PartSolidIdSel.nIdLineAxisRotate, GDB_ID.ROOT, ptStart)
EgtStartVector(PartSolidIdSel.nIdLineAxisRotate, GDB_ID.ROOT, vtDir)
SolidManagerM.Rotate(nId, ptStart, vtDir, dAng, False, True)
Map.refSceneHostVM.m_bRotated = True
Map.refSceneHostVM.m_dAngRot = dAng
End If
EgtDraw()
End Sub
Private Sub ActivateButton()
' Attivo pulsante Rotate
DirectCast(Map.refSceneButtonVM.GetButton(EGT_ROTATE), _ToggleButton).IsChecked = True
' Disattivo pulsante Pair
DirectCast(Map.refSceneButtonVM.GetButton(EGT_PAIR), _ToggleButton).IsChecked = False
' Disattivo pulsante Move
DirectCast(Map.refSceneButtonVM.GetButton(EGT_MOVE), _ToggleButton).IsChecked = False
End Sub
Private Sub RemoveAllUC()
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_AngleUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_EditParametricUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ExtremityUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_LengthUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_MoveUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_NewPanelUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_PairUC)
End Sub
#End Region ' Methods
End Class