Files
TestEIn/Form1.vb
T
Dario Sassi 4c7c7aed65 TestEIn 1.5k4 :
- migliorie varie all'interfaccia per drag
- migliorata separazione tra interfaccia e Controller.
2014-11-24 11:30:15 +00:00

1218 lines
48 KiB
VB.net

Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Math
Imports System.IO
Imports System.Globalization
Imports TestEIn.EgtInterface
Imports TestEIn.GenInterface
Imports TestEIn.Controller
Public Class Form1
Private m_sIniFile As String = String.Empty
Private WithEvents m_Controller As New Controller
Private m_bShowGrid As Boolean
Private m_bShowGridFrame As Boolean
Private m_bCPlaneTypePos As Boolean
'-------------------------------- Form ------------------------------------------------------------
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' installo aggiornamento interfaccia
AddHandler System.Windows.Forms.Application.Idle, AddressOf Application_Idle
'Title
EmitTitle()
'Impostazione path Ini file
m_sIniFile = Application.StartupPath & "\TestEIn.ini"
'Inizializzazione generale di EgtInterface
EgtInit(0, Application.StartupPath & "\TestEngine.log")
'imposto chiave di protezione
Dim sKey As String = String.Empty
GetPrivateProfileString("General", "Key", "", sKey, m_sIniFile)
EgtSetKey(sKey)
'imposto dir font Nfe e font default
Dim sNfeDir As String = String.Empty
GetPrivateProfileString("GeomDB", "NfeFontDir", "", sNfeDir, m_sIniFile)
Dim sDefFont As String = String.Empty
GetPrivateProfileString("GeomDB", "DefaultFont", "", sDefFont, m_sIniFile)
EgtSetFont(sNfeDir, sDefFont)
' imposto colore di default
Dim DefColor As New Color3d(0, 0, 0)
GetPrivateProfileColor("GeomDB", "DefaultColor", DefColor, m_sIniFile)
Scene1.SetDefaultMaterial(DefColor)
' imposto colori sfondo
Dim BackTopColor As New Color3d(192, 192, 192)
GetPrivateProfileColor("Scene", "BackTop", BackTopColor, m_sIniFile)
Dim BackBotColor As New Color3d(192, 192, 192)
GetPrivateProfileColor("Scene", "BackBottom", BackBotColor, m_sIniFile)
Scene1.SetViewBackground(BackTopColor, BackBotColor)
' imposto colore di evidenziazione
Dim MarkColor As New Color3d(255, 255, 0)
GetPrivateProfileColor("Scene", "Mark", MarkColor, m_sIniFile)
Scene1.SetMarkMaterial(MarkColor)
' imposto colore per superfici selezionate
Dim SelSurfColor As New Color3d(255, 255, 192)
GetPrivateProfileColor("Scene", "SelSurf", SelSurfColor, m_sIniFile)
Scene1.SetSelSurfMaterial(SelSurfColor)
' imposto tipo e colore del rettangolo di zoom
Dim bOutline As Boolean = True
Dim ZwColor As New Color3d(0, 0, 0)
GetPrivateProfileZoomWin("Scene", "ZoomWin", bOutline, ZwColor, m_sIniFile)
Scene1.SetZoomWinAttribs(bOutline, ZwColor)
' imposto colore della linea di distanza
Dim DstLnColor As New Color3d(255, 0, 0)
GetPrivateProfileColor("Scene", "DistLine", DstLnColor, m_sIniFile)
Scene1.SetDistLineMaterial(DstLnColor)
' imposto parametri OpenGL
Dim nDriver As Integer = GetPrivateProfileInt("OpenGL", "Driver", 3, m_sIniFile)
Dim b2Buff As Boolean = (GetPrivateProfileInt("OpenGL", "DoubleBuffer", 1, m_sIniFile) <> 0)
Dim nColorBits As Integer = GetPrivateProfileInt("OpenGL", "ColorBits", 32, m_sIniFile)
Dim nDepthBits As Integer = GetPrivateProfileInt("OpenGL", "DepthBits", 32, m_sIniFile)
Scene1.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
' inizializzo scena
Scene1.Init()
' imposto i dati della griglia
m_bShowGrid = (GetPrivateProfileInt("Grid", "ShowGrid", 1, m_sIniFile) <> 0)
m_bShowGridFrame = (GetPrivateProfileInt("Grid", "ShowFrame", 1, m_sIniFile) <> 0)
Dim dSnapStep As Double = GetPrivateProfileDouble("Grid", "SnapStep", 10, m_sIniFile)
Dim nMinLineSStep As Integer = GetPrivateProfileInt("Grid", "MinLineSStep", 1, m_sIniFile)
Dim nMajLineSStep As Integer = GetPrivateProfileInt("Grid", "MajLineSStep", 10, m_sIniFile)
Dim nExtSStep As Integer = GetPrivateProfileInt("Grid", "ExtSStep", 50, m_sIniFile)
Dim MinLnColor As New Color3d(160, 160, 160)
GetPrivateProfileColor("Grid", "MinLnColor", MinLnColor, m_sIniFile)
Dim MajLnColor As New Color3d(160, 160, 160)
GetPrivateProfileColor("Grid", "MajLnColor", MajLnColor, m_sIniFile)
EgtSetGridShow(m_bShowGrid, m_bShowGridFrame)
EgtSetGridFrame(Frame3d.GLOB)
EgtSetGridGeo(dSnapStep, nMinLineSStep, nMajLineSStep, nExtSStep)
EgtSetGridColor(MinLnColor, MajLnColor)
' imposto tipo coordinate
m_bCPlaneTypePos = True
Scene1.SetGridCursorPos(m_bCPlaneTypePos)
' modo di visualizzazione
Dim nShowMode As Integer = GetPrivateProfileInt("Scene", "ShowMode", SM.SHADING, m_sIniFile)
If nShowMode = SM.WIREFRAME Then
rbtWireFrame.Checked = True
ElseIf nShowMode = SM.HIDDENLINE Then
rbtHiddenLine.Checked = True
Else
rbtShading.Checked = True
End If
' visualizzazione direzione curve
Dim nShowCurveDir As Integer = GetPrivateProfileInt("Scene", "CurveDir", 0, m_sIniFile)
chkCurveDir.Checked = (nShowCurveDir <> 0)
' ObjTree non selezionato
m_nObjTreeOldId = GDB_ID.NULL
' aggiungo voce per about box nel menù di sistema
Dim hSysMenu As IntPtr = GetSystemMenu(Handle, False)
If hSysMenu <> IntPtr.Zero Then
AppendMenu(hSysMenu, MF_SEPARATOR, 0, "")
AppendMenu(hSysMenu, MF_STRING, IDM_ABOUTBOX, "About TestEIn...")
End If
' Nascondo TabTest
TabControl2.TabPages.Remove(TabTest)
' Posizione e dimensioni del Form
If ModifierKeys <> Keys.Shift Then
Dim nFlag As Integer
Dim nLeft As Integer
Dim nTop As Integer
Dim nWidth As Integer
Dim nHeight As Integer
GetPrivateProfileWinPos("General", "WinPlace", nFlag, nLeft, nTop, nWidth, nHeight, m_sIniFile)
Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
Me.Location = New Point(nLeft, nTop)
Me.Size = New Size(nWidth, nHeight)
WindowState = IIf(nFlag = 1, FormWindowState.Maximized, FormWindowState.Normal)
End If
' Impostazioni controller
m_Controller.SetScene(Scene1)
' Recupero eventuali parametri da linea di comando
Dim bOpen As Boolean = False
For Each s As String In My.Application.CommandLineArgs
If Not String.IsNullOrWhiteSpace(s) Then
Dim nFileType As Integer = EgtGetFileType(s)
Select Case nFileType
Case FT.NGE, FT.NFE
Scene1.OpenProject(s, False)
bOpen = True
Case FT.DXF, FT.STL, FT.CNC
Scene1.ImportProject(s, False)
bOpen = True
Case FT.TSC, FT.LUA
Scene1.Exec(s, False)
bOpen = True
End Select
Exit For
End If
Next
If Not bOpen Then
Scene1.NewProject(True)
End If
End Sub
Private Sub Form1_FormClosing(sender As System.Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
' gestisco eventuale file corrente modificato
If Not m_Controller.ManageModified() Then
e.Cancel = True
Return
End If
' Salvo modo di visualizzazione
WritePrivateProfileString("Scene", "ShowMode", EgtGetShowMode(), m_sIniFile)
' Salvo stato visualizzazione direzione curve
WritePrivateProfileString("Scene", "CurveDir", IIf(EgtGetShowCurveDirection(), 1, 0), m_sIniFile)
' Salvo posizione Form
Dim nFlag As Integer = IIf(Me.WindowState = FormWindowState.Maximized, 1, 0)
WritePrivateProfileWinPos("General", "WinPlace", nFlag, Me.Left, Me.Top, Me.Width, Me.Height, m_sIniFile)
' Terminazione generale di EgtInterface
EgtExit()
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_SYSCOMMAND Then
If m.WParam.ToInt32 = IDM_ABOUTBOX Then
AboutBox1.ShowDialog()
End If
End If
End Sub
'-------------------------------- Events management ----------------------------------------------
Private Sub OnCursorPos(ByVal sender As Object, ByVal sCursorPos As String) Handles Scene1.OnCursorPos
tsStatusCursorPos.Text = sCursorPos
End Sub
Private Sub OnMouseSelectedObj(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean) Handles Scene1.OnMouseSelectedObj
m_Controller.MouseSelectedObj(nId, bLast)
End Sub
Private Sub OnMouseSelectedPart(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseSelectedPart
m_Controller.MouseSelectedPart(nId)
End Sub
Private Sub OnMouseSelectedLayer(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseSelectedLayer
m_Controller.MouseSelectedLayer(nId)
End Sub
Private Sub OnMousePointForSelection(ByVal sender As Object, ByVal PtP As Point3d) Handles Scene1.OnMousePointForSelection
m_Controller.SetLastPoint3d(PtP)
End Sub
Private Sub OnMouseSelectedPoint(ByVal sender As Object, ByVal PtP As Point3d) Handles Scene1.OnMouseSelectedPoint
m_Controller.MouseSelectedPoint(PtP, (ModifierKeys And Keys.Control) <> Keys.Control)
End Sub
Private Sub OnMouseSelectedDir(ByVal sender As Object, ByVal VtDir As Vector3d) Handles Scene1.OnMouseSelectedDir
m_Controller.SetLastVector3d(VtDir)
End Sub
Private Sub OnMouseMoveSelPoint(ByVal sender As Object, ByVal PtP As Point3d) Handles Scene1.OnMouseMoveSelPoint
m_Controller.MouseMoveInSelectionPoint(PtP)
End Sub
Private Sub OnMouseAnalyzed(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseAnalyzed
SelectIdInObjTree(nId)
End Sub
Private Sub OnShowDistance(ByVal sender As Object, ByVal sDistance As String) Handles Scene1.OnShowDistance
tsStatusOutput.Text = sDistance
End Sub
Private Sub OnNewProject(ByVal sender As Object) Handles Scene1.OnNewProject
m_Controller.ResetCurrFile()
m_Controller.ExecuteCommand(CMD.RESETCURRPARTLAYER)
m_Controller.ResetModified()
End Sub
Private Sub OnOpeningProject(ByVal sender As Object) Handles Scene1.OnOpeningProject
ClearObjTree()
End Sub
Private Sub OnOpenProject(ByVal sender As Object, ByVal sFile As String) Handles Scene1.OnOpenProject
m_Controller.SetCurrFile(sFile)
m_Controller.ExecuteCommand(CMD.RESETCURRPARTLAYER)
m_Controller.ResetModified()
WritePrivateProfileString("General", "LastNgeDir", Path.GetDirectoryName(sFile), m_sIniFile)
End Sub
Private Sub OnSavingProject(ByVal sender As Object, ByVal sFile As String) Handles Scene1.OnSavingProject
m_Controller.SetCurrFile(sFile)
EmitTitle()
WritePrivateProfileString("General", "LastNgeDir", Path.GetDirectoryName(sFile), m_sIniFile)
End Sub
Private Sub OnSavedProject(ByVal sender As Object) Handles Scene1.OnSavedProject
m_Controller.ResetModified()
End Sub
Private Sub OnImportingProject(ByVal sender As Object) Handles Scene1.OnImportingProject
ClearObjTree()
End Sub
Private Sub OnImportedProject(ByVal sender As Object, ByVal sFile As String) Handles Scene1.OnImportedProject
m_Controller.SetCurrFile(sFile)
m_Controller.ExecuteCommand(CMD.RESETCURRPARTLAYER)
m_Controller.SetModified()
WritePrivateProfileString("General", "LastImpDir", Path.GetDirectoryName(sFile), m_sIniFile)
End Sub
Private Sub OnExportingProject(ByVal sender As Object, ByVal sFile As String) Handles Scene1.OnExportingProject
WritePrivateProfileString("General", "LastExpDir", Path.GetDirectoryName(sFile), m_sIniFile)
End Sub
Private Sub OnExportedProject(ByVal sender As Object) Handles Scene1.OnExportedProject
End Sub
Private Sub OnExecutingScript(ByVal sender As Object, ByVal sFile As String) Handles Scene1.OnExecutingScript
WritePrivateProfileString("General", "LastLuaDir", Path.GetDirectoryName(sFile), m_sIniFile)
ClearObjTree()
End Sub
Private Sub OnExecutedScript(ByVal sender As Object) Handles Scene1.OnExecutedScript
m_Controller.SetModified()
End Sub
Private Sub OnPrepareInputBox(ByVal sTitle As String, ByVal sLabel As String, ByRef sCheckLabel As String, ByVal bShowBtn As Boolean) Handles m_Controller.PrepareInputBox
PrepareInputBox(sTitle, sLabel, sCheckLabel, bShowBtn)
End Sub
Private Sub OnSetInputBoxText(ByVal sText As String) Handles m_Controller.SetInputBoxText
SetInputBoxText(sText)
End Sub
Private Sub OnSetInputBoxCheck(ByVal bCheck As Boolean) Handles m_Controller.SetInputBoxCheck
SetInputBoxCheck(bCheck)
End Sub
Private Sub OnUpdateUI(ByVal sender As Object, ByVal bReloadUI As Boolean) Handles m_Controller.UpdateUI
' pulisco input e relativi messaggi
ResetInputBox()
tsStatusOutput.Text = ""
' aggiorno dati correnti
EmitTitle()
EmitCurrPartLayer()
If bReloadUI Then
LoadObjTree()
Else
UpdateObjTree()
End If
End Sub
'-------------------------------- Buttons --------------------------------------------------------
Private Sub btnNew_Click(sender As System.Object, e As System.EventArgs) Handles btnNew.Click
' gestisco eventuale file corrente modificato
If Not m_Controller.ManageModified() Then
Return
End If
' eseguo
Scene1.NewProject(True)
End Sub
Private Sub btnOpen_Click(sender As System.Object, e As System.EventArgs) Handles btnOpen.Click
' gestisco eventuale file corrente modificato
If Not m_Controller.ManageModified() Then
Return
End If
' eseguo
Dim sDir As String = String.Empty
GetPrivateProfileString("General", "LastNgeDir", "", sDir, m_sIniFile)
Scene1.OpenProject(sDir)
End Sub
Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
Scene1.SaveProject(m_Controller.GetCurrFile())
End Sub
Private Sub btnSaveAs_Click(sender As System.Object, e As System.EventArgs) Handles btnSaveAs.Click
Scene1.SaveAsProject(m_Controller.GetCurrFile())
End Sub
Private Sub btnImport_Click(sender As System.Object, e As System.EventArgs) Handles btnImport.Click
' gestisco eventuale file corrente modificato
If Not m_Controller.ManageModified() Then
Return
End If
' eseguo
Dim sDir As String = String.Empty
GetPrivateProfileString("General", "LastImpDir", "", sDir, m_sIniFile)
Scene1.ImportProject(sDir)
End Sub
Private Sub btnExport_Click(sender As System.Object, e As System.EventArgs) Handles btnExport.Click
Scene1.ExportProject(Path.ChangeExtension(m_Controller.GetCurrFile(), "dxf"))
End Sub
Private Sub btnExec_Click(sender As System.Object, e As System.EventArgs) Handles btnExec.Click
Dim sDir As String = String.Empty
GetPrivateProfileString("General", "LastLuaDir", "", sDir, m_sIniFile)
Scene1.Exec(sDir)
End Sub
Private Sub rbtWireFrame_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbtWireFrame.CheckedChanged
Scene1.WireFrame()
End Sub
Private Sub rbtHiddenLine_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbtHiddenLine.CheckedChanged
Scene1.HiddenLine()
End Sub
Private Sub rbtShading_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbtShading.CheckedChanged
Scene1.Shading()
End Sub
Private Sub chkCurveDir_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkCurveDir.CheckedChanged
EgtSetShowCurveDirection(chkCurveDir.Checked)
End Sub
Private Sub chkAnalyze_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkAnalyze.CheckedChanged
If chkAnalyze.Checked Then
chkGetDist.Checked = False
Scene1.SetStatusAnalyze()
Else
Scene1.ResetStatusAnalyze()
SelectIdInObjTree(GDB_ID.NULL)
End If
End Sub
Private Sub chkGetDist_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkGetDist.CheckedChanged
If chkGetDist.Checked Then
chkAnalyze.Checked = False
Scene1.SetStatusGetDistance()
tsStatusOutput.Text = " "
Else
Scene1.ResetStatusGetDistance()
tsStatusOutput.Text = " "
End If
End Sub
Private Sub btnZoomAll_Click(sender As System.Object, e As System.EventArgs) Handles btnZoomAll.Click
Scene1.ZoomAll()
End Sub
Private Sub btnZoomIn_Click(sender As System.Object, e As System.EventArgs) Handles btnZoomIn.Click
Scene1.ZoomIn()
End Sub
Private Sub btnZoomOut_Click(sender As System.Object, e As System.EventArgs) Handles btnZoomOut.Click
Scene1.ZoomOut()
End Sub
Private Sub btnTop_Click(sender As System.Object, e As System.EventArgs) Handles btnTop.Click
Scene1.TopView()
End Sub
Private Sub btnFront_Click(sender As System.Object, e As System.EventArgs) Handles btnFront.Click
Scene1.FrontView()
End Sub
Private Sub btnLeft_Click(sender As System.Object, e As System.EventArgs) Handles btnLeft.Click
Scene1.LeftView()
End Sub
Private Sub btnBack_Click(sender As System.Object, e As System.EventArgs) Handles btnBack.Click
Scene1.BackView()
End Sub
Private Sub btnRight_Click(sender As System.Object, e As System.EventArgs) Handles btnRight.Click
Scene1.RightView()
End Sub
Private Sub btnBottom_Click(sender As System.Object, e As System.EventArgs) Handles btnBottom.Click
Scene1.BottomView()
End Sub
Private Sub btnIsoSW_Click(sender As System.Object, e As System.EventArgs) Handles btnIsoSW.Click
Scene1.IsoViewSW()
End Sub
Private Sub btnIsoSE_Click(sender As System.Object, e As System.EventArgs) Handles btnIsoSE.Click
Scene1.IsoViewSE()
End Sub
Private Sub btnIsoNE_Click(sender As System.Object, e As System.EventArgs) Handles btnIsoNE.Click
Scene1.IsoViewNE()
End Sub
Private Sub btnIsoNW_Click(sender As System.Object, e As System.EventArgs) Handles btnIsoNW.Click
Scene1.IsoViewNW()
End Sub
Private Sub btnCplaneTop_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneTop.Click
m_Controller.SetLastIntegers(GRID_TYPE.TOP, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneFront_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneFront.Click
m_Controller.SetLastIntegers(GRID_TYPE.FRONT, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneRight_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneRight.Click
m_Controller.SetLastIntegers(GRID_TYPE.RIGHT, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneBack_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneBack.Click
m_Controller.SetLastIntegers(GRID_TYPE.BACK, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneLeft_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneLeft.Click
m_Controller.SetLastIntegers(GRID_TYPE.LEFT, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneBottom_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneBottom.Click
m_Controller.SetLastIntegers(GRID_TYPE.BOTTOM, 0)
m_Controller.ExecuteCommand(CMD.GRID)
End Sub
Private Sub btnCplaneElevation_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneElevation.Click
m_Controller.ExecuteCommand(CMD.GRID_ELEVATION)
End Sub
Private Sub btnCplaneOrigin_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneOrigin.Click
m_Controller.ExecuteCommand(CMD.GRID_ORIGIN)
End Sub
Private Sub btnCplaneRotate_Click(sender As System.Object, e As System.EventArgs) Handles btnCplaneRotate.Click
m_Controller.ExecuteCommand(CMD.GRID_ROTATE)
End Sub
Private Sub btnCplane3Points_Click(sender As System.Object, e As System.EventArgs) Handles btnCplane3P.Click
m_Controller.ExecuteCommand(CMD.GRID_3P)
End Sub
Private Sub btnCplanePerpCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnCPlanePerpCurve.Click
m_Controller.ExecuteCommand(CMD.GRID_PERPCURVE)
End Sub
Private Sub btnCplaneObject_Click(sender As System.Object, e As System.EventArgs) Handles btnCPlaneObj.Click
m_Controller.ExecuteCommand(CMD.GRID_OBJ)
End Sub
' --------------------- Update UI -------------------------------
Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)
' Gestione abilitazione bottoni
Dim bLayerOk As Boolean = (m_Controller.GetCurrLayer() <> GDB_ID.NULL)
Dim bSelOk As Boolean = (EgtGetFirstSelectedObj() <> GDB_ID.NULL)
' Grid
btnCplaneElevation.Enabled = m_bShowGrid
btnCplaneOrigin.Enabled = m_bShowGrid
btnCplaneRotate.Enabled = m_bShowGrid
btnCplane3P.Enabled = m_bShowGrid
btnCPlanePerpCurve.Enabled = m_bShowGrid
btnCPlaneObj.Enabled = m_bShowGrid
' Draw
btnPoint.Enabled = bLayerOk
btnLine2P.Enabled = bLayerOk
btnLinePDL.Enabled = bLayerOk
btnCircleCP.Enabled = bLayerOk
btnCircleCD.Enabled = bLayerOk
btnArcCSE.Enabled = bLayerOk
btnArc3P.Enabled = bLayerOk
btnArcPDP.Enabled = bLayerOk
' Construct
btnPlane.Enabled = bLayerOk And bSelOk
btnExtrude.Enabled = bLayerOk And bSelOk
btnRevolve.Enabled = bLayerOk And bSelOk
btnRuled.Enabled = bLayerOk And bSelOk
' Edit
btnDelete.Enabled = bSelOk
btnChangeColor.Enabled = bSelOk
btnInvertCurve.Enabled = bSelOk
btnExtendCurve.Enabled = bSelOk
btnBreakCurve.Enabled = bSelOk
btnJoinCurve.Enabled = bLayerOk And bSelOk
btnExplodeCurve.Enabled = bSelOk
btnSetCurveTh.Enabled = bSelOk
' Transform
btnMove.Enabled = bSelOk
btnRotate.Enabled = bSelOk
btnMirror.Enabled = bSelOk
btnScale.Enabled = bSelOk
End Sub
' --------------------- Commands --------------------------------
Private Sub btnPoint_Click(sender As System.Object, e As System.EventArgs) Handles btnPoint.Click
m_Controller.ExecuteCommand(CMD.POINT)
End Sub
Private Sub btnLine2P_Click(sender As System.Object, e As System.EventArgs) Handles btnLine2P.Click
m_Controller.ExecuteCommand(CMD.LINE2P)
End Sub
Private Sub btnLinePDL_Click(sender As System.Object, e As System.EventArgs) Handles btnLinePDL.Click
m_Controller.ExecuteCommand(CMD.LINEPDL)
End Sub
Private Sub btnCircleCP_Click(sender As System.Object, e As System.EventArgs) Handles btnCircleCP.Click
m_Controller.ExecuteCommand(CMD.CIRCLECP)
End Sub
Private Sub btnCircleCD_Click(sender As System.Object, e As System.EventArgs) Handles btnCircleCD.Click
m_Controller.ExecuteCommand(CMD.CIRCLECD)
End Sub
Private Sub btnArcCSE_Click(sender As System.Object, e As System.EventArgs) Handles btnArcCSE.Click
m_Controller.ExecuteCommand(CMD.ARCCSE)
End Sub
Private Sub btnArc3P_Click(sender As System.Object, e As System.EventArgs) Handles btnArc3P.Click
m_Controller.ExecuteCommand(CMD.ARC3P)
End Sub
Private Sub btnArcPDP_Click(sender As System.Object, e As System.EventArgs) Handles btnArcPDP.Click
m_Controller.ExecuteCommand(CMD.ARCPDP)
End Sub
Private Sub btnPlane_Click(sender As System.Object, e As System.EventArgs) Handles btnPlane.Click
m_Controller.ExecuteCommand(CMD.PLANE)
End Sub
Private Sub btnExtrude_Click(sender As System.Object, e As System.EventArgs) Handles btnExtrude.Click
m_Controller.ExecuteCommand(CMD.EXTRUDE)
End Sub
Private Sub btnRevolve_Click(sender As System.Object, e As System.EventArgs) Handles btnRevolve.Click
If (ModifierKeys And Keys.Shift) <> Keys.Shift Then
m_Controller.ExecuteCommand(CMD.REVOLVE)
Else
m_Controller.ExecuteCommand(CMD.REVOLVEPLUS)
End If
End Sub
Private Sub btnRuled_Click(sender As System.Object, e As System.EventArgs) Handles btnRuled.Click
m_Controller.ExecuteCommand(CMD.RULED)
End Sub
Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click
m_Controller.SetLastIntegers(GDB_ID.SEL, 0)
m_Controller.ExecuteCommand(CMD.DELETE)
End Sub
Private Sub btnChangeColor_Click(sender As System.Object, e As System.EventArgs) Handles btnChangeColor.Click
If (ModifierKeys And Keys.Shift) <> Keys.Shift Then
m_Controller.ExecuteCommand(CMD.CHANGECOLOR)
Else
m_Controller.ExecuteCommand(CMD.RESETCOLOR)
End If
End Sub
Private Sub btnInvertCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnInvertCurve.Click
m_Controller.ExecuteCommand(CMD.INVERTCRVSURF)
End Sub
Private Sub btnExtendCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnExtendCurve.Click
m_Controller.ExecuteCommand(CMD.EXTENDCURVE)
End Sub
Private Sub btnBreakCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnBreakCurve.Click
m_Controller.ExecuteCommand(CMD.BREAKCURVE)
End Sub
Private Sub btnJoinCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnJoinCurve.Click
m_Controller.ExecuteCommand(CMD.JOINCURVE)
End Sub
Private Sub btnExplodeCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnExplodeCurve.Click
m_Controller.ExecuteCommand(CMD.EXPLODECURVE)
End Sub
Private Sub btnSetCurveTh_Click(sender As System.Object, e As System.EventArgs) Handles btnSetCurveTh.Click
m_Controller.ExecuteCommand(CMD.SETCURVETHICKNESS)
End Sub
Private Sub btnMove_Click(sender As System.Object, e As System.EventArgs) Handles btnMove.Click
m_Controller.ExecuteCommand(CMD.MOVE)
End Sub
Private Sub btnRotate_Click(sender As System.Object, e As System.EventArgs) Handles btnRotate.Click
If (ModifierKeys And Keys.Shift) <> Keys.Shift Then
m_Controller.ExecuteCommand(CMD.ROTATE)
Else
m_Controller.ExecuteCommand(CMD.ROTATE3D)
End If
End Sub
Private Sub btnMirror_Click(sender As System.Object, e As System.EventArgs) Handles btnMirror.Click
m_Controller.ExecuteCommand(CMD.MIRROR)
End Sub
Private Sub btnScale_Click(sender As System.Object, e As System.EventArgs) Handles btnScale.Click
If (ModifierKeys And Keys.Shift) <> Keys.Shift Then
m_Controller.ExecuteCommand(CMD.SCALE)
Else
m_Controller.ExecuteCommand(CMD.SCALE3D)
End If
End Sub
' ----------------- Test Commands -------------------
Private Sub XbtnRotP90_Click(sender As System.Object, e As System.EventArgs) Handles XbtnRotP90.Click
XRotate(90)
' aggiorno visualizzazione
Scene1.ZoomAll()
UpdateObjInObjTree(m_nObjTreeOldId)
End Sub
Private Sub XbtnRotM90_Click(sender As System.Object, e As System.EventArgs) Handles XbtnRotM90.Click
XRotate(-90)
' aggiorno visualizzazione
Scene1.ZoomAll()
UpdateObjInObjTree(m_nObjTreeOldId)
End Sub
Private Sub XRotate(ByVal dAngRotDeg As Double)
' indice del primo gruppo sotto la radice
Dim nId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
' recupero il box del gruppo in globale
Dim PtMinPre As New Point3d
Dim PtMaxPre As New Point3d
EgtGetBBoxGlob(nId, BBF.IGNORE_TEXT + BBF.EXACT, PtMinPre, PtMaxPre)
' ruoto attorno al punto minimo
EgtRotateGlob(nId, PtMinPre, EgtGetGridVersZ(), dAngRotDeg)
' calcolo nuovo box in globale
Dim PtMinPost As New Point3d
Dim PtMaxPost As New Point3d
EgtGetBBoxGlob(nId, BBF.IGNORE_TEXT + BBF.EXACT, PtMinPost, PtMaxPost)
' eseguo traslazione per riavere lo stesso punto minimo
Dim VtMove As Vector3d = PtMinPre - PtMinPost
EgtMoveGlob(nId, VtMove)
End Sub
Private Sub XbtnMirror_Click(sender As System.Object, e As System.EventArgs) Handles XbtnMirror.Click
' indice del primo gruppo sotto la radice
Dim nId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
' recupero il box del gruppo in globale
Dim PtMin As New Point3d
Dim PtMax As New Point3d
EgtGetBBoxGlob(nId, BBF.IGNORE_TEXT + BBF.EXACT, PtMin, PtMax)
Dim PtCen As Point3d = Point3d.Media(PtMin, PtMax)
' mirror rispetto a Y centrato nel box
EgtMirrorGlob(nId, PtCen, Vector3d.X_AX)
' sistemo gli eventuali testi
XUnMirrorTexts(nId)
' aggiorno visualizzazione
Scene1.ZoomAll()
UpdateObjInObjTree(m_nObjTreeOldId)
End Sub
Private Sub XUnMirrorTexts(ByVal nGroupId As Integer)
Dim nId As Integer = EgtGetFirstInGroup(nGroupId)
While nId <> GDB_ID.NULL
'recupero il tipo di oggetto
Dim nType As Integer = EgtGetType(nId)
'se gruppo
If nType = GDB_TY.GROUP Then
XUnMirrorTexts(nId)
' se testo
ElseIf nType = GDB_TY.EXT_TEXT Then
EgtMirrorText(nId, True)
End If
' passo al successivo
nId = EgtGetNext(nId)
End While
End Sub
'-------------------------------- KeyDown --------------------------------------------------------
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
' Con ESC esco dall'azione corrente
If e.KeyData = Keys.Escape Then
' reset Azione corrente
m_Controller.ResetStatus()
' reset Analisi e Distanza
chkAnalyze.Checked = False
chkGetDist.Checked = False
' pulisco output
tsStatusOutput.Text = ""
ResetInputBox()
End If
End Sub
Private Sub Scene1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles Scene1.KeyDown
' Con DEL eseguo cancellazione delle entità selezionate
If e.KeyData = Keys.Delete Then
m_Controller.SetLastIntegers(GDB_ID.SEL, 0)
m_Controller.ExecuteCommand(CMD.DELETE)
' con SPAZIO ripeto l'ultimo comando
ElseIf e.KeyData = Keys.Space Then
m_Controller.RepeatLastCommand()
End If
End Sub
' --------------------- Input Box -------------------------------
Private Sub PrepareInputBox(ByRef sTitle As String, ByRef sLabel As String, ByRef sCheckLabel As String, ByVal bShowBtn As Boolean)
InputBox.Text = sTitle
InputBox.Show()
InputLabel.Text = sLabel
InputLabel.Show()
InputText.Text = ""
InputText.Show()
If sCheckLabel <> "" Then
InputCheck.Text = sCheckLabel
InputCheck.Show()
End If
If bShowBtn Then
btnShow.Show()
End If
InputText.Focus()
End Sub
Private Sub ResetInputBox()
InputBox.Hide()
InputCheck.Hide()
btnShow.Hide()
End Sub
Private Function SetInputBoxText(ByVal sVal As String) As Boolean
InputText.Text = sVal
Return True
End Function
Private Function SetInputBoxCheck(ByVal bCheck As Boolean) As Boolean
InputCheck.Checked = bCheck
Return True
End Function
Private Sub InputText_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles InputText.KeyDown
' Con SHIFT aggiorno la grafica con i dati correnti
If (e.KeyData And Keys.Shift) = Keys.Shift Then
m_Controller.Show(InputText.Text)
' Con RETURN avanzo di un passo
ElseIf e.KeyData = Keys.Return Then
m_Controller.Done(InputText.Text)
End If
End Sub
Private Sub InputCheck_KeyDown(ByVal sender As Object, ByVal e As EventArgs) Handles InputCheck.CheckedChanged
m_Controller.SetLastBoolean(InputCheck.Checked)
End Sub
Private Sub btnShow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShow.Click
m_Controller.Show(InputText.Text)
End Sub
Private Sub btnDone_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDone.Click
m_Controller.Done(InputText.Text)
End Sub
'-------------------------------- Command Box ----------------------------------------------------
Private Sub tboxCmd_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles tboxCmd.KeyDown
If (e.KeyCode = Keys.Enter) Then
Dim nLine As Integer = tboxCmd.GetLineFromCharIndex(tboxCmd.GetFirstCharIndexOfCurrentLine)
Dim sCmd As String = tboxCmd.Lines(nLine).ToString
If Not String.IsNullOrEmpty(sCmd) Then
' ripristino stato oggetto marcato
Dim nIdOld As Integer = RevertOldIdInObjTree()
' eseguo comando
If EgtTscExecLine(sCmd) Then
Scene1.Invalidate()
tsStatusOnR.Text = " "
Else
tsStatusOnR.Text = "Error executing command"
End If
' ricarico albero degli oggetti
LoadObjTree()
SelectIdInObjTree(nIdOld)
End If
End If
End Sub
'-------------------------------- Current Piece/Layer --------------------------------------------
Private Sub btnNewPart_Click(sender As Object, e As EventArgs) Handles btnNewPart.Click
m_Controller.ExecuteCommand(CMD.NEWPART)
End Sub
Private Sub btnNewLayer_Click(sender As Object, e As EventArgs) Handles btnNewLayer.Click
m_Controller.ExecuteCommand(CMD.NEWLAYER)
End Sub
Private Sub btnColor_Click(sender As Object, e As EventArgs) Handles btnColor.Click
m_Controller.ExecuteCommand(CMD.LAYERCOLOR)
End Sub
Private Sub EmitCurrPartLayer()
Dim sText As String = " "
Dim colObj As Color3d
EgtGetColor(GDB_ID.ROOT, colObj)
Dim nCurrPart As Integer = m_Controller.GetCurrPart()
If nCurrPart <> GDB_ID.NULL Then
sText = "Part " + nCurrPart.ToString()
EgtGetCalcColor(nCurrPart, colObj)
Dim nCurrLayer As Integer = m_Controller.GetCurrLayer()
If nCurrLayer <> GDB_ID.NULL And EgtExistsObj(nCurrLayer) Then
sText += " --> Layer " + nCurrLayer.ToString()
EgtGetCalcColor(nCurrLayer, colObj)
End If
End If
txtPartLay.Text = sText
colObj.A = 100
txtColor.BackColor = colObj.ToColor()
End Sub
'-------------------------------- Tree View ------------------------------------------------------
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()
TreeView1.BeginUpdate()
AddGroupInObjTree(GDB_ID.ROOT, 0, TreeView1.Nodes)
TreeView1.EndUpdate()
If nOldId <> GDB_ID.NULL Then
SelectIdInObjTree(nOldId)
UpdateObjDataInObjTree(m_nObjTreeOldId)
End If
End Sub
Private Function ClearObjTree() As Integer
Dim nOldId As Integer = RevertOldIdInObjTree()
TreeView1.Nodes.Clear()
Return nOldId
End Function
Private Sub AddGroupInObjTree(ByVal nGroupId As Integer, ByVal nLev As Integer, ByRef PrevNodColl As TreeNodeCollection)
Dim CurrNodColl As TreeNodeCollection
If nGroupId = GDB_ID.ROOT Then
CurrNodColl = PrevNodColl
Else
Dim sName As String = String.Empty
Dim sText As String = String.Empty
If EgtGetName(nGroupId, sName) Then
If nLev = 1 Then
sText = sName + " (Part " + nGroupId.ToString + ")"
ElseIf nLev = 2 Then
sText = sName + " (Layer " + nGroupId.ToString + ")"
Else
sText = sName + " (Group " + nGroupId.ToString + ")"
End If
Else
If nLev = 1 Then
sText = "Part " + nGroupId.ToString
ElseIf nLev = 2 Then
sText = "Layer " + nGroupId.ToString
Else
sText = "Group " + nGroupId.ToString
End If
End If
Dim nImage As Integer = TypeToImageInObjTree(GDB_TY.GROUP, nLev)
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)
End If
Dim nObjs As Integer = EgtGetGroupObjs(nGroupId)
If (nObjs > 20000) Then
CurrNodColl.Add(GDB_ID.NULL.ToString(), "Too many entities")
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, nLev + 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 nImage As Integer = TypeToImageInObjTree(nType, nLev)
Dim CurrNod As TreeNode = CurrNodColl.Add(nId.ToString, sText, nImage, nImage)
Dim nStat As GDB_ST = GDB_ST.ON_
EgtGetStatus(nId, nStat)
CurrNod.Checked = (nStat <> GDB_ST.OFF)
End If
'passo al successivo
nId = EgtGetNext(nId)
End While
End Sub
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 Function TypeToImageInObjTree(ByVal nType As Integer, ByVal nLev As Integer) As Integer
Select Case nType
Case GDB_TY.GROUP
If nLev = 1 Then
Return 3
ElseIf nLev = 2 Then
Return 4
Else
Return 2
End If
Case GDB_TY.GEO_VECTOR
Return 5
Case GDB_TY.GEO_POINT
Return 6
Case GDB_TY.GEO_FRAME
Return 7
Case GDB_TY.CRV_LINE
Return 8
Case GDB_TY.CRV_ARC
Return 9
Case GDB_TY.CRV_BEZ
Return 10
Case GDB_TY.CRV_COMPO
Return 11
Case GDB_TY.SRF_MESH
Return 12
Case GDB_TY.EXT_TEXT
Return 13
End Select
Return 1
End Function
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.SetLastIntegers(nId, 0)
If e.Node.Checked Then
m_Controller.ExecuteCommand(CMD.SHOW)
Else
m_Controller.ExecuteCommand(CMD.HIDE)
End If
End Sub
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 i As ToolStripItem In ContextMenuTreeView1.Items
i.Enabled = bOn
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
' se non è un gruppo ne cerco il padre
Dim nId As Integer = m_nObjTreeOldId
While EgtGetType(nId) <> GDB_TY.GROUP
nId = EgtGetParent(nId)
If nId = GDB_ID.NULL Then
Return
End If
End While
' recupero il padre
Dim nIdParent As Integer = EgtGetParent(nId)
If nIdParent = GDB_ID.NULL Then
Return
' se Part
ElseIf nIdParent = GDB_ID.ROOT Then
' cerco il primo Layer del Part
Dim nIdLayer As Integer = EgtGetFirstGroupInGroup(nId)
m_Controller.SetLastIntegers(nId, nIdLayer)
m_Controller.ExecuteCommand(CMD.SETCURRPARTLAYER)
EmitCurrPartLayer()
' se Layer
ElseIf EgtGetParent(nIdParent) = GDB_ID.ROOT Then
m_Controller.SetLastIntegers(nIdParent, nId)
m_Controller.ExecuteCommand(CMD.SETCURRPARTLAYER)
EmitCurrPartLayer()
End If
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 TreeNode = TreeView1.Nodes.Find(nId.ToString, True)
If tNode.Length > 0 Then
TreeView1.SelectedNode = tNode(0)
TreeView1.SelectedNode.Expand()
m_nObjTreeOldId = nId
Return True
Else
m_nObjTreeOldId = GDB_ID.NULL
Return False
End If
End Function
Private Sub MenuObjTree_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ContextMenuTreeView1.ItemClicked
If e.ClickedItem.Name = "cmdSelectPartLayObj" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.SELECTPARTLAYEROBJ)
ElseIf e.ClickedItem.Name = "cmdDeselectPartLayObj" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.DESELECTPARTLAYEROBJ)
ElseIf e.ClickedItem.Name = "cmdSetName" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.SETNAME)
ElseIf e.ClickedItem.Name = "cmdSetInfo" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.SETINFO)
ElseIf e.ClickedItem.Name = "cmdRelocatePartLayObj" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.RELOCATEPARTLAYEROBJ)
ElseIf e.ClickedItem.Name = "cmdCopyPartLayObj" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.COPYPARTLAYEROBJ)
ElseIf e.ClickedItem.Name = "cmdDeletePartLayObj" Then
m_Controller.SetLastIntegers(m_nObjTreeMenuId, 0)
m_Controller.ExecuteCommand(CMD.DELETE)
End If
End Sub
'-------------------------------- Program Title --------------------------------------------------
Private Sub EmitTitle()
' nome file
Dim sTitle As String = m_Controller.GetCurrFile()
If String.IsNullOrEmpty(sTitle) Then
sTitle = "New"
End If
' indicazione di modificato
If m_Controller.GetModified() Then
sTitle += "*"
End If
' dati del prodotto
sTitle += " - EgalTech TestEIn"
' emissione del titolo
Me.Text = sTitle
End Sub
'-------------------------------- Status Bar -----------------------------------------------------
Private Sub ToolStripStatusGrid_Click() Handles tsStatusGrid.Click
m_bShowGrid = Not m_bShowGrid
If m_bShowGrid Then
tsStatusGrid.ForeColor = Color.Black
tsStatusGrid.Text = "GRID ON "
Else
tsStatusGrid.ForeColor = Color.LightGray
tsStatusGrid.Text = "GRID OFF"
End If
EgtSetGridShow(m_bShowGrid, m_bShowGrid And m_bShowGridFrame)
EgtDraw()
End Sub
Private Sub ToolStripStatusTypePos_Click() Handles tsStatusTypePos.Click
m_bCPlaneTypePos = Not m_bCPlaneTypePos
If m_bCPlaneTypePos Then
tsStatusTypePos.Text = "CPLANE"
Else
tsStatusTypePos.Text = "WORLD "
End If
Scene1.SetGridCursorPos(m_bCPlaneTypePos)
End Sub
End Class