Imports EgtUILib Namespace EgtCAM5 Public Class DrawPanelViewModel Inherits ViewModelBase Private WithEvents IdleTimer As New System.Windows.Threading.DispatcherTimer(TimeSpan.FromMilliseconds(200), Windows.Threading.DispatcherPriority.ApplicationIdle, AddressOf OnIdle, Application.Current.Dispatcher) #Region "FIELDS & PROPERTIES" #Region "Messages" Public ReadOnly Property Draw2DMsg As String Get Return EgtMsg(MSG_DRAWPANEL + 44) End Get End Property Public ReadOnly Property Draw3DMsg As String Get Return EgtMsg(MSG_DRAWPANEL + 45) End Get End Property Public ReadOnly Property ModifyMsg As String Get Return EgtMsg(MSG_DRAWPANEL + 46) End Get End Property Public ReadOnly Property TransformMsg As String Get Return EgtMsg(MSG_DRAWPANEL + 47) End Get End Property #End Region ' Messages #Region "ToolTip" 'Proprietà ToolTip Public ReadOnly Property PointToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 1) End Get End Property Public ReadOnly Property Line2PToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 2) End Get End Property Public ReadOnly Property LinePDLToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 3) End Get End Property Public ReadOnly Property CirclePDToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 4) End Get End Property Public ReadOnly Property CircleCDToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 5) End Get End Property Public ReadOnly Property ArcCSEToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 6) End Get End Property Public ReadOnly Property Arc3PToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 7) End Get End Property Public ReadOnly Property ArcPDPToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 8) End Get End Property Public ReadOnly Property FilletToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 9) End Get End Property Public ReadOnly Property ChamferToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 10) End Get End Property Public ReadOnly Property Rectangle2PToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 11) End Get End Property Public ReadOnly Property PolygonToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 12) End Get End Property Public ReadOnly Property PolygonSideToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 13) End Get End Property Public ReadOnly Property TextToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 14) End Get End Property Public ReadOnly Property PlaneToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 15) End Get End Property Public ReadOnly Property ExtrudeToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 16) End Get End Property Public ReadOnly Property RevolveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 17) End Get End Property Public ReadOnly Property ScrewToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 18) End Get End Property Public ReadOnly Property RuledToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 19) End Get End Property Public ReadOnly Property MergeSurfToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 20) End Get End Property Public ReadOnly Property ExplodeSurfToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 21) End Get End Property Public ReadOnly Property InvertSurfToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 22) End Get End Property Public ReadOnly Property DeleteToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 23) End Get End Property Public ReadOnly Property ChangeLayerToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 24) End Get End Property Public ReadOnly Property ChangeAlphaToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 25) End Get End Property Public ReadOnly Property ResetColorToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 26) End Get End Property Public ReadOnly Property ChangeColorToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 27) End Get End Property Public ReadOnly Property InvertCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 28) End Get End Property Public ReadOnly Property ChangeStartToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 29) End Get End Property Public ReadOnly Property ExtendCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 30) End Get End Property Public ReadOnly Property BreakCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 31) End Get End Property Public ReadOnly Property SplitCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 32) End Get End Property Public ReadOnly Property JoinCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 33) End Get End Property Public ReadOnly Property ExplodeCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 34) End Get End Property Public ReadOnly Property ThickCurveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 35) End Get End Property Public ReadOnly Property MoveToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 36) End Get End Property Public ReadOnly Property RotateToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 37) End Get End Property Public ReadOnly Property Rotate3DToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 38) End Get End Property Public ReadOnly Property MirrorToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 39) End Get End Property Public ReadOnly Property Mirror3DToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 40) End Get End Property Public ReadOnly Property ScaleToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 41) End Get End Property Public ReadOnly Property Scale3DToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 42) End Get End Property Public ReadOnly Property OffsetToolTip As String Get Return EgtMsg(MSG_DRAWPANEL + 43) End Get End Property #End Region ' ToolTip ' Proprietà che permettono di aprire e chiudere gli expander Private m_Draw2DIsExpanded As Boolean Public Property Draw2DIsExpanded As Boolean Get Return m_Draw2DIsExpanded End Get Set(value As Boolean) m_Draw2DIsExpanded = value End Set End Property Private m_Draw3DIsExpanded As Boolean Public Property Draw3DIsExpanded As Boolean Get Return m_Draw3DIsExpanded End Get Set(value As Boolean) m_Draw3DIsExpanded = value End Set End Property Private m_ModifyIsExpanded As Boolean Public Property ModifyIsExpanded As Boolean Get Return m_ModifyIsExpanded End Get Set(value As Boolean) m_ModifyIsExpanded = value End Set End Property Private m_TransformIsExpanded As Boolean Public Property TransformIsExpanded As Boolean Get Return m_TransformIsExpanded End Get Set(value As Boolean) m_TransformIsExpanded = value End Set End Property #Region "Button state" Private m_bLayerOk As Boolean Public Property bLayerOk As Boolean Get Return m_bLayerOk End Get Set(value As Boolean) m_bLayerOk = value OnPropertyChanged("bLayerOk") End Set End Property Private m_bSelOk As Boolean Public Property bSelOk As Boolean Get Return m_bSelOk End Get Set(value As Boolean) m_bSelOk = value OnPropertyChanged("bSelOk") End Set End Property Private m_bLayerOkAndSelOk As Boolean Public Property bLayerOkAndSelOk As Boolean Get Return m_bLayerOkAndSelOk End Get Set(value As Boolean) m_bLayerOkAndSelOk = value OnPropertyChanged("bLayerOkAndSelOk") End Set End Property #End Region ' Button state ' Definizione comandi Private m_cmdPoint As ICommand Private m_cmdLine2P As ICommand Private m_cmdLinePDL As ICommand Private m_cmdCircleCP As ICommand Private m_cmdCircleCD As ICommand Private m_cmdArcCSE As ICommand Private m_cmdArc3P As ICommand Private m_cmdArcPDP As ICommand Private m_cmdFillet As ICommand Private m_cmdChamfer As ICommand Private m_cmdRectangle2P As ICommand Private m_cmdPolygon As ICommand Private m_cmdPolygonSide As ICommand Private m_cmdText As ICommand Private m_cmdPlane As ICommand Private m_cmdExtrude As ICommand Private m_cmdRevolve As ICommand Private m_cmdScrew As ICommand Private m_cmdRuled As ICommand Private m_cmdMergeSurf As ICommand Private m_cmdExplodeSurf As ICommand Private m_cmdInvertSurf As ICommand Private m_cmdDelete As ICommand Private m_cmdChangeLayer As ICommand Private m_cmdChangeAlpha As ICommand Private m_cmdResetColor As ICommand Private m_cmdChangeColor As ICommand Private m_cmdInvertCurve As ICommand Private m_cmdChangeStartCurve As ICommand Private m_cmdExtendCurve As ICommand Private m_cmdBreakCurve As ICommand Private m_cmdSplitCurve As ICommand Private m_cmdJoinCurve As ICommand Private m_cmdExplodeCurve As ICommand Private m_cmdSetCurveTh As ICommand Private m_cmdMove As ICommand Private m_cmdRotate As ICommand Private m_cmdRotate3D As ICommand Private m_cmdMirror As ICommand Private m_cmdMirror3D As ICommand Private m_cmdScale As ICommand Private m_cmdScale3D As ICommand Private m_cmdOffset As ICommand #End Region ' Fileds & Properties #Region "CONSTRUCTOR" Sub New() ' Leggo stato expander da file ini Draw2DIsExpanded = If(GetPrivateProfileInt(S_GENERAL, K_DRAW2D, 0) = 0, False, True) Draw3DIsExpanded = If(GetPrivateProfileInt(S_GENERAL, K_DRAW3D, 0) = 0, False, True) ModifyIsExpanded = If(GetPrivateProfileInt(S_GENERAL, K_MODIFY, 0) = 0, False, True) TransformIsExpanded = If(GetPrivateProfileInt(S_GENERAL, K_TRANSFORM, 0) = 0, False, True) Application.Msn.Register(Application.CLOSEAPPLICATION, Sub() If Not IniFile.m_bFailedRun Then WritePrivateProfileString(S_GENERAL, K_DRAW2D, If(m_Draw2DIsExpanded, "1", "0")) WritePrivateProfileString(S_GENERAL, K_DRAW3D, If(m_Draw3DIsExpanded, "1", "0")) WritePrivateProfileString(S_GENERAL, K_MODIFY, If(m_ModifyIsExpanded, "1", "0")) WritePrivateProfileString(S_GENERAL, K_TRANSFORM, If(m_TransformIsExpanded, "1", "0")) End If End Sub) End Sub #End Region ' Constructor #Region "COMMANDS" #Region "PointCommand" ''' ''' Returns a command that do Point. ''' Public ReadOnly Property PointCommand As ICommand Get If m_cmdPoint Is Nothing Then m_cmdPoint = New RelayCommand(AddressOf Point) End If Return m_cmdPoint End Get End Property ''' ''' Execute the Point. This method is invoked by the PointCommand. ''' Public Sub Point(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.FRAME) ElseIf (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.VECTOR) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.POINT) End If End Sub #End Region ' PointCommand #Region "Line2PCommand" ''' ''' Returns a command that do Line2P. ''' Public ReadOnly Property Line2PCommand As ICommand Get If m_cmdLine2P Is Nothing Then m_cmdLine2P = New RelayCommand(AddressOf Line2P) End If Return m_cmdLine2P End Get End Property ''' ''' Execute the Line2P. This method is invoked by the Line2PCommand. ''' Public Sub Line2P(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then EgtCAM5Map.refProjectVM.GetController.SetContinue() 'EmitStripStatusOutput(EgtMsg(399)) ' Continue : 'L' with line, 'A' with arc End If EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.LINE2P) End Sub #End Region ' Line2PCommand #Region "LinePDLCommand" ''' ''' Returns a command that do LinePDL. ''' Public ReadOnly Property LinePDLCommand As ICommand Get If m_cmdLinePDL Is Nothing Then m_cmdLinePDL = New RelayCommand(AddressOf LinePDL) End If Return m_cmdLinePDL End Get End Property ''' ''' Execute the LinePDL. This method is invoked by the LinePDLCommand. ''' Public Sub LinePDL(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.LINEPDL) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.LINEPVL) End If End Sub #End Region ' LinePDLCommand #Region "CircleCPCommand" ''' ''' Returns a command that do CircleCP. ''' Public ReadOnly Property CircleCPCommand As ICommand Get If m_cmdCircleCP Is Nothing Then m_cmdCircleCP = New RelayCommand(AddressOf CircleCP) End If Return m_cmdCircleCP End Get End Property ''' ''' Execute the CircleCP. This method is invoked by the CircleCPCommand. ''' Public Sub CircleCP(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CIRCLECP) End Sub #End Region ' CircleCPCommand #Region "CircleCDCommand" ''' ''' Returns a command that do CircleCD. ''' Public ReadOnly Property CircleCDCommand As ICommand Get If m_cmdCircleCD Is Nothing Then m_cmdCircleCD = New RelayCommand(AddressOf CircleCD) End If Return m_cmdCircleCD End Get End Property ''' ''' Execute the CircleCD. This method is invoked by the CircleCDCommand. ''' Public Sub CircleCD(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CIRCLECD) End Sub #End Region ' CircleCDCommand #Region "ArcCSECommand" ''' ''' Returns a command that do ArcCSE. ''' Public ReadOnly Property ArcCSECommand As ICommand Get If m_cmdArcCSE Is Nothing Then m_cmdArcCSE = New RelayCommand(AddressOf ArcCSE) End If Return m_cmdArcCSE End Get End Property ''' ''' Execute the ArcCSE. This method is invoked by the ArcCSECommand. ''' Public Sub ArcCSE(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ARCCSE) End Sub #End Region ' ArcCSECommand #Region "Arc3PCommand" ''' ''' Returns a command that do Arc3P. ''' Public ReadOnly Property Arc3PCommand As ICommand Get If m_cmdArc3P Is Nothing Then m_cmdArc3P = New RelayCommand(AddressOf Arc3P) End If Return m_cmdArc3P End Get End Property ''' ''' Execute the Arc3P. This method is invoked by the Arc3PCommand. ''' Public Sub Arc3P(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ARC3P) End Sub #End Region ' Arc3PCommand #Region "ArcPDPCommand" ''' ''' Returns a command that do ArcPDP. ''' Public ReadOnly Property ArcPDPCommand As ICommand Get If m_cmdArcPDP Is Nothing Then m_cmdArcPDP = New RelayCommand(AddressOf ArcPDP) End If Return m_cmdArcPDP End Get End Property ''' ''' Execute the ArcPDP. This method is invoked by the ArcPDPCommand. ''' Public Sub ArcPDP(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then EgtCAM5Map.refProjectVM.GetController.SetContinue() 'EmitStripStatusOutput(EgtMsg(399)) ' Continue : 'L' with line, 'A' with arc End If EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ARCPDP) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ARCPVP) End If End Sub #End Region ' ArcPDPCommand #Region "FilletCommand" ''' ''' Returns a command that do Fillet. ''' Public ReadOnly Property FilletCommand As ICommand Get If m_cmdFillet Is Nothing Then m_cmdFillet = New RelayCommand(AddressOf Fillet) End If Return m_cmdFillet End Get End Property ''' ''' Execute the Fillet. This method is invoked by the FilletCommand. ''' Public Sub Fillet(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.FILLET) End Sub #End Region ' FilletCommand #Region "ChamferCommand" ''' ''' Returns a command that do Chamfer. ''' Public ReadOnly Property ChamferCommand As ICommand Get If m_cmdChamfer Is Nothing Then m_cmdChamfer = New RelayCommand(AddressOf Chamfer) End If Return m_cmdChamfer End Get End Property ''' ''' Execute the Chamfer. This method is invoked by the ChamferCommand. ''' Public Sub Chamfer(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHAMFER) End Sub #End Region ' ChamferCommand #Region "Rectangle2PCommand" ''' ''' Returns a command that do Rectangle2P. ''' Public ReadOnly Property Rectangle2PCommand As ICommand Get If m_cmdRectangle2P Is Nothing Then m_cmdRectangle2P = New RelayCommand(AddressOf Rectangle2P) End If Return m_cmdRectangle2P End Get End Property ''' ''' Execute the Rectangle2P. This method is invoked by the Rectangle2PCommand. ''' Public Sub Rectangle2P(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.RECTANGLE2P) End Sub #End Region ' Rectangle2PCommand #Region "PolygonCommand" ''' ''' Returns a command that do Polygon. ''' Public ReadOnly Property PolygonCommand As ICommand Get If m_cmdPolygon Is Nothing Then m_cmdPolygon = New RelayCommand(AddressOf Polygon) End If Return m_cmdPolygon End Get End Property ''' ''' Execute the Polygon. This method is invoked by the PolygonCommand. ''' Public Sub Polygon(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.POLYGON) End Sub #End Region ' PolygonCommand #Region "PolygonSideCommand" ''' ''' Returns a command that do PolygonSide. ''' Public ReadOnly Property PolygonSideCommand As ICommand Get If m_cmdPolygonSide Is Nothing Then m_cmdPolygonSide = New RelayCommand(AddressOf PolygonSide) End If Return m_cmdPolygonSide End Get End Property ''' ''' Execute the PolygonSide. This method is invoked by the PolygonSideCommand. ''' Public Sub PolygonSide(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.POLYGONSIDE) End Sub #End Region ' PolygonSideCommand #Region "TextCommand" ''' ''' Returns a command that do Text. ''' Public ReadOnly Property TextCommand As ICommand Get If m_cmdText Is Nothing Then m_cmdText = New RelayCommand(AddressOf Text) End If Return m_cmdText End Get End Property ''' ''' Execute the Text. This method is invoked by the TextCommand. ''' Public Sub Text(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.TEXT) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.TEXTPLUS) End If End Sub #End Region ' TextCommand #Region "PlaneCommand" ''' ''' Returns a command that do Plane. ''' Public ReadOnly Property PlaneCommand As ICommand Get If m_cmdPlane Is Nothing Then m_cmdPlane = New RelayCommand(AddressOf Plane) End If Return m_cmdPlane End Get End Property ''' ''' Execute the Plane. This method is invoked by the PlaneCommand. ''' Public Sub Plane(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.REGION) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.PLANE) End If End Sub #End Region ' PlaneCommand #Region "ExtrudeCommand" ''' ''' Returns a command that do Extrude. ''' Public ReadOnly Property ExtrudeCommand As ICommand Get If m_cmdExtrude Is Nothing Then m_cmdExtrude = New RelayCommand(AddressOf Extrude) End If Return m_cmdExtrude End Get End Property ''' ''' Execute the Extrude. This method is invoked by the ExtrudeCommand. ''' Public Sub Extrude(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.EXTRUDE) End Sub #End Region ' ExtrudeCommand #Region "RevolveCommand" ''' ''' Returns a command that do Revolve. ''' Public ReadOnly Property RevolveCommand As ICommand Get If m_cmdRevolve Is Nothing Then m_cmdRevolve = New RelayCommand(AddressOf Revolve) End If Return m_cmdRevolve End Get End Property ''' ''' Execute the Revolve. This method is invoked by the RevolveCommand. ''' Public Sub Revolve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.REVOLVE) End Sub #End Region ' RevolveCommand #Region "ScrewCommand" ''' ''' Returns a command that do Screw. ''' Public ReadOnly Property ScrewCommand As ICommand Get If m_cmdScrew Is Nothing Then m_cmdScrew = New RelayCommand(AddressOf Screw) End If Return m_cmdScrew End Get End Property ''' ''' Execute the Screw. This method is invoked by the ScrewCommand. ''' Public Sub Screw(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.SCREW) End Sub #End Region ' ScrewCommand #Region "RuledCommand" ''' ''' Returns a command that do Ruled. ''' Public ReadOnly Property RuledCommand As ICommand Get If m_cmdRuled Is Nothing Then m_cmdRuled = New RelayCommand(AddressOf Ruled) End If Return m_cmdRuled End Get End Property ''' ''' Execute the Ruled. This method is invoked by the RuledCommand. ''' Public Sub Ruled(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.RULED) End Sub #End Region ' RuledCommand #Region "MergeSurfCommand" ''' ''' Returns a command that do MergeSurf. ''' Public ReadOnly Property MergeSurfCommand As ICommand Get If m_cmdMergeSurf Is Nothing Then m_cmdMergeSurf = New RelayCommand(AddressOf MergeSurf) End If Return m_cmdMergeSurf End Get End Property ''' ''' Execute the MergeSurf. This method is invoked by the MergeSurfCommand. ''' Public Sub MergeSurf(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.MERGESURF) End Sub #End Region ' MergeSurfCommand #Region "ExplodeSurfCommand" ''' ''' Returns a command that do ExplodeSurf. ''' Public ReadOnly Property ExplodeSurfCommand As ICommand Get If m_cmdExplodeSurf Is Nothing Then m_cmdExplodeSurf = New RelayCommand(AddressOf ExplodeSurf) End If Return m_cmdExplodeSurf End Get End Property ''' ''' Execute the ExplodeSurf. This method is invoked by the ExplodeSurfCommand. ''' Public Sub ExplodeSurf(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.EXPLODESURF) End Sub #End Region ' ExplodeSurfCommand #Region "InvertSurfCommand" ''' ''' Returns a command that do InvertSurf. ''' Public ReadOnly Property InvertSurfCommand As ICommand Get If m_cmdInvertSurf Is Nothing Then m_cmdInvertSurf = New RelayCommand(AddressOf InvertSurf) End If Return m_cmdInvertSurf End Get End Property ''' ''' Execute the InvertSurf. This method is invoked by the InvertSurfCommand. ''' Public Sub InvertSurf(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.INVERTSURF) End Sub #End Region ' InvertSurfCommand #Region "DeleteCommand" ''' ''' Returns a command that do Delete. ''' Public ReadOnly Property DeleteCommand As ICommand Get If m_cmdDelete Is Nothing Then m_cmdDelete = New RelayCommand(AddressOf Delete) End If Return m_cmdDelete End Get End Property ''' ''' Execute the Delete. This method is invoked by the DeleteCommand. ''' Public Sub Delete(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.SetLastInteger(GDB_ID.SEL) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.DELETE) End Sub #End Region ' DeleteCommand #Region "ChangeLayerCommand" ''' ''' Returns a command that do ChangeLayer. ''' Public ReadOnly Property ChangeLayerCommand As ICommand Get If m_cmdChangeLayer Is Nothing Then m_cmdChangeLayer = New RelayCommand(AddressOf ChangeLayer) End If Return m_cmdChangeLayer End Get End Property ''' ''' Execute the ChangeLayer. This method is invoked by the ChangeLayerCommand. ''' Public Sub ChangeLayer(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHANGELAYERGLOB) Else EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHANGELAYER) End If End Sub #End Region ' ChangeLayerCommand #Region "ChangeAlphaCommand" ''' ''' Returns a command that do ChangeAlpha. ''' Public ReadOnly Property ChangeAlphaCommand As ICommand Get If m_cmdChangeAlpha Is Nothing Then m_cmdChangeAlpha = New RelayCommand(AddressOf ChangeAlpha) End If Return m_cmdChangeAlpha End Get End Property ''' ''' Execute the ChangeAlpha. This method is invoked by the ChangeAlphaCommand. ''' Public Sub ChangeAlpha(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHANGEALPHA) End Sub #End Region ' ChangeAlphaCommand #Region "ResetColorCommand" ''' ''' Returns a command that do ResetColor. ''' Public ReadOnly Property ResetColorCommand As ICommand Get If m_cmdResetColor Is Nothing Then m_cmdResetColor = New RelayCommand(AddressOf ResetColor) End If Return m_cmdResetColor End Get End Property ''' ''' Execute the ResetColor. This method is invoked by the ResetColorCommand. ''' Public Sub ResetColor(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.RESETCOLOR) End Sub #End Region ' ResetColorCommand #Region "ChangeColorCommand" ''' ''' Returns a command that do ChangeColor. ''' Public ReadOnly Property ChangeColorCommand As ICommand Get If m_cmdChangeColor Is Nothing Then m_cmdChangeColor = New RelayCommand(AddressOf ChangeColor) End If Return m_cmdChangeColor End Get End Property ''' ''' Execute the ChangeColor. This method is invoked by the ChangeColorCommand. ''' Public Sub ChangeColor(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHANGECOLOR) End Sub #End Region ' ChangeColorCommand #Region "InvertCurveCommand" ''' ''' Returns a command that do InvertCurve. ''' Public ReadOnly Property InvertCurveCommand As ICommand Get If m_cmdInvertCurve Is Nothing Then m_cmdInvertCurve = New RelayCommand(AddressOf InvertCurve) End If Return m_cmdInvertCurve End Get End Property ''' ''' Execute the InvertCurve. This method is invoked by the InvertCurveCommand. ''' Public Sub InvertCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.INVERTCURVE) End Sub #End Region ' InvertCurveCommand #Region "ChangeStartCurveCommand" ''' ''' Returns a command that do ChangeStartCurve. ''' Public ReadOnly Property ChangeStartCurveCommand As ICommand Get If m_cmdChangeStartCurve Is Nothing Then m_cmdChangeStartCurve = New RelayCommand(AddressOf ChangeStartCurve) End If Return m_cmdChangeStartCurve End Get End Property ''' ''' Execute the ChangeStartCurve. This method is invoked by the InvertCurveCommand. ''' Public Sub ChangeStartCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.CHANGESTARTCURVE) End Sub #End Region ' ChangeStartCurveCommand #Region "ExtendCurveCommand" ''' ''' Returns a command that do ExtendCurve. ''' Public ReadOnly Property ExtendCurveCommand As ICommand Get If m_cmdExtendCurve Is Nothing Then m_cmdExtendCurve = New RelayCommand(AddressOf ExtendCurve) End If Return m_cmdExtendCurve End Get End Property ''' ''' Execute the ExtendCurve. This method is invoked by the ExtendCurveCommand. ''' Public Sub ExtendCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.TRIMEXTENDCURVE) End Sub #End Region ' ExtendCurveCommand #Region "BreakCurveCommand" ''' ''' Returns a command that do BreakCurve. ''' Public ReadOnly Property BreakCurveCommand As ICommand Get If m_cmdBreakCurve Is Nothing Then m_cmdBreakCurve = New RelayCommand(AddressOf BreakCurve) End If Return m_cmdBreakCurve End Get End Property ''' ''' Execute the BreakCurve. This method is invoked by the BreakCurveCommand. ''' Public Sub BreakCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.BREAKCURVE) End Sub #End Region ' BreakCurveCommand #Region "SplitCurveCommand" ''' ''' Returns a command that do SplitCurve. ''' Public ReadOnly Property SplitCurveCommand As ICommand Get If m_cmdSplitCurve Is Nothing Then m_cmdSplitCurve = New RelayCommand(AddressOf SplitCurve) End If Return m_cmdSplitCurve End Get End Property ''' ''' Execute the SplitCurve. This method is invoked by the SplitCurveCommand. ''' Public Sub SplitCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.SPLITCURVE) End Sub #End Region ' SplitCurveCommand #Region "JoinCurveCommand" ''' ''' Returns a command that do JoinCurve. ''' Public ReadOnly Property JoinCurveCommand As ICommand Get If m_cmdJoinCurve Is Nothing Then m_cmdJoinCurve = New RelayCommand(AddressOf JoinCurve) End If Return m_cmdJoinCurve End Get End Property ''' ''' Execute the JoinCurve. This method is invoked by the JoinCurveCommand. ''' Public Sub JoinCurve(ByVal param As Object) If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then EgtCAM5Map.refProjectVM.GetController.SetLastBoolean(False) Else EgtCAM5Map.refProjectVM.GetController.SetLastBoolean(True) End If EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.JOINCURVE) End Sub #End Region ' JoinCurveCommand #Region "ExplodeCurveCommand" ''' ''' Returns a command that do ExplodeCurve. ''' Public ReadOnly Property ExplodeCurveCommand As ICommand Get If m_cmdExplodeCurve Is Nothing Then m_cmdExplodeCurve = New RelayCommand(AddressOf ExplodeCurve) End If Return m_cmdExplodeCurve End Get End Property ''' ''' Execute the ExplodeCurve. This method is invoked by the ExplodeCurveCommand. ''' Public Sub ExplodeCurve(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.EXPLODECURVE) End Sub #End Region ' ExplodeCurveCommand #Region "SetCurveThCommand" ''' ''' Returns a command that do SetCurveTh. ''' Public ReadOnly Property SetCurveThCommand As ICommand Get If m_cmdSetCurveTh Is Nothing Then m_cmdSetCurveTh = New RelayCommand(AddressOf SetCurveTh) End If Return m_cmdSetCurveTh End Get End Property ''' ''' Execute the SetCurveTh. This method is invoked by the SetCurveThCommand. ''' Public Sub SetCurveTh(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.SETCURVETHICKNESS) End Sub #End Region ' SetCurveThCommand #Region "MoveCommand" ''' ''' Returns a command that do Move. ''' Public ReadOnly Property MoveCommand As ICommand Get If m_cmdMove Is Nothing Then m_cmdMove = New RelayCommand(AddressOf Move) End If Return m_cmdMove End Get End Property ''' ''' Execute the Move. This method is invoked by the MoveCommand. ''' Public Sub Move(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.MOVE) End Sub #End Region ' MoveCommand #Region "RotateCommand" ''' ''' Returns a command that do Rotate. ''' Public ReadOnly Property RotateCommand As ICommand Get If m_cmdRotate Is Nothing Then m_cmdRotate = New RelayCommand(AddressOf Rotate) End If Return m_cmdRotate End Get End Property ''' ''' Execute the Rotate. This method is invoked by the RotateCommand. ''' Public Sub Rotate(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ROTATE) End Sub #End Region ' RotateCommand #Region "Rotate3DCommand" ''' ''' Returns a command that do Rotate3D. ''' Public ReadOnly Property Rotate3DCommand As ICommand Get If m_cmdRotate3D Is Nothing Then m_cmdRotate3D = New RelayCommand(AddressOf Rotate3D) End If Return m_cmdRotate3D End Get End Property ''' ''' Execute the Rotate3D. This method is invoked by the Rotate3DCommand. ''' Public Sub Rotate3D(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.ROTATE3D) End Sub #End Region ' Rotate3DCommand #Region "MirrorCommand" ''' ''' Returns a command that do Mirror. ''' Public ReadOnly Property MirrorCommand As ICommand Get If m_cmdMirror Is Nothing Then m_cmdMirror = New RelayCommand(AddressOf Mirror) End If Return m_cmdMirror End Get End Property ''' ''' Execute the Mirror. This method is invoked by the MirrorCommand. ''' Public Sub Mirror(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.MIRROR) End Sub #End Region ' MirrorCommand #Region "Mirror3DCommand" ''' ''' Returns a command that do Mirror3D. ''' Public ReadOnly Property Mirror3DCommand As ICommand Get If m_cmdMirror3D Is Nothing Then m_cmdMirror3D = New RelayCommand(AddressOf Mirror3D) End If Return m_cmdMirror3D End Get End Property ''' ''' Execute the Mirror3D. This method is invoked by the Mirror3DCommand. ''' Public Sub Mirror3D(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.MIRROR3D) End Sub #End Region ' Mirror3DCommand #Region "ScaleCommand" ''' ''' Returns a command that do Scale. ''' Public ReadOnly Property ScaleCommand As ICommand Get If m_cmdScale Is Nothing Then m_cmdScale = New RelayCommand(AddressOf Scale) End If Return m_cmdScale End Get End Property ''' ''' Execute the Scale. This method is invoked by the ScaleCommand. ''' Public Sub Scale(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.SCALE) End Sub #End Region ' ScaleCommand #Region "Scale3DCommand" ''' ''' Returns a command that do Scale3D. ''' Public ReadOnly Property Scale3DCommand As ICommand Get If m_cmdScale3D Is Nothing Then m_cmdScale3D = New RelayCommand(AddressOf Scale3D) End If Return m_cmdScale3D End Get End Property ''' ''' Execute the Scale3D. This method is invoked by the Scale3DCommand. ''' Public Sub Scale3D(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.SCALE3D) End Sub #End Region ' Scale3DCommand #Region "OffsetCommand" ''' ''' Returns a command that do Offset. ''' Public ReadOnly Property OffsetCommand As ICommand Get If m_cmdOffset Is Nothing Then m_cmdOffset = New RelayCommand(AddressOf Offset) End If Return m_cmdOffset End Get End Property ''' ''' Execute the Offset. This method is invoked by the OffsetCommand. ''' Public Sub Offset(ByVal param As Object) EgtCAM5Map.refProjectVM.GetController.ExecuteCommand(Controller.CMD.OFFSET) End Sub #End Region ' OffsetCommand #End Region ' Commands Private Sub OnIdle() If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then bLayerOk = EgtCAM5Map.refProjectVM.GetController.GetCurrLayer <> GDB_ID.NULL If Not IniFile.m_ProjectSceneContext = 0 Then bSelOk = EgtGetFirstSelectedObj() <> GDB_ID.NULL bLayerOkAndSelOk = m_bLayerOk And m_bSelOk End If If Application.m_UpdateLayerTree Then Application.Msn.NotifyColleagues(Application.LOADOBJTREE) Application.m_UpdateLayerTree = False End If End If End Sub End Class End Namespace