Imports System.Windows.Forms.Integration Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Imports EgtWPFLib5.EgtFloating Namespace EgtCAM5 Public Class ProjectViewModel Inherits TabViewModel #Region "FIELDS" Private m_CloseProgram As Boolean = False ' Variabili in cui salvo i filtri di selezione della modalità Draw e che poi ripristino all'uscita dalla modalità Machining Private m_bSelZeroDim As Boolean = True Private m_bSelCurve As Boolean = True Private m_bSelSurf As Boolean = True Private m_bSelVolume As Boolean = True Private m_bSelExtra As Boolean = True Private m_bLoaded As Boolean = False 'PROJECT PAGE'S SCENE FIELDS AND PROPERTIES ' Reference to the ProjectScene Private WithEvents m_ProjectScene As New Scene ' Reference to the ProjectSceneHost Private SceneHost As WindowsFormsHost ' Property used to bind the scene to the WindowsFormsHost in XAML Private m_bfirst As Boolean = True Public ReadOnly Property ProjectSceneHost As WindowsFormsHost Get If m_bfirst Then SceneHost = New WindowsFormsHost() With {.Child = m_ProjectScene} m_bfirst = False End If Return SceneHost End Get End Property ' Scene controller Private WithEvents m_Controller As New Controller ' Definizione comandi Private m_cmdLoaded As ICommand #End Region #Region "EGTUILIB FIELDS" Private m_bCPlaneTypePos As Boolean 'Private m_bStopExec As Boolean = False 'Private m_ProcEventsCallback As New ProcessEventsCallback(AddressOf ProcessEvents) 'Private m_OutTextCallback As New OutTextCallback(AddressOf OutText) ' Variabile per implementazione eventi Private m_InputText As String #End Region #Region "CONSTRUCTOR" Sub New() 'Me.sTabName = EgtMsg(MSG_MAINWINDOW + 1) ' Creo classe di supporto per la visualizzazione dei parametri utensile e di lavorazione per Db e operazioni SharedFieldsClass.bFirst = True ManageClosingApplication() RegisterMainWindowCommands() ' Inizializza i parametri della scena 'InitializeEgtProject() RegisterControllerCommands() ManageTopCommandBar() ' Funzione che contiene la registrazione di tutti le funzioni del DrawPanel RegisterGridViewPanelCommands() RegisterDrawPanelCommands() ' Funzione che contiene la registrazione di tutti i comandi del DrawOptionPanel RegisterDrawOptionPanelCommands() ' Funzione che contiene la registrazione di tutti i comandi della StatusBar RegisterStatusBarCommands() ' Cambio impostazioni griglia a seconda che sia in modalità Draw o Machining Application.Msn.Register(Application.MACHININGMODE_ISCHECKED, Sub() m_ProjectScene.GetObjFilterForSel(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra) Application.Msn.NotifyColleagues(Application.UPDATESTATUSGRID, New UpdateStatusGridParam(IniFile.m_bMachiningShowGrid, IniFile.m_bShowGridFrame)) End Sub) Application.Msn.Register(Application.DRAWMODE_ISCHECKED, Sub() m_ProjectScene.SetObjFilterForSel(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra) Application.Msn.NotifyColleagues(Application.UPDATESTATUSGRID, New UpdateStatusGridParam(IniFile.m_bDrawShowGrid, IniFile.m_bShowGridFrame)) End Sub) Application.Msn.Register(Application.SETSCENESELMODE, Sub(SceneSelMode As SceneSelModeOpt) Me.SceneSelMode = SceneSelMode End Sub) End Sub #End Region #Region "COMMANDS" #Region "LoadedCommand" ''' ''' Returns a command that do Point. ''' Public ReadOnly Property LoadedCommand As ICommand Get If m_cmdLoaded Is Nothing Then m_cmdLoaded = New RelayCommand(AddressOf Loaded, AddressOf CanLoaded) End If Return m_cmdLoaded End Get End Property ''' ''' Execute the Point. This method is invoked by the PointCommand. ''' Public Sub Loaded(ByVal param As Object) If m_bLoaded Then Return m_bLoaded = True ' Creazione scena PreInitializeScene() If Not m_ProjectScene.Init() Then EgtOutLog("Error in Project scene creation") SceneHost.Child = Nothing ' Box di avviso chiave mancante MsgBox(EgtMsg(MSG_MISSINGKEYWD + 2) & vbCrLf & EgtMsg(MSG_MISSINGKEYWD + 3), MsgBoxStyle.OkOnly, EgtMsg(MSG_MISSINGKEYWD + 1)) ' Chiudo il programma Application.Msn.NotifyColleagues(Application.CLOSEAPPLICATIONCOMMAND) ' Verifico abilitazione prodotto ElseIf (IniFile.m_nKeyOptions And KEY_OPT.BASE) = 0 Then m_CloseProgram = True MsgBox(EgtMsg(MSG_MISSINGKEYWD + 5), MsgBoxStyle.OkOnly, EgtMsg(MSG_MISSINGKEYWD + 1)) ' Chiudo il programma Application.Msn.NotifyColleagues(Application.CLOSEAPPLICATIONCOMMAND) Else IniFile.m_ProjectSceneContext = m_ProjectScene.GetCtx PostInitializeScene() ' inizializzo gestore lavorazioni EgtInitMachMgr(IniFile.m_sMachinesRoot) End If ' Seleziono la macchina impostata nel file ini Application.Msn.NotifyColleagues(Application.LOADCURRENTMACHINE) EgtSetCurrentContext(IniFile.m_ProjectSceneContext) End Sub ''' ''' Returns always true. ''' Private Function CanLoaded(ByVal param As Object) As Boolean Return True End Function #End Region ' LoadedCommand #End Region #Region "METHODS" Private Sub PreInitializeScene() ' imposto colore di default Dim DefColor As New Color3d(0, 0, 0) GetPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor) m_ProjectScene.SetDefaultMaterial(DefColor) ' imposto colori sfondo Dim BackTopColor As New Color3d(192, 192, 192) GetPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor) Dim BackBotColor As New Color3d(BackTopColor) GetPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor) m_ProjectScene.SetViewBackground(BackTopColor, BackBotColor) ' imposto colore di evidenziazione Dim MarkColor As New Color3d(255, 255, 0) GetPrivateProfileColor(S_SCENE, K_MARK, MarkColor) m_ProjectScene.SetMarkMaterial(MarkColor) ' imposto colore per superfici selezionate Dim SelSurfColor As New Color3d(255, 255, 192) GetPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor) m_ProjectScene.SetSelSurfMaterial(SelSurfColor) ' imposto tipo e colore del rettangolo di zoom Dim bOutline As Boolean = True Dim ZwColor As New Color3d(0, 0, 0) GetPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor) m_ProjectScene.SetZoomWinAttribs(bOutline, ZwColor) ' imposto colore della linea di distanza Dim DstLnColor As New Color3d(255, 0, 0) GetPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor) m_ProjectScene.SetDistLineMaterial(DstLnColor) ' imposto parametri OpenGL Dim nDriver As Integer = GetPrivateProfileInt(S_OPENGL, K_DRIVER, 3) Dim b2Buff As Boolean = (GetPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1) <> 0) Dim nColorBits As Integer = GetPrivateProfileInt(S_OPENGL, K_COLORBITS, 32) Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32) m_ProjectScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits) End Sub Private Sub PostInitializeScene() ' Impostazioni Controller m_Controller.SetScene(m_ProjectScene) Dim bLuaReg As Boolean = (GetPrivateProfileInt(S_GENERAL, K_COMMANDLOG, 0) <> 0) Dim sCmdLogFile As String = CMDLOG_FILE_NAME.Replace("#", m_nInstance.ToString()) If Not m_Controller.SetCommandLog(bLuaReg, m_sTempDir, sCmdLogFile) Then EgtOutLog("Command log not started") If Environment.GetCommandLineArgs.Count() <= 1 Then MessageBox.Show("Command log not started", "TestEIn Warning", MessageBoxButton.OK, MessageBoxImage.Warning) End If End If ' imposto unità di misura per interfaccia utente IniFile.m_bMmUnits = (GetPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0) Application.Msn.NotifyColleagues(Application.UPDATESTATUSUNITS, IniFile.m_bMmUnits) ' imposto visualizzazione riferimento globale Dim bShowGlobFrame As Boolean = (GetPrivateProfileInt(S_SCENE, K_SHOWGFRAME, 1) <> 0) EgtSetGlobFrameShow(bShowGlobFrame) ' imposto i dati della griglia LoadGridData() ' imposto stato di visualizzazione della griglia IniFile.m_bDrawShowGrid = (GetPrivateProfileInt(S_GRID, K_DRAWSHOWGRID, 1) <> 0) IniFile.m_bMachiningShowGrid = (GetPrivateProfileInt(S_GRID, K_MACHININGSHOWGRID, 1) <> 0) IniFile.m_bShowGridFrame = (GetPrivateProfileInt(S_GRID, K_SHOWFRAME, 1) <> 0) Application.Msn.NotifyColleagues(Application.UPDATESTATUSGRID, New UpdateStatusGridParam(IniFile.m_bDrawShowGrid, IniFile.m_bShowGridFrame)) ' imposto tipo coordinate m_bCPlaneTypePos = True Application.Msn.NotifyColleagues(Application.STATUSCURRPOSTYPETEXT, "GRID") m_ProjectScene.SetGridCursorPos(m_bCPlaneTypePos) ' modo di visualizzazione Dim nShowMode As Integer = GetPrivateProfileInt(S_SCENE, K_SHOWMODE, SM.SHADING) Application.Msn.NotifyColleagues(Application.SHOWMODESTATE, nShowMode) ' visualizzazione direzione curve Dim nShowCurveDir As Integer = GetPrivateProfileInt(S_SCENE, K_CURVEDIR, 0) Application.Msn.NotifyColleagues(Application.SHOWCURVEDIR, nShowCurveDir) ' visualizzazione avanzata dei triangoli costituenti le superfici Dim bShowTriaAdv As Boolean = (GetPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1) <> 0) EgtSetShowTriaAdv(bShowTriaAdv) ' lettura da ini della variabile che abilita i gruppi di lavorazione IniFile.m_bMachiningGroup = (GetPrivateProfileInt(S_MACH, K_MACHININGGROUP, 0) <> 0) Application.Msn.NotifyColleagues(Application.DRAWMODE_ISCHECKED) ' ObjTree non selezionato Application.Msn.NotifyColleagues(Application.UPDATEOBJTREEOLDID, GDB_ID.NULL) ' nascondo input box Application.Msn.NotifyColleagues(Application.RESETINPUTBOX) ' Apro progetto vuoto Application.Msn.NotifyColleagues(Application.NEWPROJECT) ' Imposto stato filtro selezione m_ProjectScene.GetObjFilterForSel(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra) m_Controller.MouseSetObjFilterForSelect(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra) End Sub Private Sub ProcessCommandLine() ' Recupero eventuali parametri da linea di comando Dim bOpen As Boolean = False If Environment.GetCommandLineArgs.Count() > 1 Then Dim sFile As String = Environment.GetCommandLineArgs(1) If Not String.IsNullOrWhiteSpace(sFile) Then Dim nFileType As Integer = EgtGetFileType(sFile) Select Case nFileType Case FT.NGE, FT.NFE m_Controller.OpenProject(sFile, False) bOpen = True Case FT.DXF, FT.STL, FT.CNC, FT.CSF, FT.BTL m_Controller.ImportProject(sFile, False) bOpen = True Case FT.TSC, FT.LUA m_Controller.Exec(sFile, False) bOpen = True End Select If IO.Path.GetExtension(sFile).ToLower() = ".ddf" Then ' Se manca direttorio uso quello di default If String.IsNullOrWhiteSpace(IO.Path.GetDirectoryName(sFile)) Then Dim sDefDir As String = String.Empty GetPrivateProfileString(S_DOORS, K_DDFDEFAULTDIR, "", sDefDir) sFile = sDefDir & "\" & sFile End If ' Ricoscimento flag Dim nPar2 As Integer = 0 If Environment.GetCommandLineArgs.Count() > 2 Then nPar2 = CInt(Environment.GetCommandLineArgs(2)) End If Dim bNcGen As Boolean = (nPar2 >= 1) Dim bExit As Boolean = (nPar2 >= 2) ' Esecuzione CreateDoors(sFile, bNcGen, bExit) EgtZoom(ZM.ALL) Application.Msn.NotifyColleagues(Application.EMITTITLE) ' Se richiesta uscita immediata If bExit Then Application.Msn.NotifyColleagues(Application.CLOSEAPPLICATIONCOMMAND) End If End If End If End If End Sub Private Sub EmitTitle() ' nome file Dim sTitle As String = m_Controller.GetCurrFile() If String.IsNullOrEmpty(sTitle) Then sTitle = EgtMsg(MSG_TOPCOMMANDBAR + 1) & m_nInstance.ToString() End If ' indicazione di modificato If m_Controller.GetModified() Then sTitle += "*" End If ' dati del prodotto sTitle += " - EgtCAM5" ' emissione del titolo Application.Msn.NotifyColleagues(Application.UPDATEMAINWINDOWTITLE, sTitle) End Sub Private Sub LoadGridData() IniFile.dSnapStepMm = GetPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10) IniFile.dSnapStepInch = GetPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 10) IniFile.nMinLineSStep = GetPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1) IniFile.nMajLineSStep = GetPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10) IniFile.nExtSStep = GetPrivateProfileInt(S_GRID, K_EXTSSTEP, 50) IniFile.MinLnColor = New Color3d(160, 160, 160) GetPrivateProfileColor(S_GRID, K_MINLNCOLOR, IniFile.MinLnColor) IniFile.MajLnColor = New Color3d(160, 160, 160) GetPrivateProfileColor(S_GRID, K_MAJLNCOLOR, IniFile.MajLnColor) EgtSetGridFrame(Frame3d.GLOB) UpdateGridData() End Sub Private Sub UpdateGridData() If IniFile.m_bMmUnits Then EgtSetGridGeo(IniFile.dSnapStepMm, IniFile.nMinLineSStep, IniFile.nMajLineSStep, IniFile.nExtSStep) Else EgtSetGridGeo(IniFile.dSnapStepInch, IniFile.nMinLineSStep, IniFile.nMajLineSStep, IniFile.nExtSStep) End If EgtSetGridColor(IniFile.MinLnColor, IniFile.MajLnColor) End Sub ''' ''' Method that manage the visibility of the ProjectPage's Panels ''' Sub RegisterGridViewPanelCommands() Application.Msn.Register(Application.WIREFRAME, Sub() m_ProjectScene.WireFrame() End Sub) Application.Msn.Register(Application.HIDDENLINE, Sub() m_ProjectScene.HiddenLine() End Sub) Application.Msn.Register(Application.SHADING, Sub() m_ProjectScene.Shading() End Sub) Application.Msn.Register(Application.ZOOMALL, Sub() m_ProjectScene.ZoomAll() End Sub) Application.Msn.Register(Application.ZOOMIN, Sub() m_ProjectScene.ZoomIn() End Sub) Application.Msn.Register(Application.ZOOMOUT, Sub() m_ProjectScene.ZoomOut() End Sub) Application.Msn.Register(Application.TOPVIEW, Sub() m_ProjectScene.TopView() End Sub) Application.Msn.Register(Application.FRONTVIEW, Sub() m_ProjectScene.FrontView() End Sub) Application.Msn.Register(Application.LEFTVIEW, Sub() m_ProjectScene.LeftView() End Sub) Application.Msn.Register(Application.BACKVIEW, Sub() m_ProjectScene.BackView() End Sub) Application.Msn.Register(Application.RIGHTVIEW, Sub() m_ProjectScene.RightView() End Sub) Application.Msn.Register(Application.ISOVIEWSW, Sub() m_ProjectScene.IsoViewSW() End Sub) Application.Msn.Register(Application.ISOVIEWSE, Sub() m_ProjectScene.IsoViewSE() End Sub) Application.Msn.Register(Application.ISOVIEWNE, Sub() m_ProjectScene.IsoViewNE() End Sub) Application.Msn.Register(Application.ISOVIEWNW, Sub() m_ProjectScene.IsoViewNW() End Sub) Application.Msn.Register(Application.VIEWTOCPLANE, Sub() m_ProjectScene.CPlaneView() End Sub) Application.Msn.Register(Application.SETSTATUSANALYZE, Sub() m_ProjectScene.SetStatusAnalyze() End Sub) Application.Msn.Register(Application.RESETSTATUSANALYZE, Sub() m_ProjectScene.ResetStatusAnalyze() Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, GDB_ID.NULL) End Sub) Application.Msn.Register(Application.SETSTATUSGETDISTANCE, Sub() m_ProjectScene.SetStatusGetDistance() End Sub) Application.Msn.Register(Application.RESETSTATUSGETDISTANCE, Sub() m_ProjectScene.ResetStatusGetDistance() Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, String.Empty) End Sub) Application.Msn.Register(Application.CPLANETOP, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.TOP) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANEFRONT, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.FRONT) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANERIGHT, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.RIGHT) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANEBACK, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.BACK) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANELEFT, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.LEFT) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANEBOTTOM, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.BOTTOM) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANEVIEW, Sub() m_Controller.SetLastInteger(Controller.GRID_TYPE.VIEW) m_Controller.ExecuteCommand(Controller.CMD.GRID) End Sub) Application.Msn.Register(Application.CPLANEELEVATION, Sub() m_Controller.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub) Application.Msn.Register(Application.CPLANEORIGIN, Sub() m_Controller.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub) Application.Msn.Register(Application.CPLANEROTATE, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.GRID_ROTATE) Else m_Controller.ExecuteCommand(Controller.CMD.GRID_ROTATE3D) End If End Sub) Application.Msn.Register(Application.CPLANE3P, Sub() m_Controller.ExecuteCommand(Controller.CMD.GRID_3P) End Sub) Application.Msn.Register(Application.CPLANEPERPOBJ, Sub() m_Controller.ExecuteCommand(Controller.CMD.GRID_PERPCURVE) End Sub) Application.Msn.Register(Application.CPLANEOBJ, Sub() m_Controller.ExecuteCommand(Controller.CMD.GRID_OBJ) End Sub) End Sub Sub RegisterDrawPanelCommands() Application.Msn.Register(Application.GETCURRLAYER, Sub() Dim CurrLayer As Integer = m_Controller.GetCurrLayer() Application.Msn.NotifyColleagues(Application.SETCURRLAYER, CurrLayer) End Sub) Application.Msn.Register(Application.POINT, Sub() If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then m_Controller.ExecuteCommand(Controller.CMD.FRAME) ElseIf (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.VECTOR) Else m_Controller.ExecuteCommand(Controller.CMD.POINT) End If End Sub) Application.Msn.Register(Application.LINE2P, Sub() If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then m_Controller.SetContinue() 'EmitStripStatusOutput(EgtMsg(399)) ' Continue : 'L' with line, 'A' with arc End If m_Controller.ExecuteCommand(Controller.CMD.LINE2P) End Sub) Application.Msn.Register(Application.LINEPDL, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.LINEPDL) Else m_Controller.ExecuteCommand(Controller.CMD.LINEPVL) End If End Sub) Application.Msn.Register(Application.ARCPDP, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control Then m_Controller.SetContinue() 'EmitStripStatusOutput(EgtMsg(399)) ' Continue : 'L' with line, 'A' with arc End If m_Controller.ExecuteCommand(Controller.CMD.ARCPDP) Else m_Controller.ExecuteCommand(Controller.CMD.ARCPVP) End If End Sub) Application.Msn.Register(Application.POLYGON, Sub() 'If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.POLYGON) 'Else ' m_Controller.ExecuteCommand(Controller.CMD.POLYGONSIDE) 'End If End Sub) Application.Msn.Register(Application.TEXT, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.TEXT) Else m_Controller.ExecuteCommand(Controller.CMD.TEXTPLUS) End If End Sub) Application.Msn.Register(Application.PLANE, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then m_Controller.ExecuteCommand(Controller.CMD.REGION) Else m_Controller.ExecuteCommand(Controller.CMD.PLANE) End If End Sub) Application.Msn.Register(Application.DELETE, Sub() m_Controller.SetLastInteger(GDB_ID.SEL) m_Controller.ExecuteCommand(Controller.CMD.DELETE) End Sub) Application.Msn.Register(Application.JOINCURVE, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then m_Controller.SetLastBoolean(False) Else m_Controller.SetLastBoolean(True) End If m_Controller.ExecuteCommand(Controller.CMD.JOINCURVE) End Sub) End Sub Sub RegisterDrawOptionPanelCommands() Application.Msn.Register(Application.NOTIFYINPUTTEXT, Sub(sInputText As String) m_InputText = sInputText End Sub) Application.Msn.Register(Application.SETLASTBOOLEAN, Sub(bBoolean As Boolean) m_Controller.SetLastBoolean(bBoolean) End Sub) Application.Msn.Register(Application.SETLASTINTEGER, Sub(nInteger As Integer) m_Controller.SetLastInteger(nInteger) End Sub) Application.Msn.Register(Application.SHOW, Sub(sString As String) m_Controller.Show(sString) End Sub) Application.Msn.Register(Application.DONE, Sub(sString As String) m_Controller.Done(sString) End Sub) Application.Msn.Register(Application.SAVEOBJECT, Sub(SaveObjectParam As SaveObjectParam) m_Controller.SaveObject(SaveObjectParam.nId, SaveObjectParam.sDir, SaveObjectParam.nType) End Sub) End Sub Sub RegisterStatusBarCommands() Application.Msn.Register(Application.STATUSCURRPOSTYPECOMMAND, Sub() m_bCPlaneTypePos = Not m_bCPlaneTypePos If m_bCPlaneTypePos Then Application.Msn.NotifyColleagues(Application.STATUSCURRPOSTYPETEXT, "GRID") Else Application.Msn.NotifyColleagues(Application.STATUSCURRPOSTYPETEXT, "WORLD") End If m_ProjectScene.SetGridCursorPos(m_bCPlaneTypePos) End Sub) Application.Msn.Register(Application.STATUSUNITSCOMMAND, Sub() IniFile.m_bMmUnits = Not IniFile.m_bMmUnits Application.Msn.NotifyColleagues(Application.UPDATESTATUSUNITS, IniFile.m_bMmUnits) UpdateGridData() EgtDraw() End Sub) End Sub Sub RegisterControllerCommands() Application.Msn.Register(Application.EXECUTECOMMAND, Sub(nCmd As Controller.CMD) m_Controller.ExecuteCommand(nCmd) End Sub) Application.Msn.Register(Application.MANAGEMODIFIED, Sub() Dim AllowClose = m_Controller.ManageModified() Application.Msn.NotifyColleagues(Application.ALLOWWINDOWTOCLOSE, AllowClose) End Sub) End Sub Sub RegisterMainWindowCommands() Application.Msn.Register(Application.LOADGRIDDATA, Sub() LoadGridData() End Sub) Application.Msn.Register(Application.RESETSTATUS, Sub() m_Controller.ResetStatus() End Sub) Application.Msn.Register(Application.EMITTITLE, Sub() EmitTitle() End Sub) Application.Msn.Register(Application.MAINWINDOW_CONTENTRENDERED, Sub() ProcessCommandLine() End Sub) End Sub Private Sub ManageTopCommandBar() Application.Msn.Register(Application.NEWPROJECT, Sub() m_Controller.NewProject(True) Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) End Sub) Application.Msn.Register(Application.OPENPROJECT, Sub(sFilePath As String) If String.IsNullOrEmpty(sFilePath) Then Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTNGEDIR, "", sDir) m_Controller.OpenProject(sDir) Else m_Controller.OpenProject(sFilePath, False) End If Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) End Sub) Application.Msn.Register(Application.SAVEPROJECT, Sub() Dim nType As NGE = DirectCast(GetPrivateProfileInt(S_GEOMDB, K_SAVETYPE, NGE.CMPTEXT), NGE) If Not String.IsNullOrWhiteSpace(m_Controller.GetCurrFile()) Then m_Controller.SaveProject(nType) Else Dim sFile As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTNGEDIR, "", sFile) sFile.TrimEnd("\"c) sFile += "\New" & m_nInstance.ToString() & ".nge" m_Controller.SaveAsProject(sFile, nType) End If End Sub) Application.Msn.Register(Application.SAVEASPROJECT, Sub() Dim nType As NGE = DirectCast(GetPrivateProfileInt(S_GEOMDB, K_SAVETYPE, NGE.CMPTEXT), NGE) Dim sFile As String = m_Controller.GetCurrFile() If String.IsNullOrWhiteSpace(sFile) Then GetPrivateProfileString(S_GENERAL, K_LASTNGEDIR, "", sFile) sFile.TrimEnd("\"c) sFile += "\New" & m_nInstance.ToString() & ".nge" End If m_Controller.SaveAsProject(sFile, nType) End Sub) Application.Msn.Register(Application.INSERTPROJECT, Sub() ' eseguo Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTNGEDIR, "", sDir) m_Controller.InsertProject(sDir) End Sub) Application.Msn.Register(Application.IMPORTPROJECT, Sub() Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTIMPDIR, "", sDir) m_Controller.ImportProject(sDir) Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) End Sub) Application.Msn.Register(Application.EXPORTPROJECT, Sub() m_Controller.ExportProject(Path.ChangeExtension(m_Controller.GetCurrFile(), "dxf")) End Sub) Application.Msn.Register(Application.EXECSCRIPT, Sub(sFilePath As String) If String.IsNullOrEmpty(sFilePath) Then Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTLUADIR, "", sDir) m_Controller.Exec(sDir) Else m_Controller.Exec(sFilePath, False) End If Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, EgtGetCurrLayer()) If EgtGetCurrMachGroup() <> GDB_ID.NULL Then Application.Msn.NotifyColleagues(Application.SETMACHININGMODE) End If End Sub) Application.Msn.Register(Application.DOORSSCRIPT, Sub(sFilePath As String) Dim bOk As Boolean If String.IsNullOrEmpty(sFilePath) Then bOk = ExecDoors(m_ProjectScene, String.Empty) Else bOk = ExecDoors(m_ProjectScene, sFilePath) End If EgtResetCurrPartLayer() OnUpdateUI(Nothing, True) Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, EgtGetCurrLayer()) If bOk Then IniFile.m_MruDoors.Add(IniFile.m_DDFFilePath) Dim sFile As String = String.Empty If EgtGetCurrFilePath(sFile) Then IniFile.m_MruFiles.Add(sFile) End If Else Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, EgtMsg(MSG_DOORSERRORS + 2)) IniFile.m_MruDoors.Remove(IniFile.m_DDFFilePath) Try Dim sErrFilePath As String = Path.ChangeExtension(IniFile.m_DDFFilePath, ".txt") Dim fileReader As String = My.Computer.FileSystem.ReadAllText(sErrFilePath) Dim Lines() As String = fileReader.Split(ControlChars.CrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) Dim values() As String = Lines(0).Split(CChar("=")).ToArray Lines(0) = EgtMsg(MSG_DOORSERRORS + 1) & " " & Convert.ToInt32(values(1)) fileReader = String.Empty For Index = 1 To Lines.Count - 1 fileReader &= (Lines(Index) + ControlChars.CrLf.ToCharArray()) Next MessageBox.Show(fileReader, Lines(0).ToUpper, MessageBoxButton.OK, MessageBoxImage.Error) Catch ex As Exception MessageBox.Show(EgtMsg(MSG_DOORSERRORS + 7)) End Try End If End Sub) Application.Msn.Register(Application.DMACHSCRIPT, Sub() Dim bOk As Boolean = ExecDoorsMachining(m_ProjectScene) OnUpdateUI(Nothing, True) If EgtGetCurrMachGroup() <> GDB_ID.NULL Then Application.Msn.NotifyColleagues(Application.SETMACHININGMODE) End If If Not bOk Then Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, EgtMsg(MSG_DOORSERRORS + 2)) End Sub) Application.Msn.Register(Application.GUNSTOCKSCRIPT, Sub(sFilePath As String) Dim bOk As Boolean If String.IsNullOrEmpty(sFilePath) Then bOk = ExecGunStock(m_ProjectScene, String.Empty) Else bOk = ExecGunStock(m_ProjectScene, sFilePath) End If EgtResetCurrPartLayer() OnUpdateUI(Nothing, True) Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, EgtGetCurrLayer()) If EgtGetCurrMachGroup() <> GDB_ID.NULL Then Application.Msn.NotifyColleagues(Application.SETMACHININGMODE) End If If bOk Then IniFile.m_MruGunStock.Add(IniFile.m_MODFilePath) Dim sFile As String = String.Empty If EgtGetCurrFilePath(sFile) Then IniFile.m_MruFiles.Add(sFile) End If Else IniFile.m_MruGunStock.Remove(IniFile.m_MODFilePath) Try Dim sErrFilePath As String = Path.ChangeExtension(IniFile.m_MODFilePath, ".txt") Dim fileReader As String = My.Computer.FileSystem.ReadAllText(sErrFilePath) Dim Lines() As String = fileReader.Split(ControlChars.CrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) Dim values() As String = Lines(0).Split(CChar("=")).ToArray Lines(0) = EgtMsg(MSG_DOORSERRORS + 1) & " " & Convert.ToInt32(values(1)) fileReader = String.Empty For Index = 1 To Lines.Count - 1 fileReader &= (Lines(Index) + ControlChars.CrLf.ToCharArray()) Next MessageBox.Show(fileReader, Lines(0).ToUpper, MessageBoxButton.OK, MessageBoxImage.Error) Catch ex As Exception MessageBox.Show(EgtMsg(MSG_DOORSERRORS + 7)) End Try End If End Sub) End Sub Private Sub ManageClosingApplication() Application.Msn.Register(Application.CLOSEAPPLICATION, Sub() ' Salvo modo di visualizzazione WritePrivateProfileString(S_SCENE, K_SHOWMODE, EgtGetShowMode().ToString) ' Salvo stato visualizzazione direzione curve WritePrivateProfileString(S_SCENE, K_CURVEDIR, If(EgtGetShowCurveDirection(), 1, 0).ToString) ' Salvo stato visualizzazione griglia WritePrivateProfileString(S_GRID, K_DRAWSHOWGRID, If(IniFile.m_bDrawShowGrid, 1, 0).ToString) WritePrivateProfileString(S_GRID, K_MACHININGSHOWGRID, If(IniFile.m_bMachiningShowGrid, 1, 0).ToString) ' Salvo stato unità di misura per interfaccia utente WritePrivateProfileString(S_SCENE, K_MMUNITS, If(IniFile.m_bMmUnits, 1, 0).ToString) ' Salvo dimensioni griglie in Mm e Inch WritePrivateProfileString(S_GRID, K_SNAPSTEP, DoubleToString(IniFile.dSnapStepMm, 4)) WritePrivateProfileString(S_GRID, K_SNAPSTEPINCH, DoubleToString(IniFile.dSnapStepInch, 4)) End Sub) End Sub #End Region #Region "SCENE EVENTS" Private Sub OnCursorPos(ByVal sender As Object, ByVal sCursorPos As String) Handles m_ProjectScene.OnCursorPos Application.Msn.NotifyColleagues(Application.NOTIFYCURRPOS, sCursorPos) End Sub Private Sub OnMouseSetObjFilterForSelect(sender As Object, bZeroDim As Boolean, bCurve As Boolean, bSurf As Boolean, bVolume As Boolean, bExtra As Boolean) Handles m_ProjectScene.OnMouseSetObjFilterForSelect m_Controller.MouseSetObjFilterForSelect(bZeroDim, bCurve, bSurf, bVolume, bExtra) End Sub Private Sub OnMouseSelectedAll(ByVal sender As Object) Handles m_ProjectScene.OnMouseSelectedAll ' Se in modalità Draw seleziono tutto If IniFile.m_ProjectMode = ProjectModeOpt.DRAW Then m_Controller.MouseSelectedAll() ' Sono in modalità Machining, se la modalità di selezione è NULL non seleziono nulla ed esco If m_SceneSelMode = SceneSelModeOpt.NULL Then Return ' Cerco i pezzi all'interno dei grezzi Dim nRawPart As Integer = EgtGetFirstRawPart() While nRawPart <> GDB_ID.NULL Dim nPart As Integer = EgtGetFirstPartInRawPart(nRawPart) While nPart <> GDB_ID.NULL Dim nLayer As Integer = EgtGetFirstGroupInGroup(nPart) While nLayer <> GDB_ID.NULL Dim nObj As Integer = EgtGetFirstInGroup(nLayer) While nObj <> GDB_ID.NULL EgtSelectObj(nObj) nObj = EgtGetNext(nObj) End While nLayer = EgtGetNextGroup(nLayer) End While nPart = EgtGetNextPartInRawPart(nPart) End While nRawPart = EgtGetNextRawPart(nRawPart) End While EgtDraw() End Sub Private Sub OnMouseDeselectedAll(ByVal sender As Object) Handles m_ProjectScene.OnMouseDeselectedAll m_Controller.MouseDeselectedAll() End Sub Private Sub OnMouseSelectingObj(ByVal sender As Object, ByVal nId As Integer, ByRef bOk As Boolean) Handles m_ProjectScene.OnMouseSelectingObj ' Se oggetto già rifiutato non faccio le verifiche If Not bOk Then Return ' Se in modalità Draw accetto tutto If IniFile.m_ProjectMode = ProjectModeOpt.DRAW Then Return ' Sono in modalità Machining Select Case m_SceneSelMode Case SceneSelModeOpt.NULL bOk = False Case SceneSelModeOpt.PARTCURVES, SceneSelModeOpt.PARTSURFACES, SceneSelModeOpt.PARTCURVESANDSURFACES Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId)) If Not IsPartInRaw(nPartId) Then bOk = False End If Case Else bOk = False End Select End Sub Private Sub OnMouseSelectedObj(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean) Handles m_ProjectScene.OnMouseSelectedObj m_Controller.MouseSelectedObj(nId, bLast) End Sub Private Sub OnMouseSelectedPart(ByVal sender As Object, ByVal nId As Integer) Handles m_ProjectScene.OnMouseSelectedPart m_Controller.MouseSelectedPart(nId) End Sub Private Sub OnMouseSelectedLayer(ByVal sender As Object, ByVal nId As Integer) Handles m_ProjectScene.OnMouseSelectedLayer m_Controller.MouseSelectedLayer(nId) End Sub Private Sub OnMouseSelectedPath(ByVal sender As Object, ByVal nId As Integer, ByVal bHaltOnFork As Boolean) Handles m_ProjectScene.OnMouseSelectedPath m_Controller.MouseSelectedPath(nId, bHaltOnFork) End Sub Private Sub OnMousePointFromSelection(ByVal sender As Object, ByVal nId As Integer, ByVal PtP As Point3d, ByVal nAux As Integer) Handles m_ProjectScene.OnMousePointFromSelection m_Controller.SetPointFromSelection(nId, PtP, nAux) End Sub Private Sub OnMouseDone(ByVal sender As Object) Handles m_ProjectScene.OnMouseDone m_Controller.Done(m_InputText) End Sub Private Sub OnMouseSelectedPoint(ByVal sender As Object, ByVal PtP As Point3d, ByVal nSep As SEP, ByVal nId As Integer) Handles m_ProjectScene.OnMouseSelectedPoint Dim bDone As Boolean = (Keyboard.Modifiers And ModifierKeys.Control) <> ModifierKeys.Control m_Controller.MouseSelectedPoint(PtP, nSep, nId, bDone) End Sub Private Sub OnMouseSelectedDir(ByVal sender As Object, ByVal VtDir As Vector3d) Handles m_ProjectScene.OnMouseSelectedDir m_Controller.SetLastVector3d(VtDir) End Sub Private Sub OnMouseMoveSelPoint(ByVal sender As Object, ByVal PtP As Point3d) Handles m_ProjectScene.OnMouseMoveSelPoint m_Controller.MouseMoveInSelectionPoint(PtP) End Sub Private Sub OnMouseAnalyzed(ByVal sender As Object, ByVal nId As Integer) Handles m_ProjectScene.OnMouseAnalyzed Application.Msn.NotifyColleagues(Application.UPDATEOBJINOBJTREE, nId) Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, nId) End Sub Private Sub OnShowDistance(ByVal sender As Object, ByVal sDistance As String) Handles m_ProjectScene.OnShowDistance Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, sDistance) End Sub Private Sub Scene1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles m_ProjectScene.KeyDown ' Con DEL eseguo cancellazione delle entità selezionate If e.KeyData = System.Windows.Forms.Keys.Delete Then m_Controller.SetLastInteger(GDB_ID.SEL) m_Controller.ExecuteCommand(Controller.CMD.DELETE) ' Con SPAZIO ripeto l'ultimo comando ElseIf e.KeyData = System.Windows.Forms.Keys.Space Then m_Controller.RepeatLastCommand() ' Con 'A' e in modalità continuazione, forzo il passaggio ad arco ElseIf e.KeyData = System.Windows.Forms.Keys.A And m_Controller.GetContinue() Then m_Controller.ContinueArcPDP() ' Con 'L' e in modalità continuazione, forzo il passaggio a retta ElseIf e.KeyData = System.Windows.Forms.Keys.L And m_Controller.GetContinue() Then m_Controller.ContinueLine2P() ' Con 'V' cambio lo stato del check ElseIf e.KeyData = System.Windows.Forms.Keys.V Then Application.Msn.NotifyColleagues(Application.CHANGEINPUTBOXCHECK) End If End Sub #End Region #Region "CONTROLLER EVENTS" Private Sub OnNewProject(ByVal sender As Object, ByVal bOk As Boolean) Handles m_Controller.OnNewProject If Not bOk Then MessageBox.Show(EgtMsg(10002), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error on new file - Error End If End Sub Private Sub OnOpeningProject(ByVal sender As Object) Handles m_Controller.OnOpeningProject Application.Msn.NotifyColleagues(Application.CLEAROBJTREE) End Sub Private Sub OnOpenProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnOpenProject WritePrivateProfileString(S_GENERAL, K_LASTNGEDIR, Path.GetDirectoryName(sFile)) If bOk Then IniFile.m_MruFiles.Add(sFile) Else IniFile.m_MruFiles.Remove(sFile) Dim sMsg As String = EgtMsg(10003) & " '" & sFile & "'" 'Error opening file MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error End If End Sub Private Sub OnSavingProject(ByVal sender As Object) Handles m_Controller.OnSavingProject End Sub Private Sub OnSavedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnSavedProject WritePrivateProfileString(S_GENERAL, K_LASTNGEDIR, Path.GetDirectoryName(sFile)) If bOk Then IniFile.m_MruFiles.Add(sFile) Else IniFile.m_MruFiles.Remove(sFile) Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error End If End Sub Private Sub OnSavingObject(ByVal sender As Object) Handles m_Controller.OnSavingObject End Sub Private Sub OnSavedObject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnSavedObject WritePrivateProfileString(S_GENERAL, K_LASTNGEOBJDIR, Path.GetDirectoryName(sFile)) If bOk Then IniFile.m_MruFiles.Add(sFile) Else IniFile.m_MruFiles.Remove(sFile) Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error End If End Sub Private Sub OnImportingProject(ByVal sender As Object, ByVal bOkType As Boolean) Handles m_Controller.OnImportingProject If bOkType Then Application.Msn.NotifyColleagues(Application.CLEAROBJTREE) Else MessageBox.Show(EgtMsg(10005), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' File type unknown - Error End If End Sub Private Sub OnImportedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnImportedProject WritePrivateProfileString(S_GENERAL, K_LASTIMPDIR, Path.GetDirectoryName(sFile)) If Not bOk Then Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error End If End Sub Private Sub OnExportingProject(ByVal sender As Object) Handles m_Controller.OnExportingProject End Sub Private Sub OnExportedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnExportedProject WritePrivateProfileString(S_GENERAL, K_LASTEXPDIR, Path.GetDirectoryName(sFile)) If Not bOk Then Dim sMsg As String = EgtMsg(10007) & " '" & sFile & "'" 'Error exporting file MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error End If End Sub Private Sub OnExecutingScript(ByVal sender As Object) Handles m_Controller.OnExecutingScript Application.Msn.NotifyColleagues(Application.CLEAROBJTREE) 'Abilito progress e bottone stop Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSPROGRESS, 0) Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSSTOP, True) ' Dichiaro script in esecuzione m_bScriptRunning = True End Sub Private Sub OnExecutedScript(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean, ByVal sError As String) Handles m_Controller.OnExecutedScript ' Salvo path dello script in lista recenti WritePrivateProfileString(S_GENERAL, K_LASTLUADIR, Path.GetDirectoryName(sFile)) If bOk Then IniFile.m_MruScripts.Add(sFile) Else IniFile.m_MruScripts.Remove(sFile) MessageBox.Show(sError, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error End If ' Disabilito progress e bottone stop Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSPROGRESS, 0) Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSSTOP, False) '' Dichiaro terminata esecuzione script m_bScriptRunning = False End Sub Private Sub OnPrepareInputBox(ByVal sTitle As String, ByVal sLabel As String, ByVal sCheckLabel As String, ByVal bShowCombo As Boolean, ByVal bShowBtn As Boolean) Handles m_Controller.PrepareInputBox Application.Msn.NotifyColleagues(Application.PREPAREINPUTBOX, New PrepareInputBoxParam(sTitle, sLabel, sCheckLabel, bShowCombo, bShowBtn)) End Sub Private Sub OnSetInputBoxText(ByVal sText As String) Handles m_Controller.SetInputBoxText Application.Msn.NotifyColleagues(Application.SETINPUTBOXTEXT, sText) End Sub Private Sub OnSetInputBoxCheck(ByVal bCheck As Boolean) Handles m_Controller.SetInputBoxCheck Application.Msn.NotifyColleagues(Application.SETINPUTBOXCHECK, bCheck) End Sub Private Sub OnAddInputBoxCombo(ByVal sText As String, ByVal bSelected As Boolean) Handles m_Controller.AddInputBoxCombo Application.Msn.NotifyColleagues(Application.ADDINPUTBOXCOMBO, New AddInputBoxComboParam(sText, bSelected)) End Sub Private Sub OnUpdateUI(ByVal sender As Object, ByVal bReloadUI As Boolean) Handles m_Controller.UpdateUI ' pulisco input e relativi messaggi Application.Msn.NotifyColleagues(Application.RESETINPUTBOX) If m_Controller.GetContinue() Then Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, (EgtMsg(399))) ' Continue : 'L' with line, 'A' with arc Else Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, ("")) End If ' aggiorno dati correnti EmitTitle() EmitCurrPartLayer() If bReloadUI Then Application.Msn.NotifyColleagues(Application.LOADOBJTREE) Else Application.Msn.NotifyColleagues(Application.UPDATEOBJTREE) End If ' aggiorno macchina corrente Application.Msn.NotifyColleagues(Application.UPDATECURRENTMACHINE) End Sub Private Sub OutputInfo(ByVal sender As Object, ByVal sText As String) Handles m_Controller.OutputInfo Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, sText) End Sub #End Region #Region "STATUSBAR EVENTS" Private Sub ProjectScene_OnChangedSnapPointType(ByVal sender As Object, ByVal nSpType As SP, ByVal bUser As Boolean) Handles m_ProjectScene.OnChangedSnapPointType If bUser Then Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPEBACKGROUND, New SolidColorBrush(SystemColors.ControlColor)) Else Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPEBACKGROUND, Brushes.Bisque) End If Select Case nSpType Case SP.PT_SKETCH Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1102)) 'Sketch Point Case SP.PT_GRID Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1104)) 'Grid Point Case SP.PT_END Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1106)) 'End Point Case SP.PT_MID Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1108)) 'Mid Point Case SP.CENTER Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1110)) 'Center Case SP.CENTROID Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1112)) 'Centroid Case SP.PT_NEAR Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1114)) 'Near Point Case SP.PT_INTERS Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1116)) 'Inters Point Case SP.PT_TANGENT Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1118)) 'Tang Point Case SP.PT_PERPENDICULAR Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1120)) 'Perp Point Case SP.PT_MINDIST Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, EgtMsg(1122)) 'MinDist Point Case Else Application.Msn.NotifyColleagues(Application.STATUSSNAPPOINTTYPETEXT, "---") End Select End Sub #End Region ' StatusBar events #Region "DrawOptionPanel" Private Sub EmitCurrPartLayer() Dim sText As String = " " Dim sName As String = String.Empty Dim colObj As Color3d EgtGetColor(GDB_ID.ROOT, colObj) Dim nCurrPart As Integer = m_Controller.GetCurrPart() If nCurrPart <> GDB_ID.NULL Then If EgtGetName(nCurrPart, sName) Then sText = sName Else sText = "Part " + nCurrPart.ToString() End If EgtGetCalcColor(nCurrPart, colObj) Dim nCurrLayer As Integer = m_Controller.GetCurrLayer() If nCurrLayer <> GDB_ID.NULL And EgtExistsObj(nCurrLayer) Then If EgtGetName(nCurrLayer, sName) Then sText += " --> " + sName Else sText += " --> Layer " + nCurrLayer.ToString() End If EgtGetCalcColor(nCurrLayer, colObj) End If End If Application.Msn.NotifyColleagues(Application.UPDATEHEADERNAME, sText) colObj.A = 100 Application.Msn.NotifyColleagues(Application.UPDATEHEADERCOLOR, colObj) End Sub #End Region 'DrawOptionPanel #Region "Scene selection" Private m_SceneSelMode As SceneSelModeOpt Friend Property SceneSelMode As SceneSelModeOpt Get Return m_SceneSelMode End Get Set(value As SceneSelModeOpt) If value <> m_SceneSelMode Then m_SceneSelMode = value Select Case m_SceneSelMode Case SceneSelModeOpt.NULL m_ProjectScene.SetObjFilterForSel(False, False, False, False, False) EgtSetObjFilterForSelect(True, True, True, True, True) Case SceneSelModeOpt.PARTCURVES m_ProjectScene.SetObjFilterForSel(False, True, False, False, False) Case SceneSelModeOpt.PARTSURFACES m_ProjectScene.SetObjFilterForSel(False, False, True, False, False) Case SceneSelModeOpt.PARTCURVESANDSURFACES m_ProjectScene.SetObjFilterForSel(False, True, True, False, False) Case SceneSelModeOpt.ALL m_ProjectScene.SetObjFilterForSel(True, True, True, True, True) Case Else m_ProjectScene.SetObjFilterForSel(False, False, False, False, False) End Select End If End Set End Property Friend Function IsPartInRaw(nSearchedPartId As Integer) As Boolean Dim nRawId As Integer = EgtGetFirstRawPart() While nRawId <> GDB_ID.NULL Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawId) While nPartId <> GDB_ID.NULL If nPartId = nSearchedPartId Then Return True End If nPartId = EgtGetNextPartInRawPart(nPartId) End While nRawId = EgtGetNextRawPart(nRawId) End While Return False End Function #End Region ' Scene selection End Class End Namespace