EgtWPFLib5 2.1e3 :

- visualizzazione utensili in DB spostata nelle librerie base
- aggiunta funzione StringToInt.
This commit is contained in:
Dario Sassi
2019-05-18 16:17:15 +00:00
parent 53b596f263
commit 7370ea06c2
4 changed files with 95 additions and 258 deletions
+86 -230
View File
@@ -112,9 +112,6 @@ Public Class ToolTreeViewItem
m_NewTool = False
m_Name = m_Name.Trim()
WriteToolName()
If IsUUID(Path.GetFileNameWithoutExtension(m_Draw)) Then
SaveToolDraw()
End If
EgtTdbSaveCurrTool()
Case MsgBoxResult.No
If m_NewTool Then
@@ -1254,44 +1251,25 @@ 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
If String.IsNullOrEmpty(m_Draw) OrElse IsUUID(Path.GetFileNameWithoutExtension(m_Draw)) Then
CreateToolDraw()
Else
EgtSetCurrentContext(ToolDbWindowVM.m_ToolDbSceneContext)
If Path.GetExtension(m_Draw).ToLower = ".nge" Then
If EgtOpenFile(ToolDbWindowVM.m_sToolDirPath & "\" & m_Draw) Then
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
Else
' Errore
m_bDrawNameExistError = True
EgtNewFile()
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End If
Else
' Errore
m_bDrawNameError = True
' Se nome disegno vuoto, assegno quello dell'automatico
If String.IsNullOrEmpty(m_Draw) Then m_Draw = m_Uuid & ".nge"
' Creo il disegno dell'utensile
CreateToolDraw()
EgtSetCurrentContext(ToolDbWindowVM.m_ToolDbSceneContext)
If m_nDrawingError <> 0 Then
If IsUUID(Path.GetFileNameWithoutExtension(m_Draw)) Then
EgtNewFile()
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End If
End If
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
NotifyPropertyChanged("Draw")
' Aggiorno interfaccia
If Not GetValidationError("Draw") Then
m_delErrorOnTool(True)
m_delIsEnabledBtns(False, False, True)
@@ -1299,184 +1277,70 @@ Public Class ToolTreeViewItem
m_delErrorOnTool(Not IsValid)
m_delIsEnabledBtns(IsValid And Not IsModified, IsValid, 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(ToolDbWindowVM.m_ToolDbSceneContext)
EgtNewFile()
End If
EgtSetCurrentContext(ToolDbWindowVM.m_ToolDbSceneContext)
' Aggiorno visualizzazione
EgtSetView(VT.TOP, False)
EgtZoom(ZM.ALL)
End Sub
Private Function CreateToolDraw() As Boolean
' Calcolo parametri per disegno
Dim sHeadName As String = If( Not IsNothing( SelectedHead), SelectedHead.HName, "")
Dim nExit As Integer = 0 : If Not IsNothing( SelectedExit) Then StringToInt( SelectedExit.Name, nExit)
Dim nType As Integer = Type
Dim dTotLen As Double = 0 : StringToLen(TotLen, dTotLen)
Dim dLen As Double = 0 : StringToLen(Len, dLen)
Dim dTotDiam As Double = 0 : StringToLen(TotDiam, dTotDiam)
Dim dDiam As Double = 0 : StringToLen(Diam, dDiam)
Dim dThick As Double = 0 : StringToLen(Thick, dThick)
Dim dMaxMat As Double = 0 : StringToLen(MaxMat, dMaxMat)
Dim dSideAng As Double = 0 : StringToDouble(SideAng, dSideAng)
Dim dCornRad As Double = 0 : StringToLen(CornRad, dCornRad)
Dim sDraw As String = Draw
EgtSetCurrentContext(ToolDbWindowVM.m_ProjectSceneContext)
' Salvo parametri originali dell'utensile corrente
Dim sHeadNameOri As string = "" : EgtTdbGetCurrToolParam(MCH_TP.HEAD, sHeadNameOri)
Dim nExitOri As Integer = 0 : EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExitOri)
Dim nTypeOri As Integer = 0 : EgtTdbGetCurrToolParam(MCH_TP.TYPE, nTypeOri)
Dim dTotLenOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.TOTLEN, dTotLenOri)
Dim dLenOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.LEN, dLenOri)
Dim dTotDiamOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.TOTDIAM, dTotDiamOri)
Dim dDiamOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.DIAM, dDiamOri)
Dim dThickOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.THICK, dThickOri)
Dim dMaxMatOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.MAXMAT, dMaxMatOri)
Dim dSideAngOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.SIDEANG, dSideAngOri)
Dim dCornRadOri As Double = 0 : EgtTdbGetCurrToolParam(MCH_TP.CORNRAD, dCornRadOri)
Dim sDrawOri As String = "" : EgtTdbGetCurrToolParam(MCH_TP.DRAW, sDrawOri)
' Imposto parametri correnti all'utensile corrente
EgtTdbSetCurrToolParam(MCH_TP.HEAD, sHeadName)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nExit)
EgtTdbSetCurrToolParam(MCH_TP.TYPE, nType)
EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dTotLen)
EgtTdbSetCurrToolParam(MCH_TP.LEN, dLen)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dTotDiam)
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiam)
EgtTdbSetCurrToolParam(MCH_TP.THICK, dThick)
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dMaxMat)
EgtTdbSetCurrToolParam(MCH_TP.SIDEANG, dSideAng)
EgtTdbSetCurrToolParam(MCH_TP.CORNRAD, dCornRad)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDraw)
''' <summary>
''' Mathod that load the toolholder for the current tool (based on his head), or return an empty string
''' </summary>
Private Function LoadToolHolder() As String
Dim sHolder As String = String.Empty
If Not IsNothing(m_SelectedHead) Then
Dim TempExit As String = String.Empty
If m_SelectedExit.Id > 0 Then
TempExit = m_SelectedExit.Name
Else
TempExit = "1"
End If
If Type = MCH_TY.SAW_STD Then
EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit & ":SAW_STD", "", sHolder, ToolDbWindowVM.m_sMachineIniPath)
ElseIf Type = MCH_TY.SAW_FLAT Then
EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit & ":SAW_FLAT", "", sHolder, ToolDbWindowVM.m_sMachineIniPath)
End If
If String.IsNullOrEmpty(sHolder) Then
EgtUILib.GetPrivateProfileString(S_TOOLHOLDER, SelectedHead.HName & "." & TempExit, "", sHolder, ToolDbWindowVM.m_sMachineIniPath)
End If
End If
If String.IsNullOrWhiteSpace(sHolder) Then
Return String.Empty
Else
Dim sHolderPath As String = String.Empty
EgtSetCurrentContext(ToolDbWindowVM.m_ProjectSceneContext)
EgtTdbGetToolHolderDir(sHolderPath)
sHolderPath += "\" & sHolder
Return sHolderPath
End If
End Function
' Creo il disegno
m_nDrawingError = EgtTdbCurrToolDraw( ToolDbWindowVM.m_ProjectSceneContext, ToolDbWindowVM.m_ToolDbSceneContext)
Private Function LoadToolMaker() As Boolean
Dim sMaker As String = String.Empty
EgtUILib.GetPrivateProfileString(S_TOOLS, ConvertTypeToString(Type), "", sMaker, ToolDbWindowVM.m_sMachineIniPath)
If String.IsNullOrWhiteSpace(sMaker) Then m_bToolMakerError = True
' Acquisisce solo il file lua, ma meglio impostare contesto disegno utensili (se ci sono chiamate...)
EgtSetCurrentContext(ToolDbWindowVM.m_ToolDbSceneContext)
Return EgtLuaExecFile(ToolDbWindowVM.m_sToolMakersDirPath & "\" & sMaker)
End Function
EgtSetCurrentContext(ToolDbWindowVM.m_ProjectSceneContext)
' Ripristino i valori originali dell'utensile corrente
EgtTdbSetCurrToolParam(MCH_TP.HEAD, sHeadNameOri)
EgtTdbSetCurrToolParam(MCH_TP.EXIT_, nExitOri)
EgtTdbSetCurrToolParam(MCH_TP.TYPE, nTypeOri)
EgtTdbSetCurrToolParam(MCH_TP.TOTLEN, dTotLenOri)
EgtTdbSetCurrToolParam(MCH_TP.LEN, dLenOri)
EgtTdbSetCurrToolParam(MCH_TP.TOTDIAM, dTotDiamOri)
EgtTdbSetCurrToolParam(MCH_TP.DIAM, dDiamOri)
EgtTdbSetCurrToolParam(MCH_TP.THICK, dThickOri)
EgtTdbSetCurrToolParam(MCH_TP.MAXMAT, dMaxMatOri)
EgtTdbSetCurrToolParam(MCH_TP.SIDEANG, dSideAngOri)
EgtTdbSetCurrToolParam(MCH_TP.CORNRAD, dCornRadOri)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDrawOri)
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(ToolDbWindowVM.m_ToolDbSceneContext)
' 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(ToolDbWindowVM.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(ToolDbWindowVM.m_ToolDbSceneContext)
' 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(ToolDbWindowVM.m_ProjectSceneContext)
EgtTdbSetCurrToolParam(MCH_TP.DRAW, sDrawName)
EgtTdbSaveCurrTool()
Return bOk
End If
Return False
Return (m_nDrawingError = 0)
End Function
#End Region ' ToolSceneUpdate
@@ -1857,39 +1721,34 @@ Public Class ToolTreeViewItem
Private Function ValidateDraw() As Boolean
m_DrawError = String.Empty
If m_bDrawNameError Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 2)
End If
If m_bDrawNameExistError Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 3)
End If
If m_bToolMakerError Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 4)
End If
If m_nDrawingError = 12 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 21) ' Utensile troppo corto con il portautensile
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 21) ' Lunghezza troppo piccola con il portautensile
ElseIf m_nDrawingError = 13 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 31)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 31) ' Lo Spessore deve essere differente da 0
ElseIf m_nDrawingError = 14 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 32)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 32) ' L'Angolo di Lato deve essere minore di 90°
ElseIf m_nDrawingError = 15 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 33)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 33) ' L'Angolo di Lato deve essere maggiore di -90°
ElseIf m_nDrawingError = 16 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 35)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 35) ' Raggio Corner ha un valore troppo grande
ElseIf m_nDrawingError = 17 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 36)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 36) ' Lo Spessore ha un valore troppo piccolo rispetto al Raggio Corner
ElseIf m_nDrawingError = 18 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 37)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 37) ' Il diametro risultante supera il Diametro Totale
ElseIf m_nDrawingError = 19 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 38)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 38) ' Il diametro risultante è minore di 0
ElseIf m_nDrawingError = 20 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 39)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 39) ' Il diametro stelo risultante è minore o uguale a 0
ElseIf m_nDrawingError = 21 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 40)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 40) ' Il Massimo Materiale deve essere più grande del Raggio Corner
ElseIf m_nDrawingError = 22 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 34)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 34) ' La Lunghezza Totale deve essere maggiore di Lunghezza + Spessore
ElseIf m_nDrawingError = 997 then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 3) ' Il file non esiste o non è Nge
ElseIf m_nDrawingError = 998 then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 4) ' Non esiste il ToolMaker per questo tipo di utensile
ElseIf m_nDrawingError <> 0 Then
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 5)
m_DrawError = EgtMsg(MSG_TOOLDBERRORS + 5) ' Impossibile creare l'utensile con questi parametri
End If
NotifyPropertyChanged("DrawErrorMsg")
If String.IsNullOrEmpty(m_DrawError) Then
@@ -1973,10 +1832,7 @@ Public Class ToolTreeViewItem
Private Function FilterFileName(sPath As String) As Boolean
Dim FileName As String = Path.GetFileNameWithoutExtension(sPath)
If Not IsUUID(FileName) Then
Return True
End If
Return False
Return Not IsUUID(FileName)
End Function
#End Region ' OpenDrawFileCommand