diff --git a/EgtCAM5.vbproj b/EgtCAM5.vbproj
index ee494ca..9e32b64 100644
--- a/EgtCAM5.vbproj
+++ b/EgtCAM5.vbproj
@@ -304,6 +304,7 @@
+
ToolsDbView.xaml
diff --git a/MainWindow/MainWindow.xaml b/MainWindow/MainWindow.xaml
index a0ab718..e78a6b7 100644
--- a/MainWindow/MainWindow.xaml
+++ b/MainWindow/MainWindow.xaml
@@ -10,6 +10,7 @@
BorderBrush="{StaticResource EgaltechBlue1}" BorderThickness="2"
MinHeight="600" MinWidth="800" WindowStyle="None" ResizeMode="NoResize"
AboutBoxCommand="{Binding AboutBoxCommand}"
+ AllowDrop="True" Drop="MainWindow_Drop"
CloseCommand="{Binding CloseApplicationCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">
diff --git a/MainWindow/MainWindow.xaml.vb b/MainWindow/MainWindow.xaml.vb
index eaf275e..10bbcdf 100644
--- a/MainWindow/MainWindow.xaml.vb
+++ b/MainWindow/MainWindow.xaml.vb
@@ -10,4 +10,18 @@ Class MainWindow
WinPosToWindow(Me, WinPos)
End Sub
+ Private Sub MainWindow_Drop(sender As Object, e As DragEventArgs)
+ ' Se drag di file
+ If e.Data.GetDataPresent(DataFormats.FileDrop) Then
+ ' Attivo il programma
+ Me.Activate()
+ ' Recupero l'array di stringhe con i nomi del file
+ Dim sFiles() As String = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
+ ' Apro il primo come file standard
+ If EgtCAM5Map.refProjectVM.OpenStdFile(sFiles(0)) Then Return
+ ' Riprovo come file descrizione porta
+ EgtCAM5Map.refProjectVM.OpenDoorFile(sFiles(0))
+ End If
+ End Sub
+
End Class
diff --git a/MainWindow/MainWindowViewModel.vb b/MainWindow/MainWindowViewModel.vb
index e79c29b..1cff3ff 100644
--- a/MainWindow/MainWindowViewModel.vb
+++ b/MainWindow/MainWindowViewModel.vb
@@ -290,9 +290,7 @@ Namespace EgtCAM5
''' Method that initialize EgalTech environment
'''
Private Sub InitializeEgtEnvironment()
- '' Abilito drag and drop
- 'Me.AllowDrop = True
- '' Title
+ ' Title
Application.Msn.NotifyColleagues(Application.EMITTITLE)
' Impostazione path radice per i dati
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
@@ -398,7 +396,6 @@ Namespace EgtCAM5
End If
' Info su opzioni chiave
EgtOutLog("KeyOptions : " & bKey.ToString() & " " & IniFile.m_nKeyOptions.ToString())
-
End Sub
'''
diff --git a/ProjectPage/ProjectViewModel.vb b/ProjectPage/ProjectViewModel.vb
index eeaa2fd..3e6f0cc 100644
--- a/ProjectPage/ProjectViewModel.vb
+++ b/ProjectPage/ProjectViewModel.vb
@@ -318,20 +318,18 @@ Namespace EgtCAM5
' Se file ddf, gestione creazione porta con Doors
If sExt = ".ddf" Then
' Se manca direttorio uso quello di default
- If String.IsNullOrWhiteSpace(IO.Path.GetDirectoryName(sFile)) Then
+ 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 Int32.TryParse(Environment.GetCommandLineArgs(2), nFlag)
+ If Environment.GetCommandLineArgs.Count() > 2 Then Integer.TryParse(Environment.GetCommandLineArgs(2), nFlag)
Dim bNcGen As Boolean = (nFlag >= 1)
Dim bExit As Boolean = (nFlag >= 2)
' Esecuzione
- CreateDoors(sFile, bNcGen, bExit)
- EgtZoom(ZM.ALL)
- Application.Msn.NotifyColleagues(Application.EMITTITLE)
+ OpenDoorFile(sFile, bNcGen, bExit)
' Se richiesta uscita immediata
If bExit Then Application.Msn.NotifyColleagues(Application.CLOSEAPPLICATIONCOMMAND)
Return
@@ -343,7 +341,7 @@ Namespace EgtCAM5
If Environment.GetCommandLineArgs.Count() > 2 Then sMachine = Environment.GetCommandLineArgs(2)
' Recupero flag
Dim nFlag As Integer = 0
- If Environment.GetCommandLineArgs.Count() > 3 Then Int32.TryParse(Environment.GetCommandLineArgs(3), nFlag)
+ If Environment.GetCommandLineArgs.Count() > 3 Then Integer.TryParse(Environment.GetCommandLineArgs(3), nFlag)
Dim bTest As Boolean = (nFlag = 0)
' Esecuzione
UpdateTools(sFile, sMachine, bTest)
@@ -352,16 +350,32 @@ Namespace EgtCAM5
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
- m_Controller.OpenProject(sFile, False)
+ Return m_Controller.OpenProject(sFile, False)
Case FT.DXF, FT.STL, FT.CNC, FT.CSF, FT.BTL
- m_Controller.ImportProject(sFile, False)
+ Return m_Controller.ImportProject(sFile, False)
Case FT.TSC, FT.LUA
- m_Controller.Exec(sFile, False)
+ Return m_Controller.Exec(sFile, False)
End Select
- End Sub
+ Return False
+ End Function
+
+ Friend Function OpenDoorFile(sFile As String, Optional bNcGen As Boolean = False, Optional bBatch As Boolean = False) As Boolean
+ ' Formato descrizione porte
+ If Path.GetExtension(sFile).ToLower() = ".ddf" Then
+ CreateDoors(sFile, bNcGen, bBatch)
+ EgtZoom(ZM.ALL)
+ Application.Msn.NotifyColleagues(Application.EMITTITLE)
+ Return True
+ End If
+ Return False
+ End Function
Private Sub EmitTitle()
' nome file
@@ -1249,7 +1263,7 @@ Namespace EgtCAM5
Private Sub OnNewProject(ByVal sender As Object, ByVal bOk As Boolean) Handles m_Controller.OnNewProject
EgtZoom(ZM.ALL)
If Not bOk Then
- MessageBox.Show(EgtMsg(10002), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error on new file - Error
+ MessageBox.Show(Application.Current.MainWindow, EgtMsg(10002), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error on new file - Error
End If
End Sub
@@ -1265,7 +1279,7 @@ Namespace EgtCAM5
Else
IniFile.m_MruFiles.Remove(sFile)
Dim sMsg As String = EgtMsg(10003) & " '" & sFile & "'" 'Error opening file
- MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
+ MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
End If
End Sub
@@ -1283,7 +1297,7 @@ Namespace EgtCAM5
Else
IniFile.m_MruFiles.Remove(sFile)
Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file
- MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
+ MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
End If
End Sub
@@ -1297,7 +1311,7 @@ Namespace EgtCAM5
Else
IniFile.m_MruFiles.Remove(sFile)
Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file
- MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
+ MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
End If
End Sub
@@ -1312,7 +1326,7 @@ Namespace EgtCAM5
nFlag = 0
End If
Else
- MessageBox.Show(EgtMsg(10005), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' File type unknown - Error
+ MessageBox.Show(Application.Current.MainWindow, EgtMsg(10005), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' File type unknown - Error
End If
End Sub
@@ -1321,7 +1335,7 @@ Namespace EgtCAM5
WritePrivateProfileString(S_GENERAL, K_LASTIMPDIR, Path.GetDirectoryName(sFile))
If Not bOk Then
Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file
- MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
+ MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
End If
End Sub
@@ -1332,7 +1346,7 @@ Namespace EgtCAM5
WritePrivateProfileString(S_GENERAL, K_LASTEXPDIR, Path.GetDirectoryName(sFile))
If Not bOk Then
Dim sMsg As String = EgtMsg(10007) & " '" & sFile & "'" 'Error exporting file
- MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
+ MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
End If
End Sub
@@ -1352,7 +1366,7 @@ Namespace EgtCAM5
If m_bScriptInMru Then IniFile.m_MruScripts.Add(sFile)
Else
If m_bScriptInMru Then IniFile.m_MruScripts.Remove(sFile)
- MessageBox.Show(sError, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
+ MessageBox.Show(Application.Current.MainWindow, sError, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
End If
' Disabilito progress e bottone stop
Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSPROGRESS, 0)
diff --git a/ToolsDbWindow/ToolDraw.vb b/ToolsDbWindow/ToolDraw.vb
new file mode 100644
index 0000000..302032e
--- /dev/null
+++ b/ToolsDbWindow/ToolDraw.vb
@@ -0,0 +1,172 @@
+Imports System.Globalization
+Imports EgtUILib
+
+
+Module ToolDraw
+
+ ' Dati generali
+ Friend nToolContext As Integer = 0
+ Friend nError As Integer = 0
+ ' Dati utensile
+ Friend sHeadName As String = ""
+ Friend sExitName As String = ""
+ Friend nType As Integer = MCH_TY.NONE
+ Friend dTotLen As Double = 0
+ Friend dLen As Double = 0
+ Friend dTotDiam As Double = 0
+ Friend dDiam As Double = 0
+ Friend dThick As Double = 0
+ Friend dMaxMat As Double = 0
+ Friend dSideAng As Double = 0
+ Friend dCornRad As Double = 0
+
+ Friend Function Create() As Boolean
+ ' Reset stato di errore
+ nError = 0
+ ' Verifico esistenza creatore utensili
+ If Not LoadToolMaker() Then Return False
+ ' Recupero nome eventuale portautensile
+ Dim sToolHolder As String = GetToolHolderPath()
+ ' Assegno i dati utensile a seconda del tipo
+ Select Case nType
+ Case MCH_TY.DRILL_STD, MCH_TY.DRILL_LONG, MCH_TY.CHISEL_STD
+ ' imposto dati utensile
+ EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", sToolHolder)
+ EgtLuaSetGlobNumVar("TOOL.TOTLEN", dTotLen)
+ EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
+ EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
+ EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
+ Case MCH_TY.SAW_STD, MCH_TY.SAW_FLAT
+ ' imposto dati utensile
+ EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", sToolHolder)
+ EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
+ EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
+ Dim dCore As Double = If(dLen >= dThick, dThick - 1, 2 * dLen - dThick)
+ EgtLuaSetGlobNumVar("TOOL.CORE", dCore)
+ EgtLuaSetGlobNumVar("TOOL.THICK", dThick)
+ EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
+ Case MCH_TY.MILL_STD, MCH_TY.MILL_NOTIP
+ ' imposto dati utensile
+ EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", sToolHolder)
+ EgtLuaSetGlobNumVar("TOOL.TOTLEN", dTotLen)
+ EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
+ EgtLuaSetGlobNumVar("TOOL.TOTDIAM", dTotDiam)
+ EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
+ EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
+ EgtLuaSetGlobNumVar("TOOL.HEIGHT", dThick)
+ EgtLuaSetGlobNumVar("TOOL.SIDEANG", dSideAng)
+ EgtLuaSetGlobNumVar("TOOL.CORNRAD", dCornRad)
+ Case Else
+ nError = 999
+ Return False
+ End Select
+ ' passo all'ambiente di disegno dell'utensile
+ EgtSetCurrentContext(nToolContext)
+ ' eseguo creazione utensile
+ EgtLuaCallFunction("CreateTool")
+ ' recupero errore
+ Dim nErr As Integer = 999
+ EgtLuaGetGlobIntVar("TOOL.ERR", nErr)
+ nError = nErr
+ Return (nError = 0)
+ End Function
+
+ Private Function LoadToolMaker() As Boolean
+ Dim sMaker As String = String.Empty
+ EgtUILib.GetPrivateProfileString(S_TOOLS, ConvertTypeToString(nType), "", sMaker, IniFile.m_sCurrMachIniFilePath)
+ If String.IsNullOrWhiteSpace(sMaker) Then
+ nError = 1
+ Return False
+ End If
+ ' Acquisisce solo il file lua, ma meglio impostare contesto disegno utensili (se ci sono chiamate...)
+ EgtSetCurrentContext(nToolContext)
+ If Not EgtLuaExecFile(IniFile.m_sToolMakersDir & "\" & sMaker) Then
+ nError = 2
+ Return False
+ End If
+ Return True
+ End Function
+
+ Private Function ConvertTypeToString(Type As Integer) As String
+ Select Case Type
+ Case MCH_TY.DRILL_STD, MCH_TY.DRILL_LONG
+ Return K_DRILLMAKER
+ Case MCH_TY.SAW_STD, MCH_TY.SAW_FLAT
+ Return K_SAWBLADEMAKER
+ Case MCH_TY.MILL_STD, MCH_TY.MILL_NOTIP
+ Return K_MILLMAKER
+ Case MCH_TY.MORTISE_STD
+ Return K_MORTISEMAKER
+ Case MCH_TY.CHISEL_STD
+ Return K_CHISELMAKER
+ Case MCH_TY.COMPO
+ Return Nothing
+ End Select
+ Return Nothing
+ End Function
+
+ Private Function GetToolHolderPath() As String
+ Dim sHolder As String = String.Empty
+ If Not IsNothing(sHeadName) Then
+ Dim sTempExit As String = String.Empty
+ Dim nExit As Integer
+ If Integer.TryParse(sExitName, NumberStyles.Integer, CultureInfo.InvariantCulture, nExit) Then
+ sTempExit = sExitName
+ Else
+ sTempExit = "1"
+ End If
+ If nType = MCH_TY.SAW_STD Then
+ EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, sHeadName & "." & sTempExit & ":SAW_STD", "", sHolder, IniFile.m_sCurrMachIniFilePath)
+ ElseIf nType = MCH_TY.SAW_FLAT Then
+ EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, sHeadName & "." & sTempExit & ":SAW_FLAT", "", sHolder, IniFile.m_sCurrMachIniFilePath)
+ End If
+ If String.IsNullOrEmpty(sHolder) Then
+ EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, sHeadName & "." & sTempExit, "", sHolder, IniFile.m_sCurrMachIniFilePath)
+ End If
+ End If
+ If String.IsNullOrWhiteSpace(sHolder) Then
+ Return String.Empty
+ Else
+ Dim sHolderPath As String = String.Empty
+ EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
+ EgtTdbGetToolHolderDir(sHolderPath)
+ sHolderPath += "\" & sHolder
+ Return sHolderPath
+ End If
+ End Function
+
+ Friend Function Save(sName As String) As Boolean
+ ' Verifico sia di tipo costruibile
+ If nType <> MCH_TY.DRILL_STD And nType <> MCH_TY.DRILL_LONG And
+ nType <> MCH_TY.SAW_STD And nType <> MCH_TY.SAW_FLAT And
+ nType <> MCH_TY.MILL_STD And nType <> MCH_TY.MILL_NOTIP And
+ nType <> MCH_TY.CHISEL_STD Then
+ Return False
+ End If
+ ' Path del file da salvare
+ EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
+ Dim sPath As String = String.Empty
+ EgtTdbGetToolDir(sPath)
+ sPath = sPath & "\" & sName
+ ' passo all'ambiente di disegno dell'utensile
+ EgtSetCurrentContext(nToolContext)
+ ' nascondo layer ausiliario
+ Dim nAuxId As Integer = GDB_ID.NULL
+ nAuxId = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "AUX")
+ EgtSetStatus(nAuxId, GDB_ST.OFF)
+ ' se lama devo ruotare -90 deg attorno a Z+
+ If nType = MCH_TY.SAW_STD Or nType = MCH_TY.SAW_FLAT Then
+ EgtRotate(EgtGetFirstGroupInGroup(GDB_ID.ROOT), Point3d.ORIG(), Vector3d.Z_AX(), -90, GDB_RT.GLOB)
+ End If
+ ' salvo il modello
+ Dim bOk As Boolean = EgtSaveFile(sPath, NGE.CMPTEXT)
+ ' eseguo controrotazione per lama
+ If nType = MCH_TY.SAW_STD Or nType = MCH_TY.SAW_FLAT Then
+ EgtRotate(EgtGetFirstGroupInGroup(GDB_ID.ROOT), Point3d.ORIG(), Vector3d.Z_AX(), 90, GDB_RT.GLOB)
+ End If
+ ' ripristino visualizzazione layer aux
+ EgtSetStatus(nAuxId, GDB_ST.ON_)
+ Return bOk
+ End Function
+
+End Module
diff --git a/ToolsDbWindow/ToolTreeView.vb b/ToolsDbWindow/ToolTreeView.vb
index 0a0ac6a..7900b7c 100644
--- a/ToolsDbWindow/ToolTreeView.vb
+++ b/ToolsDbWindow/ToolTreeView.vb
@@ -1194,21 +1194,16 @@ Public Class ToolTreeViewItem
#Region "ToolSceneUpdate"
' Variabili che segnalano errori nel disegno dell'utensile
- Dim m_bToolMakerError As Boolean = False
- Dim m_bDrawNameExistError As Boolean = False
- Dim m_bDrawNameError As Boolean = False
Dim m_nDrawingError As Integer = 0
Private Sub UpdateSceneToolDraw()
' Azzero errori
- m_bToolMakerError = False
- m_bDrawNameError = False
- m_bDrawNameExistError = False
m_nDrawingError = 0
- ' Verifico proprietà draw
+ ' Se utensile con disegno automatico
If String.IsNullOrEmpty(m_Draw) OrElse IsUUID(Path.GetFileNameWithoutExtension(m_Draw)) Then
CreateToolDraw()
+ ' altrimenti utensile con disegno assegnato
Else
EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
If Path.GetExtension(m_Draw).ToLower = ".nge" Then
@@ -1217,14 +1212,14 @@ Public Class ToolTreeViewItem
EgtZoom(ZM.ALL)
Else
' Errore
- m_bDrawNameExistError = True
+ m_nDrawingError = 6
EgtNewFile()
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End If
Else
' Errore
- m_bDrawNameError = True
+ m_nDrawingError = 5
EgtNewFile()
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
@@ -1239,184 +1234,47 @@ Public Class ToolTreeViewItem
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid And (IsModified Or NewTool), True)
End If
-
End Sub
Private Sub CreateToolDraw()
- ' Carico il relativo ToolHolder
- Dim ToolHolder As String = String.Empty
- ToolHolder = LoadToolHolder()
- If Not LoadToolMaker() OrElse Not CreateToolDraw(ToolHolder) Then
- EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
- EgtNewFile()
- End If
+ ' Imposto dati per creazione utensile
+ ToolDraw.nToolContext = IniFile.m_ToolsDbSceneContext
+ ToolDraw.sHeadName = m_SelectedHead.HName
+ ToolDraw.sExitName = m_SelectedExit
+ ToolDraw.nType = m_Type
+ StringToLen(m_TotLen, ToolDraw.dTotLen)
+ StringToLen(m_Len, ToolDraw.dLen)
+ StringToLen(m_TotDiam, ToolDraw.dTotDiam)
+ StringToLen(m_Diam, ToolDraw.dDiam)
+ StringToLen(m_Thick, ToolDraw.dThick)
+ StringToLen(m_MaxMat, ToolDraw.dMaxMat)
+ StringToDouble(m_SideAng, ToolDraw.dSideAng)
+ StringToLen(m_CornRad, ToolDraw.dCornRad)
+ ' Creo il disegno dell'utensile
+ ToolDraw.Create()
+ m_nDrawingError = ToolDraw.nError
EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
+ If m_nDrawingError <> 0 Then
+ EgtNewFile()
+ m_Draw = String.Empty
+ End If
' Aggiorno visualizzazione
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End Sub
- '''
- ''' Mathod that load the toolholder for the current tool (based on his head), or return an empty string
- '''
- Private Function LoadToolHolder() As String
- Dim sHolder As String = String.Empty
- If Not IsNothing(m_SelectedHead) Then
- Dim TempExit As String = String.Empty
- If CInt(m_SelectedExit) > 0 Then
- TempExit = m_SelectedExit
- Else
- TempExit = "1"
- End If
- If Type = MCH_TY.SAW_STD Then
- EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit & ":SAW_STD", "", sHolder, IniFile.m_sCurrMachIniFilePath)
- ElseIf Type = MCH_TY.SAW_FLAT Then
- EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit & ":SAW_FLAT", "", sHolder, IniFile.m_sCurrMachIniFilePath)
- End If
- If String.IsNullOrEmpty(sHolder) Then
- EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit, "", sHolder, IniFile.m_sCurrMachIniFilePath)
- End If
- End If
- If String.IsNullOrWhiteSpace(sHolder) Then
- Return String.Empty
- Else
- Dim sHolderPath As String = String.Empty
- EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
- EgtTdbGetToolHolderDir(sHolderPath)
- sHolderPath += "\" & sHolder
- Return sHolderPath
- End If
- End Function
-
- Private Function LoadToolMaker() As Boolean
- Dim sMaker As String = String.Empty
- EgtUILib.GetPrivateProfileString(S_TOOLS, ConvertTypeToString(Type), "", sMaker, IniFile.m_sCurrMachIniFilePath)
- If String.IsNullOrWhiteSpace(sMaker) Then m_bToolMakerError = True
- ' Acquisisce solo il file lua, ma meglio impostare contesto disegno utensili (se ci sono chiamate...)
- EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
- Return EgtLuaExecFile(IniFile.m_sToolMakersDir & "\" & sMaker)
- End Function
-
- Private Function ConvertTypeToString(Type As Integer) As String
- Select Case Type
- Case MCH_TY.DRILL_STD, MCH_TY.DRILL_LONG
- Return K_DRILLMAKER
- Case MCH_TY.SAW_STD, MCH_TY.SAW_FLAT
- Return K_SAWBLADEMAKER
- Case MCH_TY.MILL_STD, MCH_TY.MILL_NOTIP
- Return K_MILLMAKER
- Case MCH_TY.MORTISE_STD
- Return K_MORTISEMAKER
- Case MCH_TY.CHISEL_STD
- Return K_CHISELMAKER
- Case MCH_TY.COMPO
- Return Nothing
- End Select
- Return Nothing
- End Function
-
- Private Function CreateToolDraw(ToolHolder As String) As Boolean
- Dim dTotLen As Double = 0
- Dim dLen As Double = 0
- Dim dTotDiam As Double = 0
- Dim dDiam As Double = 0
- Dim dThick As Double = 0
- Dim dMaxMat As Double = 0
- Dim dSideAng As Double = 0
- Dim dCornRad As Double = 0
- StringToLen(m_TotLen, dTotLen)
- StringToLen(m_Len, dLen)
- StringToLen(m_TotDiam, dTotDiam)
- StringToLen(m_Diam, dDiam)
- StringToLen(m_Thick, dThick)
- StringToLen(m_MaxMat, dMaxMat)
- StringToDouble(m_SideAng, dSideAng)
- StringToLen(m_CornRad, dCornRad)
- Select Case Type
- Case MCH_TY.DRILL_STD, MCH_TY.DRILL_LONG, MCH_TY.CHISEL_STD
- ' imposto dati utensile
- EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", ToolHolder)
- EgtLuaSetGlobNumVar("TOOL.TOTLEN", dTotLen)
- EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
- EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
- EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
- Case MCH_TY.SAW_STD, MCH_TY.SAW_FLAT
- ' imposto dati utensile
- EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", ToolHolder)
- EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
- EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
- Dim dCore As Double = If(dLen >= dThick, dThick - 1, 2 * dLen - dThick)
- EgtLuaSetGlobNumVar("TOOL.CORE", dCore)
- EgtLuaSetGlobNumVar("TOOL.THICK", dThick)
- EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
- Case MCH_TY.MILL_STD, MCH_TY.MILL_NOTIP
- ' imposto dati utensile
- EgtLuaSetGlobStringVar("TOOL.TOOLHOLDER", ToolHolder)
- EgtLuaSetGlobNumVar("TOOL.TOTLEN", dTotLen)
- EgtLuaSetGlobNumVar("TOOL.LEN", dLen)
- EgtLuaSetGlobNumVar("TOOL.TOTDIAM", dTotDiam)
- EgtLuaSetGlobNumVar("TOOL.DIAM", dDiam)
- EgtLuaSetGlobNumVar("TOOL.MAXMAT", dMaxMat)
- EgtLuaSetGlobNumVar("TOOL.HEIGHT", dThick)
- EgtLuaSetGlobNumVar("TOOL.SIDEANG", dSideAng)
- EgtLuaSetGlobNumVar("TOOL.CORNRAD", dCornRad)
- Case Else
- m_nDrawingError = 999
- m_Draw = String.Empty
- Return False
- End Select
- ' passo all'ambiente di disegno dell'utensile
- EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
- ' eseguo creazione utensile
- EgtLuaCallFunction("CreateTool")
- ' recupero errore
- Dim nErr As Integer = 999
- EgtLuaGetGlobIntVar("TOOL.ERR", nErr)
- m_nDrawingError = nErr
- If m_nDrawingError <> 0 Then m_Draw = String.Empty
- If m_nDrawingError = 0 Then m_Draw = m_Uuid & ".nge"
- Return (nErr = 0)
- End Function
-
Friend Function SaveToolDraw() As Boolean
- If m_Type = MCH_TY.DRILL_STD Or m_Type = MCH_TY.DRILL_LONG Or
- m_Type = MCH_TY.SAW_STD Or m_Type = MCH_TY.SAW_FLAT Or
- m_Type = MCH_TY.MILL_STD Or m_Type = MCH_TY.MILL_NOTIP Or
- m_Type = MCH_TY.CHISEL_STD Then
- ' nome e direttorio del file da salvare
- EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
- Dim sDrawName As String = Uuid
- sDrawName = sDrawName & ".nge"
- Dim sPath As String = String.Empty
- EgtTdbGetToolDir(sPath)
- sPath = sPath & "\" & sDrawName
- ' passo all'ambiente di disegno dell'utensile
- EgtSetCurrentContext(IniFile.m_ToolsDbSceneContext)
- ' nascondo layer ausiliario
- Dim nAuxId As Integer = GDB_ID.NULL
- nAuxId = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "AUX")
- EgtSetStatus(nAuxId, GDB_ST.OFF)
- ' se lama devo ruotare -90 deg attorno a Z+
- If m_Type = MCH_TY.SAW_STD Or m_Type = MCH_TY.SAW_FLAT Then
- EgtRotate(EgtGetFirstGroupInGroup(GDB_ID.ROOT), Point3d.ORIG(), Vector3d.Z_AX(), -90, GDB_RT.GLOB)
- End If
- ' salvo il modello
- Dim z = EgtGetCurrentContext()
- Dim bOk As Boolean = EgtSaveFile(sPath, NGE.CMPTEXT)
- Dim e = EgtGetCurrentContext()
- ' eseguo controrotazione per lama
- If m_Type = MCH_TY.SAW_STD Or m_Type = MCH_TY.SAW_FLAT Then
- EgtRotate(EgtGetFirstGroupInGroup(GDB_ID.ROOT), Point3d.ORIG(), Vector3d.Z_AX(), 90, GDB_RT.GLOB)
- End If
- ' ripristino visualizzazione layer aux
- EgtSetStatus(nAuxId, GDB_ST.ON_)
- ' salvo nome del disegno utensile
- EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
- EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDrawName)
- EgtTdbSaveCurrTool()
- Return bOk
- End If
- Return False
+ ' Imposto dati per salvataggio utensile
+ ToolDraw.nToolContext = IniFile.m_ToolsDbSceneContext
+ ToolDraw.nType = m_Type
+ ' Eseguo salvataggio
+ Dim sName As String = Uuid & ".nge"
+ If Not ToolDraw.Save(sName) Then Return False
+ ' Salvo nome del disegno utensile
+ EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
+ EgtTdbSetCurrToolParam(MCH_TP.DRAW, sName)
+ EgtTdbSaveCurrTool()
+ Return True
End Function
#End Region ' ToolSceneUpdate
@@ -1797,46 +1655,39 @@ Public Class ToolTreeViewItem
Private Function ValidateDraw() As Boolean
m_DrawError = String.Empty
- If m_bDrawNameError Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 2)
- End If
- If m_bDrawNameExistError Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 3)
- End If
- If m_bToolMakerError Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 4)
- End If
- If m_nDrawingError = 12 Then
+ If m_nDrawingError = 5 Then
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 2) ' Il file deve essere .nge
+ ElseIf m_nDrawingError = 6 Then
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 3) ' Il file non esiste
+ ElseIf m_nDrawingError = 1 Or m_nDrawingError = 2 Then
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 4) ' Non esiste il ToolMaker per questo tipo di utensile
+ ElseIf m_nDrawingError = 12 Then
m_DrawError = EgtMsg(MSG_TOOLSERRORS + 21) ' Utensile troppo corto con il portautensile
ElseIf m_nDrawingError = 13 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 31)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 31) ' Lo Spessore deve essere differente da 0
ElseIf m_nDrawingError = 14 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 32)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 32) ' L'Angolo di Lato deve essere inferiore di 90
ElseIf m_nDrawingError = 15 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 33)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 33) ' L'Angolo di Lato deve essere maggiore di -90
ElseIf m_nDrawingError = 16 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 35)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 35) ' Raggio Corner ha un valore troppo grande
ElseIf m_nDrawingError = 17 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 36)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 36) ' Lo Spessore ha un valore troppo piccolo rispetto al Raggio Corne
ElseIf m_nDrawingError = 18 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 37)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 37) ' Il diametro risultante supera il Diametro Totale
ElseIf m_nDrawingError = 19 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 38)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 38) ' Il diametro risultante è minore di 0
ElseIf m_nDrawingError = 20 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 39)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 39) ' Il diametro stelo risultante è minore o uguale a 0
ElseIf m_nDrawingError = 21 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 40)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 40) ' Il Massimo Materiale deve essere più grande del Raggio Corner
ElseIf m_nDrawingError = 22 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 34)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 34) ' La Lunghezza Totale deve essere maggiore di Lunghezza + Spessore
ElseIf m_nDrawingError <> 0 Then
- m_DrawError = EgtMsg(MSG_TOOLSERRORS + 5)
+ m_DrawError = EgtMsg(MSG_TOOLSERRORS + 5) ' Impossibile creare l'utensile con questi parametri
End If
NotifyPropertyChanged("DrawErrorMsg")
- If String.IsNullOrEmpty(m_DrawError) Then
- Return True
- Else
- Return False
- End If
+ Return String.IsNullOrEmpty(m_DrawError)
End Function
Private Function ValidateSelectedHead() As Boolean
diff --git a/ToolsDbWindow/ToolsUpdate.vb b/ToolsDbWindow/ToolsUpdate.vb
index 719ef41..a26ea01 100644
--- a/ToolsDbWindow/ToolsUpdate.vb
+++ b/ToolsDbWindow/ToolsUpdate.vb
@@ -101,6 +101,8 @@ Module ToolsUpdate
Private Function ExecUpdate(ByRef vCldTool As List(Of CldTool), bTest As Boolean, ByRef sInfo As String) As Boolean
' Classe di confronto
Dim ToolComp As New CldToolComparer
+ ' Leggo direttorio toolmakers
+ GetPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", IniFile.m_sToolMakersDir)
' Ciclo su tutti gli utensili nel DB
Const ALL_TOOLS As Integer = MCH_TF.DRILLBIT + MCH_TF.SAWBLADE + MCH_TF.MILL + MCH_TF.MORTISE + MCH_TF.CHISEL + MCH_TF.COMPO
Dim sName As String = String.Empty
@@ -145,6 +147,23 @@ Module ToolsUpdate
Else
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dMaxMat + dDeltaL)
End If
+ ' Se non esiste il disegno dell'utensile o modificato
+ Dim sDrawStat As String = "Ok"
+ Dim sDraw As String = String.Empty
+ EgtTdbGetCurrToolParam(MCH_TP.DRAW, sDraw)
+ Dim sPath As String = String.Empty
+ EgtTdbGetToolDir(sPath)
+ sPath = sPath & "\" & sDraw
+ If Not bTest And (EgtTdbIsCurrToolModified() OrElse Not File.Exists(sPath)) Then
+ ' Se disegno automatico, lo aggiorno
+ If IsUUID(Path.GetFileNameWithoutExtension(sDraw)) Then
+ If ExecToolDraw(sDraw) Then
+ sDrawStat = "Modified"
+ Else
+ sDrawStat = "Editing Error"
+ End If
+ End If
+ End If
' Se non è test salvo modifiche utensile
If Not bTest Then EgtTdbSaveCurrTool()
' informazioni
@@ -152,7 +171,8 @@ Module ToolsUpdate
" L=" & dLen.ToString("F3", CultureInfo.InvariantCulture) &
" D=" & dDiam.ToString("F3", CultureInfo.InvariantCulture) &
" NewL=" & vCldTool(nI).dLen.ToString("F3", CultureInfo.InvariantCulture) &
- " NewD=" & vCldTool(nI).dDiam.ToString("F3", CultureInfo.InvariantCulture)
+ " NewD=" & vCldTool(nI).dDiam.ToString("F3", CultureInfo.InvariantCulture) &
+ " Draw=" & sDrawStat
sInfo &= sOut & vbCrLf
EgtOutLog(sOut)
Else
@@ -172,6 +192,36 @@ Module ToolsUpdate
Return True
End Function
+ Private Function ExecToolDraw(sName As String) As Boolean
+ ' Recupero dati dell'utensile corrente
+ EgtTdbGetCurrToolParam(MCH_TP.HEAD, ToolDraw.sHeadName)
+ Dim nExit As Integer = 0
+ EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExit)
+ ToolDraw.sExitName = nExit.ToString()
+ EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExit)
+ EgtTdbGetCurrToolParam(MCH_TP.TYPE, ToolDraw.nType)
+ EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, ToolDraw.dTotLen)
+ EgtTdbGetCurrToolParam(MCH_TP.LEN, ToolDraw.dLen)
+ EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, ToolDraw.dTotDiam)
+ EgtTdbGetCurrToolParam(MCH_TP.DIAM, ToolDraw.dDiam)
+ EgtTdbGetCurrToolParam(MCH_TP.THICK, ToolDraw.dThick)
+ EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, ToolDraw.dMaxMat)
+ EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, ToolDraw.dSideAng)
+ EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, ToolDraw.dCornRad)
+ ' Creo contesto temporaneo per disegno utensile
+ Dim nTempCtx As Integer = EgtInitContext()
+ If nTempCtx = 0 Then Return False
+ ToolDraw.nToolContext = nTempCtx
+ ' Creo il disegno dell'utensile
+ If Not ToolDraw.Create() Then Return False
+ ' Salvo il disegno dell'utensile
+ Dim bOk As Boolean = ToolDraw.Save(sName)
+ ' Cancello il contesto temporaneo e ripristino quello di progetto
+ EgtDeleteContext(nTempCtx)
+ EgtSetCurrentContext(IniFile.m_ProjectSceneContext)
+ Return bOk
+ End Function
+
Private Function ToolTypeToString(nType As Integer) As String
Select Case nType
Case MCH_TY.DRILL_STD