From dcdee3c09213a703465382b2508e94c54db077f5 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 28 Apr 2015 08:42:49 +0000 Subject: [PATCH] TestEIn 1.6d9 : - distanza ora viene espressa in griglia se abilitata visualizz.coord. griglia - aggiunto disegno frame con Drag - aggiunto drag a disegno punto - griglia anche da oggetti punto e frame - corretto calcolo punto continuazione alla fine di LinePDL e LinePVL. --- Controller.vb | 100 ++++++++++++++++++++++++++++++++++--- EgtInterface.vb | 17 +++++++ Form1.Designer.vb | 38 +++++++------- Form1.resx | 14 +++--- Form1.vb | 6 ++- My Project/AssemblyInfo.vb | 4 +- Resources/Point.png | Bin 233 -> 269 bytes Scene.vb | 18 +++---- 8 files changed, 151 insertions(+), 46 deletions(-) diff --git a/Controller.vb b/Controller.vb index 6ce6679..8e843c6 100644 --- a/Controller.vb +++ b/Controller.vb @@ -71,6 +71,7 @@ Public Class Controller SETNAME SETINFO POINT + FRAME LINE2P LINEPDL LINEPVL @@ -908,6 +909,9 @@ Public Class Controller ' Point Case CMD.POINT Return ProcessPoint() + ' Point + Case CMD.FRAME + Return ProcessFrame() ' Line2P Case CMD.LINE2P Return ProcessLine2P() @@ -1058,6 +1062,10 @@ Public Class Controller DragGridRotate3D() Case CMD.COPYPARTLAYEROBJ DragCopyPartLayerObj() + Case CMD.POINT + DragPoint() + Case CMD.FRAME + DragFrame() Case CMD.LINE2P DragLine2P() Case CMD.LINEPDL @@ -1430,6 +1438,24 @@ Public Class Controller End If Dim nId As Integer = EgtGetLastSelectedObj() Select Case EgtGetType(nId) + Case GDB_TY.GEO_POINT + Dim ptOrig As Point3d + If Not EgtStartPoint(nId, GDB_ID.ROOT, ptOrig) Then + Return False + End If + Dim frNew As Frame3d = EgtGetGridFrame() + frNew.ChangeOrigin(ptOrig) + EnableCommandLog() + EgtSetGridFrame(frNew) + DisableCommandLog() + Case GDB_TY.GEO_FRAME + Dim frNew As New Frame3d + If Not EgtFrame(nId, GDB_ID.ROOT, frNew) Then + Return False + End If + EnableCommandLog() + EgtSetGridFrame(frNew) + DisableCommandLog() Case GDB_TY.CRV_ARC Dim vtZ As Vector3d If Not EgtCurveExtrusion(nId, vtZ) OrElse vtZ.IsSmall() Then @@ -1933,16 +1959,16 @@ Public Class Controller Private Function ProcessPoint() As Boolean Select Case m_nStep Case 0 - ' deve esistere un gruppo corrente - If GetCurrLayer() = GDB_ID.NULL Then + ' 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 - ' non serve il gruppo di drag + m_Scene.EnableDrag() ' imposto stato a primo punto per point m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent PrepareInputBox("POINT", "Insert Point", "", False, False) + RaiseEvent PrepareInputBox("POINT", "Insert Point", "", False, True) m_nInpType = IBT.TY_POINT3D SetInputBoxPoint3d(m_ptCont) Case 1 @@ -1964,6 +1990,64 @@ Public Class Controller Return True End Function + Private Sub DragPoint() + ' il gruppo di Drag ha riferimento globale + If m_nStep = 1 Then + ' svuoto il gruppo di drag + EgtEmptyGroup(m_Scene.GetDragGroup()) + ' creo il punto + EgtCreateGeoPoint(m_Scene.GetDragGroup(), m_ptLast, GDB_RT.GLOB) + EgtDraw() + End If + End Sub + + Private Function ProcessFrame() 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 point + m_Scene.SetStatusSelPoint() + m_nStep = 1 + ' abilito dialogo + RaiseEvent PrepareInputBox("FRAME", "Insert Origin", "", False, True) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) + Case 1 + ' 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() + ' aggiorno stato + m_nStep = 0 + RaiseEvent UpdateUI(Me, True) + Case Else + m_nStep = 0 + Return False + End Select + Return True + End Function + + Private Sub DragFrame() + ' il gruppo di Drag ha riferimento globale + If m_nStep = 1 Then + ' svuoto il gruppo di drag + EgtEmptyGroup(m_Scene.GetDragGroup()) + ' creo il frame + Dim frNew As Frame3d = EgtGetGridFrame() + frNew.ChangeOrigin(m_ptLast) + EgtCreateGeoFrame(m_Scene.GetDragGroup(), frNew, GDB_RT.GLOB) + EgtDraw() + End If + End Sub + Private Function ProcessLine2P() As Boolean Select Case m_nStep Case 0 @@ -2119,9 +2203,9 @@ Public Class Controller m_vtLast.Loc(GDB_ID.GRID), m_dLast, GDB_RT.GRID) DisableCommandLog() If nId <> GDB_ID.NULL Then - m_ptCont = m_ptLast - m_vtCont = (m_ptLast - m_ptP1) + m_vtCont = m_vtLast m_vtCont.Normalize() + m_ptCont = m_ptP1 + m_vtCont * m_dLast End If EgtDraw() ' aggiorno stato @@ -2210,9 +2294,9 @@ Public Class Controller m_vtLast.Loc(GDB_ID.GRID), m_dLast, GDB_RT.GRID) DisableCommandLog() If nId <> GDB_ID.NULL Then - m_ptCont = m_ptLast - m_vtCont = (m_ptLast - m_ptP1) + m_vtCont = m_vtLast m_vtCont.Normalize() + m_ptCont = m_ptP1 + m_vtCont * m_dLast End If EgtDraw() ' aggiorno stato diff --git a/EgtInterface.vb b/EgtInterface.vb index 842e373..798567f 100644 --- a/EgtInterface.vb +++ b/EgtInterface.vb @@ -1744,6 +1744,23 @@ Public Function EgtAtParamVector(ByVal nId As Integer, ByVal dU As Double, ByRef Return EgtAtParamVector(nId, dU, nId, VtV) End Function + +Private Function EgtFrame(ByVal nId As Integer, ByVal nRefId As Integer, + ByRef PtOrig As Point3d, ByRef VtX As Vector3d, ByRef VtY As Vector3d, ByRef VtZ As Vector3d) As Boolean +End Function +Public Function EgtFrame(ByVal nId As Integer, ByVal nRefId As Integer, ByRef frFrame As Frame3d) As Boolean + Dim PtOrig As Point3d + Dim VtDirX, VtDirY, VtDirZ As Vector3d + If Not EgtFrame(nId, nRefId, PtOrig, VtDirX, VtDirY, VtDirZ) Then + frFrame = Frame3d.GLOB() + Return False + Else + Return frFrame.Setup(PtOrig, VtDirX, VtDirY, VtDirZ) + End If +End Function + + + Public Function EgtCurveLength(ByVal nId As Integer, ByRef dLen As Double) As Boolean End Function diff --git a/Form1.Designer.vb b/Form1.Designer.vb index 74023b9..4ec2b0b 100644 --- a/Form1.Designer.vb +++ b/Form1.Designer.vb @@ -108,6 +108,7 @@ Partial Class Form1 Me.btnPoint = New System.Windows.Forms.Button() Me.btnLine2P = New System.Windows.Forms.Button() Me.TabConstruct = New System.Windows.Forms.TabPage() + Me.btnExplodeSurf = New System.Windows.Forms.Button() Me.btnMergeSurf = New System.Windows.Forms.Button() Me.btnInvertSurf = New System.Windows.Forms.Button() Me.btnRevolve = New System.Windows.Forms.Button() @@ -182,7 +183,6 @@ Partial Class Form1 Me.MruSFile6 = New System.Windows.Forms.ToolStripMenuItem() Me.MruSFile7 = New System.Windows.Forms.ToolStripMenuItem() Me.MruSFile8 = New System.Windows.Forms.ToolStripMenuItem() - Me.btnExplodeSurf = New System.Windows.Forms.Button() Me.TableLayoutPanel1.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabFile.SuspendLayout() @@ -1564,6 +1564,24 @@ Partial Class Form1 Me.TabConstruct.TabIndex = 4 Me.TabConstruct.Text = "Construct" ' + 'btnExplodeSurf + ' + Me.btnExplodeSurf.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control + Me.btnExplodeSurf.FlatAppearance.BorderSize = 0 + Me.btnExplodeSurf.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.Control + Me.btnExplodeSurf.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.GradientInactiveCaption + Me.btnExplodeSurf.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnExplodeSurf.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnExplodeSurf.Image = CType(resources.GetObject("btnExplodeSurf.Image"), System.Drawing.Image) + Me.btnExplodeSurf.ImageAlign = System.Drawing.ContentAlignment.TopCenter + Me.btnExplodeSurf.Location = New System.Drawing.Point(0, 288) + Me.btnExplodeSurf.Name = "btnExplodeSurf" + Me.btnExplodeSurf.Size = New System.Drawing.Size(56, 48) + Me.btnExplodeSurf.TabIndex = 44 + Me.btnExplodeSurf.Text = "Explode" + Me.btnExplodeSurf.TextAlign = System.Drawing.ContentAlignment.BottomCenter + Me.btnExplodeSurf.UseVisualStyleBackColor = False + ' 'btnMergeSurf ' Me.btnMergeSurf.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control @@ -2351,24 +2369,6 @@ Partial Class Form1 Me.MruSFile8.Size = New System.Drawing.Size(160, 22) Me.MruSFile8.Text = "File8" ' - 'btnExplodeSurf - ' - Me.btnExplodeSurf.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control - Me.btnExplodeSurf.FlatAppearance.BorderSize = 0 - Me.btnExplodeSurf.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.Control - Me.btnExplodeSurf.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.GradientInactiveCaption - Me.btnExplodeSurf.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnExplodeSurf.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnExplodeSurf.Image = CType(resources.GetObject("btnExplodeSurf.Image"), System.Drawing.Image) - Me.btnExplodeSurf.ImageAlign = System.Drawing.ContentAlignment.TopCenter - Me.btnExplodeSurf.Location = New System.Drawing.Point(0, 288) - Me.btnExplodeSurf.Name = "btnExplodeSurf" - Me.btnExplodeSurf.Size = New System.Drawing.Size(56, 48) - Me.btnExplodeSurf.TabIndex = 44 - Me.btnExplodeSurf.Text = "Explode" - Me.btnExplodeSurf.TextAlign = System.Drawing.ContentAlignment.BottomCenter - Me.btnExplodeSurf.UseVisualStyleBackColor = False - ' 'Form1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/Form1.resx b/Form1.resx index 50382ca..f2455f8 100644 --- a/Form1.resx +++ b/Form1.resx @@ -883,7 +883,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC2 - DQAAAk1TRnQBSQFMAgEBDgEAAXABEAFwAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + DQAAAk1TRnQBSQFMAgEBDgEAAXgBEAF4AhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUADAAFAAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm @@ -952,7 +952,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW - CAAAAk1TRnQBSQFMAgEBAgEAAZABBwGQAQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAZgBBwGYAQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -1092,11 +1092,11 @@ - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAAd0SU1FB94KFxEsB9kvlzIAAACGSURBVFhH7dPRCYAwDABRB+u0TucWsRW0ogcR - keuPhQdyFJKPOkXEUBhNGE0YTRhNGE0YTRhNGE0Yn6inVO1jV+heBmOmDduGzkv3cgmMmdvw0xLXuxmM - mX+Besa+geZYovP+gi9hNGE0YTRhNGE0YTRhNGE0YTRhNGE0YTRhNGE0YfTEtAKYv7U6xFtRwAAAAABJ - RU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQffBBwHAxGEIS8JAAAAq0lEQVRYR+3TUQqDMBBF + UReWxbkWV9ddxKRN4qgXppTOSz8qHAjXgcyHLjnnqTAqYVTCqIRRCaMSRiWMShiVML6jPKmohy7RnAej + p172vHR7HD5cAqPndrlZ4jrrwej5L1Ceud9ANZY46P6Cb8KohFEJY6Trt3J6Ga1eXqx2idtQlH55O48l + cDhCu9Qu8DrboWh2gdH6QeEnFuhGswMzYFTCqIRRCaMSRp287IDzhJ/eCN+kAAAAAElFTkSuQmCC diff --git a/Form1.vb b/Form1.vb index 51d3f3f..124d903 100644 --- a/Form1.vb +++ b/Form1.vb @@ -902,7 +902,11 @@ Public Class Form1 ' --------------------- Commands -------------------------------- Private Sub btnPoint_Click(sender As System.Object, e As System.EventArgs) Handles btnPoint.Click - m_Controller.ExecuteCommand(CMD.POINT) + If (ModifierKeys And Keys.Shift) <> Keys.Shift Then + m_Controller.ExecuteCommand(CMD.POINT) + Else + m_Controller.ExecuteCommand(CMD.FRAME) + End If End Sub Private Sub btnLine2P_Click(sender As System.Object, e As System.EventArgs) Handles btnLine2P.Click diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 75118b2..9586589 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: ' - - + + diff --git a/Resources/Point.png b/Resources/Point.png index e6a7749839cf954f381e8702a17165c96124f21e..43a50da5692e518a7e4de626bac1a519f8138037 100644 GIT binary patch delta 196 zcmV;#06YKb0gVEXQGeeA90vmtgdr~p0001*Nkl!41MN3`M^)MTbdmor76A z3#-5|Z1K26s%g0pBu7wN^1(UyKPQe812oc#23rCoKmz(=!R1*iF~R zws@H&X$I~Q0KAAh2*9!lBLL=h=7%2mI1|w2lBy(}*Pc9<|2=`z0qiGc86duRh!QOh ytR5nA2bOnn7(lE15TEiEtY1IJIfxSAuK=E|*Mh>T*@>3`0000JQ34*ef6zyJdbFd4vr-vdr(wsJk;xP^HD O0000 ST.SELPOINTZ) Then + If m_bGridCursorPos And m_nStatus <> ST.SELPOINTZ Then ' calcolo lo snap da utilizzare Dim nSnap As SP = SP.PT_SKETCH If m_nStatus = ST.SELPOINT And m_nSnapType = SP.PT_GRID Then