From f45efb23100041710806d5212b5626e20249199b Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Mon, 28 Aug 2023 18:05:43 +0200 Subject: [PATCH 1/9] - creazione Json degli strati --- Icarus/Icarus.vbproj | 3 + Icarus/ProjManager/ProjManagerVM.vb | 31 +++++++- Icarus/TSFEditor/TFSEditorVM.vb | 106 ++++++++++++++++++++++++++++ Icarus/packages.config | 1 + 4 files changed, 140 insertions(+), 1 deletion(-) diff --git a/Icarus/Icarus.vbproj b/Icarus/Icarus.vbproj index ce431f1..d6248b1 100644 --- a/Icarus/Icarus.vbproj +++ b/Icarus/Icarus.vbproj @@ -87,6 +87,9 @@ ..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/Icarus/ProjManager/ProjManagerVM.vb b/Icarus/ProjManager/ProjManagerVM.vb index e60b20a..446a1bb 100644 --- a/Icarus/ProjManager/ProjManagerVM.vb +++ b/Icarus/ProjManager/ProjManagerVM.vb @@ -2,6 +2,7 @@ Imports System.IO Imports EgtWPFLib5 Imports EgtUILib +Imports Newtonsoft.Json Public Class ProjManagerVM Inherits VMBase @@ -247,9 +248,37 @@ Public Class ProjManagerVM ''' Execute the Save. This method is invoked by the SaveCommand. ''' Public Sub Save() + If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then + CreateJson() + End If Map.refSceneHostVM.SaveProject() End Sub + Private Function CreateJson() As Boolean + ' creo json + Dim LayerList As New List(Of JsonLayer) + For Each Layer In Map.refTFSEditorVM.LayerList + LayerList.Add(Layer.ConvertToJsonLayer()) + Next + Dim json As String = JsonConvert.SerializeObject(LayerList, Formatting.Indented) + Dim sProjName As String = "" + EgtGetCurrFilePath(sProjName) + If Not String.IsNullOrWhiteSpace(sProjName) Then + sProjName = Path.ChangeExtension(sProjName, ".json") + If File.Exists(sProjName) Then + Try + File.Delete(sProjName) + Catch ex As Exception + End Try + End If + Try + File.AppendAllText(sProjName, json) + Catch ex As Exception + EgtOutLog("Json writing error!") + End Try + End If + End Function + #End Region ' SaveCommand #Region "SaveAsCommand" @@ -385,7 +414,7 @@ Public Class ProjManagerVM Map.refSceneHostVM.SaveProject() End If EgtGetCurrFilePath(sCurrProject) - ' se modificato, chiedo se si vuole salvare + ' se modificato, chiedo se si vuole salvare Else If EgtGetModified() Then If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then diff --git a/Icarus/TSFEditor/TFSEditorVM.vb b/Icarus/TSFEditor/TFSEditorVM.vb index b4d0cff..a4a37bd 100644 --- a/Icarus/TSFEditor/TFSEditorVM.vb +++ b/Icarus/TSFEditor/TFSEditorVM.vb @@ -962,4 +962,110 @@ Public Class TFSLayer Return If(dHours > 0, dHours.ToString("00") & ":", "") & If(dHours > 0, dMinutes.ToString("00"), dMinutes.ToString()) & ":" & dSeconds.ToString("00") End Function + Friend Function ConvertToJsonLayer() As JsonLayer + Return New JsonLayer(nIndex, dLength, dTMin, m_dTTrg, dTMax, dTCurr, m_dTWait, dFCurr, m_dFTrg, m_dFMax, m_dFCurr, dSpeed) + End Function + +End Class + +Public Class JsonLayer + Private m_nIndex As Integer + Public ReadOnly Property Index As Integer + Get + Return m_nIndex + End Get + End Property + + Private m_dLength As Double + Public ReadOnly Property Length As Double + Get + Return m_dLength + End Get + End Property + + Private m_dTMin As Double + Public ReadOnly Property TMin As Double + Get + Return m_dTMin + End Get + End Property + + Private m_dTTrg As Double + Public ReadOnly Property TTrg As Double + Get + Return m_dTTrg + End Get + End Property + + Private m_dTMax As Double + Public ReadOnly Property TMax As Double + Get + Return m_dTMax + End Get + End Property + + Private m_dTCurr As Double + Public ReadOnly Property TCurr As Double + Get + Return m_dTCurr + End Get + End Property + + Private m_dTWait As Double + Public ReadOnly Property TWait As Double + Get + Return m_dTWait + End Get + End Property + + Private m_dFMin As Double + Public ReadOnly Property FMin As Double + Get + Return m_dFMin + End Get + End Property + + Private m_dFTrg As Double + Public ReadOnly Property FTrg As Double + Get + Return m_dFTrg + End Get + End Property + + Private m_dFMax As Double + Public ReadOnly Property FMax As Double + Get + Return m_dFMax + End Get + End Property + + Private m_dFCurr As Double + Public ReadOnly Property FCurr As Double + Get + Return m_dFCurr + End Get + End Property + + Private m_dSpeed As Double + Public ReadOnly Property Speed As Double + Get + Return m_dSpeed + End Get + End Property + + Sub New(nIndex As Integer, dLength As Double, dTMin As Double, dTTrg As Double, dTMax As Double, dTCurr As Double, dTWait As Double, dFMin As Double, dFTrg As Double, dFMax As Double, dFCurr As Double, dSpeed As Double) + m_nIndex = nIndex + m_dLength = dLength + m_dTMin = dTMin + m_dTTrg = dTTrg + m_dTMax = dTMax + m_dTCurr = dTCurr + m_dTWait = dTWait + m_dFMin = dFMin + m_dFTrg = dFTrg + m_dFMax = dFMax + m_dFCurr = dFCurr + m_dSpeed = dSpeed + End Sub + End Class \ No newline at end of file diff --git a/Icarus/packages.config b/Icarus/packages.config index fdc9817..032fc75 100644 --- a/Icarus/packages.config +++ b/Icarus/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file From f7631e52018385f5b41da132749f05cf67753c58 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Wed, 20 Sep 2023 11:14:35 +0200 Subject: [PATCH 2/9] - creazione del pacchetto di export per la macchina --- Icarus/Constants/ConstGen.vb | 1 + Icarus/SceneHost/MySceneHostVM.vb | 7 + Icarus/SliceManager/SliceManagerVM.vb | 156 +++++++++++++++++- Icarus/Utility/CurrentMachine.vb | 5 + Icarus/ViewLayerManager/ViewLayerManagerVM.vb | 2 +- 5 files changed, 165 insertions(+), 6 deletions(-) diff --git a/Icarus/Constants/ConstGen.vb b/Icarus/Constants/ConstGen.vb index 302cb0c..cd3b6e5 100644 --- a/Icarus/Constants/ConstGen.vb +++ b/Icarus/Constants/ConstGen.vb @@ -53,6 +53,7 @@ Public Module ConstGen ' Abilitazioni licenza Friend Enum KEY_OPT As UInteger BASE = 1 ' Prodotto Icarus + MACHINE_EXPORT = 2 ' opzione per esportare file icrx per macchina End Enum ' File di log generale diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index 6bc97fb..4893818 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -682,6 +682,13 @@ Public Class MySceneHostVM Return MainController.ExportProject(SaveFileDialog.FileName, False) End Function + Public Function ExportProjectForMachine(sFilePath As String) As Boolean + ' Reset controller e scena + MainController.ResetStatus() + MainController.SetDefaultFilterForExport(EEX_FLT.DEFAULT + EEX_FLT.LEV_TEMP) + Return MainController.ExportProject(sFilePath, False) + End Function + Public Overrides Function ExecScript(sFilePath As String) As Boolean Dim bOk As Boolean = False If String.IsNullOrEmpty(sFilePath) Then diff --git a/Icarus/SliceManager/SliceManagerVM.vb b/Icarus/SliceManager/SliceManagerVM.vb index bef720d..882bc14 100644 --- a/Icarus/SliceManager/SliceManagerVM.vb +++ b/Icarus/SliceManager/SliceManagerVM.vb @@ -2,6 +2,8 @@ Imports EgtUILib Imports Microsoft.Win32 Imports System.IO +Imports Ionic.Zip +Imports Newtonsoft.Json Public Class SliceManagerVM Inherits VMBase @@ -708,14 +710,31 @@ Public Class SliceManagerVM CalcSlice(True, True) ' se non ho interrotto calcoli If Not m_bStopScriptToManage Then - If bShiftPressed Then - ' Se esiste ne lancio l'editing - If File.Exists(sIsoFilePath) Then + ' Se esiste l'iso + If File.Exists(sIsoFilePath) Then + If bShiftPressed Then + ' Se esiste ne lancio l'editing Process.Start("Notepad.exe", sIsoFilePath) ' altrimenti lo segnalo - Else - MessageBox.Show("Edit failed, missing part program file" & " (" & sIsoFilePath & ")") End If + ' verifico se creare pacchetto + If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.MACHINE_EXPORT) Then + 'If True Then + If Not CreateProjectForMachine(sIsoFilePath) Then + MessageBox.Show("Icrx file generation failed!!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error) + End If + ' riabilito ProjManager, TopPanel e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(True) + Map.refTopPanelVM.SetTopPanelIsEnabled(True) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(True) + Map.refTFSEditorVM.SetTFSEditorIsEnabled(True) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(True) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(True) + SetButtonsIsEnabled(True) + End If + Else + ' altrimenti lo segnalo + MessageBox.Show("Part program generation failed!!", "Error", MessageBoxButton.OK, MessageBoxImage.Error) End If NotifyPropertyChanged(NameOf(Time_Visibility)) NotifyPropertyChanged(NameOf(Mass_Visibility)) @@ -725,6 +744,133 @@ Public Class SliceManagerVM m_bCalculating = False End Sub + Private Function CreateProjectForMachine(sIsoFilePath As String) As Boolean + ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(False) + Map.refTopPanelVM.SetTopPanelIsEnabled(False) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(False) + Map.refTFSEditorVM.SetTFSEditorIsEnabled(False) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(False) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(False) + SetButtonsIsEnabled(False) + ' creo cartella file da esportare in Temp + Dim sExportTempFolderPath As String = Map.refMainWindowVM.MainWindowM.sTempDir & "\MachineExport" + If Directory.Exists(sExportTempFolderPath) Then + Try + Directory.Delete(sExportTempFolderPath, True) + Catch ex As Exception + EgtOutLog("Error! Impossible deleting folder " & sExportTempFolderPath & "!") + Return False + End Try + End If + Try + Directory.CreateDirectory(sExportTempFolderPath) + Catch ex As Exception + EgtOutLog("Error! Impossible creating folder " & sExportTempFolderPath & "!") + Return False + End Try + ' mostro solido per eportazione + Dim SolidCheck As ViewLayer = Map.refViewLayerManagerVM.LayerList.FirstOrDefault(Function(x) x.Type = ViewLayer.ViewLayerType.SOLID_SLICE) + Dim CurrSolidCheckValue As Boolean? = SolidCheck.bIsVisible + If IsNothing(SolidCheck.bIsVisible) OrElse Not SolidCheck.bIsVisible Then + SolidCheck.bIsVisible = True + End If + ' esporto file 3mf + Dim s3mfPath As String = sExportTempFolderPath & "\ProjectSlice.3mf" + If Not Map.refSceneHostVM.ExportProjectForMachine(s3mfPath) Then + EgtOutLog("Error! Impossible exporting 3mf file!") + Return False + End If + ' creo file json + Dim sProjName As String = "" + EgtGetCurrFilePath(sProjName) + Dim sJsonPath As String = sExportTempFolderPath & "\ProjectSlice.json" + CreateJson(sJsonPath) + ' creo immagine preview + Dim sPreviewImagePath As String = sExportTempFolderPath & "\ProjectSlice.png" + CreatePreviewImage(sPreviewImagePath) + ' nascondo solido + If IsNothing(CurrSolidCheckValue) OrElse Not CurrSolidCheckValue Then + SolidCheck.bIsVisible = CurrSolidCheckValue + End If + ' creo path dello zip + Dim sZipPath As String = Path.ChangeExtension(sProjName, ".icrx") + ' se esiste gia' lo cancello + If File.Exists(sZipPath) Then + Try + File.Delete(sZipPath) + Catch ex As Exception + EgtOutLog("Error! Impossible deleting old icrx file!") + Return False + End Try + End If + Try + Using zip As New Ionic.Zip.ZipFile(sZipPath, Console.Out) + zip.AlternateEncodingUsage = ZipOption.Always + zip.AlternateEncoding = Text.Encoding.UTF8 + zip.CompressionMethod = CompressionMethod.None + ' aggiungo file Iso + zip.AddItem(sIsoFilePath, "") + ' aggiungo file 3mf + zip.AddItem(s3mfPath, "") + ' aggiungo json + zip.AddItem(sJsonPath, "") + ' aggiungo immagine preview + zip.AddItem(sPreviewImagePath, "") + ' salvo lo zip + zip.Save() + End Using + Catch ex As Exception + EgtOutLog("Error! Icrx file generation failed!!") + Return False + End Try + ' elimino tutti i file temporanei creati + If Directory.Exists(sExportTempFolderPath) Then + Directory.Delete(sExportTempFolderPath, True) + End If + Return True + End Function + + Private Function CreateJson(sJsonPath As String) As Boolean + ' creo json + Dim LayerList As New List(Of JsonLayer) + For Each Layer In Map.refTFSEditorVM.LayerList + LayerList.Add(Layer.ConvertToJsonLayer()) + Next + Dim json As String = JsonConvert.SerializeObject(LayerList, Formatting.Indented) + If File.Exists(sJsonPath) Then + Try + File.Delete(sJsonPath) + Catch ex As Exception + EgtOutLog("Error! Impossible deleting file " & sJsonPath & "!") + Return False + End Try + End If + Try + File.AppendAllText(sJsonPath, json) + Catch ex As Exception + EgtOutLog("Error! Impossible writing json file " & sJsonPath & "!") + Return False + End Try + Return True + End Function + + Private Function CreatePreviewImage(sPreviewImagePath As String) As Boolean + ' recupero posizione vista corrente + Dim nCurrAngVertDeg As Integer = 0 + Dim nCurrAngHorizDeg As Integer = 0 + EgtGetGenericView(nCurrAngVertDeg, nCurrAngHorizDeg) + EgtSetView(VT.ISO_SW, False) + SetTableVisibility(False) + EgtZoom(ZM.ALL, False) + 'EgtExportSvg(GDB_ID.ROOT, sPreviewImagePath) + EgtGetImage(SM.SHADING, New Color3d(255, 255, 255, 255), New Color3d(255, 255, 255, 255), 3000, 3000, sPreviewImagePath) + EgtSetGenericView(nCurrAngVertDeg, nCurrAngHorizDeg, False) + SetTableVisibility(True) + EgtZoom(ZM.ALL, True) + Return True + End Function + #End Region ' Generate #Region "Simulate" diff --git a/Icarus/Utility/CurrentMachine.vb b/Icarus/Utility/CurrentMachine.vb index 539514b..e4a19ee 100644 --- a/Icarus/Utility/CurrentMachine.vb +++ b/Icarus/Utility/CurrentMachine.vb @@ -156,6 +156,11 @@ Public Module CurrentMachine DisableMgr.ReEnable() End Sub + Public Sub SetTableVisibility(IsVisible As Boolean) + Dim nTableLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, TABLE) + EgtSetStatus(nTableLayerId, If(IsVisible, GDB_ST.ON_, GDB_ST.OFF)) + End Sub + Public Sub UpdateExtrusionArea() ' recupero eventuale vecchia area di estrusione Dim nTabPartId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, TABLE) diff --git a/Icarus/ViewLayerManager/ViewLayerManagerVM.vb b/Icarus/ViewLayerManager/ViewLayerManagerVM.vb index eb0b4dd..493619b 100644 --- a/Icarus/ViewLayerManager/ViewLayerManagerVM.vb +++ b/Icarus/ViewLayerManager/ViewLayerManagerVM.vb @@ -35,7 +35,7 @@ Public Class ViewLayerManagerVM End Sub Sub New() - ' Creo riferimento a questa classe in EgtCAM5Map + ' Creo riferimento a questa classe in Map Map.SetRefViewLayerManagerVM(Me) m_LayerList = New ObservableCollection(Of ViewLayer)({New ViewLayer(ViewLayer.ViewLayerType.PRINT_SOLID, "Print", True), New ViewLayer(ViewLayer.ViewLayerType.REFERENCE, "Origin Point", True), From e5fca60809c30876ca5e16c107beb2533af985f2 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Tue, 26 Sep 2023 11:40:21 +0200 Subject: [PATCH 3/9] - aggiunti dati nel json - evito creazione icrx se generazione andata male --- Icarus/Icarus.vbproj | 1 + Icarus/SliceManager/SliceManagerVM.vb | 13 +- Icarus/TSFEditor/TFSEditorVM.vb | 102 -------------- Icarus/Utility/JsonUtility.vb | 191 ++++++++++++++++++++++++++ 4 files changed, 197 insertions(+), 110 deletions(-) create mode 100644 Icarus/Utility/JsonUtility.vb diff --git a/Icarus/Icarus.vbproj b/Icarus/Icarus.vbproj index d6248b1..194116a 100644 --- a/Icarus/Icarus.vbproj +++ b/Icarus/Icarus.vbproj @@ -323,6 +323,7 @@ + diff --git a/Icarus/SliceManager/SliceManagerVM.vb b/Icarus/SliceManager/SliceManagerVM.vb index 882bc14..1a1e51c 100644 --- a/Icarus/SliceManager/SliceManagerVM.vb +++ b/Icarus/SliceManager/SliceManagerVM.vb @@ -707,9 +707,9 @@ Public Class SliceManagerVM End If End If ' eseguo calcoli - CalcSlice(True, True) + Dim bOk As Boolean = CalcSlice(True, True) ' se non ho interrotto calcoli - If Not m_bStopScriptToManage Then + If bOk AndAlso Not m_bStopScriptToManage Then ' Se esiste l'iso If File.Exists(sIsoFilePath) Then If bShiftPressed Then @@ -810,7 +810,7 @@ Public Class SliceManagerVM zip.AlternateEncoding = Text.Encoding.UTF8 zip.CompressionMethod = CompressionMethod.None ' aggiungo file Iso - zip.AddItem(sIsoFilePath, "") + zip.AddItem(sIsoFilePath, "").FileName = "ProjectSlice" & Path.GetExtension(sIsoFilePath) ' aggiungo file 3mf zip.AddItem(s3mfPath, "") ' aggiungo json @@ -833,11 +833,8 @@ Public Class SliceManagerVM Private Function CreateJson(sJsonPath As String) As Boolean ' creo json - Dim LayerList As New List(Of JsonLayer) - For Each Layer In Map.refTFSEditorVM.LayerList - LayerList.Add(Layer.ConvertToJsonLayer()) - Next - Dim json As String = JsonConvert.SerializeObject(LayerList, Formatting.Indented) + Dim JsonMain As New JsonMain(m_dTime, m_dMass) + Dim json As String = JsonConvert.SerializeObject(JsonMain, Formatting.Indented) If File.Exists(sJsonPath) Then Try File.Delete(sJsonPath) diff --git a/Icarus/TSFEditor/TFSEditorVM.vb b/Icarus/TSFEditor/TFSEditorVM.vb index a4a37bd..f44aca5 100644 --- a/Icarus/TSFEditor/TFSEditorVM.vb +++ b/Icarus/TSFEditor/TFSEditorVM.vb @@ -967,105 +967,3 @@ Public Class TFSLayer End Function End Class - -Public Class JsonLayer - Private m_nIndex As Integer - Public ReadOnly Property Index As Integer - Get - Return m_nIndex - End Get - End Property - - Private m_dLength As Double - Public ReadOnly Property Length As Double - Get - Return m_dLength - End Get - End Property - - Private m_dTMin As Double - Public ReadOnly Property TMin As Double - Get - Return m_dTMin - End Get - End Property - - Private m_dTTrg As Double - Public ReadOnly Property TTrg As Double - Get - Return m_dTTrg - End Get - End Property - - Private m_dTMax As Double - Public ReadOnly Property TMax As Double - Get - Return m_dTMax - End Get - End Property - - Private m_dTCurr As Double - Public ReadOnly Property TCurr As Double - Get - Return m_dTCurr - End Get - End Property - - Private m_dTWait As Double - Public ReadOnly Property TWait As Double - Get - Return m_dTWait - End Get - End Property - - Private m_dFMin As Double - Public ReadOnly Property FMin As Double - Get - Return m_dFMin - End Get - End Property - - Private m_dFTrg As Double - Public ReadOnly Property FTrg As Double - Get - Return m_dFTrg - End Get - End Property - - Private m_dFMax As Double - Public ReadOnly Property FMax As Double - Get - Return m_dFMax - End Get - End Property - - Private m_dFCurr As Double - Public ReadOnly Property FCurr As Double - Get - Return m_dFCurr - End Get - End Property - - Private m_dSpeed As Double - Public ReadOnly Property Speed As Double - Get - Return m_dSpeed - End Get - End Property - - Sub New(nIndex As Integer, dLength As Double, dTMin As Double, dTTrg As Double, dTMax As Double, dTCurr As Double, dTWait As Double, dFMin As Double, dFTrg As Double, dFMax As Double, dFCurr As Double, dSpeed As Double) - m_nIndex = nIndex - m_dLength = dLength - m_dTMin = dTMin - m_dTTrg = dTTrg - m_dTMax = dTMax - m_dTCurr = dTCurr - m_dTWait = dTWait - m_dFMin = dFMin - m_dFTrg = dFTrg - m_dFMax = dFMax - m_dFCurr = dFCurr - m_dSpeed = dSpeed - End Sub - -End Class \ No newline at end of file diff --git a/Icarus/Utility/JsonUtility.vb b/Icarus/Utility/JsonUtility.vb new file mode 100644 index 0000000..3202539 --- /dev/null +++ b/Icarus/Utility/JsonUtility.vb @@ -0,0 +1,191 @@ +Imports EgtUILib.EgtInterface +Imports EgtWPFLib5 + +Public Class JsonMain + + Private m_StrandW As Double + Public ReadOnly Property StrandW As Double + Get + Return m_StrandW + End Get + End Property + + Private m_BoxX As Double + Public ReadOnly Property BoxX As Double + Get + Return m_BoxX + End Get + End Property + + Private m_BoxY As Double + Public ReadOnly Property BoxY As Double + Get + Return m_BoxY + End Get + End Property + + Private m_BoxZ As Double + Public ReadOnly Property BoxZ As Double + Get + Return m_BoxZ + End Get + End Property + + Private m_dTime As Double + Public ReadOnly Property dTime As Double + Get + Return m_dTime + End Get + End Property + + Private m_dMass As Double = 0 + Public ReadOnly Property dMass As Double + Get + Return m_dMass + End Get + End Property + + Private m_LayerQty As Double + Public ReadOnly Property LayerQty As Double + Get + Return m_LayerQty + End Get + End Property + + Private m_MaterialName As String + Public ReadOnly Property MaterialName As String + Get + Return m_MaterialName + End Get + End Property + + Private m_JsonLayerList As New List(Of JsonLayer) + Public ReadOnly Property JsonLayerList As List(Of JsonLayer) + Get + Return m_JsonLayerList + End Get + End Property + + Sub New(dTime As Double, dMass As Double) + For Each Layer In Map.refTFSEditorVM.LayerList + m_JsonLayerList.Add(Layer.ConvertToJsonLayer()) + Next + m_MaterialName = Map.refTopPanelVM.SelMaterial.sName + Dim StrandH As CurrNumericMachiningParam = Map.refCurrMachiningPanelVM.CurrMachining.CathegoryList.FirstOrDefault(Function(x) x.Type = MachiningCathegory.Cathegories.GENERAL).MachiningParamList.FirstOrDefault(Function(y) y.Type = MachiningParam.Params.STRANDH) + If Not IsNothing(StrandH) Then + m_StrandW = StrandH.dValue + End If + m_dTime = dTime + m_dMass = dMass + If Not IsNothing(Map.refTopPanelVM.SelPart) Then + Dim b3Print As BBox3d = Map.refDispositionPanelVM.GetSolidForReferenceBBox(Map.refTopPanelVM.SelPart) + m_BoxX = b3Print.DimX + m_BoxY = b3Print.DimY + m_BoxZ = b3Print.DimZ + End If + m_LayerQty = Map.refSliderManagerVM.nLayerIndex_Maximum + End Sub + +End Class + +Public Class JsonLayer + Private m_nIndex As Integer + Public ReadOnly Property Index As Integer + Get + Return m_nIndex + End Get + End Property + + Private m_dLength As Double + Public ReadOnly Property Length As Double + Get + Return m_dLength + End Get + End Property + + Private m_dTMin As Double + Public ReadOnly Property TMin As Double + Get + Return m_dTMin + End Get + End Property + + Private m_dTTrg As Double + Public ReadOnly Property TTrg As Double + Get + Return m_dTTrg + End Get + End Property + + Private m_dTMax As Double + Public ReadOnly Property TMax As Double + Get + Return m_dTMax + End Get + End Property + + Private m_dTCurr As Double + Public ReadOnly Property TCurr As Double + Get + Return m_dTCurr + End Get + End Property + + Private m_dTWait As Double + Public ReadOnly Property TWait As Double + Get + Return m_dTWait + End Get + End Property + + Private m_dFMin As Double + Public ReadOnly Property FMin As Double + Get + Return m_dFMin + End Get + End Property + + Private m_dFTrg As Double + Public ReadOnly Property FTrg As Double + Get + Return m_dFTrg + End Get + End Property + + Private m_dFMax As Double + Public ReadOnly Property FMax As Double + Get + Return m_dFMax + End Get + End Property + + Private m_dFCurr As Double + Public ReadOnly Property FCurr As Double + Get + Return m_dFCurr + End Get + End Property + + Private m_dSpeed As Double + Public ReadOnly Property Speed As Double + Get + Return m_dSpeed + End Get + End Property + + Sub New(nIndex As Integer, dLength As Double, dTMin As Double, dTTrg As Double, dTMax As Double, dTCurr As Double, dTWait As Double, dFMin As Double, dFTrg As Double, dFMax As Double, dFCurr As Double, dSpeed As Double) + m_nIndex = nIndex + m_dLength = dLength + m_dTMin = dTMin + m_dTTrg = dTTrg + m_dTMax = dTMax + m_dTCurr = dTCurr + m_dTWait = dTWait + m_dFMin = dFMin + m_dFTrg = dFTrg + m_dFMax = dFMax + m_dFCurr = dFCurr + m_dSpeed = dSpeed + End Sub + +End Class \ No newline at end of file From c1aee47e534d1665a15fb2f57f821ac283628752 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Fri, 13 Oct 2023 15:40:38 +0200 Subject: [PATCH 4/9] - aggiunto StrandH in json e corretto valore strandW --- Icarus/Utility/JsonUtility.vb | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Icarus/Utility/JsonUtility.vb b/Icarus/Utility/JsonUtility.vb index 3202539..94b3427 100644 --- a/Icarus/Utility/JsonUtility.vb +++ b/Icarus/Utility/JsonUtility.vb @@ -10,6 +10,13 @@ Public Class JsonMain End Get End Property + Private m_StrandH As Double + Public ReadOnly Property StrandH As Double + Get + Return m_StrandH + End Get + End Property + Private m_BoxX As Double Public ReadOnly Property BoxX As Double Get @@ -71,9 +78,16 @@ Public Class JsonMain m_JsonLayerList.Add(Layer.ConvertToJsonLayer()) Next m_MaterialName = Map.refTopPanelVM.SelMaterial.sName - Dim StrandH As CurrNumericMachiningParam = Map.refCurrMachiningPanelVM.CurrMachining.CathegoryList.FirstOrDefault(Function(x) x.Type = MachiningCathegory.Cathegories.GENERAL).MachiningParamList.FirstOrDefault(Function(y) y.Type = MachiningParam.Params.STRANDH) - If Not IsNothing(StrandH) Then - m_StrandW = StrandH.dValue + Dim GeneralCathegory As MachiningCathegory = Map.refCurrMachiningPanelVM.CurrMachining.CathegoryList.FirstOrDefault(Function(x) x.Type = MachiningCathegory.Cathegories.GENERAL) + If Not IsNothing(GeneralCathegory) Then + Dim StrandW As CurrNumericMachiningParam = GeneralCathegory.MachiningParamList.FirstOrDefault(Function(y) y.Type = MachiningParam.Params.STRANDW) + Dim StrandH As CurrNumericMachiningParam = GeneralCathegory.MachiningParamList.FirstOrDefault(Function(y) y.Type = MachiningParam.Params.STRANDH) + If Not IsNothing(StrandW) Then + m_StrandW = StrandW.dValue + End If + If Not IsNothing(StrandH) Then + m_StrandH = StrandH.dValue + End If End If m_dTime = dTime m_dMass = dMass From 27a54b00348471c98fc5356a1a3be771e53abb37 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Tue, 24 Oct 2023 11:03:04 +0200 Subject: [PATCH 5/9] - modifiche per nuova esportazione 3mf --- Icarus/SceneHost/MySceneHostVM.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index 4893818..92881d4 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -685,8 +685,8 @@ Public Class MySceneHostVM Public Function ExportProjectForMachine(sFilePath As String) As Boolean ' Reset controller e scena MainController.ResetStatus() - MainController.SetDefaultFilterForExport(EEX_FLT.DEFAULT + EEX_FLT.LEV_TEMP) - Return MainController.ExportProject(sFilePath, False) + MainController.SetDefaultFilterForExport(EEX_FLT.MODE_HIDDEN + EEX_FLT.MODE_STD + EEX_FLT.STAT_ON + EEX_FLT.STAT_OFF + EEX_FLT.LEV_TEMP) + Return MainController.ExportGeomId(Map.refTopPanelVM.SelPart.nPartId, sFilePath, False) End Function Public Overrides Function ExecScript(sFilePath As String) As Boolean From da0bcbac69962db6ad6420aa699f6ff3500422dc Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 13 Nov 2023 16:25:46 +0100 Subject: [PATCH 6/9] Icarus 2.5k1 : - tolta perdita fuoco da edit quando si passa sopra finestra grafica - sostituito Ionic.zip con DotNetZip - in feedback ora solo file con il nome del progetto oltre a macchina e log. --- Icarus/Icarus.vbproj | 6 +++--- Icarus/MainWindow/MainWindowM.vb | 4 ++-- Icarus/My Project/AssemblyInfo.vb | 4 ++-- Icarus/OptionsWindow/OptionWindowVM.vb | 2 ++ Icarus/ProjManager/ProjManagerVM.vb | 17 +++++++---------- Icarus/SceneHost/MySceneHostVM.vb | 2 ++ 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Icarus/Icarus.vbproj b/Icarus/Icarus.vbproj index ce431f1..c2d8dc4 100644 --- a/Icarus/Icarus.vbproj +++ b/Icarus/Icarus.vbproj @@ -76,6 +76,9 @@ true + + ..\..\..\EgtProg\Icarus\DotNetZip.dll + False ..\..\..\EgtProg\DllD32\EgtUILib.dll @@ -84,9 +87,6 @@ False ..\..\..\EgtProg\DllD32\EgtWPFLib5.dll - - ..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll - diff --git a/Icarus/MainWindow/MainWindowM.vb b/Icarus/MainWindow/MainWindowM.vb index 7815f54..1cf2dfd 100644 --- a/Icarus/MainWindow/MainWindowM.vb +++ b/Icarus/MainWindow/MainWindowM.vb @@ -191,8 +191,8 @@ Public Class MainWindowM EgtSetLockId( sLockId) End If ' Recupero livello e opzioni della chiave - Dim bKey As Boolean = EgtGetKeyLevel(5583, 2510, 1, m_nKeyLevel) And - EgtGetKeyOptions(5583, 2510, 1, m_nKeyOptions) + Dim bKey As Boolean = EgtGetKeyLevel(5583, 2511, 1, m_nKeyLevel) And + EgtGetKeyOptions(5583, 2511, 1, m_nKeyOptions) ' Inizializzazione generale di EgtInterface m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0) m_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString()) diff --git a/Icarus/My Project/AssemblyInfo.vb b/Icarus/My Project/AssemblyInfo.vb index dc5eac4..c0c6f0f 100644 --- a/Icarus/My Project/AssemblyInfo.vb +++ b/Icarus/My Project/AssemblyInfo.vb @@ -70,5 +70,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/Icarus/OptionsWindow/OptionWindowVM.vb b/Icarus/OptionsWindow/OptionWindowVM.vb index 29ff9ab..263ce9b 100644 --- a/Icarus/OptionsWindow/OptionWindowVM.vb +++ b/Icarus/OptionsWindow/OptionWindowVM.vb @@ -1093,6 +1093,8 @@ Public Class OptionWindowVM End If Try Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out) + zip.AlternateEncodingUsage = Ionic.Zip.ZipOption.Always + zip.AlternateEncoding = Text.Encoding.UTF8 ' aggiungo i file della Macchina Dim sMachineDir As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sCurrMachineName If Directory.Exists(sMachineDir) Then diff --git a/Icarus/ProjManager/ProjManagerVM.vb b/Icarus/ProjManager/ProjManagerVM.vb index e60b20a..59e1eb1 100644 --- a/Icarus/ProjManager/ProjManagerVM.vb +++ b/Icarus/ProjManager/ProjManagerVM.vb @@ -393,14 +393,6 @@ Public Class ProjManagerVM End If End If End If - ' Verifico se il progetto corrente è una porta - Dim nPartId As Integer = EgtGetFirstPart() - If nPartId = GDB_ID.NULL Then - nPartId = EgtGetFirstPartInRawPart(EgtGetFirstRawPart()) - End If - Dim sPartName As String = String.Empty - EgtGetName(nPartId, sPartName) - Dim bPrjIsDoor As Boolean = (String.Compare(sPartName, "DOOR") = 0) ' Recupero macchine dei gruppi di lavoro del progetto Dim Machines As New List(Of String) Dim nMchGrpId As Integer = EgtGetFirstMachGroup() @@ -417,9 +409,12 @@ Public Class ProjManagerVM If Not String.IsNullOrWhiteSpace(sCurrProject) Then Dim sCurrProjectDir As String = Path.GetDirectoryName(sCurrProject) If Not String.IsNullOrWhiteSpace(sCurrProjectDir) Then + Dim sCurrProjName As String = Path.GetFileNameWithoutExtension(sCurrProject).ToUpper() Dim TempFiles() As String = Directory.GetFiles(sCurrProjectDir) For FileIndex = 0 To TempFiles.Count - 1 - If Path.GetFileNameWithoutExtension(TempFiles(FileIndex)).Contains(Path.GetFileNameWithoutExtension(sCurrProject)) AndAlso TempFiles(FileIndex) <> sCurrProject Then + If TempFiles(FileIndex) = sCurrProject Then Continue For + Dim sCurrFileName As String = Path.GetFileNameWithoutExtension( TempFiles(FileIndex)).ToUpper() + If String.Compare(sCurrFileName, sCurrProjName) = 0 Then OtherFiles.Add(TempFiles(FileIndex)) End If Next @@ -432,11 +427,13 @@ Public Class ProjManagerVM End If Try Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out) + zip.AlternateEncodingUsage = Ionic.Zip.ZipOption.Always + zip.AlternateEncoding = Text.Encoding.UTF8 ' aggiungo file macchine For Each sMachineName As String In Machines Dim sMachineDir As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sMachineName If Directory.Exists(sMachineDir) Then - zip.AddItem(sMachineDir, sMachineName) + zip.AddSelectedFiles( "name != *\.git\*.* and name != *.git*", sMachineDir, sMachineName, True) End If Next ' aggiungo progetto corrente diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index 6bc97fb..f853bfb 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -71,6 +71,8 @@ Public Class MySceneHostVM ' Se tutto bene If MainScene.Init() And Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.BASE) Then PostInitializeScene() + ' Non imposto automaticamente il focus sulla scena muovendo il mouse sopra di essa (necessario click) + MainScene.SetFocusOnMove( False) ' Imposto stato gestione mouse diretto della scena a nessuno MainScene.SetStatusNull() EgtSetCurrentContext(MainScene.GetCtx()) From 109feeb6f725380f79cd6fe6ca6635f1da06b50e Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 13 Nov 2023 16:56:23 +0100 Subject: [PATCH 7/9] Icarus : - in import aggiunto ai tipi di file da visualizzare tutti quelli importati. --- Icarus/SceneHost/MySceneHostVM.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index f853bfb..9d2f9ad 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -349,6 +349,7 @@ Public Class MySceneHostVM "|Step files (*.stp;*.step)|*.stp;*.step" & "|3D Manufacturing format (*.3mf)|*.3mf" & "|New geometry EgalTech(*.nge)|*.nge" & + "|Imported Files (*.*)|*.stl;*.igs;*.iges;*.stp;*.step;*.3mf;*.nge" & "|All Files (*.*)|*.*", .FilterIndex = ExtIndex, .InitialDirectory = sDir} From 12081cec286176e5b9067a1fa81cf6eb1c57a0b6 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Tue, 19 Dec 2023 14:57:46 +0100 Subject: [PATCH 8/9] - modifiche per export del 3dm per la macchina --- Icarus/SceneHost/MySceneHostVM.vb | 13 +++++++++++++ Icarus/SliceManager/SliceManagerVM.vb | 20 ++++++++++++++++---- Icarus/Utility/LuaExec.vb | 14 ++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index 92881d4..ac3500e 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -688,6 +688,19 @@ Public Class MySceneHostVM MainController.SetDefaultFilterForExport(EEX_FLT.MODE_HIDDEN + EEX_FLT.MODE_STD + EEX_FLT.STAT_ON + EEX_FLT.STAT_OFF + EEX_FLT.LEV_TEMP) Return MainController.ExportGeomId(Map.refTopPanelVM.SelPart.nPartId, sFilePath, False) End Function + Public Function ExportProjectForMachine(sDirPath As String, b3dm As Boolean, ByRef sFilePath As String) As Boolean + sFilePath = sDirPath & "\ProjectSlice" & If(b3dm, ".3dm", ".3mf") + ' Reset controller e scena + MainController.ResetStatus() + MainController.SetDefaultFilterForExport(EEX_FLT.MODE_HIDDEN + EEX_FLT.MODE_STD + EEX_FLT.STAT_ON + EEX_FLT.STAT_OFF + EEX_FLT.LEV_TEMP) + Dim nExportGeomId As Integer = 0 + If b3dm Then + If Not ExecPrepare3dmExport(nExportGeomId) Then Return False + Else + nExportGeomId = Map.refTopPanelVM.SelPart.nPartId + End If + Return MainController.ExportGeomId(nExportGeomId, sFilePath, False) + End Function Public Overrides Function ExecScript(sFilePath As String) As Boolean Dim bOk As Boolean = False diff --git a/Icarus/SliceManager/SliceManagerVM.vb b/Icarus/SliceManager/SliceManagerVM.vb index 1a1e51c..7df29b0 100644 --- a/Icarus/SliceManager/SliceManagerVM.vb +++ b/Icarus/SliceManager/SliceManagerVM.vb @@ -775,12 +775,24 @@ Public Class SliceManagerVM If IsNothing(SolidCheck.bIsVisible) OrElse Not SolidCheck.bIsVisible Then SolidCheck.bIsVisible = True End If - ' esporto file 3mf - Dim s3mfPath As String = sExportTempFolderPath & "\ProjectSlice.3mf" - If Not Map.refSceneHostVM.ExportProjectForMachine(s3mfPath) Then + ' esporto file progetto + Dim sFileExtension As String + If True Then + sFileExtension = ".3dm" + Else + sFileExtension = ".3mf" + End If + Dim s3dFilePath As String = "" + If Not Map.refSceneHostVM.ExportProjectForMachine(sExportTempFolderPath, True, s3dFilePath) Then EgtOutLog("Error! Impossible exporting 3mf file!") Return False End If + '' esporto file 3mf + 'Dim s3mfPath As String = sExportTempFolderPath & "\ProjectSlice.3mf" + 'If Not Map.refSceneHostVM.ExportProjectForMachine(s3mfPath) Then + ' EgtOutLog("Error! Impossible exporting 3mf file!") + ' Return False + 'End If ' creo file json Dim sProjName As String = "" EgtGetCurrFilePath(sProjName) @@ -812,7 +824,7 @@ Public Class SliceManagerVM ' aggiungo file Iso zip.AddItem(sIsoFilePath, "").FileName = "ProjectSlice" & Path.GetExtension(sIsoFilePath) ' aggiungo file 3mf - zip.AddItem(s3mfPath, "") + zip.AddItem(s3dFilePath, "") ' aggiungo json zip.AddItem(sJsonPath, "") ' aggiungo immagine preview diff --git a/Icarus/Utility/LuaExec.vb b/Icarus/Utility/LuaExec.vb index 59f41e2..7b3c583 100644 --- a/Icarus/Utility/LuaExec.vb +++ b/Icarus/Utility/LuaExec.vb @@ -115,4 +115,18 @@ Module LuaExec Return bOk End Function + Friend Function ExecPrepare3dmExport(ByRef nExportGeomId As Integer) As Boolean + Dim bOk As Boolean = True + EgtLuaCreateGlobTable("PRINT") + EgtLuaSetGlobStringVar("PRINT.BASEDIR", Map.refMainWindowVM.MainWindowM.s3dPrintingDir) + bOk = EgtLuaExecFile(Map.refMainWindowVM.MainWindowM.s3dPrintingDir & "\PrepareExport.lua") + If bOk Then + EgtLuaGetGlobIntVar("PRINT.EXPORTLAYER", nExportGeomId) + End If + ' Cancello tavola globale + EgtLuaResetGlobVar("PRINT") + Return bOk + End Function + + End Module From 4d379787893544d41027ea53278b55576ed2e6ae Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 9 Jan 2024 17:31:08 +0100 Subject: [PATCH 9/9] Icarus 2.5l1 : - modifiche per gestione griglia come tavola / standard. --- Icarus/FilledSolidPanel/FilledSolidPanelVM.vb | 85 ++----------------- Icarus/MachiningDb/Machining.vb | 1 + Icarus/MainWindow/MainWindowM.vb | 4 +- Icarus/My Project/AssemblyInfo.vb | 4 +- Icarus/OptionsWindow/OptionModule.vb | 15 ++++ Icarus/RibPanel/RibPanelVM.vb | 85 ++----------------- Icarus/SceneHost/MySceneHostVM.vb | 28 +++--- Icarus/ShellNumberPanel/ShellNumberPanelVM.vb | 85 ++----------------- Icarus/SimulationPanel/SimulationPanelVM.vb | 2 +- Icarus/StartMachPanel/StartMachPanelVM.vb | 9 ++ Icarus/StatusBar/MyStatusBarVM.vb | 6 +- Icarus/Utility/CurrentMachine.vb | 6 +- 12 files changed, 78 insertions(+), 252 deletions(-) diff --git a/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb b/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb index ab5e31c..83b40b9 100644 --- a/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb +++ b/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb @@ -595,6 +595,7 @@ Public Class FilledSolidPanelVM Friend Sub Dispose() ' ripristino frame originale EgtSetGridFrame(m_OriginalGridFrame) + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) ' se in modifica parametri If m_bMachParam_IsChecked Then ' ripristino modalita' standard @@ -1075,6 +1076,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneTop(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1100,6 +1102,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneFront(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1125,6 +1128,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneRight(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1150,6 +1154,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneBack(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BACK) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1175,6 +1180,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneLeft(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.LEFT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1200,6 +1206,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneBottom(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BOTTOM) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1226,6 +1233,7 @@ Public Class FilledSolidPanelVM Public Sub CPlaneElevation(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub @@ -1251,87 +1259,12 @@ Public Class FilledSolidPanelVM Public Sub CPlaneOrigin(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub #End Region ' CPlaneOrigin -#Region "CPlaneRotate" - - ''' - ''' Returns a command that do CPlaneRotate. - ''' - Public ReadOnly Property CPlaneRotate_Command As ICommand - Get - If m_cmdCPlaneRotate Is Nothing Then - m_cmdCPlaneRotate = New Command(AddressOf CPlaneRotate) - End If - Return m_cmdCPlaneRotate - End Get - End Property - - ''' - ''' Execute the CPlaneRotate. This method is invoked by the CPlaneRotateCommand. - ''' - Public Sub CPlaneRotate(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE) - Else - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE3D) - End If - End Sub - -#End Region ' CPlaneRotate - -#Region "CPlane3P" - - ''' - ''' Returns a command that do CPlane3P. - ''' - Public ReadOnly Property CPlane3P_Command As ICommand - Get - If m_cmdCPlane3P Is Nothing Then - m_cmdCPlane3P = New Command(AddressOf CPlane3P) - End If - Return m_cmdCPlane3P - End Get - End Property - - ''' - ''' Execute the CPlane3P. This method is invoked by the CPlane3PCommand. - ''' - Public Sub CPlane3P(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_3P) - End Sub - -#End Region ' CPlane3P - -#Region "CPlanePerpObj" - - ''' - ''' Returns a command that do CPlanePerpObj. - ''' - Public ReadOnly Property CPlanePerpObj_Command As ICommand - Get - If m_cmdCPlanePerpObj Is Nothing Then - m_cmdCPlanePerpObj = New Command(AddressOf CPlanePerpObj) - End If - Return m_cmdCPlanePerpObj - End Get - End Property - - ''' - ''' Execute the CPlanePerpObj. This method is invoked by the CPlanePerpObjCommand. - ''' - Public Sub CPlanePerpObj(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_PERPCURVE) - End Sub - -#End Region ' CPlanePerpObj - #Region "CPlaneObj" Private m_bCPlaneObj_IsActive As Boolean = False diff --git a/Icarus/MachiningDb/Machining.vb b/Icarus/MachiningDb/Machining.vb index 5beaf5b..9224adf 100644 --- a/Icarus/MachiningDb/Machining.vb +++ b/Icarus/MachiningDb/Machining.vb @@ -956,6 +956,7 @@ Public Class NumericMachiningParam If Type = Params.SLICINGHEIGHT Then m_dMinValue = 0 m_dMaxValue = CurrentMachine.dSlicingMaxHeight + m_MinMaxType = MinMaxTypes.ABSOLUT m_bIsActiveMinMax = True End If ' leggo parametri da Db diff --git a/Icarus/MainWindow/MainWindowM.vb b/Icarus/MainWindow/MainWindowM.vb index 1cf2dfd..05ceb28 100644 --- a/Icarus/MainWindow/MainWindowM.vb +++ b/Icarus/MainWindow/MainWindowM.vb @@ -191,8 +191,8 @@ Public Class MainWindowM EgtSetLockId( sLockId) End If ' Recupero livello e opzioni della chiave - Dim bKey As Boolean = EgtGetKeyLevel(5583, 2511, 1, m_nKeyLevel) And - EgtGetKeyOptions(5583, 2511, 1, m_nKeyOptions) + Dim bKey As Boolean = EgtGetKeyLevel(5583, 2512, 1, m_nKeyLevel) And + EgtGetKeyOptions(5583, 2512, 1, m_nKeyOptions) ' Inizializzazione generale di EgtInterface m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0) m_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString()) diff --git a/Icarus/My Project/AssemblyInfo.vb b/Icarus/My Project/AssemblyInfo.vb index c0c6f0f..ba68205 100644 --- a/Icarus/My Project/AssemblyInfo.vb +++ b/Icarus/My Project/AssemblyInfo.vb @@ -70,5 +70,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/Icarus/OptionsWindow/OptionModule.vb b/Icarus/OptionsWindow/OptionModule.vb index e827d44..b2445af 100644 --- a/Icarus/OptionsWindow/OptionModule.vb +++ b/Icarus/OptionsWindow/OptionModule.vb @@ -43,6 +43,14 @@ Friend Module OptionModule Friend m_sFont As String Friend m_dTextHeight As Double + ' Parametri per la griglia + Friend m_bGridVisibility As Boolean + Friend m_dSnapStepMm As Double + Friend m_dSnapStepInch As Double + Friend m_nMinLineSStep As Integer + Friend m_nMajLineSStep As Integer + Friend m_nExtSStep As Integer + ' Variabili che indicano per ogni tipo di lavorazione quale geometria è selezionabile 'Friend m_SelGeomSawing As SceneSelModeOpt 'Friend m_SelGeomDrilling As SceneSelModeOpt @@ -108,6 +116,13 @@ Friend Module OptionModule ' Inizializzo variabili per import m_dDxfScaleFactor = GetMainPrivateProfileDouble(S_IMPORT, K_DXFSCALE, 1) m_dStlScaleFactor = GetMainPrivateProfileDouble(S_IMPORT, K_STLSCALE, 1) + ' Inizializzo parametri griglia + m_bGridVisibility = (GetMainPrivateProfileInt(S_GRID, K_SHOWGRID, 1) <> 0) + m_dSnapStepMm = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10) + m_dSnapStepInch = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 12.7) + m_nMinLineSStep = GetMainPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1) + m_nMajLineSStep = GetMainPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10) + m_nExtSStep = GetMainPrivateProfileInt(S_GRID, K_EXTSSTEP, 100) End Sub End Module \ No newline at end of file diff --git a/Icarus/RibPanel/RibPanelVM.vb b/Icarus/RibPanel/RibPanelVM.vb index 8c0104d..6f48445 100644 --- a/Icarus/RibPanel/RibPanelVM.vb +++ b/Icarus/RibPanel/RibPanelVM.vb @@ -620,6 +620,7 @@ Public Class RibPanelVM Friend Sub Dispose() ' ripristino frame originale EgtSetGridFrame(m_OriginalGridFrame) + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) ' se in modifica parametri If m_bMachParam_IsChecked Then ' ripristino modalita' standard @@ -1096,6 +1097,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneTop(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1121,6 +1123,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneFront(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1146,6 +1149,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneRight(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1171,6 +1175,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneBack(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BACK) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1196,6 +1201,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneLeft(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.LEFT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1221,6 +1227,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneBottom(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BOTTOM) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1247,6 +1254,7 @@ Public Class RibPanelVM Public Sub CPlaneElevation(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub @@ -1272,87 +1280,12 @@ Public Class RibPanelVM Public Sub CPlaneOrigin(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub #End Region ' CPlaneOrigin -#Region "CPlaneRotate" - - ''' - ''' Returns a command that do CPlaneRotate. - ''' - Public ReadOnly Property CPlaneRotate_Command As ICommand - Get - If m_cmdCPlaneRotate Is Nothing Then - m_cmdCPlaneRotate = New Command(AddressOf CPlaneRotate) - End If - Return m_cmdCPlaneRotate - End Get - End Property - - ''' - ''' Execute the CPlaneRotate. This method is invoked by the CPlaneRotateCommand. - ''' - Public Sub CPlaneRotate(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE) - Else - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE3D) - End If - End Sub - -#End Region ' CPlaneRotate - -#Region "CPlane3P" - - ''' - ''' Returns a command that do CPlane3P. - ''' - Public ReadOnly Property CPlane3P_Command As ICommand - Get - If m_cmdCPlane3P Is Nothing Then - m_cmdCPlane3P = New Command(AddressOf CPlane3P) - End If - Return m_cmdCPlane3P - End Get - End Property - - ''' - ''' Execute the CPlane3P. This method is invoked by the CPlane3PCommand. - ''' - Public Sub CPlane3P(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_3P) - End Sub - -#End Region ' CPlane3P - -#Region "CPlanePerpObj" - - ''' - ''' Returns a command that do CPlanePerpObj. - ''' - Public ReadOnly Property CPlanePerpObj_Command As ICommand - Get - If m_cmdCPlanePerpObj Is Nothing Then - m_cmdCPlanePerpObj = New Command(AddressOf CPlanePerpObj) - End If - Return m_cmdCPlanePerpObj - End Get - End Property - - ''' - ''' Execute the CPlanePerpObj. This method is invoked by the CPlanePerpObjCommand. - ''' - Public Sub CPlanePerpObj(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_PERPCURVE) - End Sub - -#End Region ' CPlanePerpObj - #Region "CPlaneObj" Private m_bCPlaneObj_IsActive As Boolean = False diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index 9d2f9ad..ef18cf9 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -72,7 +72,7 @@ Public Class MySceneHostVM If MainScene.Init() And Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.BASE) Then PostInitializeScene() ' Non imposto automaticamente il focus sulla scena muovendo il mouse sopra di essa (necessario click) - MainScene.SetFocusOnMove( False) + MainScene.SetFocusOnMove( True, 0.3, 0.3, 0.1, 0.2) ' Imposto stato gestione mouse diretto della scena a nessuno MainScene.SetStatusNull() EgtSetCurrentContext(MainScene.GetCtx()) @@ -188,33 +188,23 @@ Public Class MySceneHostVM Private Sub PostInitializeScene() ' Impostazioni Controller MainController.SetScene(MainScene) - MainController.SetSurfTmTolerance(0.05) + MainController.SetSurfTmTolerance(OptionModule.m_dGeometryTolerance) MainController.SetUseCustomColors(True, S_SCENE, K_CUSTOMCOLORS) ' imposto unità di misura per interfaccia utente Dim bMmUnits As Boolean = GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0 EgtSetUiUnits(bMmUnits) - 'Map.refMyStatusBarVM.SetMeasureUnit(nMeasureUnit <> 0) ' imposto visualizzazione riferimento globale EgtSetGlobFrameShow(True) ' imposto i dati della griglia - Dim bGridVisibility As Boolean = (GetMainPrivateProfileInt(S_GRID, K_SHOWGRID, 1) <> 0) - Dim dSnapStepMm As Double = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10) - Dim dSnapStepInch As Double = GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 10) - Dim nMinLineSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1) - Dim nMajLineSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10) - Dim nExtSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_EXTSSTEP, 50) Dim MinLnColor As Color3d = New Color3d(160, 160, 160) GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, MinLnColor) Dim MajLnColor As Color3d = New Color3d(160, 160, 160) GetMainPrivateProfileColor(S_GRID, K_MAJLNCOLOR, MajLnColor) EgtSetGridFrame(Frame3d.GLOB) - If bMmUnits Then - EgtSetGridGeo(dSnapStepMm, nMinLineSStep, nMajLineSStep, nExtSStep) - Else - EgtSetGridGeo(dSnapStepInch, nMinLineSStep, nMajLineSStep, nExtSStep) - End If + EgtSetGridGeo( If( bMmUnits, OptionModule.m_dSnapStepMm, OptionModule.m_dSnapStepInch), + OptionModule.m_nMinLineSStep, OptionModule.m_nMajLineSStep, OptionModule.m_nExtSStep) EgtSetGridColor(MinLnColor, MajLnColor) - EgtSetGridShow(bGridVisibility, bGridVisibility) + EgtSetGridShow(OptionModule.m_bGridVisibility, OptionModule.m_bGridVisibility) ' imposto tipo coordinate MainScene.SetGridCursorPos(True) ' visualizzazione avanzata dei triangoli costituenti le superfici @@ -1491,6 +1481,8 @@ Public Class MySceneHostVM ' eseguo comando Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_OBJ) Map.refStartMachPanelVM.ResetCPlaneObjIsActive() + ' imposto dimensioni griglia standard (non tavola) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) ' ripristino selezioni precedenti For Each Id In Map.refStartMachPanelVM.PrevSelObjs EgtSelectObj(Id) @@ -1575,6 +1567,8 @@ Public Class MySceneHostVM ' eseguo comando Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_OBJ) Map.refRibPanelVM.ResetCPlaneObjIsActive() + ' imposto dimensioni griglia standard (non tavola) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) ' ripristino selezioni precedenti For Each Id In Map.refRibPanelVM.PrevSelObjs EgtSelectObj(Id) @@ -1660,6 +1654,8 @@ Public Class MySceneHostVM ' eseguo comando Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_OBJ) Map.refShellNumberPanelVM.ResetCPlaneObjIsActive() + ' imposto dimensioni griglia standard (non tavola) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) ' ripristino selezioni precedenti For Each Id In Map.refShellNumberPanelVM.PrevSelObjs EgtSelectObj(Id) @@ -1745,6 +1741,8 @@ Public Class MySceneHostVM ' eseguo comando Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_OBJ) Map.refFilledSolidPanelVM.ResetCPlaneObjIsActive() + ' imposto dimensioni griglia standard (non tavola) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) ' ripristino selezioni precedenti For Each Id In Map.refFilledSolidPanelVM.PrevSelObjs EgtSelectObj(Id) diff --git a/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb b/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb index 2fa779c..b3f9f82 100644 --- a/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb +++ b/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb @@ -600,6 +600,7 @@ Public Class ShellNumberPanelVM Friend Sub Dispose() ' ripristino frame originale EgtSetGridFrame(m_OriginalGridFrame) + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) ' se in modifica parametri If m_bMachParam_IsChecked Then ' ripristino modalita' standard @@ -1081,6 +1082,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneTop(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1106,6 +1108,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneFront(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1131,6 +1134,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneRight(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1156,6 +1160,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneBack(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BACK) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1181,6 +1186,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneLeft(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.LEFT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1206,6 +1212,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneBottom(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BOTTOM) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -1232,6 +1239,7 @@ Public Class ShellNumberPanelVM Public Sub CPlaneElevation(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub @@ -1257,87 +1265,12 @@ Public Class ShellNumberPanelVM Public Sub CPlaneOrigin(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub #End Region ' CPlaneOrigin -#Region "CPlaneRotate" - - ''' - ''' Returns a command that do CPlaneRotate. - ''' - Public ReadOnly Property CPlaneRotate_Command As ICommand - Get - If m_cmdCPlaneRotate Is Nothing Then - m_cmdCPlaneRotate = New Command(AddressOf CPlaneRotate) - End If - Return m_cmdCPlaneRotate - End Get - End Property - - ''' - ''' Execute the CPlaneRotate. This method is invoked by the CPlaneRotateCommand. - ''' - Public Sub CPlaneRotate(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE) - Else - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ROTATE3D) - End If - End Sub - -#End Region ' CPlaneRotate - -#Region "CPlane3P" - - ''' - ''' Returns a command that do CPlane3P. - ''' - Public ReadOnly Property CPlane3P_Command As ICommand - Get - If m_cmdCPlane3P Is Nothing Then - m_cmdCPlane3P = New Command(AddressOf CPlane3P) - End If - Return m_cmdCPlane3P - End Get - End Property - - ''' - ''' Execute the CPlane3P. This method is invoked by the CPlane3PCommand. - ''' - Public Sub CPlane3P(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_3P) - End Sub - -#End Region ' CPlane3P - -#Region "CPlanePerpObj" - - ''' - ''' Returns a command that do CPlanePerpObj. - ''' - Public ReadOnly Property CPlanePerpObj_Command As ICommand - Get - If m_cmdCPlanePerpObj Is Nothing Then - m_cmdCPlanePerpObj = New Command(AddressOf CPlanePerpObj) - End If - Return m_cmdCPlanePerpObj - End Get - End Property - - ''' - ''' Execute the CPlanePerpObj. This method is invoked by the CPlanePerpObjCommand. - ''' - Public Sub CPlanePerpObj(ByVal param As Object) - If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_PERPCURVE) - End Sub - -#End Region ' CPlanePerpObj - #Region "CPlaneObj" Private m_bCPlaneObj_IsActive As Boolean = False diff --git a/Icarus/SimulationPanel/SimulationPanelVM.vb b/Icarus/SimulationPanel/SimulationPanelVM.vb index 29d33b5..0f16595 100644 --- a/Icarus/SimulationPanel/SimulationPanelVM.vb +++ b/Icarus/SimulationPanel/SimulationPanelVM.vb @@ -147,7 +147,7 @@ Public Class SimulationPanelVM ' Abilito impostazione modificato EgtEnableModified() ' Ripristino vista griglia - EgtSetGridShow(True, True) + EgtSetGridShow(OptionModule.m_bGridVisibility, OptionModule.m_bGridVisibility) ' Cambio la vista della scena EgtSetGenericView(m_dPrevAngVertDegView, m_dPrevAngHorizDegView, False) EgtZoom(ZM.ALL) diff --git a/Icarus/StartMachPanel/StartMachPanelVM.vb b/Icarus/StartMachPanel/StartMachPanelVM.vb index b8659e3..f130688 100644 --- a/Icarus/StartMachPanel/StartMachPanelVM.vb +++ b/Icarus/StartMachPanel/StartMachPanelVM.vb @@ -484,6 +484,7 @@ Public Class StartMachPanelVM Friend Sub Dispose() ' ripristino frame originale EgtSetGridFrame(m_OriginalGridFrame) + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) EgtDeselectAll() EgtDraw() Map.refSceneHostVM.MainScene.SetStatusNull() @@ -779,6 +780,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneTop(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeoAdv( -1, -1, -1, 0, CurrentMachine.b3Tab.DimX(), 0, CurrentMachine.b3Tab.DimY()) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -804,6 +806,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneFront(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -829,6 +832,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneRight(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -854,6 +858,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneBack(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BACK) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -879,6 +884,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneLeft(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.LEFT) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -904,6 +910,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneBottom(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.BOTTOM) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID) End Sub @@ -930,6 +937,7 @@ Public Class StartMachPanelVM Public Sub CPlaneElevation(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ELEVATION) End Sub @@ -955,6 +963,7 @@ Public Class StartMachPanelVM Public Sub CPlaneOrigin(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return ManageInterface(False) + EgtSetGridGeo( -1, -1, -1, OptionModule.m_nExtSStep) Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID_ORIGIN) End Sub diff --git a/Icarus/StatusBar/MyStatusBarVM.vb b/Icarus/StatusBar/MyStatusBarVM.vb index e1a5ed2..27d093e 100644 --- a/Icarus/StatusBar/MyStatusBarVM.vb +++ b/Icarus/StatusBar/MyStatusBarVM.vb @@ -25,11 +25,13 @@ Public Class MyStatusBarVM Set(value As Boolean) If Map.refRibPanelVM.bGrid_IsChecked Or Map.refStartMachPanelVM.bGrid_IsChecked Or Map.refShellNumberPanelVM.bGrid_IsChecked Then Return m_bGridVisibility = value + OptionModule.m_bGridVisibility = m_bGridVisibility EgtSetGridShow(value, value) EgtDraw() - Map.refRibPanelVM.NotifyPropertyChanged(NameOf(Map.refRibPanelVM.bGrid_IsEnabled)) Map.refStartMachPanelVM.NotifyPropertyChanged(NameOf(Map.refStartMachPanelVM.bGrid_IsEnabled)) + Map.refRibPanelVM.NotifyPropertyChanged(NameOf(Map.refRibPanelVM.bGrid_IsEnabled)) Map.refShellNumberPanelVM.NotifyPropertyChanged(NameOf(Map.refShellNumberPanelVM.bGrid_IsEnabled)) + Map.refFilledSolidPanelVM.NotifyPropertyChanged(NameOf(Map.refFilledSolidPanelVM.bGrid_IsEnabled)) End Set End Property @@ -117,7 +119,7 @@ Public Class MyStatusBarVM ' Installo funzione output testo su status per lua EgtSetOutText(m_OutTextCallback) ' imposto stato di visualizzazione della griglia - m_bGridVisibility = GetMainPrivateProfileInt(S_GRID, K_SHOWGRID, 1) <> 0 + m_bGridVisibility = OptionModule.m_bGridVisibility NotifyPropertyChanged(NameOf(bGridVisibility)) End Sub diff --git a/Icarus/Utility/CurrentMachine.vb b/Icarus/Utility/CurrentMachine.vb index 6719d3b..4a34ecd 100644 --- a/Icarus/Utility/CurrentMachine.vb +++ b/Icarus/Utility/CurrentMachine.vb @@ -131,7 +131,7 @@ Public Module CurrentMachine Public Sub CreateMachineTable() ' Disabilito segnalazione modificato Dim DisableMgr As New DisableModifiedMgr - Dim dTabX = b3Tab.DimX + Dim dTabX = b3Tab.DimX() Dim dTabY = b3Tab.DimY() ' Disegno tavola Dim nTabPartId As Integer = EgtCreateGroup(GDB_ID.ROOT) @@ -150,8 +150,10 @@ Public Module CurrentMachine EgtSetInfo(nTabPartId, KEY_MATERIAL_GUID, Map.refTopPanelVM.SelMaterial.sGUID) EgtSetInfo(nTabPartId, KEY_MATERIAL_NAME, Map.refTopPanelVM.SelMaterial.sName) End If - '' creo area di estrusione + ' creo area di estrusione UpdateExtrusionArea() + ' imposto dati griglia (primi tre parametri -1 indica tieni i correnti) + EgtSetGridGeoAdv( -1, -1, -1, 0, dTabX, 0, dTabY) ' Ripristino stato segnalazione modifica DisableMgr.ReEnable() End Sub