cf86b93725
- aggiunta gestione flag in import 3MF per mantenere la struttura gerarchica dei pezzi nel file (1) oppure no (0).
1805 lines
81 KiB
VB.net
1805 lines
81 KiB
VB.net
Imports System.Windows.Forms.Integration
|
|
Imports System.Windows.Interop
|
|
Imports System.IO
|
|
Imports System.Globalization
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports EgtWPFLib5.EgtFloating
|
|
|
|
Public Class ProjectVM
|
|
Inherits TabViewModel
|
|
|
|
#Region "FIELDS"
|
|
|
|
Friend Event OnPreControllerExec(sFilePath As String)
|
|
Friend Event OnPostControllerExec()
|
|
|
|
' 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
|
|
|
|
' Variabile che contiene il Frame di disegno per poterlo ripristinare dopo essere passato dalla lavorazioneù
|
|
Private m_GridDrawFrame3d As Frame3d = New Frame3d(New Point3d(0, 0, 0))
|
|
|
|
'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
|
|
|
|
' Flag per non salvare Script appena eseguito in elenco MruScript
|
|
Private m_bScriptInMru As Boolean = True
|
|
|
|
Private m_PanelList As New List(Of Panel)
|
|
Public ReadOnly Property PanelList As List(Of Panel)
|
|
Get
|
|
Return m_PanelList
|
|
End Get
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
#Region "EGTUILIB FIELDS"
|
|
|
|
Private m_bCPlaneTypePos As Boolean
|
|
|
|
' Variabile per implementazione eventi
|
|
Private m_InputText As String
|
|
|
|
#End Region
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
' Creo riferimento a questa classe in EgtCAM5Map e in ButtonItem
|
|
Map.SetRefProjectVM(Me)
|
|
ButtonItem.m_ProjectVM = Me
|
|
' Creo classe di supporto per la visualizzazione dei parametri utensile e di lavorazione per Db e operazioni
|
|
TMDbParamVisibility.bFirst = True
|
|
' Inizializza i parametri della scena
|
|
'InitializeEgtProject()
|
|
' aggiungo componenti interfaccia
|
|
Dim bPlugin As Boolean = False
|
|
Dim PluginDirNameList() As String = {}
|
|
If IsActivePlugin() Then
|
|
Dim sPluginDirPath As String = IniFile.m_sDataRoot & "\Plugin"
|
|
If Directory.Exists(sPluginDirPath) Then
|
|
' recupero nome del plugin
|
|
PluginDirNameList = Directory.GetDirectories(IniFile.m_sDataRoot & "\Plugin")
|
|
' verifico che il nome delle cartelle corrisponda al nome delle dll
|
|
For PluginDirIndex As Integer = 0 To PluginDirNameList.Count - 1
|
|
Dim sPluginDirName As String = Path.GetFileName(PluginDirNameList(PluginDirIndex))
|
|
Dim sPluginFileNameList() As String = Directory.GetFiles(PluginDirNameList(PluginDirIndex))
|
|
If sPluginFileNameList.Count = 0 OrElse Not sPluginFileNameList.Any(Function(x) Path.GetFileNameWithoutExtension(x) = sPluginDirName) Then
|
|
PluginDirNameList(PluginDirIndex) = ""
|
|
End If
|
|
Next
|
|
bPlugin = PluginDirNameList.Count(Function(x) Not String.IsNullOrWhiteSpace(x)) > 0
|
|
End If
|
|
End If
|
|
If bPlugin Then
|
|
For Each PluginDirName In PluginDirNameList
|
|
If Not String.IsNullOrWhiteSpace(PluginDirName) Then
|
|
Dim PluginName As String = Path.GetFileName(PluginDirName)
|
|
Dim ConfigurationData As IPluginConfigData = Map.refMainWindowVM.GetConfigData(Of IPluginConfigData)(PluginName & ".ConfigurationData")
|
|
If Not IsNothing(ConfigurationData) And ConfigurationData.ControlList.Count > 0 Then
|
|
For Each Element In ConfigurationData.ControlList
|
|
Select Case Element.Name
|
|
Case PLUGIN_RIGHT_TRAY
|
|
m_PanelList.Add(New RightTrayV)
|
|
Map.refOptionPanelVM.SetPanelViewState(Element.ViewPanelState)
|
|
Case PLUGIN_LEFT_TRAY
|
|
m_PanelList.Add(New LeftTrayV)
|
|
Case Else
|
|
m_PanelList.Add(Map.refMainWindowVM.GetControlByName(Of IPluginControl)(Element))
|
|
End Select
|
|
Next
|
|
End If
|
|
End If
|
|
Next
|
|
m_PanelList.Add(New BottomTrayV)
|
|
m_PanelList.Add(New TopTrayV)
|
|
' nascondo tasti gestione progetto se attivo plugin
|
|
Map.refTopCommandBarVM.SetProjectManagerVisibility(False)
|
|
Else
|
|
m_PanelList.Add(New TopTrayV)
|
|
m_PanelList.Add(New LeftTrayV)
|
|
m_PanelList.Add(New RightTrayV)
|
|
m_PanelList.Add(New BottomTrayV)
|
|
End If
|
|
m_PanelList.Add(New SceneContentControlV)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Get & Set"
|
|
|
|
Friend Function GetScene() As Scene
|
|
Return m_ProjectScene
|
|
End Function
|
|
|
|
Friend Function GetController() As Controller
|
|
Return m_Controller
|
|
End Function
|
|
|
|
#End Region ' Get & Set
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "LoadedCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Point.
|
|
''' </summary>
|
|
Public ReadOnly Property LoadedCommand As ICommand
|
|
Get
|
|
If m_cmdLoaded Is Nothing Then
|
|
m_cmdLoaded = New RelayCommand(AddressOf Loaded)
|
|
End If
|
|
Return m_cmdLoaded
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the Point. This method is invoked by the PointCommand.
|
|
''' </summary>
|
|
Public Sub Loaded(ByVal param As Object)
|
|
' Verifico sia la prima volta
|
|
If m_bLoaded Then Return
|
|
m_bLoaded = True
|
|
' Creazione scena
|
|
PreInitializeScene()
|
|
' Se tutto bene
|
|
If m_ProjectScene.Init() And (IniFile.m_nKeyOptions And KEY_OPT.BASE) <> 0 Then
|
|
IniFile.m_ProjectSceneContext = m_ProjectScene.GetCtx
|
|
PostInitializeScene()
|
|
' Recupero e imposto handle finestra principale
|
|
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
|
|
EgtSetMainWindowHandle(hMainWnd)
|
|
' Inizializzo gestore lavorazioni
|
|
If Not EgtInitMachMgr(IniFile.m_sMachinesRoot, IniFile.m_sToolMakersDir) Then
|
|
' non riuscita -> imposto modalità solo disegno
|
|
IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW
|
|
Map.refProjectV.SetDbPanelVisibility()
|
|
End If
|
|
' Inizializzo gestore travi e pareti
|
|
If (IniFile.m_nKeyOptions And KEY_OPT.BEAM) <> 0 Or (IniFile.m_nKeyOptions And KEY_OPT.WALL) <> 0 Then
|
|
Dim nFlag As Integer = GetPrivateProfileInt(S_IMPORT, K_BTLFLAG, EIB_FL.NONE)
|
|
EgtInitBeamMgr(nFlag)
|
|
End If
|
|
' Log di eventuali estensioni
|
|
EgtOutLog("Extensions :")
|
|
Dim bExtensions As Boolean = False
|
|
If IniFile.IsActiveBeam() Then
|
|
bExtensions = True
|
|
Dim sVersion As String = "---"
|
|
IniFile.GetSpecialLuaVersion(IniFile.m_sBeamDirPath, sVersion)
|
|
Dim sOut As String = "Beam ver. " & sVersion & " " & IniFile.m_sBeamDirPath
|
|
EgtOutLog(sOut)
|
|
End If
|
|
If IniFile.IsActiveWall() Then
|
|
bExtensions = True
|
|
Dim sVersion As String = "---"
|
|
IniFile.GetSpecialLuaVersion(IniFile.m_sWallDirPath, sVersion)
|
|
Dim sOut As String = "Wall ver. " & sVersion & " " & IniFile.m_sWallDirPath
|
|
EgtOutLog(sOut)
|
|
End If
|
|
If IniFile.IsActiveDoors() Then
|
|
bExtensions = True
|
|
Dim sVersion As String = "---"
|
|
IniFile.GetSpecialLuaVersion(IniFile.m_sDoorsDirPath, sVersion)
|
|
Dim sOut As String = "Doors ver. " & sVersion & " " & IniFile.m_sDoorsDirPath
|
|
EgtOutLog(sOut)
|
|
End If
|
|
If IniFile.IsActiveGunStock() Then
|
|
bExtensions = True
|
|
Dim sVersion As String = "---"
|
|
IniFile.GetSpecialLuaVersion(IniFile.m_sGunstockDirPath, sVersion)
|
|
Dim sOut As String = "Gunstock ver. " & sVersion & " " & IniFile.m_sGunstockDirPath
|
|
EgtOutLog(sOut)
|
|
End If
|
|
If Not bExtensions Then EgtOutLog("---")
|
|
' Apro progetto vuoto
|
|
Map.refTopCommandBarVM.NewCmd()
|
|
' Seleziono la macchina impostata nel file ini
|
|
Map.refMachinePanelVM.LoadCurrentMachine()
|
|
EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
|
|
Return
|
|
End If
|
|
' Problemi
|
|
SceneHost.Child = Nothing
|
|
' Se manca la chiave
|
|
If IniFile.m_nKeyLevel = -1 Or IniFile.m_nKeyLevel = -2 Then
|
|
If Not EgtGetNetHwKey() Then
|
|
EgtOutLog("Missing Dongle")
|
|
' Box di avviso chiave mancante : "Chiave non presente. \n Inserirla e riavviare il programma." "Errore"
|
|
Dim sText As String = EgtMsg(10102) & vbCrLf & EgtMsg(10103)
|
|
Dim sTitle As String = EgtMsg(10101)
|
|
MessageBox.Show(sText, sTitle, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Else
|
|
EgtOutLog("NetDongle is full")
|
|
' Box di avviso slot chiave di rete occupato : "Chiave di Rete completamente occupata. \n Uscire dal programma su un altro PC." "Errore"
|
|
Dim sText As String = EgtMsg(10110) & vbCrLf & EgtMsg(10111)
|
|
Dim sTitle As String = EgtMsg(10101)
|
|
MessageBox.Show(sText, sTitle, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
' Se altrimenti manca il collegamento con la chiave di rete
|
|
ElseIf IniFile.m_nKeyLevel = -9 Then
|
|
EgtOutLog("Missing Link with Net Dongle")
|
|
' Box di avviso chiave mancante : "Collegamento con la Chiave di rete non riuscito. \n Verificare la connessione." "Errore"
|
|
Dim sText As String = EgtMsg(10108) & vbCrLf & EgtMsg(10109)
|
|
Dim sTitle As String = EgtMsg(10101)
|
|
MessageBox.Show(sText, sTitle, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
' Altrimenti manca la licenza
|
|
Else
|
|
EgtOutLog("Problems with Licence")
|
|
' Box di avviso licenza con problemi : sKeyInfo \n "Programma senza licenza. \n Caricala e riavvia il programma." "Errore"
|
|
Dim sKeyInfo As String = "" : EgtGetKeyInfo(sKeyInfo)
|
|
Dim sText As String = sKeyInfo & vbCrLf & EgtMsg(10105) & vbCrLf & EgtMsg(10106)
|
|
Dim sTitle As String = EgtMsg(10101)
|
|
If MessageBox.Show(sText, sTitle, MessageBoxButton.OKCancel, MessageBoxImage.Error) = MessageBoxResult.OK Then
|
|
' Apro dialogo per richiesta file licenza
|
|
Dim LicDlg As New Microsoft.Win32.OpenFileDialog() With {
|
|
.DefaultExt = ".lic",
|
|
.Filter = "Licences (.lic)|*.lic",
|
|
.CheckFileExists = True,
|
|
.ValidateNames = True
|
|
}
|
|
If LicDlg.ShowDialog() = True Then
|
|
' Recupero il direttorio del file
|
|
Dim sDir As String = Path.GetDirectoryName(LicDlg.FileName)
|
|
' Se il file non è già nel direttorio di configurazione lo copio
|
|
If Not String.Equals(Path.GetFullPath(sDir), Path.GetFullPath(IniFile.m_sConfigDir), StringComparison.OrdinalIgnoreCase) Then
|
|
Try
|
|
File.Copy(LicDlg.FileName, Path.Combine(IniFile.m_sConfigDir, LicDlg.SafeFileName), True)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
' Imposto il nuovo file di licenza nell'Ini
|
|
WritePrivateProfileString(S_GENERAL, K_LICENCE, LicDlg.SafeFileName)
|
|
End If
|
|
End If
|
|
End If
|
|
' Chiudo il programma
|
|
IniFile.m_bFailedRun = True
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
End Sub
|
|
|
|
#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 spessore linee
|
|
Dim nLineWidth As Integer = 1
|
|
nLineWidth = GetPrivateProfileInt(S_SCENE, K_LINEWIDTH, nLineWidth)
|
|
m_ProjectScene.SetLineWidth(nLineWidth)
|
|
' imposto colori di evidenziazione
|
|
Dim MarkColor As New Color3d(255, 255, 0)
|
|
GetPrivateProfileColor(S_SCENE, K_MARK, MarkColor)
|
|
m_ProjectScene.SetMarkMaterial(MarkColor)
|
|
Dim Mark2Color As New Color3d(255, 64, 64)
|
|
GetPrivateProfileColor(S_SCENE, K_MARK2, Mark2Color)
|
|
m_ProjectScene.SetMark2Material(Mark2Color)
|
|
' 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("#", IniFile.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", "EgtCAM5 Warning",
|
|
MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
End If
|
|
End If
|
|
m_Controller.SetSurfTmTolerance(OptionModule.m_dGeometryTolerance)
|
|
m_Controller.SetUseCustomColors(True, S_SCENE, K_CUSTOMCOLORS)
|
|
' imposto unità di misura per interfaccia utente
|
|
IniFile.m_bMmUnits = (GetPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
|
|
Map.refStatusBarVM.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)
|
|
Map.refStatusBarVM.UpdateStatusGrid(New UpdateStatusGridParam(IniFile.m_bDrawShowGrid, IniFile.m_bShowGridFrame))
|
|
' imposto tipo coordinate
|
|
m_bCPlaneTypePos = True
|
|
Map.refStatusBarVM.StatusCurrPosTypeText("GRID")
|
|
m_ProjectScene.SetGridCursorPos(m_bCPlaneTypePos)
|
|
' modo di visualizzazione
|
|
Dim nShowMode As Integer = GetPrivateProfileInt(S_SCENE, K_SHOWMODE, SM.SHADING)
|
|
Map.refShowPanelVM.ShowModeState(nShowMode)
|
|
' visualizzazione direzione curve
|
|
Dim nShowCurveDir As Integer = GetPrivateProfileInt(S_SCENE, K_CURVEDIR, 0)
|
|
Map.refShowPanelVM.ShowCurveDir(nShowCurveDir)
|
|
' visualizzazione avanzata dei triangoli costituenti le superfici
|
|
Dim bShowTriaAdv As Boolean = (GetPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1) <> 0)
|
|
EgtSetShowTriaAdv(bShowTriaAdv)
|
|
' tipo visualizzazione per Zmap
|
|
Dim nShowZmap As Integer = GetPrivateProfileInt(S_SCENE, K_SHOWZMAP, 1)
|
|
EgtSetShowZmap(nShowZmap, False)
|
|
' dimensione lineare max in pixel delle textures
|
|
Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096)
|
|
EgtSetTextureMaxLinPixels(nTxrMaxLinPix)
|
|
' stile corrente delle quotature
|
|
OptionModule.m_dExtLineLen = GetPrivateProfileDouble(S_DIMENSIONSTYLE, K_EXTLINELEN, 5)
|
|
OptionModule.m_dArrowLen = GetPrivateProfileDouble(S_DIMENSIONSTYLE, K_ARROWLEN, 5)
|
|
OptionModule.m_dTextDist = GetPrivateProfileDouble(S_DIMENSIONSTYLE, K_TEXTDIST, 2)
|
|
OptionModule.m_nLenIsMM = GetPrivateProfileInt(S_DIMENSIONSTYLE, K_LENISMM, 2)
|
|
OptionModule.m_nDecDigit = GetPrivateProfileInt(S_DIMENSIONSTYLE, K_DECDIGIT, -2)
|
|
OptionModule.m_sFont = "" : GetPrivateProfileStringUtf8(S_DIMENSIONSTYLE, K_DIMFONT, "ModernPropS.Nfe", m_sFont)
|
|
OptionModule.m_dTextHeight = GetPrivateProfileDouble(S_DIMENSIONSTYLE, K_TEXTHEIGHT, 2)
|
|
EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight)
|
|
' lettura da ini della variabile che abilita i gruppi di lavorazione
|
|
IniFile.m_bMachiningGroup = (GetPrivateProfileInt(S_MACH, K_MACHININGGROUP, 0) <> 0)
|
|
Map.refTopCommandBarVM.DrawMode_IsChecked()
|
|
' lettura flag visualizzazione solo tavola in definizione lavorazioni
|
|
IniFile.m_bShowOnlyTable = (GetPrivateProfileInt(S_MACH, K_SHOWONLYTABLE, 1) <> 0)
|
|
' ObjTree non selezionato
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.UpdateObjTreeOldId(GDB_ID.NULL)
|
|
' nascondo input box
|
|
If Not IsNothing(Map.refInputExpanderVM) Then Map.refInputExpanderVM.ResetInputBox()
|
|
' 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)
|
|
' Imposto default per import
|
|
m_Controller.SetScaleForDxfImport(OptionModule.m_dDxfScaleFactor)
|
|
m_Controller.SetScaleForStlImport(OptionModule.m_dStlScaleFactor)
|
|
m_Controller.SetScaleForImageImport(OptionModule.m_dImgScaleFactor)
|
|
' Imposto default per export
|
|
m_Controller.SetDefaultForDxfExport(OptionModule.m_nExportDxfFlag)
|
|
m_Controller.SetDefaultForImageExport(OptionModule.m_nImgWidth, OptionModule.m_nImgHeight)
|
|
End Sub
|
|
|
|
Friend Shared Function GetAppToShow() As Boolean
|
|
' Se non ci sono veri parametri su linea di comando, visualizzazione standard
|
|
If Environment.GetCommandLineArgs.Count() <= 1 Then Return True
|
|
' Recupero il primo vero parametro che dovrebbe essere il nome con estensione di un file
|
|
Dim sFile As String = Environment.GetCommandLineArgs(1)
|
|
Dim sExt As String = Path.GetExtension(sFile).ToLower()
|
|
' Analizzo i parametri
|
|
If sExt = ".btl" And Environment.GetCommandLineArgs.Count() > 2 Then
|
|
' Flag
|
|
Dim nFlag As Integer = 1
|
|
If Environment.GetCommandLineArgs.Count() > 3 Then Integer.TryParse(Environment.GetCommandLineArgs(3), nFlag)
|
|
' Modalità cieco con valori 0, 3 e 4
|
|
Return (nFlag <> 0 And nFlag <> 3 And nFlag <> 4)
|
|
End If
|
|
If sExt = ".bwe" And Environment.GetCommandLineArgs.Count() > 2 Then
|
|
' Flag
|
|
Dim nFlag As Integer = 1
|
|
If Environment.GetCommandLineArgs.Count() > 4 Then Integer.TryParse(Environment.GetCommandLineArgs(4), nFlag)
|
|
' Modalità cieco con valori 0, 3 e 4
|
|
Return (nFlag <> 0 And nFlag <> 3 And nFlag <> 4)
|
|
End If
|
|
If sExt = ".ddf" And Environment.GetCommandLineArgs.Count() > 2 Then
|
|
' Flag
|
|
Dim nFlag As Integer = 1
|
|
If Environment.GetCommandLineArgs.Count() > 2 Then Integer.TryParse(Environment.GetCommandLineArgs(2), nFlag)
|
|
' Modalità cieco con valori 0, 3 e 4
|
|
Return Not nFlag >= 2
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
Friend Sub ProcessCommandLine()
|
|
' Se non ci sono veri parametri su linea di comando, esco (il primo è sempre il nome del programma)
|
|
If Environment.GetCommandLineArgs.Count() <= 1 Then Return
|
|
' Recupero il primo vero parametro che dovrebbe essere il nome con estensione di un file
|
|
Dim sFile As String = Environment.GetCommandLineArgs(1)
|
|
Dim sExt As String = Path.GetExtension(sFile).ToLower()
|
|
If String.IsNullOrWhiteSpace(sFile) OrElse String.IsNullOrWhiteSpace(sExt) Then Return
|
|
' Se file btl con opzioni, gestione lavorazione travi
|
|
If sExt = ".btl" And Environment.GetCommandLineArgs.Count() > 2 Then
|
|
' Nome macchina
|
|
Dim sMachine As String = ""
|
|
If Environment.GetCommandLineArgs.Count() > 2 Then sMachine = Environment.GetCommandLineArgs(2)
|
|
' Flag
|
|
Dim nFlag As Integer = 1
|
|
If Environment.GetCommandLineArgs.Count() > 3 Then Integer.TryParse(Environment.GetCommandLineArgs(3), nFlag)
|
|
Dim bOk As Boolean = False
|
|
' Verifico se travi o pareti (dal nome della macchina)
|
|
Dim sBeamMachines As String = ""
|
|
GetPrivateProfileString(S_BEAM, K_BEAMMACHINES, "", sBeamMachines)
|
|
Dim vsBMachs() As String = sBeamMachines.Split(","c)
|
|
Dim bBeam As Boolean = False
|
|
For Each sBMach In vsBMachs
|
|
If Not String.IsNullOrWhiteSpace(sBMach) AndAlso sMachine.StartsWith(sBMach, True, CultureInfo.InvariantCulture) Then
|
|
bBeam = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
' Forzatura da eventuale parametro aggiuntivo (0=automatico, 1=forza Beam, 2= forza Wall)
|
|
Dim nForceBW As Integer = 0
|
|
If Environment.GetCommandLineArgs.Count() > 4 Then Integer.TryParse(Environment.GetCommandLineArgs(4), nForceBW)
|
|
If nForceBW = 1 Then
|
|
bBeam = True
|
|
ElseIf nForceBW = 2 Then
|
|
bBeam = False
|
|
End If
|
|
' Se Travi
|
|
If bBeam Then
|
|
' Verifica abilitazione elaborazione travi
|
|
If Not VerifyBeam(sFile, sMachine, nFlag) Then
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Esecuzione
|
|
bOk = ExecBeam(sFile, sMachine, nFlag, True)
|
|
' altrimenti pareti
|
|
Else
|
|
' Verifica abilitazione elaborazione pareti
|
|
If Not VerifyWall(sFile, sMachine, nFlag) Then
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Esecuzione
|
|
bOk = ExecWall(sFile, sMachine, nFlag, True)
|
|
End If
|
|
' Se richiesta uscita immediata
|
|
If nFlag = 0 Or nFlag = 3 Or nFlag = 4 Then
|
|
Map.refMachinePanelVM.SaveCurrentMachine()
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
' Altrimenti se richiesta visualizzazione DB utensili
|
|
ElseIf nFlag = 11 And bOk Then
|
|
MyMachinePanelVM.ToolDb()
|
|
Map.refMachinePanelVM.SaveCurrentMachine()
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
' Altrimenti se richiesta visualizzazione DB lavorazioni
|
|
ElseIf nFlag = 12 And bOk Then
|
|
MyMachinePanelVM.MachDb()
|
|
If bBeam Then
|
|
Beam.BeamMachDb()
|
|
Else
|
|
Wall.WallMachDb()
|
|
End If
|
|
Map.refMachinePanelVM.SaveCurrentMachine()
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
' Altrimenti se errore
|
|
ElseIf Not bOk Then
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
' Altrimenti si prosegue nel programma
|
|
Return
|
|
End If
|
|
' Se file ddf, gestione creazione porta con Doors
|
|
If sExt = ".ddf" Then
|
|
' Se manca direttorio uso quello di default
|
|
If String.IsNullOrWhiteSpace(Path.GetDirectoryName(sFile)) Then
|
|
Dim sDefDir As String = String.Empty
|
|
GetPrivateProfileString(S_DOORS, K_DDFDEFAULTDIR, "", sDefDir)
|
|
sFile = sDefDir & "\" & sFile
|
|
End If
|
|
' Ricoscimento flag
|
|
Dim nFlag As Integer = 0
|
|
If Environment.GetCommandLineArgs.Count() > 2 Then Integer.TryParse(Environment.GetCommandLineArgs(2), nFlag)
|
|
Dim bNcGen As Boolean = (nFlag >= 1)
|
|
Dim bExit As Boolean = (nFlag >= 2)
|
|
Dim nProbing As Integer = If(nFlag > 2, nFlag - 2, 0)
|
|
' Esecuzione
|
|
OpenDoorFile(sFile, bNcGen, bExit, nProbing)
|
|
' Se richiesta uscita immediata
|
|
If bExit Then Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Se file tol, gestione aggiornamento dei dati degli utensili
|
|
If sExt = ".tol" Then
|
|
' Recupero nome macchina
|
|
Dim sMachine As String = String.Empty
|
|
If Environment.GetCommandLineArgs.Count() > 2 Then sMachine = Environment.GetCommandLineArgs(2)
|
|
' Recupero flag
|
|
Dim nFlag As Integer = 0
|
|
If Environment.GetCommandLineArgs.Count() > 3 Then Integer.TryParse(Environment.GetCommandLineArgs(3), nFlag)
|
|
Dim bTest As Boolean = (nFlag = 0)
|
|
' Esecuzione
|
|
UpdateTools(sFile, sMachine, bTest)
|
|
' Uscita immediata
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Se file bwe, gestione file da calcolare per Beam&Wall
|
|
If sExt = ".bwe" And Environment.GetCommandLineArgs.Count() > 2 Then
|
|
' recupero tipo di progetto : 1 = travi, 2 = pareti, 3 = sandwich
|
|
Dim nBWType As Integer = 0
|
|
If Environment.GetCommandLineArgs.Count() > 2 Then Integer.TryParse(Environment.GetCommandLineArgs(2), nBWType)
|
|
' recupero nome macchina
|
|
Dim sMachine As String = ""
|
|
If Environment.GetCommandLineArgs.Count() > 3 Then sMachine = Environment.GetCommandLineArgs(3)
|
|
'' Flag
|
|
Dim nFlag As Integer = 0
|
|
If Environment.GetCommandLineArgs.Count() > 4 Then Integer.TryParse(Environment.GetCommandLineArgs(4), nFlag)
|
|
Dim bOk As Boolean = False
|
|
If nBWType = 1 Then
|
|
' Verifica abilitazione elaborazione travi
|
|
If Not VerifyBeam(sFile, sMachine, nFlag) Then
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Esecuzione
|
|
bOk = ExecBeam(sFile, sMachine, nFlag, False)
|
|
' altrimenti pareti
|
|
ElseIf nBWType = 2 Then
|
|
' Verifica abilitazione elaborazione pareti
|
|
If Not VerifyWall(sFile, sMachine, nFlag) Then
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
Return
|
|
End If
|
|
' Esecuzione
|
|
bOk = ExecWall(sFile, sMachine, nFlag, False)
|
|
End If
|
|
' Se richiesta uscita immediata
|
|
If nFlag = 0 Or nFlag = 3 Or nFlag = 4 Then
|
|
Map.refMachinePanelVM.SaveCurrentMachine()
|
|
Map.refMainWindowVM.CloseApplicationCmd()
|
|
' Altrimenti se errore
|
|
ElseIf Not bOk Then
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
' Altrimenti si prosegue nel programma
|
|
Return
|
|
End If
|
|
' Altrimenti gestione file standard
|
|
OpenStdFile(sFile)
|
|
End Sub
|
|
|
|
Friend Function OpenStdFile(sFile As String) As Boolean
|
|
Dim nFileType As Integer = EgtGetFileType(sFile)
|
|
Select Case nFileType
|
|
Case FT.NGE, FT.NFE
|
|
Return m_Controller.OpenProject(sFile, False)
|
|
Case FT.DXF, FT.STL, FT._3MF, FT._3DM, FT.OFF, FT.OBJ, FT.CNC, FT.CSF, FT.BTL, FT.BTLX, FT.IMG, FT.PNT, FT.IGES, FT.STEP_, FT.ACIS, FT.PARASOLID, FT.JT, FT.VRML, FT.C3D
|
|
Return m_Controller.ImportProject(sFile, False)
|
|
Case FT.TSC, FT.LUA
|
|
Return m_Controller.Exec(sFile, False)
|
|
End Select
|
|
Return False
|
|
End Function
|
|
|
|
Friend Function OpenDoorFile(sFile As String, Optional bNcGen As Boolean = False, Optional bBatch As Boolean = False, Optional nProbing As Integer = 0) As Boolean
|
|
Dim nErr As Integer = 0
|
|
' Formato descrizione porte
|
|
If Path.GetExtension(sFile).ToLower() = ".ddf" Then
|
|
nErr = ExecDoors(m_ProjectScene, sFile, bNcGen, bBatch, nProbing)
|
|
'CreateDoors(sFile, bNcGen, bBatch, nProbing)
|
|
Map.refProjectVM.EmitTitle()
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
Friend Sub EmitTitle()
|
|
' nome file
|
|
Dim sTitle As String = m_Controller.GetCurrFile()
|
|
If String.IsNullOrEmpty(sTitle) Then
|
|
sTitle = EgtMsg(MSG_TOPCOMMANDBAR + 1) & IniFile.m_nInstance.ToString()
|
|
End If
|
|
' indicazione di modificato
|
|
If m_Controller.GetModified() Then
|
|
sTitle += "*"
|
|
End If
|
|
' dati del prodotto
|
|
sTitle += " - EgtCAM5"
|
|
' emissione del titolo
|
|
Map.refMainWindowVM.UpdateMainWindowTitle(sTitle)
|
|
End Sub
|
|
|
|
Friend 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
|
|
|
|
Friend Sub UpdateProjectUI(bReloadUI As Boolean)
|
|
OnUpdateUI(Nothing, bReloadUI)
|
|
End Sub
|
|
|
|
Friend Sub SetMoveInDisposition(bMoveInDisposition As Boolean)
|
|
Me.bMoveInDisposition = bMoveInDisposition
|
|
End Sub
|
|
|
|
Friend Sub DrawMode_IsChecked()
|
|
' Ripristino il riferimento della griglia di disegno
|
|
EgtSetGridFrame(m_GridDrawFrame3d)
|
|
m_ProjectScene.SetObjFilterForSel(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra)
|
|
Map.refStatusBarVM.UpdateStatusGrid(New UpdateStatusGridParam(IniFile.m_bDrawShowGrid, IniFile.m_bShowGridFrame))
|
|
End Sub
|
|
|
|
Friend Sub MachiningMode_IsChecked()
|
|
' Salvo il Frame3d di disegno
|
|
m_GridDrawFrame3d = EgtGetGridFrame()
|
|
' sposto la griglia sulla tavola di lavorazione
|
|
Dim TableRef As Point3d
|
|
EgtGetTableRef(1, TableRef)
|
|
EgtSetGridFrame(New Frame3d(TableRef))
|
|
m_ProjectScene.GetObjFilterForSel(m_bSelZeroDim, m_bSelCurve, m_bSelSurf, m_bSelVolume, m_bSelExtra)
|
|
Map.refStatusBarVM.UpdateStatusGrid(New UpdateStatusGridParam(IniFile.m_bMachiningShowGrid, IniFile.m_bShowGridFrame))
|
|
End Sub
|
|
|
|
#Region "Manage TopCommandBar"
|
|
|
|
' NON USATO!!!!
|
|
Friend Sub OpenProject(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
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
End Sub
|
|
|
|
Friend Sub SaveProject()
|
|
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" & IniFile.m_nInstance.ToString() & ".nge"
|
|
m_Controller.SaveAsProject(sFile, nType)
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub SaveAsProject()
|
|
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" & IniFile.m_nInstance.ToString() & ".nge"
|
|
End If
|
|
m_Controller.SaveAsProject(sFile, nType)
|
|
End Sub
|
|
|
|
Friend Sub InsertProject()
|
|
' eseguo
|
|
Dim sDir As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LASTNGEINSDIR, "", sDir)
|
|
m_Controller.InsertProject(sDir)
|
|
End Sub
|
|
|
|
Friend Sub ImportProject()
|
|
Dim sDir As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LASTIMPDIR, "", sDir)
|
|
m_Controller.ImportProject(sDir)
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
End Sub
|
|
|
|
Friend Sub ExportProject()
|
|
m_Controller.ExportProject(Path.ChangeExtension(m_Controller.GetCurrFile(), "dxf"))
|
|
End Sub
|
|
|
|
Friend Sub PreExecScript(bScriptInMru As Boolean)
|
|
m_bScriptInMru = bScriptInMru
|
|
End Sub
|
|
|
|
Friend Sub ExecScript(sFilePath As String, Optional bRaiseEvent As Boolean = False)
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
Dim sDir As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LASTLUADIR, "", sDir)
|
|
m_Controller.Exec(sDir)
|
|
Else
|
|
If bRaiseEvent Then RaiseEvent OnPreControllerExec(sFilePath)
|
|
m_Controller.Exec(sFilePath, False)
|
|
If bRaiseEvent Then RaiseEvent OnPostControllerExec()
|
|
End If
|
|
Dim bMachiningMode As Boolean = EgtGetCurrMachGroup() <> GDB_ID.NULL
|
|
If Not bMachiningMode And EgtGetCurrLayer() = GDB_ID.NULL Then
|
|
Dim nCurrPart As Integer = EgtGetCurrPart()
|
|
If nCurrPart = GDB_ID.NULL Or Not EgtSetCurrPartLayer(nCurrPart, EgtGetFirstLayer(nCurrPart, True)) Then
|
|
EgtResetCurrPartLayer()
|
|
End If
|
|
EmitCurrPartLayer()
|
|
End If
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
If bMachiningMode Then Map.refTopCommandBarVM.SetMachiningMode()
|
|
End Sub
|
|
|
|
Friend Sub DoorsScript(sFilePath As String)
|
|
Dim nErr As Integer
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
nErr = ExecDoors(m_ProjectScene, String.Empty)
|
|
Else
|
|
nErr = ExecDoors(m_ProjectScene, sFilePath)
|
|
End If
|
|
'EgtResetCurrPartLayer()
|
|
'OnUpdateUI(Nothing, True)
|
|
'Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
IniFile.m_MruDoors.Add(IniFile.m_DDFFilePath)
|
|
Dim sFile As String = String.Empty
|
|
If EgtGetCurrFilePath(sFile) Then IniFile.m_MruFiles.Add(sFile)
|
|
End Sub
|
|
|
|
Friend Sub DMachScript()
|
|
Dim bOk As Boolean = ExecDoorsMachining(m_ProjectScene)
|
|
OnUpdateUI(Nothing, True)
|
|
If EgtGetCurrMachGroup() <> GDB_ID.NULL Then
|
|
Map.refTopCommandBarVM.SetMachiningMode()
|
|
End If
|
|
If Not bOk Then Map.refStatusBarVM.NotifyStatusOutput(EgtMsg(MSG_DOORSERRORS + 2))
|
|
End Sub
|
|
|
|
Friend Sub GunStockNew(sFilePath As String)
|
|
Dim bOk As Boolean
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
bOk = ExecGunStockMod(m_ProjectScene, String.Empty)
|
|
Else
|
|
bOk = ExecGunStockMod(m_ProjectScene, sFilePath)
|
|
End If
|
|
EgtResetCurrPartLayer()
|
|
OnUpdateUI(Nothing, True)
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
If EgtGetCurrMachGroup() <> GDB_ID.NULL Then
|
|
Map.refTopCommandBarVM.SetMachiningMode()
|
|
End If
|
|
If bOk Then
|
|
IniFile.m_MruNewGunStock.Add(IniFile.m_MODFilePath)
|
|
IniFile.m_MruModifyGunStock.Add(IniFile.m_PEZFilePath)
|
|
Dim sFile As String = String.Empty
|
|
If EgtGetCurrFilePath(sFile) Then
|
|
IniFile.m_MruFiles.Add(sFile)
|
|
End If
|
|
Else
|
|
IniFile.m_MruNewGunStock.Remove(IniFile.m_MODFilePath)
|
|
If Not String.IsNullOrEmpty(IniFile.m_PEZFilePath) Then
|
|
Try
|
|
Dim sErrFilePath As String = Path.ChangeExtension(IniFile.m_PEZFilePath, ".txt")
|
|
Dim Lines() As String = File.ReadAllLines(sErrFilePath)
|
|
Dim values() As String = Lines(0).Split("="c)
|
|
Lines(0) = EgtMsg(MSG_DOORSERRORS + 1) & " " & Convert.ToInt32(values(1))
|
|
Dim sErrMsg As String = String.Empty
|
|
For Index = 1 To Lines.Count - 1
|
|
If Not String.IsNullOrWhiteSpace(Lines(Index)) Then sErrMsg &= Lines(Index) & vbCrLf
|
|
Next
|
|
MessageBox.Show(sErrMsg, Lines(0).ToUpper, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Catch ex As Exception
|
|
MessageBox.Show(EgtMsg(MSG_DOORSERRORS + 7))
|
|
End Try
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub GunStockModif(sFilePath As String)
|
|
Dim bOk As Boolean
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
bOk = ExecGunStockPez(m_ProjectScene, String.Empty)
|
|
Else
|
|
bOk = ExecGunStockPez(m_ProjectScene, sFilePath)
|
|
End If
|
|
EgtResetCurrPartLayer()
|
|
OnUpdateUI(Nothing, True)
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTreeNoMark(EgtGetCurrLayer())
|
|
If EgtGetCurrMachGroup() <> GDB_ID.NULL Then
|
|
Map.refTopCommandBarVM.SetMachiningMode()
|
|
End If
|
|
If bOk Then
|
|
IniFile.m_MruModifyGunStock.Add(IniFile.m_PEZFilePath)
|
|
Dim sFile As String = String.Empty
|
|
If EgtGetCurrFilePath(sFile) Then
|
|
IniFile.m_MruFiles.Add(sFile)
|
|
End If
|
|
Else
|
|
IniFile.m_MruModifyGunStock.Remove(IniFile.m_PEZFilePath)
|
|
Try
|
|
Dim sErrFilePath As String = Path.ChangeExtension(IniFile.m_PEZFilePath, ".txt")
|
|
Dim Lines() As String = File.ReadAllLines(sErrFilePath)
|
|
Dim values() As String = Lines(0).Split("="c)
|
|
Lines(0) = EgtMsg(MSG_DOORSERRORS + 1) & " " & Convert.ToInt32(values(1))
|
|
Dim sErrMsg As String = String.Empty
|
|
For Index = 1 To Lines.Count - 1
|
|
If Not String.IsNullOrWhiteSpace(Lines(Index)) Then sErrMsg &= Lines(Index) & vbCrLf
|
|
Next
|
|
MessageBox.Show(sErrMsg, Lines(0).ToUpper, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Catch ex As Exception
|
|
MessageBox.Show(EgtMsg(MSG_DOORSERRORS + 7))
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Friend Sub GunStockCopy(sFilePath As String, sDirDest As String)
|
|
Dim bOk As Boolean
|
|
bOk = ExecGunStockCopy(m_ProjectScene, sFilePath, sDirDest)
|
|
If bOk Then
|
|
' Copia dei file terminata con successo ...
|
|
Dim sMsg As String = EgtMsg(8216) & vbCrLf & sFilePath & vbCrLf & "->" & sDirDest
|
|
MessageBox.Show(sMsg, EgtMsg(8214), MessageBoxButton.OK, MessageBoxImage.Information)
|
|
Else
|
|
' Errore nella copia dei file ...
|
|
Dim sMsg As String = EgtMsg(8255) & vbCrLf & sFilePath & vbCrLf & "->" & sDirDest
|
|
MessageBox.Show(sMsg, EgtMsg(8251), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "DrawOptionPanel Commands"
|
|
|
|
Friend Sub NotifyInputText(sInputText As String)
|
|
m_InputText = sInputText
|
|
End Sub
|
|
|
|
Friend Sub SetLastBoolean(bBoolean As Boolean)
|
|
m_Controller.SetLastBoolean(bBoolean)
|
|
End Sub
|
|
|
|
Friend Sub SetLastInteger(nInteger As Integer)
|
|
m_Controller.SetLastInteger(nInteger)
|
|
End Sub
|
|
|
|
Friend Sub Show(sString As String)
|
|
m_Controller.Show(sString)
|
|
End Sub
|
|
|
|
Friend Sub Done(sString As String)
|
|
m_Controller.Done(sString)
|
|
End Sub
|
|
|
|
Friend Sub SaveObject(SaveObjectParam As SaveObjectParam)
|
|
m_Controller.SaveObject(SaveObjectParam.nId, SaveObjectParam.sDir, SaveObjectParam.nType)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "StatusBar Commands"
|
|
|
|
Friend Sub StatusCurrPosTypeCommand()
|
|
m_bCPlaneTypePos = Not m_bCPlaneTypePos
|
|
If m_bCPlaneTypePos Then
|
|
Map.refStatusBarVM.StatusCurrPosTypeText("GRID")
|
|
Else
|
|
Map.refStatusBarVM.StatusCurrPosTypeText("WORLD")
|
|
End If
|
|
m_ProjectScene.SetGridCursorPos(m_bCPlaneTypePos)
|
|
End Sub
|
|
|
|
Friend Sub StatusUnitsCommand()
|
|
IniFile.m_bMmUnits = Not IniFile.m_bMmUnits
|
|
Map.refStatusBarVM.UpdateStatusUnits(IniFile.m_bMmUnits)
|
|
UpdateGridData()
|
|
EgtDraw()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Controller Commands"
|
|
|
|
Friend Sub ExecuteCommand(nCmd As Controller.CMD)
|
|
m_Controller.ExecuteCommand(nCmd)
|
|
End Sub
|
|
|
|
Friend Sub ManageModified()
|
|
Dim AllowClose = m_Controller.ManageModified()
|
|
Map.refMainWindowVM.AllowWindowToClose(AllowClose)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "MainWindow Commands"
|
|
|
|
Friend Sub ResetStatus()
|
|
m_Controller.ResetStatus()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#End Region
|
|
|
|
#Region "SCENE EVENTS"
|
|
|
|
Private Sub OnCursorPos(ByVal sender As Object, ByVal sCursorPos As String) Handles m_ProjectScene.OnCursorPos
|
|
Map.refStatusBarVM.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, bOnlyVisble As Boolean) Handles m_ProjectScene.OnMouseSelectedAll
|
|
' Se in modalità Draw seleziono tutto
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then
|
|
m_Controller.MouseSelectedAll(bOnlyVisble)
|
|
Return
|
|
End If
|
|
' Sono in modalità Machining, se la modalità di selezione è NULL non seleziono nulla ed esco
|
|
If m_SceneSelMode = SceneSelModeOpt.NULL Then Return
|
|
Select Case m_SceneSelType
|
|
Case SceneSelTypeOpt.MACHINING
|
|
' 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
|
|
Case SceneSelTypeOpt.FIXTURE
|
|
Dim nFixtureId As Integer = EgtGetFirstFixture()
|
|
While nFixtureId <> GDB_ID.NULL
|
|
EgtSelectObj(nFixtureId)
|
|
nFixtureId = EgtGetNextFixture(nFixtureId)
|
|
End While
|
|
Dim SelCount As Integer = EgtGetSelectedObjCount()
|
|
If SelCount > 1 Then
|
|
EgtSetMark(EgtGetFirstSelectedObj)
|
|
End If
|
|
Case SceneSelTypeOpt.RAWPART
|
|
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
|
While nRawPartId <> GDB_ID.NULL
|
|
If EgtVerifyRawPartCurrPhase(nRawPartId) Then
|
|
EgtSelectObj(nRawPartId)
|
|
End If
|
|
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
|
End While
|
|
Dim SelCount As Integer = EgtGetSelectedObjCount()
|
|
If SelCount > 1 Then
|
|
EgtSetMark(EgtGetFirstSelectedObj)
|
|
End If
|
|
Case SceneSelTypeOpt.RAWPARTWITHFIXTURE
|
|
Dim nRawPartCount As Integer = 0
|
|
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
|
While nRawPartId <> GDB_ID.NULL
|
|
If EgtVerifyRawPartCurrPhase(nRawPartId) Then
|
|
nRawPartCount += 1
|
|
EgtSelectObj(nRawPartId)
|
|
DispositionUtility.SelectRawPartFixture(nRawPartId)
|
|
End If
|
|
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
|
End While
|
|
If nRawPartCount > 1 Then
|
|
EgtSetMark(EgtGetFirstSelectedObj)
|
|
End If
|
|
End Select
|
|
EgtDraw()
|
|
End Sub
|
|
|
|
Private Sub OnMouseDeselectedAll(ByVal sender As Object) Handles m_ProjectScene.OnMouseDeselectedAll
|
|
' Se in modalità Draw deseleziono tutto
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then
|
|
m_Controller.MouseDeselectedAll(True)
|
|
Return
|
|
End If
|
|
' Sono in modalità Machining, se la modalità di selezione è NULL non deseleziono nulla ed esco
|
|
If m_SceneSelMode = SceneSelModeOpt.NULL Then Return
|
|
' Se sono in lavorazione
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.MACHINING Then
|
|
If (m_SceneSelType = SceneSelTypeOpt.RAWPART OrElse m_SceneSelType = SceneSelTypeOpt.FIXTURE OrElse m_SceneSelType = SceneSelTypeOpt.RAWPARTWITHFIXTURE) Then
|
|
EgtResetMark(EgtGetFirstSelectedObj())
|
|
ElseIf m_SceneSelType = SceneSelTypeOpt.MACHINING Then
|
|
SelData.ClearIdSub()
|
|
ElseIf m_SceneSelType = SceneSelTypeOpt.NULL Then
|
|
Return
|
|
End If
|
|
End If
|
|
' deseleziono tutto
|
|
m_Controller.MouseDeselectedAll()
|
|
End Sub
|
|
|
|
' Identificativi per elemento da selezionare/deselezionare
|
|
Private m_nIdToSel As Integer = GDB_ID.NULL
|
|
Private m_SelType As DispositionUtility.SelType = DispositionUtility.SelType.NULL
|
|
Private m_nIdToDesel As Integer = GDB_ID.NULL
|
|
Private m_nSelOpeId As Integer = GDB_ID.NULL
|
|
|
|
' Dati per Drag
|
|
Private m_nRestRadius As Integer = 3
|
|
Private m_bDrag As Boolean = False
|
|
Private m_bDragToStart As Boolean = False
|
|
Private m_bDragging As Boolean = False
|
|
Private m_locPrev As System.Drawing.Point
|
|
Private m_ptPrev As Point3d
|
|
|
|
Private Sub OnStartingMouseDown(ByVal sender As Object, e As System.Windows.Forms.MouseEventArgs, ByRef bContinue As Boolean) Handles m_ProjectScene.OnStartingMouseDownScene
|
|
' Se in modalità Draw accetto tutto
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then Return
|
|
' Sono in modalità Machining
|
|
' se non posso selezionare nulla o in lavorazione esco
|
|
If m_SceneSelType = SceneSelTypeOpt.NULL OrElse
|
|
m_SceneSelType = SceneSelTypeOpt.MACHINING OrElse
|
|
m_SceneSelType = SceneSelTypeOpt.MACHPATH Then Return
|
|
' Si può selezionare solo con il tasto sinistro
|
|
If e.Button <> Forms.MouseButtons.Left Then Return
|
|
' Si Sostituisce completamente la gestione dell'evento chiamante
|
|
bContinue = False
|
|
' Dati per drag
|
|
Dim TableRef As Point3d
|
|
EgtGetTableRef(1, TableRef)
|
|
' Per default no drag
|
|
m_bDrag = False
|
|
Dim nSel As Integer
|
|
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
|
|
Dim nId As Integer = EgtGetFirstObjInSelWin()
|
|
While nId <> GDB_ID.NULL
|
|
Select Case m_SceneSelType
|
|
Case SceneSelTypeOpt.FIXTURE
|
|
Dim nFixtureId As Integer = EgtGetParent(EgtGetParent(nId))
|
|
'Dim sName As String = ""
|
|
'EgtGetName(EgtGetParent(nId), sName)
|
|
If EgtVerifyFixture(nFixtureId) Then
|
|
m_SelType = DispositionUtility.SelType.FIXTURE
|
|
' Se già selezionato
|
|
If EgtIsSelectedObj(nFixtureId) Then
|
|
' Memorizzo Id da deselezionare
|
|
m_nIdToDesel = nFixtureId
|
|
Else
|
|
' Memorizzo Id da selezionare
|
|
m_nIdToSel = nFixtureId
|
|
End If
|
|
' Drag possibile
|
|
m_bDrag = True
|
|
' salvo vettore click rispetto a punto hook della ventosa
|
|
Dim ptCurr As Point3d
|
|
EgtGetPlaneSnapPoint(e.Location, Vector3d.Z_AX, TableRef.z, ptCurr)
|
|
DispositionUtility.VtHookFinder(nFixtureId, ptCurr)
|
|
Exit While
|
|
ElseIf DispositionUtility.VerifyTableAxis( nFixtureId) Then
|
|
m_SelType = DispositionUtility.SelType.BARS
|
|
m_nIdToSel = nFixtureId
|
|
' Drag possibile
|
|
m_bDrag = True
|
|
Exit While
|
|
End If
|
|
Case SceneSelTypeOpt.RAWPART, SceneSelTypeOpt.RAWPARTWITHFIXTURE
|
|
Dim nRawPartId As Integer = EgtGetParent(nId)
|
|
If EgtVerifyRawPartCurrPhase(nRawPartId) Then
|
|
m_SelType = DispositionUtility.SelType.RAWPART
|
|
' Se già selezionato
|
|
If EgtIsSelectedObj(nRawPartId) Then
|
|
' Memorizzo Id da deselezionare
|
|
m_nIdToDesel = nRawPartId
|
|
Else
|
|
' Memorizzo Id da selezionare
|
|
m_nIdToSel = nRawPartId
|
|
End If
|
|
' Drag possibile
|
|
m_bDrag = True
|
|
Exit While
|
|
End If
|
|
End Select
|
|
nId = EgtGetNextObjInSelWin()
|
|
End While
|
|
' Dati per drag
|
|
m_locPrev = e.Location
|
|
EgtGetTableRef(1, TableRef)
|
|
m_bDrag = m_bDrag AndAlso EgtGetPlaneSnapPoint(e.Location, Vector3d.Z_AX, TableRef.z, m_ptPrev)
|
|
m_bDragToStart = m_bDrag
|
|
End Sub
|
|
|
|
Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_ProjectScene.OnMouseMoveScene
|
|
' Se in modalità Draw esco
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then
|
|
Return
|
|
End If
|
|
' Sono in modalità Machining
|
|
' Si può selezionare solo con il tasto sinistro se la selezione non è impostata a NULL
|
|
If e.Button <> Forms.MouseButtons.Left OrElse m_SceneSelType = SceneSelTypeOpt.NULL Then Return
|
|
' se non sono in modalità muovi esco
|
|
If Not m_bMoveInDisposition Then Return
|
|
' Se drag non abilitato o già in esecuzione, esco
|
|
If Not m_bDrag Or m_bDragging Then Return
|
|
' Se primo movimento di drag, verifico di aver superato la soglia di movimento in pixel
|
|
If m_bDragToStart Then
|
|
If Math.Abs(e.Location.X - m_locPrev.X) < m_nRestRadius And
|
|
Math.Abs(e.Location.Y - m_locPrev.Y) < m_nRestRadius Then
|
|
Return
|
|
End If
|
|
m_bDragToStart = False
|
|
End If
|
|
' Determino cosa muovere
|
|
Dim nMoveId = If(m_nIdToSel <> GDB_ID.NULL, m_nIdToSel, GDB_ID.SEL)
|
|
' Inizio esecuzione di drag
|
|
m_bDragging = True
|
|
' Ricavo il punto corrente in coordinate mondo
|
|
Dim ptCurr As Point3d
|
|
Dim TableRef As Point3d
|
|
EgtGetTableRef(1, TableRef)
|
|
EgtGetPlaneSnapPoint(e.Location, Vector3d.Z_AX, TableRef.z, ptCurr)
|
|
' Ricavo il vettore di movimento (tengo solo XY)
|
|
Dim vtMove As Vector3d = ptCurr - m_ptPrev
|
|
vtMove.z = 0
|
|
' Muovo gli oggetti selezionati se consentito
|
|
DispositionUtility.MoveRawPartPartAndFixture(nMoveId, vtMove, m_SelType, ptCurr)
|
|
EgtDraw()
|
|
' Aggiorno il punto precedente
|
|
m_ptPrev = ptCurr
|
|
' Terminata esecuzione di drag
|
|
m_bDragging = False
|
|
End Sub
|
|
|
|
Private Sub OnMyMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_ProjectScene.OnMouseUpScene
|
|
' Se in modalità Draw esco
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then
|
|
Return
|
|
End If
|
|
' Sono in modalità Machining
|
|
' Se eseguito drag
|
|
If Not m_bDragToStart Then
|
|
' Basta reset alla fine
|
|
' se sono in modalità movimento barre
|
|
ElseIf m_SelType = DispositionUtility.SelType.BARS Then
|
|
' Basta reset alla fine
|
|
' Se selezione da eseguire
|
|
ElseIf m_nIdToSel <> GDB_ID.NULL Then
|
|
' se sono in modalità sottopezzi
|
|
If m_SceneSelType = SceneSelTypeOpt.FIXTURE Then
|
|
' se il sottopezzo da selezionare è un riferimento e ci sono altri oggetti selezionati resetto lo stato di selezione ed esco
|
|
If DispositionUtility.FixtureType(m_nIdToSel) = DispositionUtility.FIX_TYPE.REFERENCE AndAlso
|
|
EgtGetSelectedObjCount() > 0 Then
|
|
m_bDrag = False
|
|
m_nIdToSel = GDB_ID.NULL
|
|
m_nIdToDesel = GDB_ID.NULL
|
|
EgtDraw()
|
|
Return
|
|
' altrimenti verifico il tipo del primo oggetto selezionato
|
|
Else
|
|
Dim nFirstSelId As Integer = EgtGetFirstSelectedObj()
|
|
' se è un riferimento resetto lo stato di selezione ed esco
|
|
If DispositionUtility.FixtureType(nFirstSelId) = DispositionUtility.FIX_TYPE.REFERENCE Then
|
|
m_bDrag = False
|
|
m_nIdToSel = GDB_ID.NULL
|
|
m_nIdToDesel = GDB_ID.NULL
|
|
EgtDraw()
|
|
Return
|
|
End If
|
|
End If
|
|
End If
|
|
' marco il primo elemento se questo è il secondo
|
|
If EgtGetSelectedObjCount() = 1 Then
|
|
' marco il primo tra i selezionati
|
|
Dim nFirstSelObj As Integer = EgtGetFirstSelectedObj()
|
|
EgtSetMark(nFirstSelObj)
|
|
End If
|
|
' se sono in modalità grezzo con relativi sottopezzi
|
|
If m_SceneSelType = SceneSelTypeOpt.RAWPARTWITHFIXTURE Then
|
|
' seleziono tutti i sottopezzi sotto il grezzo da selezionare
|
|
DispositionUtility.SelectRawPartFixture(m_nIdToSel)
|
|
End If
|
|
' Eseguo la selezione
|
|
EgtSelectObj(m_nIdToSel)
|
|
' Se deselezione da eseguire
|
|
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
|
|
' se l'elemento da deselezionare è marcato
|
|
Dim bMarked As Boolean = False
|
|
EgtGetMark(m_nIdToDesel, bMarked)
|
|
If bMarked Then
|
|
' smarco l'oggetto deselezionato
|
|
EgtResetMark(m_nIdToDesel)
|
|
End If
|
|
' se sono in modalità ventose o grezzi
|
|
If m_SceneSelType = SceneSelTypeOpt.RAWPARTWITHFIXTURE Then
|
|
' deseleziono tutti i sottopezzi sotto il grezzo da deselezionare
|
|
DispositionUtility.DeselectRawPartFixture(m_nIdToDesel)
|
|
End If
|
|
' Eseguo la deselezione
|
|
EgtDeselectObj(m_nIdToDesel)
|
|
If EgtGetSelectedObjCount() > 1 Then
|
|
' marco il primo
|
|
Dim nFirstSelObj As Integer = EgtGetFirstSelectedObj()
|
|
EgtSetMark(nFirstSelObj)
|
|
Else
|
|
' smarco il primo ed unico oggetto selezionato
|
|
Dim nFirstSelObj As Integer = EgtGetFirstSelectedObj()
|
|
EgtResetMark(nFirstSelObj)
|
|
End If
|
|
End If
|
|
' Reset
|
|
m_bDrag = False
|
|
m_nIdToSel = GDB_ID.NULL
|
|
m_nIdToDesel = GDB_ID.NULL
|
|
EgtDraw()
|
|
End Sub
|
|
|
|
Private Sub OnStartingMouseSelectingObj(ByVal sender As Object) Handles m_ProjectScene.OnStartingMouseSelectingObj
|
|
m_nSelOpeId = GDB_ID.NULL
|
|
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
|
|
' Impedisco la selezione di oggetti in modo Locked o Hidden
|
|
Dim nMode As Integer = GDB_MD.STD
|
|
EgtGetCalcMode(nId, nMode)
|
|
If nMode <> GDB_MD.STD Then
|
|
bOk = False
|
|
Return
|
|
End If
|
|
' Se in modalità Draw accetto tutto
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.DRAW OrElse IniFile.m_ProjectMode = ProjectModeOpt.ONLYDRAW Then Return
|
|
' Sono in modalità Machining
|
|
Select Case m_SceneSelType
|
|
Case SceneSelTypeOpt.NULL
|
|
bOk = False
|
|
Case SceneSelTypeOpt.MACHINING
|
|
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
|
|
If Not IsPartInRaw(nPartId) Then
|
|
bOk = False
|
|
End If
|
|
Case SceneSelTypeOpt.MACHPATH
|
|
Dim nCurrOpeId As Integer = Map.refOperationsListExpanderVM.GetOperationId(nId)
|
|
bOk = (nCurrOpeId <> GDB_ID.NULL AndAlso nCurrOpeId <> m_nSelOpeId)
|
|
If m_nSelOpeId = GDB_ID.NULL Then m_nSelOpeId = nCurrOpeId
|
|
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
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.MACHINING And m_SceneSelType = SceneSelTypeOpt.MACHPATH Then
|
|
Map.refOperationsListExpanderVM.SelOperationItemFromId(nId)
|
|
ElseIf IniFile.m_ProjectMode = ProjectModeOpt.MACHINING And m_SceneSelType = SceneSelTypeOpt.MACHINING And
|
|
(EgtGetType(nId) = GDB_TY.SRF_MESH Or EgtGetType(nId) = GDB_TY.SRF_FRGN) Then
|
|
If Not EgtIsSelectedObj(nId) Then m_Controller.MouseSelectedObj(nId, bLast)
|
|
Else
|
|
m_Controller.MouseSelectedObj(nId, bLast)
|
|
End If
|
|
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)
|
|
If IniFile.m_ProjectMode = ProjectModeOpt.MACHINING And m_SceneSelType = SceneSelTypeOpt.MACHINING And
|
|
(EgtGetType(nId) = GDB_TY.SRF_MESH Or EgtGetType(nId) = GDB_TY.SRF_FRGN) Then
|
|
If EgtIsSelectedObj(nId) Then
|
|
Dim nFac As Integer = If(EgtGetType(nId) = GDB_TY.SRF_MESH, Math.Max(EgtSurfTmFacetFromTria(nId, nAux), 0), nAux)
|
|
If Not SelData.FindIdSub(nId, nFac) Then
|
|
SelData.AddIdSub(nId, nFac)
|
|
Else
|
|
SelData.RemoveIdSub(nId, nFac)
|
|
If Not SelData.FindId(nId) Then
|
|
EgtDeselectObj(nId)
|
|
End If
|
|
End If
|
|
Else
|
|
SelData.RemoveId(nId)
|
|
End If
|
|
EgtDraw()
|
|
End If
|
|
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 OnMouseAnalyzedEx(sender As Object, nId As Integer, nSub As Integer, ptSel As Point3d) Handles m_ProjectScene.OnMouseAnalyzedEx
|
|
Map.refManageLayerExpanderVM.UpdateObjInObjTree(nId)
|
|
Map.refManageLayerExpanderVM.SelectIdInObjTree(nId)
|
|
' Cancello geometria e info di eventuale precedente analisi
|
|
Analyze.ClearAnalyzeGroup()
|
|
Map.refStatusBarVM.NotifyStatusOutput("")
|
|
' Se curva composita, visualizzo numerazione curve semplici
|
|
If EgtGetType(nId) = GDB_TY.CRV_COMPO Then
|
|
' Visualizzo numerazione
|
|
Analyze.CreateAnalyzeGroup()
|
|
Analyze.CreateCurveCompoPntNbrs(nId)
|
|
' Se superficie trimesh, visualizzo dati faccetta toccata
|
|
ElseIf EgtGetType(nId) = GDB_TY.SRF_MESH Then
|
|
Dim nFac As Integer = EgtSurfTmFacetFromTria(nId, nSub)
|
|
If nFac <> -1 Then
|
|
' Visualizzo la normale e il contorno della faccia
|
|
Analyze.CreateAnalyzeGroup()
|
|
Analyze.CreateFacetNormal(nId, nFac)
|
|
Analyze.CreateFacetLoops(nId, nFac)
|
|
' Recupero i dati (in globale o griglia a seconda della impostazione)
|
|
Dim ptC As Point3d
|
|
Dim vtN As Vector3d
|
|
EgtSurfTmFacetCenter(nId, nFac, If(m_bCPlaneTypePos, GDB_ID.GRID, GDB_ID.ROOT), ptC, vtN)
|
|
Dim dLen, dPhi, dTheta As Double
|
|
vtN.ToSpherical(dLen, dTheta, dPhi)
|
|
' Emetto info sulla barra di stato
|
|
Dim sOut As String = "Facet " + nFac.ToString() +
|
|
" : C(" + LenToString(ptC.x, 3) + "," + LenToString(ptC.y, 3) + "," + LenToString(ptC.z, 3) + ")" +
|
|
" N(" + DoubleToString(vtN.x, 4) + "," + DoubleToString(vtN.y, 4) + "," + DoubleToString(vtN.z, 4) + ")" +
|
|
" / φ=" + DoubleToString(dPhi, 2) + " θ=" + DoubleToString(dTheta, 2)
|
|
Map.refStatusBarVM.NotifyStatusOutput(sOut)
|
|
End If
|
|
' Se Regione, visualizzo dati parte toccata
|
|
ElseIf EgtGetType(nId) = GDB_TY.SRF_FRGN Then
|
|
Dim nChk As Integer = nSub
|
|
If nChk >= 0 AndAlso nChk < EgtSurfFrChunkCount( nId) Then
|
|
' Visualizzo la normale e il contorno della parte
|
|
Analyze.CreateAnalyzeGroup()
|
|
Analyze.CreateChunkNormal(nId, nChk)
|
|
Analyze.CreateChunkLoops(nId, nChk)
|
|
' Recupero i dati (in globale o griglia a seconda della impostazione)
|
|
Dim ptC As Point3d
|
|
Dim vtN As Vector3d
|
|
EgtSurfFrChunkCenter(nId, nChk, If(m_bCPlaneTypePos, GDB_ID.GRID, GDB_ID.ROOT), ptC, vtN)
|
|
Dim dLen, dPhi, dTheta As Double
|
|
vtN.ToSpherical(dLen, dTheta, dPhi)
|
|
' Emetto info sulla barra di stato
|
|
Dim sOut As String = "Chunk " + nChk.ToString() +
|
|
" : C(" + LenToString(ptC.x, 3) + "," + LenToString(ptC.y, 3) + "," + LenToString(ptC.z, 3) + ")" +
|
|
" N(" + DoubleToString(vtN.x, 4) + "," + DoubleToString(vtN.y, 4) + "," + DoubleToString(vtN.z, 4) + ")" +
|
|
" / φ=" + DoubleToString(dPhi, 2) + " θ=" + DoubleToString(dTheta, 2)
|
|
Map.refStatusBarVM.NotifyStatusOutput(sOut)
|
|
End If
|
|
End If
|
|
' Aggiorno la visualizzazione
|
|
EgtDraw()
|
|
End Sub
|
|
|
|
Private Sub OnShowDistance(ByVal sender As Object, ByVal sDistance As String) Handles m_ProjectScene.OnShowDistance
|
|
Map.refStatusBarVM.NotifyStatusOutput(sDistance)
|
|
End Sub
|
|
|
|
Private Sub OnSceneKeyDown(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 AndAlso Map.refTopCommandBarVM.DrawIsChecked Then
|
|
m_Controller.SetLastInteger(GDB_ID.SEL)
|
|
m_Controller.ExecuteCommand(Controller.CMD.DELETE)
|
|
' Con END eseguo deselezione di tutto
|
|
ElseIf e.KeyData = System.Windows.Forms.Keys.End Then
|
|
m_Controller.MouseDeselectedAll(True)
|
|
' 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 AndAlso 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 AndAlso m_Controller.GetContinue() Then
|
|
m_Controller.ContinueLine2P()
|
|
' Con 'V' cambio lo stato del check
|
|
ElseIf e.KeyData = System.Windows.Forms.Keys.V Then
|
|
Map.refInputExpanderVM.ChangeInputBoxCheck()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnSceneCloseAnalyze(sender As System.Object) Handles m_ProjectScene.OnCloseAnalyze
|
|
Map.refInstrumentPanelVM.Analyze_IsChecked(False)
|
|
End Sub
|
|
|
|
Private Sub OnSceneCloseGetDist(sender As System.Object) Handles m_ProjectScene.OnCloseGetDist
|
|
Map.refInstrumentPanelVM.GetDistance_IsChecked(False)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "CONTROLLER EVENTS"
|
|
|
|
Private Sub OnNewProject(ByVal sender As Object, ByVal bOk As Boolean) Handles m_Controller.OnNewProject
|
|
EgtZoom(ZM.ALL)
|
|
If Not bOk Then
|
|
MessageBox.Show(Application.Current.MainWindow, 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
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.ClearObjTree()
|
|
End Sub
|
|
|
|
Private Sub OnOpenProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnOpenProject
|
|
EgtZoom(ZM.ALL)
|
|
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
|
|
If My.Computer.FileSystem.FileExists(sFile) Then
|
|
sMsg = EgtMsg(10003) & " '" & sFile & "'" 'Error opening file
|
|
Else
|
|
sMsg = EgtMsg(10009) & " '" & sFile & "'" 'Missing file
|
|
End If
|
|
MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnInsertingProject(ByVal sender As Object, nType As Integer, ByRef nFlag As Integer) Handles m_Controller.OnInsertingProject
|
|
If nType = FT.OBJ Or nType = FT.IGES Or nType = FT.STEP_ Or nType = FT.ACIS Or
|
|
nType = FT.PARASOLID Or nType = FT.JT Or nType = FT.VRML Or nType = FT.C3D Then
|
|
nFlag = GetMainPrivateProfileInt(S_IMPORT, K_ADVFLAG, 0)
|
|
Else
|
|
nFlag = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnInsertedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnInsertedProject
|
|
EgtZoom(ZM.ALL)
|
|
WritePrivateProfileString(S_GENERAL, K_LASTNGEINSDIR, Path.GetDirectoryName(sFile))
|
|
End Sub
|
|
|
|
Private Sub OnSavingProject(ByVal sender As Object, ByVal sFile As String) 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(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnSavingObject(ByVal sender As Object, ByVal sFile As String) 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(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnImportingProject(sender As Object, nType As Integer, ByRef nFlag As Integer) Handles m_Controller.OnImportingProject
|
|
If nType <> FT.NULL Then
|
|
Map.refManageLayerExpanderVM.ClearObjTree()
|
|
If nType = FT.CNC Then
|
|
nFlag = GetPrivateProfileInt(S_IMPORT, K_CNCFLAG, EIC_FL.NONE)
|
|
ElseIf nType = FT.BTL Or nType = FT.BTLX Then
|
|
nFlag = GetPrivateProfileInt(S_IMPORT, K_BTLFLAG, EIB_FL.NONE)
|
|
ElseIf nType = FT._3MF
|
|
nFlag = GetPrivateProfileInt(S_IMPORT, K_3MFFLAG, EI3_FL.NONE)
|
|
ElseIf nType = FT.OBJ Or nType = FT.IGES Or nType = FT.STEP_ Or nType = FT.ACIS Or
|
|
nType = FT.PARASOLID Or nType = FT.JT Or nType = FT.VRML Or nType = FT.C3D Then
|
|
nFlag = GetPrivateProfileInt(S_IMPORT, K_ADVFLAG, 0)
|
|
Else
|
|
nFlag = 0
|
|
End If
|
|
' Abilito progress e bottone stop
|
|
Map.refStatusBarVM.NotifyStatusProgress(0)
|
|
Map.refStatusBarVM.NotifyStatusStop(True)
|
|
Else
|
|
MessageBox.Show(Application.Current.MainWindow, 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
|
|
EgtZoom(ZM.ALL)
|
|
' Disabilito progress e bottone stop
|
|
Map.refStatusBarVM.NotifyStatusProgress(0)
|
|
Map.refStatusBarVM.NotifyStatusStop(False)
|
|
' Salvo path
|
|
WritePrivateProfileString(S_GENERAL, K_LASTIMPDIR, Path.GetDirectoryName(sFile))
|
|
' Segnalo eventuale errore
|
|
If Not bOk Then
|
|
Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file
|
|
MessageBox.Show(Application.Current.MainWindow, 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(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OnExecutingScript(ByVal sender As Object) Handles m_Controller.OnExecutingScript
|
|
' Abilito progress e bottone stop
|
|
Map.refStatusBarVM.NotifyStatusProgress(0)
|
|
Map.refStatusBarVM.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
|
|
If bOk Then
|
|
If m_bScriptInMru Then
|
|
IniFile.m_MruScripts.Add(sFile)
|
|
WritePrivateProfileString(S_GENERAL, K_LASTLUADIR, Path.GetDirectoryName(sFile))
|
|
End If
|
|
Else
|
|
If m_bScriptInMru Then
|
|
If File.Exists(sFile) Then
|
|
IniFile.m_MruScripts.Add(sFile)
|
|
WritePrivateProfileString(S_GENERAL, K_LASTLUADIR, Path.GetDirectoryName(sFile))
|
|
Else
|
|
IniFile.m_MruScripts.Remove(sFile)
|
|
End If
|
|
End If
|
|
MessageBox.Show(Application.Current.MainWindow, sError, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
|
|
End If
|
|
' Disabilito progress e bottone stop
|
|
Map.refStatusBarVM.NotifyStatusProgress(0)
|
|
Map.refStatusBarVM.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
|
|
Map.refInputExpanderVM.PrepareInputBox(New PrepareInputBoxParam(sTitle, sLabel, sCheckLabel, bShowCombo, bShowBtn))
|
|
End Sub
|
|
|
|
Private Sub OnSetInputBoxText(ByVal sText As String) Handles m_Controller.SetInputBoxText
|
|
Map.refInputExpanderVM.SetInputBoxText(sText)
|
|
End Sub
|
|
|
|
Private Sub OnSetInputBoxCheck(ByVal bCheck As Boolean) Handles m_Controller.SetInputBoxCheck
|
|
Map.refInputExpanderVM.SetInputBoxCheck(bCheck)
|
|
End Sub
|
|
|
|
Private Sub OnAddInputBoxCombo(ByVal sText As String, ByVal bSelected As Boolean) Handles m_Controller.AddInputBoxCombo
|
|
Map.refInputExpanderVM.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
|
|
If Not IsNothing(Map.refInputExpanderVM) Then Map.refInputExpanderVM.ResetInputBox()
|
|
If m_Controller.GetContinue() Then
|
|
Map.refStatusBarVM.NotifyStatusOutput((EgtMsg(399))) ' Continue : 'L' with line, 'A' with arc
|
|
Else
|
|
Map.refStatusBarVM.NotifyStatusOutput((""))
|
|
End If
|
|
' aggiorno dati correnti
|
|
EmitTitle()
|
|
EmitCurrPartLayer()
|
|
If bReloadUI Then
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.LoadObjTree()
|
|
Else
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.UpdateObjTree()
|
|
End If
|
|
' aggiorno macchina corrente
|
|
Map.refMachinePanelVM.UpdateCurrentMachine()
|
|
End Sub
|
|
|
|
Private Sub OutputInfo(ByVal sender As Object, ByVal sText As String) Handles m_Controller.OutputInfo
|
|
Map.refStatusBarVM.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
|
|
Map.refStatusBarVM.StatusSnapPointTypeBackground(New SolidColorBrush(SystemColors.ControlColor))
|
|
Else
|
|
Map.refStatusBarVM.StatusSnapPointTypeBackground(Brushes.Bisque)
|
|
End If
|
|
Select Case nSpType
|
|
Case SP.PT_SKETCH
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1102)) 'Sketch Point
|
|
Case SP.PT_GRID
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1104)) 'Grid Point
|
|
Case SP.PT_END
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1106)) 'End Point
|
|
Case SP.PT_MID
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1108)) 'Mid Point
|
|
Case SP.CENTER
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1110)) 'Center
|
|
Case SP.CENTROID
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1112)) 'Centroid
|
|
Case SP.PT_NEAR
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1114)) 'Near Point
|
|
Case SP.PT_INTERS
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1116)) 'Inters Point
|
|
Case SP.PT_TANGENT
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1118)) 'Tang Point
|
|
Case SP.PT_PERPENDICULAR
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1120)) 'Perp Point
|
|
Case SP.PT_MINDIST
|
|
Map.refStatusBarVM.StatusSnapPointTypeText(EgtMsg(1122)) 'MinDist Point
|
|
Case Else
|
|
Map.refStatusBarVM.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
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.UpdateHeaderName(sText)
|
|
colObj.A = 100
|
|
If Not IsNothing(Map.refManageLayerExpanderVM) Then Map.refManageLayerExpanderVM.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, True)
|
|
Case SceneSelModeOpt.PARTSURFACES
|
|
m_ProjectScene.SetObjFilterForSel(False, False, True, False, False)
|
|
Case SceneSelModeOpt.PARTCURVESANDSURFACES
|
|
m_ProjectScene.SetObjFilterForSel(False, True, True, False, True)
|
|
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
|
|
|
|
Private m_SceneSelType As SceneSelTypeOpt
|
|
Friend Property SceneSelType As SceneSelTypeOpt
|
|
Get
|
|
Return m_SceneSelType
|
|
End Get
|
|
Set(value As SceneSelTypeOpt)
|
|
If value <> m_SceneSelType Then
|
|
m_SceneSelType = value
|
|
End If
|
|
End Set
|
|
End Property
|
|
|
|
Private m_bMoveInDisposition As Boolean
|
|
Public Property bMoveInDisposition As Boolean
|
|
Get
|
|
Return m_bMoveInDisposition
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bMoveInDisposition = value
|
|
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 |