diff --git a/Controller.vb b/Controller.vb index d15b10d..9257d6b 100644 --- a/Controller.vb +++ b/Controller.vb @@ -73,6 +73,7 @@ Public Class Controller SETNAME SETINFO POINT + VECTOR FRAME LINE2P LINEPDL @@ -639,7 +640,7 @@ Public Class Controller Select Case m_nInpType Case IBT.TY_VECTOR3D m_vtLast = m_ptLast - m_ptP1 - m_vtLast.Normalize() + 'm_vtLast.Normalize() Case IBT.TY_DIRECTION m_dLast = GridAngFromGlobDir(m_ptLast - m_ptP1) m_dAux = GridLenFromGlobLen(m_ptLast - m_ptP1) @@ -970,7 +971,10 @@ Public Class Controller ' Point Case CMD.POINT Return ProcessPoint() - ' Point + ' Vector + Case CMD.VECTOR + Return ProcessVector() + ' Frame Case CMD.FRAME Return ProcessFrame() ' Line2P @@ -1125,6 +1129,8 @@ Public Class Controller DragCopyPartLayerObj() Case CMD.POINT DragPoint() + Case CMD.VECTOR + DragVector() Case CMD.FRAME DragFrame() Case CMD.LINE2P @@ -2033,14 +2039,15 @@ Public Class Controller m_nInpType = IBT.TY_POINT3D SetInputBoxPoint3d(m_ptCont) Case 1 + ' reset scena + m_Scene.ResetStatus(False) ' creo il punto (i dati sono in globale) EnableCommandLog() If EgtCreateGeoPoint(GetCurrLayer(), m_ptLast.Loc(GDB_ID.GRID), GDB_RT.GRID) <> GDB_ID.NULL Then m_ptCont = m_ptLast End If DisableCommandLog() - ' reset stato scena - m_Scene.ResetStatus() + EgtDraw() ' aggiorno stato m_nStep = 0 RaiseEvent UpdateUI(Me, True) @@ -2062,6 +2069,65 @@ Public Class Controller End If End Sub + Private Function ProcessVector() As Boolean + Select Case m_nStep + Case 0 + ' deve esistere un gruppo corrente e devo poter creare il gruppo di drag + If GetCurrLayer() = GDB_ID.NULL Or Not m_Scene.CreateDragGroup() Then + Return False + End If + m_Scene.EnableDrag() + ' imposto stato a primo punto per vector + m_Scene.SetStatusSelPoint(True) + m_nStep = 1 + ' abilito dialogo + RaiseEvent PrepareInputBox("VECTOR", "Insert Start Point", "", False, True) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) + Case 1 + m_ptP1 = m_ptLast + m_vtLast = 10 * m_vtCont + m_nStep = 2 + m_Scene.DisableDrag() + RaiseEvent PrepareInputBox("VECTOR", "Insert Vector ", "", False, True) + m_nInpType = IBT.TY_VECTOR3D + SetInputBoxVector3d(m_vtLast) + EgtDisableModified() + DragVector() + EgtEnableModified() + Case 2 + ' reset scena + m_Scene.ResetStatus(False) + ' creo il vettore (i dati sono in globale) + EnableCommandLog() + If EgtCreateGeoVector(GetCurrLayer(), m_vtLast.Loc(GDB_ID.GRID), m_ptP1.Loc(GDB_ID.GRID), GDB_RT.GRID) <> GDB_ID.NULL Then + m_ptCont = m_ptP1 + m_vtCont = m_vtLast + m_vtCont.Normalize() + End If + DisableCommandLog() + EgtDraw() + ' aggiorno stato + m_nStep = 0 + RaiseEvent UpdateUI(Me, True) + Case Else + m_nStep = 0 + Return False + End Select + Return True + End Function + + Private Sub DragVector() + ' il gruppo di Drag ha riferimento globale + If m_nStep = 2 Then + ' svuoto il gruppo di drag + EgtEmptyGroup(m_Scene.GetDragGroup()) + ' creo il vettore + EgtCreateGeoVector(m_Scene.GetDragGroup(), m_vtLast, m_ptP1, GDB_RT.GLOB) + EgtDraw() + End If + End Sub + Private Function ProcessFrame() As Boolean Select Case m_nStep Case 0 @@ -2078,14 +2144,15 @@ Public Class Controller m_nInpType = IBT.TY_POINT3D SetInputBoxPoint3d(m_ptCont) Case 1 + ' reset scena + m_Scene.ResetStatus(False) ' creo il frame allineato con grid (i dati sono in globale) EnableCommandLog() If EgtCreateGeoFrame(GetCurrLayer(), New Frame3d(m_ptLast.Loc(GDB_ID.GRID)), GDB_RT.GRID) <> GDB_ID.NULL Then m_ptCont = m_ptLast End If DisableCommandLog() - ' reset stato scena - m_Scene.ResetStatus() + EgtDraw() ' aggiorno stato m_nStep = 0 RaiseEvent UpdateUI(Me, True) @@ -2134,7 +2201,7 @@ Public Class Controller m_Scene.EnableDrag() RaiseEvent PrepareInputBox("LINE 2P", "Insert End Point ", "", False, True) m_nInpType = IBT.TY_POINT3D - SetInputBoxPoint3d(m_ptLast.Loc(GDB_ID.GRID)) + SetInputBoxPoint3d(m_ptLast) Select Case m_sepP1 Case SEP.PT_TG, SEP.PT_PERP m_Scene.DisableMinDistPoint() @@ -3013,7 +3080,7 @@ Public Class Controller m_nStep = 2 RaiseEvent PrepareInputBox("RECTANGLE 2P", "Insert End Point", "", False, True) m_nInpType = IBT.TY_POINT3D - SetInputBoxPoint3d(m_ptLast.Loc(GDB_ID.GRID)) + SetInputBoxPoint3d(m_ptLast) Case 2 ' reset scena m_Scene.ResetStatus(False) @@ -3076,7 +3143,7 @@ Public Class Controller m_nStep = 3 RaiseEvent PrepareInputBox("POLYGON", "Insert Side Point", "Internal Radius", False, True) m_nInpType = IBT.TY_POINT3D - SetInputBoxPoint3d(m_ptLast.Loc(GDB_ID.GRID)) + SetInputBoxPoint3d(m_ptLast) Case 3 ' reset scena m_Scene.ResetStatus(False) @@ -3147,7 +3214,7 @@ Public Class Controller m_nStep = 3 RaiseEvent PrepareInputBox("POLYGON SIDE", "Insert Side End Point", "", False, True) m_nInpType = IBT.TY_POINT3D - SetInputBoxPoint3d(m_ptLast.Loc(GDB_ID.GRID)) + SetInputBoxPoint3d(m_ptLast) Case 3 ' reset scena m_Scene.ResetStatus(False) @@ -5001,7 +5068,7 @@ Public Class Controller sMsg += " to " + sCurrFile End If sMsg += " ?" - Dim nRes = MessageBox.Show(sMsg, "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) + Dim nRes = MessageBox.Show(m_Scene, sMsg, "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) Select Case nRes Case Windows.Forms.DialogResult.Yes SaveProject() diff --git a/Form1.Designer.vb b/Form1.Designer.vb index cc0c7bb..d023e8b 100644 --- a/Form1.Designer.vb +++ b/Form1.Designer.vb @@ -1123,6 +1123,7 @@ Partial Class Form1 Me.tBoxInfo.ScrollBars = System.Windows.Forms.ScrollBars.Vertical Me.tBoxInfo.Size = New System.Drawing.Size(218, 77) Me.tBoxInfo.TabIndex = 24 + Me.tBoxInfo.WordWrap = False ' 'tboxCmd ' diff --git a/Form1.resx b/Form1.resx index 8da5e7d..9c191e9 100644 --- a/Form1.resx +++ b/Form1.resx @@ -883,7 +883,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC2 - DQAAAk1TRnQBSQFMAgEBDgEAAZgBEAGYAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + DQAAAk1TRnQBSQFMAgEBDgEAAaABEAGgAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUADAAFAAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm @@ -952,7 +952,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW - CAAAAk1TRnQBSQFMAgEBAgEAAbgBBwG4AQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAcABBwHAAQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/Form1.vb b/Form1.vb index 3474bd2..105987d 100644 --- a/Form1.vb +++ b/Form1.vb @@ -69,6 +69,8 @@ Public Class Form1 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 + ' Abilito drag and drop + Me.AllowDrop = True ' Title EmitTitle() ' Impostazione path radice per i dati @@ -328,6 +330,30 @@ Public Class Form1 Next End Sub + Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + End If + End Sub + + Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop + Dim files() As String = e.Data.GetData(DataFormats.FileDrop) + For Each s In files + If Not String.IsNullOrWhiteSpace(s) Then + Dim nFileType As Integer = EgtGetFileType(s) + Select Case nFileType + Case FT.NGE, FT.NFE + m_Controller.OpenProject(s, False) + Case FT.DXF, FT.STL, FT.CNC, FT.CSF + m_Controller.ImportProject(s, False) + Case FT.TSC, FT.LUA + m_Controller.Exec(s, False) + End Select + Exit For + End If + Next + 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 @@ -925,10 +951,12 @@ Public Class Form1 ' --------------------- Commands -------------------------------- Private Sub btnPoint_Click(sender As System.Object, e As System.EventArgs) Handles btnPoint.Click - If (ModifierKeys And Keys.Shift) <> Keys.Shift Then - m_Controller.ExecuteCommand(CMD.POINT) - Else + If (ModifierKeys And Keys.Control) = Keys.Control Then m_Controller.ExecuteCommand(CMD.FRAME) + ElseIf (ModifierKeys And Keys.Shift) = Keys.Shift Then + m_Controller.ExecuteCommand(CMD.VECTOR) + Else + m_Controller.ExecuteCommand(CMD.POINT) End If End Sub diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 5b9ea5c..3bf312a 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -46,5 +46,5 @@ Imports System.Runtime.InteropServices ' utilizzando l'asterisco (*) come descritto di seguito: ' - - + +