EgtCAM5 :
- Migliorie varie.
This commit is contained in:
+357
-58
@@ -1,5 +1,6 @@
|
||||
Imports System.Collections.ObjectModel
|
||||
Imports EgtUILib
|
||||
Imports EgtCAM5.IniFile
|
||||
|
||||
Namespace EgtCAM5
|
||||
|
||||
@@ -25,6 +26,23 @@ Namespace EgtCAM5
|
||||
|
||||
#End Region
|
||||
|
||||
Sub New()
|
||||
Application.Msn.Register(Application.LOADOBJTREE, Sub()
|
||||
LoadObjTree()
|
||||
End Sub)
|
||||
Application.Msn.Register(Application.UPDATEOBJINOBJTREE, Sub(nId As Integer)
|
||||
UpdateObjInObjTree(nId)
|
||||
End Sub)
|
||||
Application.Msn.Register(Application.SELECTIDINOBJTREE, Sub(nId As Integer)
|
||||
SelectIdInObjTree(nId)
|
||||
End Sub)
|
||||
Application.Msn.Register(Application.CLEAROBJTREE, Sub()
|
||||
ClearObjTree()
|
||||
End Sub)
|
||||
Application.Msn.Register(Application.UPDATEOBJTREE, Sub()
|
||||
UpdateObjTree()
|
||||
End Sub)
|
||||
End Sub
|
||||
#Region "COMMANDS"
|
||||
|
||||
#Region "NewPartCommand"
|
||||
@@ -121,69 +139,350 @@ Namespace EgtCAM5
|
||||
|
||||
#Region "Methods"
|
||||
|
||||
'Public Sub LoadLayerTree()
|
||||
' 'Dim nOldId As Integer = ClearObjTree()
|
||||
' AddGroupInObjTree(GDB_ID.ROOT, GDB_LV.USER, 0, TreeView1.Nodes)
|
||||
' If nOldId <> GDB_ID.NULL Then
|
||||
' SelectIdInObjTree(nOldId)
|
||||
' UpdateObjDataInObjTree(m_nObjTreeOldId)
|
||||
Private WithEvents ObjTreeTimer As New System.Windows.Threading.DispatcherTimer
|
||||
Private m_nObjTreeOldId As Integer = GDB_ID.NULL
|
||||
Private m_nObjTreeMenuId As Integer = GDB_ID.NULL
|
||||
|
||||
Private Sub ObjTreeTickEvent(source As Object, e As EventArgs) Handles ObjTreeTimer.Tick
|
||||
If m_nObjTreeOldId <> GDB_ID.NULL Then
|
||||
EgtResetMark(m_nObjTreeOldId)
|
||||
EgtDraw()
|
||||
End If
|
||||
ObjTreeTimer.Stop()
|
||||
End Sub
|
||||
|
||||
Public Sub LoadObjTree()
|
||||
Dim nOldId As Integer = ClearObjTree()
|
||||
AddGroupInObjTree(GDB_ID.ROOT, GDB_LV.USER, 0, LayerList)
|
||||
If nOldId <> GDB_ID.NULL Then
|
||||
SelectIdInObjTree(nOldId)
|
||||
'UpdateObjDataInObjTree(m_nObjTreeOldId)
|
||||
Else
|
||||
'tBoxInfo.Text = String.Empty
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function ClearObjTree() As Integer
|
||||
Dim nOldId As Integer = RevertOldIdInObjTree()
|
||||
LayerList.Clear()
|
||||
Return nOldId
|
||||
End Function
|
||||
|
||||
Private Sub AddGroupInObjTree(ByVal nGroupId As Integer, ByVal nLevel As Integer, ByVal nDepth As Integer, ByRef PrevNodColl As ObservableCollection(Of LayerTreeViewItem))
|
||||
|
||||
Dim CurrNodColl As ObservableCollection(Of LayerTreeViewItem)
|
||||
|
||||
If nGroupId = GDB_ID.ROOT Then
|
||||
CurrNodColl = PrevNodColl
|
||||
Else
|
||||
' livello
|
||||
Dim nObjLev As Integer = GDB_LV.USER
|
||||
EgtGetLevel(nGroupId, nObjLev)
|
||||
If nObjLev = GDB_LV.TEMP Then
|
||||
nLevel = GDB_LV.TEMP
|
||||
ElseIf nLevel = GDB_LV.USER Then
|
||||
nLevel = nObjLev
|
||||
End If
|
||||
' tipo
|
||||
Dim nGroupType As Integer = 0 ' 0=gruppo generico, 1=pezzo, 2=layer
|
||||
If nLevel = GDB_LV.USER Then
|
||||
nGroupType = nDepth
|
||||
End If
|
||||
' nome
|
||||
Dim sName As String = String.Empty
|
||||
Dim sText As String = String.Empty
|
||||
If EgtGetName(nGroupId, sName) Then
|
||||
If nGroupType = 1 Then
|
||||
sText = sName + " (Part " + nGroupId.ToString + ")"
|
||||
ElseIf nGroupType = 2 Then
|
||||
sText = sName + " (Layer " + nGroupId.ToString + ")"
|
||||
Else
|
||||
sText = sName + " (Group " + nGroupId.ToString + ")"
|
||||
End If
|
||||
Else
|
||||
If nGroupType = 1 Then
|
||||
sText = "Part " + nGroupId.ToString
|
||||
ElseIf nGroupType = 2 Then
|
||||
sText = "Layer " + nGroupId.ToString
|
||||
Else
|
||||
sText = "Group " + nGroupId.ToString
|
||||
End If
|
||||
End If
|
||||
' per visualizzare oggetti di livello diverso da utente, si deve avere il permesso
|
||||
If nLevel <> GDB_LV.USER And nUserLevel() < 5 Then
|
||||
Return
|
||||
End If
|
||||
' inserisco il nodo nell'albero
|
||||
Dim CurrColor As Color3d
|
||||
EgtGetColor(nGroupId, CurrColor)
|
||||
Dim sImage As String = TypeToImageInObjTree(GDB_TY.GROUP, nGroupType)
|
||||
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nGroupId, sText, sImage, CurrColor.ToColor())
|
||||
PrevNodColl.Add(CurrNod)
|
||||
CurrNodColl = CurrNod.Items
|
||||
Dim nStat As Integer = GDB_ST.ON_
|
||||
EgtGetStatus(nGroupId, nStat)
|
||||
CurrNod.OnOff = (nStat <> GDB_ST.OFF)
|
||||
End If
|
||||
|
||||
Dim nObjs As Integer = EgtGetGroupObjs(nGroupId)
|
||||
If (nObjs > 20000) Then
|
||||
Dim sText As String = "Too many entities (" + nObjs.ToString() + ")"
|
||||
CurrNodColl.Add(New LayerTreeViewItem(GDB_ID.NULL, sText))
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim nId As Integer = EgtGetFirstInGroup(nGroupId)
|
||||
While nId <> GDB_ID.NULL
|
||||
'recupero il tipo di nodo
|
||||
Dim nType As Integer = EgtGetType(nId)
|
||||
'se gruppo
|
||||
If nType = GDB_TY.GROUP Then
|
||||
AddGroupInObjTree(nId, nLevel, nDepth + 1, CurrNodColl)
|
||||
'se oggetto geometrico
|
||||
ElseIf nType >= GDB_TY.GEO_VECTOR Then
|
||||
Dim sTitle As String = String.Empty
|
||||
EgtGetTitle(nId, sTitle)
|
||||
Dim sName As String = String.Empty
|
||||
Dim sText As String = String.Empty
|
||||
If EgtGetName(nId, sName) Then
|
||||
sText = sName + " (" + sTitle + " " + nId.ToString + ")"
|
||||
Else
|
||||
sText = sTitle + " " + nId.ToString
|
||||
End If
|
||||
Dim CurrColor As Color3d
|
||||
EgtGetColor(nGroupId, CurrColor)
|
||||
Dim sImage As String = TypeToImageInObjTree(nType, nDepth)
|
||||
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nId, sText, sImage, CurrColor.ToColor())
|
||||
CurrNodColl.Add(CurrNod)
|
||||
Dim nStat As Integer = GDB_ST.ON_
|
||||
EgtGetStatus(nId, nStat)
|
||||
CurrNod.OnOff = (nStat <> GDB_ST.OFF)
|
||||
End If
|
||||
'passo al successivo
|
||||
nId = EgtGetNext(nId)
|
||||
End While
|
||||
End Sub
|
||||
|
||||
Private Function TypeToImageInObjTree(ByVal nType As Integer, ByVal nSubType As Integer) As String
|
||||
|
||||
Select Case nType
|
||||
Case GDB_TY.GROUP
|
||||
If nSubType = 1 Then
|
||||
Return "/Resources/TreeView/Folder.png"
|
||||
ElseIf nSubType = 2 Then
|
||||
Return "/Resources/TreeView/Folder.png"
|
||||
Else
|
||||
Return "/Resources/TreeView/Group.ico"
|
||||
End If
|
||||
Case GDB_TY.GEO_VECTOR
|
||||
Return "/Resources/TreeView/Vector.ico"
|
||||
Case GDB_TY.GEO_POINT
|
||||
Return "/Resources/TreeView/Point.ico"
|
||||
Case GDB_TY.GEO_FRAME
|
||||
Return "/Resources/TreeView/Frame.ico"
|
||||
Case GDB_TY.CRV_LINE
|
||||
Return "/Resources/TreeView/Line.ico"
|
||||
Case GDB_TY.CRV_ARC
|
||||
Return "/Resources/TreeView/Arc.ico"
|
||||
Case GDB_TY.CRV_BEZ
|
||||
Return "/Resources/TreeView/CBezier.ico"
|
||||
Case GDB_TY.CRV_COMPO
|
||||
Return "/Resources/TreeView/CCompo.ico"
|
||||
Case GDB_TY.SRF_MESH
|
||||
Return "/Resources/TreeView/STriMesh.ico"
|
||||
Case GDB_TY.SRF_FRGN
|
||||
Return "/Resources/TreeView/Folder.png"
|
||||
Case GDB_TY.EXT_TEXT
|
||||
Return "/Resources/TreeView/Text.ico"
|
||||
End Select
|
||||
Return ""
|
||||
End Function
|
||||
|
||||
Private Sub UpdateObjTree()
|
||||
' per aggiornare l'albero senza ricostruirlo da capo
|
||||
' se c'è una entità corrente, ne aggiorno i dati
|
||||
If m_nObjTreeOldId <> GDB_ID.NULL Then
|
||||
'UpdateObjDataInObjTree(m_nObjTreeOldId)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Private Sub ObjTree_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterCheck
|
||||
' ' verifico che il check derivi da azione utente
|
||||
' If e.Action = TreeViewAction.Unknown Then
|
||||
' Return
|
||||
' End If
|
||||
' ' recupero l'Id del nuovo oggetto
|
||||
' Dim nId As Integer
|
||||
' If Not Int32.TryParse(e.Node.Name, nId) Then
|
||||
' Return
|
||||
' End If
|
||||
' ' eseguo operazione
|
||||
' m_Controller.SetLastInteger(nId)
|
||||
' If e.Node.Checked Then
|
||||
' m_Controller.ExecuteCommand(CMD.SHOW)
|
||||
' Else
|
||||
' tBoxInfo.Text = String.Empty
|
||||
' m_Controller.ExecuteCommand(CMD.HIDE)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
'Private Sub AddGroupInObjTree(ByVal nGroupId As Integer, ByVal nLevel As Integer, ByVal nDepth As Integer, ByRef PrevNodColl As TreeNodeCollection)
|
||||
|
||||
' Dim CurrNodColl As TreeNodeCollection
|
||||
|
||||
' If nGroupId = GDB_ID.ROOT Then
|
||||
' CurrNodColl = PrevNodColl
|
||||
' Else
|
||||
' ' livello
|
||||
' Dim nObjLev As Integer = GDB_LV.USER
|
||||
' EgtGetLevel(nGroupId, nObjLev)
|
||||
' If nObjLev = GDB_LV.TEMP Then
|
||||
' nLevel = GDB_LV.TEMP
|
||||
' ElseIf nLevel = GDB_LV.USER Then
|
||||
' nLevel = nObjLev
|
||||
' End If
|
||||
' ' tipo
|
||||
' Dim nGroupType As Integer = 0 ' 0=gruppo generico, 1=pezzo, 2=layer
|
||||
' If nLevel = GDB_LV.USER Then
|
||||
' nGroupType = nDepth
|
||||
' End If
|
||||
' ' nome
|
||||
' Dim sName As String = String.Empty
|
||||
' Dim sText As String = String.Empty
|
||||
' If EgtGetName(nGroupId, sName) Then
|
||||
' If nGroupType = 1 Then
|
||||
' sText = sName + " (Part " + nGroupId.ToString + ")"
|
||||
' ElseIf nGroupType = 2 Then
|
||||
' sText = sName + " (Layer " + nGroupId.ToString + ")"
|
||||
' Else
|
||||
' sText = sName + " (Group " + nGroupId.ToString + ")"
|
||||
' End If
|
||||
' Else
|
||||
' If nGroupType = 1 Then
|
||||
' sText = "Part " + nGroupId.ToString
|
||||
' ElseIf nGroupType = 2 Then
|
||||
' sText = "Layer " + nGroupId.ToString
|
||||
' Else
|
||||
' sText = "Group " + nGroupId.ToString
|
||||
' End If
|
||||
' End If
|
||||
' ' per visualizzare oggetti di livello diverso da utente, si deve avere il permesso
|
||||
' If nLevel <> GDB_LV.USER And GetUserLevel() < 5 Then
|
||||
' Return
|
||||
' End If
|
||||
' ' inserisco il nodo nell'albero
|
||||
' Dim nImage As Integer = TypeToImageInObjTree(GDB_TY.GROUP, nGroupType)
|
||||
' Dim CurrNod As TreeNode = PrevNodColl.Add(nGroupId.ToString(), sText, nImage, nImage)
|
||||
' CurrNodColl = CurrNod.Nodes
|
||||
' Dim nStat As GDB_ST = GDB_ST.ON_
|
||||
' EgtGetStatus(nGroupId, nStat)
|
||||
' CurrNod.Checked = (nStat <> GDB_ST.OFF)
|
||||
'Private Sub ObjTree_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterSelect
|
||||
' ' verifico che il select derivi da azione utente
|
||||
' If e.Action = TreeViewAction.Unknown Then
|
||||
' Return
|
||||
' End If
|
||||
' ' recupero l'Id del nuovo oggetto selezionato
|
||||
' Dim nId As Integer
|
||||
' If Not Int32.TryParse(e.Node.Name, nId) Then
|
||||
' Return
|
||||
' End If
|
||||
' UpdateObjInObjTree(nId)
|
||||
'End Sub
|
||||
|
||||
'Private Sub ObjTree_MouseUp(ByVal sender As Object, e As MouseEventArgs) Handles TreeView1.MouseUp
|
||||
' ' determino Id di eventuale item sotto il mouse
|
||||
' Dim nId As Integer = GDB_ID.NULL
|
||||
' Dim TNode As TreeNode = TreeView1.GetNodeAt(e.Location)
|
||||
' If TNode IsNot Nothing Then
|
||||
' Int32.TryParse(TNode.Name, nId)
|
||||
' End If
|
||||
' ' se Id coincide con il corrente
|
||||
' If nId <> GDB_ID.NULL And nId = m_nObjTreeOldId Then
|
||||
' ' evidenzio
|
||||
' EgtSetMark(m_nObjTreeOldId)
|
||||
' EgtDraw()
|
||||
' ' lancio timer per successiva de-evidenziazione
|
||||
' ObjTreeTimer.Stop()
|
||||
' ObjTreeTimer.Start()
|
||||
' End If
|
||||
' ' se rilascio tasto destro
|
||||
' If e.Button = Windows.Forms.MouseButtons.Right Then
|
||||
' ' Id pezzo sotto il mouse
|
||||
' m_nObjTreeMenuId = nId
|
||||
' ' verifico stato visualizzazione per abilitare voci menù
|
||||
' Dim nStat As GDB_ST = GDB_ST.ON_
|
||||
' Dim bOn As Boolean = EgtGetCalcStatus(m_nObjTreeMenuId, nStat) And nStat <> GDB_ST.OFF
|
||||
' For Each Item As ToolStripItem In ContextMenuTreeView1.Items
|
||||
' If Item.Name = "cmdSetName" Or Item.Name = "cmdSetInfo" Then
|
||||
' Item.Enabled = True
|
||||
' Else
|
||||
' Item.Enabled = bOn
|
||||
' End If
|
||||
' Next
|
||||
' ContextMenuTreeView1.Show(TreeView1, e.Location)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
'Private Sub ObjTree_MouseDoubleClick(ByVal sender As Object, e As MouseEventArgs) Handles TreeView1.MouseDoubleClick
|
||||
' If m_nObjTreeOldId <> GDB_ID.NULL Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeOldId)
|
||||
' m_Controller.ExecuteCommand(CMD.SETCURRPARTLAYER)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
Private Sub UpdateObjInObjTree(ByVal nId As Integer)
|
||||
' ripristino eventuale vecchio oggetto selezionato
|
||||
RevertOldIdInObjTree()
|
||||
' stampa dei dati del nuovo oggetto
|
||||
'UpdateObjDataInObjTree(nId)
|
||||
' evidenzio l'oggetto
|
||||
EgtSetMark(nId)
|
||||
m_nObjTreeOldId = nId
|
||||
' imposto il ridisegno della scena
|
||||
EgtDraw()
|
||||
' lancio timer per successiva de-evidenziazione
|
||||
ObjTreeTimer.Stop()
|
||||
ObjTreeTimer.Start()
|
||||
End Sub
|
||||
|
||||
'Private Sub UpdateObjDataInObjTree(ByVal nId As Integer)
|
||||
' ' recupero il tipo del nuovo oggetto
|
||||
' Dim nType As Integer = EgtGetType(nId)
|
||||
' ' stampa dei dati dell'oggetto
|
||||
' Dim sDump As String = String.Empty
|
||||
' If nType = GDB_TY.NONE Then
|
||||
' tBoxInfo.Text = String.Empty
|
||||
' ElseIf nType = GDB_TY.GROUP Then
|
||||
' If EgtGroupDump(nId, sDump) Then
|
||||
' tBoxInfo.Text = sDump
|
||||
' Else
|
||||
' tBoxInfo.Text = String.Empty
|
||||
' End If
|
||||
' Else
|
||||
' If EgtGeoObjDump(nId, sDump) Then
|
||||
' tBoxInfo.Text = sDump
|
||||
' Else
|
||||
' tBoxInfo.Text = String.Empty
|
||||
' End If
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
Private Function RevertOldIdInObjTree() As Integer
|
||||
' salvo il vecchio Id
|
||||
Dim nOldId As Integer = m_nObjTreeOldId
|
||||
' se non nullo...
|
||||
If EgtExistsObj(m_nObjTreeOldId) Then
|
||||
' smarco l'oggetto
|
||||
EgtResetMark(m_nObjTreeOldId)
|
||||
' annullo oggetto da ripristinare
|
||||
m_nObjTreeOldId = GDB_ID.NULL
|
||||
End If
|
||||
Return nOldId
|
||||
End Function
|
||||
|
||||
Private Function SelectIdInObjTree(ByVal nId As Integer) As Boolean
|
||||
Dim tNode As LayerTreeViewItem = SearchIdInLayerList(nId)
|
||||
If Not IsNothing(tNode) Then
|
||||
tNode.IsSelected = True
|
||||
tNode.IsExpanded = True
|
||||
m_nObjTreeOldId = nId
|
||||
Return True
|
||||
Else
|
||||
m_nObjTreeOldId = GDB_ID.NULL
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function SearchIdInLayerList(nId As Integer) As LayerTreeViewItem
|
||||
For Each Item In LayerList
|
||||
If Item.Id = nId Then
|
||||
Return Item
|
||||
Else
|
||||
Return SearchIdInLayerList(Item.Id)
|
||||
End If
|
||||
Next
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
'Private Sub MenuObjTree_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ContextMenuTreeView1.ItemClicked
|
||||
' If e.ClickedItem.Name = "cmdSelectPartLayObj" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.SELECTPARTLAYEROBJ)
|
||||
' ElseIf e.ClickedItem.Name = "cmdDeselectPartLayObj" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.DESELECTPARTLAYEROBJ)
|
||||
' ElseIf e.ClickedItem.Name = "cmdSetName" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.SETNAME)
|
||||
' ElseIf e.ClickedItem.Name = "cmdSetInfo" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.SETINFO)
|
||||
' ElseIf e.ClickedItem.Name = "cmdRelocatePartLayObj" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.RELOCATEPARTLAYEROBJ)
|
||||
' ElseIf e.ClickedItem.Name = "cmdCopyPartLayObj" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.COPYPARTLAYEROBJ)
|
||||
' ElseIf e.ClickedItem.Name = "cmdDeletePartLayObj" Then
|
||||
' m_Controller.SetLastInteger(m_nObjTreeMenuId)
|
||||
' m_Controller.ExecuteCommand(CMD.DELETE)
|
||||
' ElseIf e.ClickedItem.Name = "cmdSavePartLay" Then
|
||||
' ContextMenuTreeView1.Close()
|
||||
' Dim sDir As String = String.Empty
|
||||
' GetPrivateProfileString(S_GENERAL, K_LASTNGEOBJDIR, "", sDir, m_sIniFile)
|
||||
' Dim nType As NGE = GetPrivateProfileInt(S_GEOMDB, K_SAVETYPE, NGE.CMPTEXT, m_sIniFile)
|
||||
' m_Controller.SaveObject(m_nObjTreeMenuId, sDir, nType)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
Reference in New Issue
Block a user