Imports System.Globalization Imports EgtUILib Imports EgtWPFLib5 Public Class StartMachPanelVM Inherits VMBase #Region "FIELDS & PROPERTIES" Public Enum StartMachTypes As Integer NULL = 0 POINT = 1 COMPO = 2 End Enum Private m_nPartId As Integer = GDB_ID.NULL Private m_nStartMachLayerId As Integer = GDB_ID.NULL Private m_nStartMachId As Integer = GDB_ID.NULL Private m_TypeList() As Boolean = {True, False} Public ReadOnly Property TypeList As Boolean() Get Return m_TypeList End Get End Property Public Property SelType As StartMachTypes Get Dim Index As Integer = m_TypeList.FirstOrDefault(Function(x) x) Select Case Index Case -1 Return StartMachTypes.NULL Case 0 Return StartMachTypes.POINT Case 1 Return StartMachTypes.COMPO End Select End Get Set(value As StartMachTypes) m_TypeList(value - 1) = True End Set End Property Public Property sXPos As String Get Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Return LenToString(ptReference.x, 1) End Get Set(value As String) Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Dim dNewXPos As Double = ptReference.x StringToLen(value, dNewXPos) If dNewXPos >= 0 AndAlso dNewXPos <= CurrentMachine.b3Tab.DimX Then EgtMove(m_nStartMachId, New Point3d(dNewXPos, ptReference.y, ptReference.z) - ptReference) EgtDraw() Else NotifyPropertyChanged(NameOf(sXPos)) End If End Set End Property Public Property sYPos As String Get Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Return LenToString(ptReference.y, 1) End Get Set(value As String) Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Dim dNewYPos As Double = ptReference.y StringToLen(value, dNewYPos) If dNewYPos >= 0 AndAlso dNewYPos <= CurrentMachine.b3Tab.DimY Then EgtMove(m_nStartMachId, New Point3d(ptReference.x, dNewYPos, ptReference.z) - ptReference) EgtDraw() Else NotifyPropertyChanged(NameOf(sYPos)) End If End Set End Property Public Property sZPos As String Get Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Return LenToString(ptReference.z, 1) End Get Set(value As String) Dim ptReference As New Point3d EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference) Dim dNewZPos As Double = ptReference.z StringToLen(value, dNewZPos) If dNewZPos >= 0 Then EgtMove(m_nStartMachId, New Point3d(ptReference.x, ptReference.y, dNewZPos) - ptReference) EgtDraw() Else NotifyPropertyChanged(NameOf(sZPos)) End If End Set End Property Private m_RotAxes() As Boolean = {False, False, True} Public Property RotAxes As Boolean() Get Return m_RotAxes End Get Set(value As Boolean()) m_RotAxes = value End Set End Property Public ReadOnly Property vtSelRotAxes As Vector3d Get If m_RotAxes(0) Then Return Vector3d.X_AX ElseIf m_RotAxes(1) Then Return Vector3d.Y_AX ElseIf m_RotAxes(2) Then Return Vector3d.Z_AX End If End Get End Property Private m_sRotAngle As String Public Property sRotAngle As String Get Return m_sRotAngle End Get Set(value As String) Dim dNewAngle As Double = 0 If Not StringToLen(value, dNewAngle) Then m_sRotAngle = 0 NotifyPropertyChanged(NameOf(sRotAngle)) Return End If Dim b3PrintSolid As New BBox3d EgtGetBBoxGlob(Map.refTopPanelVM.SelPart.nPartId, GDB_BB.STANDARD, b3PrintSolid) If EgtRotate(Map.refTopPanelVM.SelPart.nPartId, b3PrintSolid.Center, vtSelRotAxes, dNewAngle) Then EgtDraw() RefreshPos() m_sRotAngle = 0 NotifyPropertyChanged(NameOf(sRotAngle)) Else m_sRotAngle = value End If End Set End Property Private m_bType_IsChecked As Boolean Public Property bType_IsChecked As Boolean Get Return m_bType_IsChecked End Get Set(value As Boolean) m_bType_IsChecked = value If value Then m_bEdit_IsChecked = False m_bGrid_IsChecked = False m_bMove_IsChecked = False NotifyPropertyChanged(NameOf(bEdit_IsChecked)) NotifyPropertyChanged(NameOf(bGrid_IsChecked)) NotifyPropertyChanged(NameOf(bMove_IsChecked)) End If End Set End Property Private m_bEdit_IsChecked As Boolean Public Property bEdit_IsChecked As Boolean Get Return m_bEdit_IsChecked End Get Set(value As Boolean) m_bEdit_IsChecked = value If value Then m_bType_IsChecked = False m_bGrid_IsChecked = False m_bMove_IsChecked = False NotifyPropertyChanged(NameOf(bType_IsChecked)) NotifyPropertyChanged(NameOf(bGrid_IsChecked)) NotifyPropertyChanged(NameOf(bMove_IsChecked)) End If End Set End Property Private m_bGrid_IsChecked As Boolean Public Property bGrid_IsChecked As Boolean Get Return m_bGrid_IsChecked End Get Set(value As Boolean) m_bGrid_IsChecked = value If value Then m_bType_IsChecked = False m_bEdit_IsChecked = False m_bMove_IsChecked = False NotifyPropertyChanged(NameOf(bType_IsChecked)) NotifyPropertyChanged(NameOf(bEdit_IsChecked)) NotifyPropertyChanged(NameOf(bMove_IsChecked)) End If End Set End Property Private m_bMove_IsChecked As Boolean Public Property bMove_IsChecked As Boolean Get Return m_bMove_IsChecked End Get Set(value As Boolean) m_bMove_IsChecked = value If value Then m_bType_IsChecked = False m_bEdit_IsChecked = False m_bGrid_IsChecked = False NotifyPropertyChanged(NameOf(bType_IsChecked)) NotifyPropertyChanged(NameOf(bEdit_IsChecked)) NotifyPropertyChanged(NameOf(bGrid_IsChecked)) End If End Set End Property ' Definizione comandi Private m_cmdCPlaneTop As ICommand Private m_cmdCPlaneFront As ICommand Private m_cmdCPlaneRight As ICommand Private m_cmdCPlaneBack As ICommand Private m_cmdCPlaneLeft As ICommand Private m_cmdCPlaneBottom As ICommand Private m_cmdCPlaneView As ICommand Private m_cmdCPlaneElevation As ICommand Private m_cmdCPlaneOrigin As ICommand Private m_cmdCPlaneRotate As ICommand Private m_cmdCPlane3P As ICommand Private m_cmdCPlanePerpObj As ICommand Private m_cmdCPlaneObj As ICommand #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTORS" Sub New() ' Creo riferimento a questa classe in EgtCAM5Map Map.SetRefStartMachPanelVM(Me) End Sub #End Region ' CONSTRUCTORS #Region "METHODS" Friend Sub Init() ' recupero dati pezzo selezionato layer ed entita' m_nPartId = Map.refTopPanelVM.SelPart.nPartId m_nStartMachLayerId = Map.refTopPanelVM.SelPart.nMachStartLayerId m_nStartMachId = Map.refTopPanelVM.SelPart.nMachStartId ' verifico se punto o curva Dim StartMachType As GDB_TY = EgtGetType(m_nStartMachId) Select Case StartMachType Case GDB_TY.GEO_POINT SelType = StartMachTypes.POINT Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_COMPO SelType = StartMachTypes.COMPO End Select NotifyPropertyChanged(NameOf(TypeList)) ' aggiorno campi di testo posizione NotifyPropertyChanged(NameOf(sXPos)) NotifyPropertyChanged(NameOf(sYPos)) NotifyPropertyChanged(NameOf(sZPos)) End Sub Friend Sub RefreshPos() NotifyPropertyChanged(NameOf(sXPos)) NotifyPropertyChanged(NameOf(sYPos)) NotifyPropertyChanged(NameOf(sZPos)) End Sub #End Region ' METHODS #Region "COMMANDS" #Region "CPlaneTop" ''' ''' Returns a command that do CPlaneTop. ''' Public ReadOnly Property CPlaneTop_Command As ICommand Get If m_cmdCPlaneTop Is Nothing Then m_cmdCPlaneTop = New Command(AddressOf CPlaneTop) End If Return m_cmdCPlaneTop End Get End Property ''' ''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand. ''' Public Sub CPlaneTop(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneTop #Region "CPlaneFront" ''' ''' Returns a command that do CPlaneFront. ''' Public ReadOnly Property CPlaneFront_Command As ICommand Get If m_cmdCPlaneFront Is Nothing Then m_cmdCPlaneFront = New Command(AddressOf CPlaneFront) End If Return m_cmdCPlaneFront End Get End Property ''' ''' Execute the CPlaneFront. This method is invoked by the CPlaneFrontCommand. ''' Public Sub CPlaneFront(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneFront #Region "CPlaneRight" ''' ''' Returns a command that do CPlaneRight. ''' Public ReadOnly Property CPlaneRight_Command As ICommand Get If m_cmdCPlaneRight Is Nothing Then m_cmdCPlaneRight = New Command(AddressOf CPlaneRight) End If Return m_cmdCPlaneRight End Get End Property ''' ''' Execute the CPlaneRight. This method is invoked by the CPlaneRightCommand. ''' Public Sub CPlaneRight(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneRight #Region "CPlaneBack" ''' ''' Returns a command that do CPlaneBack. ''' Public ReadOnly Property CPlaneBack_Command As ICommand Get If m_cmdCPlaneBack Is Nothing Then m_cmdCPlaneBack = New Command(AddressOf CPlaneBack) End If Return m_cmdCPlaneBack End Get End Property ''' ''' Execute the CPlaneBack. This method is invoked by the CPlaneBackCommand. ''' Public Sub CPlaneBack(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BACK) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneBack #Region "CPlaneLeft" ''' ''' Returns a command that do CPlaneLeft. ''' Public ReadOnly Property CPlaneLeft_Command As ICommand Get If m_cmdCPlaneLeft Is Nothing Then m_cmdCPlaneLeft = New Command(AddressOf CPlaneLeft) End If Return m_cmdCPlaneLeft End Get End Property ''' ''' Execute the CPlaneLeft. This method is invoked by the CPlaneLeftCommand. ''' Public Sub CPlaneLeft(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.LEFT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneLeft #Region "CPlaneBottom" ''' ''' Returns a command that do CPlaneBottom. ''' Public ReadOnly Property CPlaneBottom_Command As ICommand Get If m_cmdCPlaneBottom Is Nothing Then m_cmdCPlaneBottom = New Command(AddressOf CPlaneBottom) End If Return m_cmdCPlaneBottom End Get End Property ''' ''' Execute the CPlaneBottom. This method is invoked by the CPlaneBottomCommand. ''' Public Sub CPlaneBottom(ByVal param As Object) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BOTTOM) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub #End Region ' CPlaneBottom #Region "CPlaneElevation" ''' ''' Returns a command that do CPlaneElevation. ''' Public ReadOnly Property CPlaneElevation_Command As ICommand Get If m_cmdCPlaneElevation Is Nothing Then m_cmdCPlaneElevation = New Command(AddressOf CPlaneElevation) End If Return m_cmdCPlaneElevation End Get End Property ''' ''' Execute the CPlaneElevation. This method is invoked by the CPlaneElevationCommand. ''' Public Sub CPlaneElevation(ByVal param As Object) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub #End Region ' CPlaneElevation #Region "CPlaneOrigin" ''' ''' Returns a command that do CPlaneOrigin. ''' Public ReadOnly Property CPlaneOrigin_Command As ICommand Get If m_cmdCPlaneOrigin Is Nothing Then m_cmdCPlaneOrigin = New Command(AddressOf CPlaneOrigin) End If Return m_cmdCPlaneOrigin End Get End Property ''' ''' Execute the CPlaneOrigin. This method is invoked by the CPlaneOriginCommand. ''' Public Sub CPlaneOrigin(ByVal param As Object) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub #End Region ' CPlaneOrigin #End Region ' COMMANDS End Class