208 lines
7.0 KiB
VB.net
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
|