diff --git a/AboutBox1.Designer.vb b/AboutBox1.Designer.vb index bc1ca65..ed6d5c1 100644 --- a/AboutBox1.Designer.vb +++ b/AboutBox1.Designer.vb @@ -30,6 +30,7 @@ Partial Class AboutBox1 Me.LabelCopyright = New System.Windows.Forms.Label() Me.LabelVersion = New System.Windows.Forms.Label() Me.LabelProductName = New System.Windows.Forms.Label() + Me.tbInfo = New System.Windows.Forms.TextBox() CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -46,7 +47,7 @@ Partial Class AboutBox1 'OKButton ' Me.OKButton.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.OKButton.Location = New System.Drawing.Point(88, 114) + Me.OKButton.Location = New System.Drawing.Point(88, 180) Me.OKButton.Name = "OKButton" Me.OKButton.Size = New System.Drawing.Size(75, 19) Me.OKButton.TabIndex = 0 @@ -100,12 +101,24 @@ Partial Class AboutBox1 Me.LabelProductName.Text = "Nome prodotto" Me.LabelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' + 'tbInfo + ' + Me.tbInfo.AcceptsReturn = True + Me.tbInfo.Location = New System.Drawing.Point(12, 108) + Me.tbInfo.Multiline = True + Me.tbInfo.Name = "tbInfo" + Me.tbInfo.ReadOnly = True + Me.tbInfo.Size = New System.Drawing.Size(226, 63) + Me.tbInfo.TabIndex = 1 + Me.tbInfo.WordWrap = False + ' 'AboutBox1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.OKButton - Me.ClientSize = New System.Drawing.Size(250, 148) + Me.ClientSize = New System.Drawing.Size(250, 208) + Me.Controls.Add(Me.tbInfo) Me.Controls.Add(Me.LogoPictureBox) Me.Controls.Add(Me.OKButton) Me.Controls.Add(Me.LabelCompanyName) @@ -124,6 +137,7 @@ Partial Class AboutBox1 Me.TopMost = True CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) + Me.PerformLayout() End Sub Friend WithEvents LogoPictureBox As System.Windows.Forms.PictureBox @@ -132,5 +146,6 @@ End Sub Friend WithEvents LabelCopyright As System.Windows.Forms.Label Friend WithEvents LabelVersion As System.Windows.Forms.Label Friend WithEvents LabelProductName As System.Windows.Forms.Label + Friend WithEvents tbInfo As System.Windows.Forms.TextBox End Class diff --git a/AboutBox1.vb b/AboutBox1.vb index 5a16de3..fe0aae8 100644 --- a/AboutBox1.vb +++ b/AboutBox1.vb @@ -1,4 +1,6 @@ -Public NotInheritable Class AboutBox1 +Imports TestEIn.EgtInterface + +Public NotInheritable Class AboutBox1 Private Sub AboutBox1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Imposta il titolo del form. @@ -14,6 +16,9 @@ Me.LabelVersion.Text = String.Format("Versione {0}", My.Application.Info.Version.ToString) Me.LabelCopyright.Text = My.Application.Info.Copyright Me.LabelCompanyName.Text = My.Application.Info.CompanyName + Dim sInfo As String = String.Empty + EgtGetSceneInfo(sInfo) + Me.tbInfo.Text = sInfo End Sub Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click diff --git a/Controller.vb b/Controller.vb index db1739a..571fdbf 100644 --- a/Controller.vb +++ b/Controller.vb @@ -14,29 +14,21 @@ Imports Microsoft.VisualBasic Imports System.Globalization Imports TestEIn.EgtInterface +Imports System.Text Public Class Controller ' Events - Public Enum IBT As Integer - TY_NULL = 0 - TY_STRING - TY_DOUBLE - TY_3DOUBLE - TY_POINT3D - End Enum - Public Event SetInputBox(ByVal sTitle As String, ByVal sLabel As String, ByVal nType As IBT) - Public Event AddInputCheck(ByVal sLabel As String) - Public Event AddButtonShow() - Public Event RemoveButtonShow() - Public Event SetInputBoxString(ByVal sText As String) - Public Event SetInputBoxDouble(ByVal dVal As Double) - Public Event SetInputBoxPoint3d(ByVal ptP As Point3d) - Public Event SetInputBoxVector3d(ByVal vtV As Vector3d) + Public Event PrepareInputBox(ByVal sTitle As String, ByVal sLabel As String, ByRef sCheckLabel As String, ByVal bShowBtn As Boolean) + Public Event SetInputBoxText(ByVal sText As String) + Public Event SetInputBoxCheck(ByVal bCheck As Boolean) Public Event UpdateUI(ByVal sender As Object, ByVal bReloadUI As Boolean) ' Documento e Vista Private m_Scene As Scene + Public Sub SetScene(ByRef scene As Scene) + m_Scene = scene + End Sub ' Comandi e Stati Public Enum CMD As Integer @@ -104,26 +96,225 @@ Public Class Controller Private m_ptP1 As Point3d Private m_ptP2 As Point3d Private m_ptLast As Point3d - Private m_ptCont As Point3d - Private m_vtCont As Vector3d - Private m_dLast As Double = 0 Private m_dPrev As Double = 0 + Private m_dAux As Double = 0 + Private m_dLast As Double = 0 Private m_d3Last() As Double = {0, 0, 0} Private m_d3Prev() As Double = {0, 0, 0} Private m_nLast1 As Integer = 0 Private m_nLast2 As Integer = 0 Private m_sLast As String = String.Empty Private m_bLast As Boolean = False + Private m_ptCont As Point3d ' punto finale di entità precedente (per continuazione) + Private m_vtCont As Vector3d ' direzione finale di entità precedente (per continuazione) + + ' Input + Public Enum IBT As Integer + TY_NULL = 0 + TY_STRING + TY_DOUBLE + TY_DIRECTION + TY_LENGTH + TY_3DOUBLE + TY_POINT3D + End Enum + Private m_nInpType As IBT = IBT.TY_NULL ' Costanti Private LEN_STD As Double = 100 Private DIAM_STD As Double = 20 + Private EXTRUDE_STD As Double = 20 + Private EXTEND_STD As Double = 50 ' Metodi - Public Sub SetScene(ByRef scene As Scene) - m_Scene = scene + Public Sub MouseSelectedObj(ByVal nId As Integer, ByVal bLast As Boolean) + If EgtIsSelectedObj(nId) Then + EgtDeselectObj(nId) + Else + EgtSelectObj(nId) + End If + If bLast Then + EgtDraw() + End If End Sub + Public Sub MouseSelectedPart(ByVal nId As Integer) + ' recupero il pezzo + Dim nPartId = EgtGetParent(EgtGetParent(nId)) + If EgtGetParent(nPartId) <> GDB_ID.ROOT Then + Return + End If + ' eseguo la selezione ed aggiorno + EgtSelectPartObjs(nPartId) + EgtDraw() + End Sub + + Public Sub MouseSelectedLayer(ByVal nId As Integer) + ' recupero il layer + Dim nLayerId = EgtGetParent(nId) + If EgtGetParent(EgtGetParent(nLayerId)) <> GDB_ID.ROOT Then + Return + End If + ' eseguo la selezione ed aggiorno + EgtSelectLayerObjs(nLayerId) + EgtDraw() + End Sub + + Public Sub MouseSelectedPoint(ByVal PtP As Point3d, ByVal bDone As Boolean) + SetDataFromSelPoint(PtP) + ' avanzo di un passo + If bDone Then + ProcessStatus() + ' eseguo ultimo drag e passo in modalità input da box + Else + ExecuteDrag() + m_Scene.DisableDrag() + Select Case m_nInpType + Case IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptLast) + Case IBT.TY_DIRECTION, IBT.TY_LENGTH + SetInputBoxDouble(m_dLast) + End Select + End If + End Sub + + Public Sub MouseMoveInSelectionPoint(ByVal PtP As Point3d) + SetDataFromSelPoint(PtP) + ' eseguo drag + ExecuteDrag() + End Sub + + Private Sub SetDataFromSelPoint(ByVal PtP As Point3d) + ' recupero il punto + SetLastPoint3d(PtP) + ' se usato per tipi speciali + Select Case m_nInpType + Case IBT.TY_DIRECTION + m_dLast = GridAngFromGlobDir(m_ptLast - m_ptP1) + m_dAux = GridLenFromGlobLen(m_ptLast - m_ptP1) + Case IBT.TY_LENGTH + m_dLast = (m_ptLast - m_ptP1) * m_vtCont + End Select + End Sub + + Public Sub Done(ByVal sText As String) + ' recupero il dato + InputTextToLast(sText) + ' avanzo di un passo + ProcessStatus() + End Sub + + Public Sub Show(ByVal sText As String) + ' recupero il dato + InputTextToLast(sText) + ' disabilito drag da mouse + m_Scene.DisableDrag() + EgtResetGeoLine() + ' aggiorno drag + ExecuteDrag() + End Sub + + Private Sub SetInputBoxString(ByVal sText As String) + RaiseEvent SetInputBoxText(sText) + End Sub + + Private Function DoubleToString(ByVal dVal As Double, ByVal nNumDec As UInteger) As String + Dim sFormat As String = "F" + nNumDec.ToString() + Dim sVal As String = dVal.ToString(sFormat, CultureInfo.InvariantCulture) + If nNumDec > 0 Then + Return sVal.TrimEnd("0".ToCharArray()) + Else + Return sVal + End If + End Function + + Private Sub SetInputBoxDouble(ByVal dVal As Double) + Dim sText As String = DoubleToString(dVal, 4) + RaiseEvent SetInputBoxText(sText) + End Sub + + Private Sub SetInputBox3Double(ByVal d3Val() As Double) + ' verifico ci siano almeno 3 elementi nell'array + If d3Val.Length < 3 Then + Return + End If + ' visualizzo + Dim sText As New StringBuilder(128) + sText.Append(DoubleToString(d3Val(0), 4)) + sText.Append(",") + sText.Append(DoubleToString(d3Val(1), 4)) + sText.Append(",") + sText.Append(DoubleToString(d3Val(2), 4)) + RaiseEvent SetInputBoxText(sText.ToString()) + End Sub + + Private Sub SetInputBoxPoint3d(ByVal ptVal As Point3d) + ' converto da coordinate globali a griglia + Dim frGrid As New Frame3d + EgtGetGridFrame(frGrid) + ptVal.ToLoc(frGrid) + ' visualizzo + Dim sText As New StringBuilder(128) + sText.Append(DoubleToString(ptVal.x, 4)) + sText.Append(",") + sText.Append(DoubleToString(ptVal.y, 4)) + sText.Append(",") + sText.Append(DoubleToString(ptVal.z, 4)) + RaiseEvent SetInputBoxText(sText.ToString()) + End Sub + + Private Function InputTextToLast(ByRef sText As String) As Boolean + Select Case m_nInpType + Case IBT.TY_STRING + m_sLast = sText + Return True + Case IBT.TY_DOUBLE, IBT.TY_DIRECTION, IBT.TY_LENGTH + Return TextToDouble(sText, m_dLast) + Case IBT.TY_3DOUBLE + Return TextTo3Double(sText, m_d3Last) + Case IBT.TY_POINT3D + Dim d3Val(3) As Double + If TextTo3Double(sText, d3Val) Then + m_ptLast.x = d3Val(0) + m_ptLast.y = d3Val(1) + m_ptLast.z = d3Val(2) + ' converto da riferimento griglia a globale + Dim frGrid As New Frame3d + EgtGetGridFrame(frGrid) + m_ptLast.ToGlob(frGrid) + Return True + End If + End Select + Return False + End Function + + Private Function TextToDouble(ByRef sText As String, ByRef dVal As Double) As Boolean + Return Double.TryParse(sText, NumberStyles.Float, CultureInfo.InvariantCulture, dVal) + End Function + + Private Function TextTo3Double(ByRef sText As String, ByRef d3Val() As Double) As Boolean + ' verifico ci siano almeno 3 elementi nell'array + If d3Val.Length < 3 Then + Return False + End If + ' leggo i tre valori + Dim sItems() As String = sText.Split(",".ToCharArray) + Dim bOk As Boolean = False + d3Val(0) = 0 + d3Val(1) = 0 + d3Val(2) = 0 + If sItems.Count() >= 1 Then + bOk = Double.TryParse(sItems(0), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(0)) + If sItems.Count() >= 2 Then + bOk = Double.TryParse(sItems(1), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(1)) And bOk + If sItems.Count() >= 3 Then + bOk = Double.TryParse(sItems(2), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(2)) And bOk + End If + End If + End If + Return bOk + End Function + Public Sub SetLastPoint3d(ByRef ptP As Point3d) m_ptLast = ptP End Sub @@ -161,26 +352,6 @@ Public Class Controller m_bLast = bVal End Sub - Private Function GetDoubleFromString(ByRef sText As String, ByRef dVal As Double) As Boolean - Return Double.TryParse(sText, NumberStyles.Float, CultureInfo.InvariantCulture, dVal) - End Function - - Private Function GetPoint3dFromString(ByRef sText As String, ByRef PtVal As Point3d) As Boolean - Dim sItems() As String = sText.Split(",".ToCharArray) - Dim bOk As Boolean = False - PtVal = Point3d.ORIG - If sItems.Count() >= 1 Then - bOk = Double.TryParse(sItems(0), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.x) - If sItems.Count() >= 2 Then - bOk = Double.TryParse(sItems(1), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.y) And bOk - If sItems.Count() >= 3 Then - bOk = Double.TryParse(sItems(2), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.z) And bOk - End If - End If - End If - Return bOk - End Function - Public Sub ResetStatus() m_nStep = 0 m_Scene.ResetStatus() @@ -201,7 +372,7 @@ Public Class Controller Return True End Function - Public Function ProcessStatus() As Boolean + Private Function ProcessStatus() As Boolean Select Case m_nLastCmd ' Grid Case CMD.GRID @@ -352,7 +523,7 @@ Public Class Controller Return True End Function - Public Function ExecuteDrag() As Boolean + Private Function ExecuteDrag() As Boolean Select Case m_nLastCmd Case CMD.GRID_ROTATE DragGridRotate() @@ -376,6 +547,8 @@ Public Class Controller DragRevolve() Case CMD.REVOLVEPLUS DragRevolvePlus() + Case CMD.EXTENDCURVE + DragExtendCurve() Case CMD.SETCURVETHICKNESS DragSetCurveThickness() Case CMD.MOVE @@ -427,10 +600,11 @@ Public Class Controller Case 0 ' non serve il gruppo di drag m_Scene.SetStatusSelPoint() - ' imposto stato a primo punto per elevazione griglia + ' imposto stato a lunghezza per elevazione griglia m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("GRID", "Insert Elevation", IBT.TY_DOUBLE) + RaiseEvent PrepareInputBox("GRID", "Insert Elevation", "", False) + m_nInpType = IBT.TY_DOUBLE Case 1 ' recupero il piano di griglia corrente Dim frCurr As New Frame3d @@ -459,7 +633,8 @@ Public Class Controller ' imposto stato a primo punto per origine griglia m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("GRID", "Insert Origin", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID", "Insert Origin", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 ' recupero il piano di griglia corrente Dim frCurr As New Frame3d @@ -488,18 +663,19 @@ Public Class Controller ' imposto stato a primo punto per rotazione griglia m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("GRID ROTATE", "Insert First Point on Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID ROTATE", "Insert First Point on Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 m_nStep = 2 - RaiseEvent SetInputBox("GRID ROTATE", "Insert Second Point on Axis", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("GRID ROTATE", "Insert Second Point on Axis", "", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 - RaiseEvent SetInputBox("GRID ROTATE", "Insert angle", IBT.TY_DOUBLE) - RaiseEvent RemoveButtonShow() + RaiseEvent PrepareInputBox("GRID ROTATE", "Insert angle", "", False) + m_nInpType = IBT.TY_DOUBLE Case 3 ' eseguo rotazione Dim VtAx As Vector3d = m_ptP2 - m_ptP1 @@ -536,16 +712,19 @@ Public Class Controller ' imposto stato a primo punto per rotazione griglia m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("GRID 3 POINTS", "Insert Origin", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID 3 POINTS", "Insert Origin", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 m_nStep = 2 - RaiseEvent SetInputBox("GRID 3 POINTS", "Insert Point on X Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID 3 POINTS", "Insert Point on X Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 - RaiseEvent SetInputBox("GRID 3 POINTS", "Insert Point Near Y Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID 3 POINTS", "Insert Point Near Y Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 3 ' calcolo griglia per 3 punti Dim frCurr As New Frame3d @@ -574,7 +753,8 @@ Public Class Controller ' imposto stato a primo punto per rotazione griglia m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("GRID PERP CURVE", "Insert Origin", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("GRID PERP CURVE", "Insert Origin", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 ' calcolo griglia dato punto e versore Z Dim frCurr As New Frame3d @@ -874,7 +1054,8 @@ Public Class Controller m_bLast = False m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("MOVE", "Insert Base Point", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("MOVE", "Insert Base Point", "", False) + m_nInpType = IBT.TY_POINT3D Return True End Function @@ -923,8 +1104,9 @@ Public Class Controller ' imposto stato a prima stringa per nome m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("NAME", "Insert Name", IBT.TY_STRING) - RaiseEvent SetInputBoxString(m_sLast) + RaiseEvent PrepareInputBox("NAME", "Insert Name", "", False) + m_nInpType = IBT.TY_STRING + SetInputBoxString(m_sLast) Case 1 ' assegno il nome If Not String.IsNullOrWhiteSpace(m_sLast) Then @@ -954,7 +1136,8 @@ Public Class Controller ' imposto stato a prima stringa per info m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("INFO", "Insert Info (Key=Val)", IBT.TY_STRING) + RaiseEvent PrepareInputBox("INFO", "Insert Info (Key=Val)", "", False) + m_nInpType = IBT.TY_STRING Case 1 ' divido la stringa in chiave e valore Dim sItems() As String = m_sLast.Split("=".ToCharArray) @@ -991,8 +1174,9 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("POINT", "Insert Point", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptCont) + RaiseEvent PrepareInputBox("POINT", "Insert Point", "", False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) Case 1 ' creo il punto (i dati sono in globale) If EgtCreateGeoPoint(GetCurrLayer(), m_ptLast.Loc(GetCurrLayer())) Then @@ -1021,15 +1205,16 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("LINE 2P", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptCont) + RaiseEvent PrepareInputBox("LINE 2P", "Insert Start Point", "", False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("LINE 2P", "Insert End Point ", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptLast.Loc(GetCurrLayer())) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("LINE 2P", "Insert End Point ", "", True) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptLast.Loc(GetCurrLayer())) Case 2 ' reset scena m_Scene.ResetStatus(False) @@ -1075,22 +1260,31 @@ Public Class Controller m_Scene.SetStatusSelPoint(True) m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("LINE PDL", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptCont) + RaiseEvent PrepareInputBox("LINE PDL", "Insert Start Point", "", False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast + m_dAux = LEN_STD + ' posso prendere punto per definire direzione, ma non prendo direzione notevole + m_Scene.SetStatusSelPoint(False) m_nStep = 2 m_Scene.DisableDrag() - RaiseEvent SetInputBox("LINE PDL", "Insert Direction", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxDouble(GetGridAngFromGlobDir(m_vtCont)) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("LINE PDL", "Insert Direction", "", True) + m_nInpType = IBT.TY_DIRECTION + m_dLast = GridAngFromGlobDir(m_vtCont) + SetInputBoxDouble(m_dLast) + DragLinePDL() Case 2 m_dPrev = m_dLast - m_vtCont = GetGlobDirFromGridAng(m_dLast) + m_vtCont = GlobDirFromGridAng(m_dPrev) + m_dLast = m_dAux m_nStep = 3 m_Scene.DisableDrag() - RaiseEvent SetInputBox("LINE PDL", "Insert Length", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxDouble(LEN_STD) + RaiseEvent PrepareInputBox("LINE PDL", "Insert Length", "", True) + m_nInpType = IBT.TY_LENGTH + SetInputBoxDouble(m_dLast) + DragLinePDL() Case 3 ' reset scena m_Scene.ResetStatus(False) @@ -1113,20 +1307,20 @@ Public Class Controller End Function Private Sub DragLinePDL() - If m_nStep = 2 Then + If m_nStep = 2 Then ' inserimento direzione ' determino il versore direzione iniziale - Dim vtDirS = GetGlobDirFromGridAng(m_dLast) + Dim vtDirS = GlobDirFromGridAng(m_dLast) ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) If nId = GDB_ID.NULL Then ' creo la linea di direzione - EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, vtDirS, LEN_STD) + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, vtDirS, m_dAux) Else - Dim ptP2 As Point3d = m_ptP1 + vtDirS * LEN_STD + Dim ptP2 As Point3d = m_ptP1 + vtDirS * m_dAux EgtModifyCurveEndPoint(nId, ptP2) End If EgtDraw() - ElseIf m_nStep = 3 Then + ElseIf m_nStep = 3 Then ' inserimento lunghezza ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) If nId = GDB_ID.NULL Then @@ -1151,13 +1345,14 @@ Public Class Controller ' imposto stato a primo punto per CircleCR m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("CIRCLE CP", "Insert Center", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("CIRCLE CP", "Insert Center", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("CIRCLE CP", "Insert Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("CIRCLE CP", "Insert Point", "", True) + m_nInpType = IBT.TY_POINT3D Case 2 ' reset scena m_Scene.ResetStatus(False) @@ -1198,14 +1393,17 @@ Public Class Controller ' imposto stato a primo punto per CircleCR m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("CIRCLE CD", "Insert Center", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("CIRCLE CD", "Insert Center", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast + m_dLast = DIAM_STD m_nStep = 2 m_Scene.DisableDrag() - RaiseEvent SetInputBox("CIRCLE CD", "Insert Diameter", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxDouble(DIAM_STD) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("CIRCLE CD", "Insert Diameter", "", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) + DragCircleCD() Case 2 ' reset scena m_Scene.ResetStatus(False) @@ -1246,18 +1444,20 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("ARC CSE", "Insert Center", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("ARC CSE", "Insert Center", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ARC CSE", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("ARC CSE", "Insert Start Point", "", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ARC CSE", "Insert Point Near End", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("ARC CSE", "Insert Point Near End", "", True) + m_nInpType = IBT.TY_POINT3D Case 3 ' reset scena m_Scene.ResetStatus(False) @@ -1285,15 +1485,17 @@ Public Class Controller Private Sub DragArcCSE() If m_nStep = 2 Then - ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale - Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) - If nId = GDB_ID.NULL Then - EgtCreateCurveLine(m_Scene.GetDragGroup(), m_ptP1, m_ptLast) - Else - EgtModifyCurveEndPoint(nId, m_ptLast) - End If + EgtSetGeoLine(m_ptP1, m_ptLast) + '' durante la creazione di oggetti il gruppo di Drag ha riferimento globale + 'Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) + 'If nId = GDB_ID.NULL Then + ' EgtCreateCurveLine(m_Scene.GetDragGroup(), m_ptP1, m_ptLast) + 'Else + ' EgtModifyCurveEndPoint(nId, m_ptLast) + 'End If EgtDraw() ElseIf m_nStep = 3 Then + EgtSetGeoLine(m_ptP1, m_ptLast) ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) If EgtGetType(nId) <> GDB_TY.CRV_ARC Then @@ -1320,19 +1522,21 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("ARC 3P", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptCont) + RaiseEvent PrepareInputBox("ARC 3P", "Insert Start Point", "", False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ARC 3P", "Insert End Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("ARC 3P", "Insert End Point", "", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ARC 3P", "Insert Mid Point", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("ARC 3P", "Insert Mid Point", "", True) + m_nInpType = IBT.TY_POINT3D Case 3 ' reset scena m_Scene.ResetStatus(False) @@ -1398,24 +1602,30 @@ Public Class Controller m_Scene.SetStatusSelPoint(True) m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("ARC PDP", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent SetInputBoxPoint3d(m_ptCont) + RaiseEvent PrepareInputBox("ARC PDP", "Insert Start Point", "", False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast + m_dAux = LEN_STD + m_Scene.SetStatusSelPoint(False) m_nStep = 2 m_Scene.DisableDrag() - RaiseEvent SetInputBox("ARC PDP", "Insert Direction", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxDouble(GetGridAngFromGlobDir(m_vtCont)) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("ARC PDP", "Insert Direction", "", True) + m_nInpType = IBT.TY_DIRECTION + m_dLast = GridAngFromGlobDir(m_vtCont) + SetInputBoxDouble(m_dLast) + DragArcPDP() Case 2 m_nStep = 3 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ARC PDP", "Insert End Point", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("ARC PDP", "Insert End Point", "", True) + m_nInpType = IBT.TY_POINT3D Case 3 ' reset scena m_Scene.ResetStatus(False) ' determino il versore direzione iniziale - Dim vtDirS As Vector3d = GetGlobDirFromGridAng(m_dLast) + Dim vtDirS As Vector3d = GlobDirFromGridAng(m_dLast) ' creo l'arco (i punti sono in globale) Dim nId = EgtCreateCurveArc2PVN(GetCurrLayer(), m_ptP1.Loc(GetCurrLayer()), m_ptLast.Loc(GetCurrLayer()), vtDirS.Loc(GetCurrLayer()), EgtGetGridVersZ().Loc(GetCurrLayer())) @@ -1439,14 +1649,14 @@ Public Class Controller Private Sub DragArcPDP() If m_nStep = 2 Then ' determino il versore direzione iniziale - Dim vtDirS = GetGlobDirFromGridAng(m_dLast) + Dim vtDirS = GlobDirFromGridAng(m_dLast) ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) If nId = GDB_ID.NULL Then ' creo la linea di direzione - EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, vtDirS, LEN_STD) + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, vtDirS, m_dAux) Else - Dim ptP2 As Point3d = m_ptP1 + vtDirS * LEN_STD + Dim ptP2 As Point3d = m_ptP1 + vtDirS * m_dAux EgtModifyCurveEndPoint(nId, ptP2) End If EgtDraw() @@ -1458,7 +1668,7 @@ Public Class Controller nId = GDB_ID.NULL End If ' determino il versore direzione iniziale - Dim vtDirS As Vector3d = GetGlobDirFromGridAng(m_dLast) + Dim vtDirS As Vector3d = GlobDirFromGridAng(m_dLast) ' se arco da creare If nId = GDB_ID.NULL Then ' creo l'arco (i punti sono in globale) @@ -1505,9 +1715,12 @@ Public Class Controller End If ' imposto stato a lunghezza di estrusione m_nStep = 1 + m_dLast = EXTRUDE_STD ' abilito dialogo - RaiseEvent SetInputBox("EXTRUSION", "Insert length", IBT.TY_DOUBLE) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("EXTRUSION", "Insert length", "", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) + DragExtrude() Case 1 ' reset scena m_Scene.ResetStatus(False) @@ -1548,13 +1761,14 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("REVOLVE", "Insert First Point on Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("REVOLVE", "Insert First Point on Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("REVOLVE", "Insert Second Point on Axis", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("REVOLVE", "Insert Second Point on Axis", "", True) + m_nInpType = IBT.TY_POINT3D Case 2 ' reset scena m_Scene.ResetStatus(False) @@ -1593,28 +1807,31 @@ Public Class Controller m_Scene.SetStatusSelPoint() m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("REVOLVE+", "Insert First Point on Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("REVOLVE+", "Insert First Point on Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("REVOLVE+", "Insert Second Point on Axis", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("REVOLVE+", "Insert Second Point on Axis", "", False) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_dLast = 360 m_nStep = 3 m_Scene.DisableDrag() - RaiseEvent SetInputBox("REVOLVE+", "Insert Angle", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxString("360") - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("REVOLVE+", "Insert Angle", "", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) Case 3 m_ptP2 = m_ptLast m_dPrev = m_dLast m_dLast = 0 m_nStep = 4 m_Scene.DisableDrag() - RaiseEvent SetInputBox("REVOLVE+", "Insert Move", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxString("0") + RaiseEvent PrepareInputBox("REVOLVE+", "Insert Move", "", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) Case 4 ' reset scena m_Scene.ResetStatus(False) @@ -1778,10 +1995,18 @@ Public Class Controller Private Function ProcessExtendCurve() As Boolean Select Case m_nStep Case 0 + ' verifico condizioni e preparo per il drag + If Not PrepareTransform(False) Then + Return False + End If ' imposto stato a lunghezza di estensione m_nStep = 1 + m_dLast = EXTEND_STD ' abilito dialogo - RaiseEvent SetInputBox("EXTEND", "Insert Length", IBT.TY_DOUBLE) + RaiseEvent PrepareInputBox("EXTEND", "Insert Length", "", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) + DragExtendCurve() Case 1 ' eseguo estensione sull'estremo più vicino al punto di selezione Dim nId As Integer = EgtGetLastSelectedObj() @@ -1799,6 +2024,18 @@ Public Class Controller Return True End Function + Private Sub DragExtendCurve() + If m_nStep = 1 Then + ' devo sempre partire dalla curva originale + m_Scene.EraseDragGroup() + PrepareTransform(False) + ' eseguo estensione sull'estremo più vicino al punto di selezione + Dim nId As Integer = EgtGetFirstInGroup(m_Scene.GetDragGroup()) + EgtExtendCurveByLen(nId, m_dLast, m_ptLast) + EgtDraw() + End If + End Sub + Private Function ProcessBreakCurve() As Boolean Select Case m_nStep Case 0 @@ -1806,7 +2043,8 @@ Public Class Controller ' imposto stato a punto per BreakCurve m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("BREAK", "Insert Point on Curve", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("BREAK", "Insert Point on Curve", "", False) + m_nInpType = IBT.TY_POINT3D Case 1 ' eseguo spezzatura EgtSplitCurveAtPoint(EgtGetLastSelectedObj(), m_ptLast) @@ -1894,14 +2132,14 @@ Public Class Controller ' imposto stato a impostazione spessore curva m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("CURVE THICKNESS", "Insert Thickness", IBT.TY_DOUBLE) + RaiseEvent PrepareInputBox("CURVE THICKNESS", "Insert Thickness", "Extraction from CPlane", True) + m_nInpType = IBT.TY_DOUBLE ' recupero spessore dell'ultima entità selezionata Dim dThick As Double If EgtCurveThickness(EgtGetLastSelectedObj(), dThick) Then - RaiseEvent SetInputBoxDouble(dThick) + SetInputBoxDouble(dThick) End If - RaiseEvent AddInputCheck("Extraction from CPlane") - RaiseEvent AddButtonShow() + RaiseEvent SetInputBoxCheck(False) Case 1 ' eseguo impostazione spessore curve selezionate Dim vtExtr = EgtGetGridVersZ() @@ -1959,14 +2197,15 @@ Public Class Controller ' imposto stato a primo punto per Move m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("MOVE", "Insert Base Point", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("MOVE", "Insert Base Point", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("MOVE", "Insert Target Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("MOVE", "Insert Target Point", "Copy", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_Scene.ResetStatus(False) ' eseguo copia e movimento @@ -2015,20 +2254,22 @@ Public Class Controller ' imposto stato a primo punto per Rotate m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("ROTATE", "Insert Center", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("ROTATE", "Insert Center", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ROTATE", "Insert Base Point", IBT.TY_POINT3D) + RaiseEvent PrepareInputBox("ROTATE", "Insert Base Point", "Copy", False) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 m_Scene.EnableDrag() EgtSetGeoLine(m_ptP1, m_ptLast) - RaiseEvent SetInputBox("ROTATE", "Insert Rotation Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("ROTATE", "Insert Rotation Point", "Copy", True) + m_nInpType = IBT.TY_POINT3D Case 3 m_Scene.ResetStatus(False) ' calcolo parametri di rotazione @@ -2087,21 +2328,23 @@ Public Class Controller ' imposto stato a primo punto per Rotate3d m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("ROTATE 3D", "Insert First Point on Axis", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("ROTATE 3D", "Insert First Point on Axis", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("ROTATE 3D", "Insert Second Point on Axis", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("ROTATE 3D", "Insert Second Point on Axis", "Copy", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_ptP2 = m_ptLast m_nStep = 3 m_dLast = 0 ' abilito dialogo - RaiseEvent SetInputBox("ROTATE 3D", "Insert angle", IBT.TY_DOUBLE) + RaiseEvent PrepareInputBox("ROTATE 3D", "Insert angle", "Copy", True) + m_nInpType = IBT.TY_DOUBLE Case 3 m_Scene.ResetStatus(False) ' calcolo parametri di rotazione @@ -2156,15 +2399,16 @@ Public Class Controller ' imposto stato a primo punto per Mirror m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("MIRROR", "Insert Start Point", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("MIRROR", "Insert Start Point", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 m_nStep = 2 m_Scene.EnableDrag() - RaiseEvent SetInputBox("MIRROR", "Insert End Point", IBT.TY_POINT3D) - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("MIRROR", "Insert End Point", "Copy", True) + m_nInpType = IBT.TY_POINT3D Case 2 m_Scene.ResetStatus(False) ' esecuzione @@ -2226,16 +2470,17 @@ Public Class Controller ' imposto stato a primo punto per Rotate m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("SCALE", "Insert Center", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("SCALE", "Insert Center", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_dPrev = 1 m_dLast = 1 m_nStep = 2 - RaiseEvent SetInputBox("SCALE", "Insert Factor", IBT.TY_DOUBLE) - RaiseEvent SetInputBoxString("1") - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("SCALE", "Insert Factor", "Copy", True) + m_nInpType = IBT.TY_DOUBLE + SetInputBoxDouble(m_dLast) Case 2 m_Scene.ResetStatus(False) ' calcolo parametri di scalatura @@ -2295,8 +2540,9 @@ Public Class Controller ' imposto stato a primo punto per Rotate m_nStep = 1 ' abilito dialogo - RaiseEvent SetInputBox("SCALE 3D", "Insert Center", IBT.TY_POINT3D) - RaiseEvent AddInputCheck("Copy") + RaiseEvent PrepareInputBox("SCALE 3D", "Insert Center", "Copy", False) + m_nInpType = IBT.TY_POINT3D + RaiseEvent SetInputBoxCheck(False) Case 1 m_ptP1 = m_ptLast m_d3Prev(0) = 1 @@ -2307,9 +2553,9 @@ Public Class Controller m_d3Last(2) = 1 m_nStep = 2 m_Scene.DisableDrag() - RaiseEvent SetInputBox("SCALE 3D", "Insert Factor", IBT.TY_3DOUBLE) - RaiseEvent SetInputBoxString("1,1,1") - RaiseEvent AddButtonShow() + RaiseEvent PrepareInputBox("SCALE 3D", "Insert Factor", "Copy", True) + m_nInpType = IBT.TY_3DOUBLE + SetInputBox3Double(m_d3Last) Case 2 m_Scene.ResetStatus(False) ' calcolo parametri di scalatura @@ -2342,10 +2588,19 @@ Public Class Controller Private Sub DragScale3D() If m_nStep = 2 Then - ' il fattore non può essere troppo piccolo o negativo - If m_d3Last(0) < EPS_SMALL Or m_d3Last(1) < EPS_SMALL Or m_d3Last(2) < EPS_SMALL Then + ' nessun coefficiente può essere negativo e non possono essere tutti e tre nulli + If m_d3Last(0) < 0 Or m_d3Last(1) < 0 Or m_d3Last(2) < 0 Or + (m_d3Last(0) < EPS_SMALL And m_d3Last(1) < EPS_SMALL And m_d3Last(2) < EPS_SMALL) Then Return End If + ' se uno dei tre precedenti coefficienti era nullo, devo ricreare il gruppo di drag + If m_d3Prev(0) < EPS_SMALL Or m_d3Prev(1) < EPS_SMALL Or m_d3Prev(2) < EPS_SMALL Then + m_Scene.EraseDragGroup() + PrepareTransform() + m_d3Prev(0) = 1 + m_d3Prev(1) = 1 + m_d3Prev(2) = 1 + End If ' calcolo parametri di scalatura Dim frScale As New Frame3d EgtGetGridFrame(frScale) @@ -2363,11 +2618,7 @@ Public Class Controller End If End Sub - Private Function PrepareTransform() As Boolean - ' posso partire solo da stato libero - If m_nStep <> 0 Then - Return False - End If + Private Function PrepareTransform(Optional ByVal bAllSelected As Boolean = True) As Boolean ' verifico ci sia qualcosa di selezionato If EgtGetFirstSelectedObj() = GDB_ID.NULL Then Return False @@ -2376,30 +2627,46 @@ Public Class Controller If Not m_Scene.CreateDragGroup() Then Return False End If - Dim nId As Integer = EgtGetFirstSelectedObj() - While nId <> GDB_ID.NULL - If Not m_Scene.AddToDragGroup(nId) Then + ' se devo prendere tutti + If bAllSelected Then + Dim nId As Integer = EgtGetFirstSelectedObj() + While nId <> GDB_ID.NULL + If Not m_Scene.AddToDragGroup(nId) Then + m_Scene.EraseDragGroup() + Return False + End If + nId = EgtGetNextSelectedObj() + End While + ' altrimenti solo l'ultimo + Else + Dim nId As Integer = EgtGetLastSelectedObj() + If nId = GDB_ID.NULL And Not m_Scene.AddToDragGroup(nId) Then m_Scene.EraseDragGroup() Return False End If - nId = EgtGetNextSelectedObj() - End While + End If Return True End Function - Private Function GetGridAngFromGlobDir(ByRef vtDir As Vector3d) As Double - Dim VtGridDir As Vector3d = vtDir + Private Function GridLenFromGlobLen(ByVal vtLen As Vector3d) As Double Dim frGrid As New Frame3d EgtGetGridFrame(frGrid) - VtGridDir.ToLoc(frGrid) + vtLen.ToLoc(frGrid) + Return Math.Sqrt(vtLen.x * vtLen.x + vtLen.y * vtLen.y) + End Function + + Private Function GridAngFromGlobDir(ByVal vtDir As Vector3d) As Double + Dim frGrid As New Frame3d + EgtGetGridFrame(frGrid) + vtDir.ToLoc(frGrid) Dim dLen As Double Dim dAngVertDeg As Double Dim dAngOrizzDeg As Double - VtGridDir.ToSpherical(dLen, dAngVertDeg, dAngOrizzDeg) + vtDir.ToSpherical(dLen, dAngVertDeg, dAngOrizzDeg) Return dAngOrizzDeg End Function - Private Function GetGlobDirFromGridAng(ByVal dGridAngDeg As Double) As Vector3d + Private Function GlobDirFromGridAng(ByVal dGridAngDeg As Double) As Vector3d Dim frGrid As New Frame3d EgtGetGridFrame(frGrid) Dim vtDir As Vector3d = Vector3d.X_AX() diff --git a/EgtInterface.vb b/EgtInterface.vb index 3c4a781..13629cc 100644 --- a/EgtInterface.vb +++ b/EgtInterface.vb @@ -1359,6 +1359,18 @@ Public Shared Function EgtInitScene(ByVal hWnd As IntPtr, ByVal nDriver As Integ ByVal b2Buff As Boolean, ByVal nColorBits As Integer, ByVal nDepthBits As Integer) As Boolean End Function + +Private Shared Function EgtGetSceneInfo(ByRef psInfo As IntPtr) As Boolean +End Function +Public Shared Function EgtGetSceneInfo(ByRef sInfo As String) As Boolean + Dim psInfo As IntPtr + Dim bOk As Boolean = EgtGetSceneInfo(psInfo) + sInfo = Marshal.PtrToStringUni(psInfo) + EgtFreeMemory(psInfo) + Return bOk +End Function + + Public Shared Function EgtSetBackground(ByRef colTop As Color3d, ByRef colBottom As Color3d, Optional ByVal bRedraw As Boolean = True) As Boolean End Function diff --git a/Form1.resx b/Form1.resx index e892c1a..d151d4d 100644 --- a/Form1.resx +++ b/Form1.resx @@ -698,14 +698,13 @@ - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfeCxUQFBdFrLChAAABKUlEQVRYR8WRy3HDMAwF - dU03KcDFpZnc0lIu9jFFMO/NmIwErfiJbBozKxELmoShJaX0UlDOBOVMUBIKPy5UOwNKwpc/owmURzyj - CZQ1Ht0EyhaPbAJlD7mJ6EdB2YsbcCNU6wVlDcXHCgvz5z7fvzc5sDlvnfSwPkCx+wxuYJPHC880oPCF - ZeT3XMt7rsu/bss11OP+zScrixYKHKdwcXj05VySRDwg5wq99B4cffEkI4rDUSrSf0ZfaiTXKHCcK9LP - 8narQedmUGZ8QSsXWvbtJ1AaRXWMORdK2/uPQGkUcdTD0LkRluHHtVzhR3V/jb1ojHI0b7EX6v4s8cwa - KEdQ+B9ryfUWKEdxA26Eai1QjuLL3UT0PaCcCcqZoJwJypmgnAnKeaTlFxOhVA1Ugk8bAAAAAElFTkSu - QmCC + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAAd0SU1FB94LFRAUF0WssKEAAAEpSURBVFhHxZHLccMwDAV1TTcpwMWlmdzSUi72 + MUUw782YjASt+IlsGjMrEQuahKElpfRSUM4E5UxQEgo/LlQ7A0rClz+jCZRHPKMJlDUe3QTKFo9sAmUP + uYnoR0HZixtwI1TrBWUNxccKC/PnPt+/NzmwOW+d9LA+QLH7DG5gk8cLzzSg8IVl5Pdcy3uuy79uyzXU + 4/7NJyuLFgocp3BxePTlXJJEPCDnCr30Hhx98SQjisNRKtJ/Rl9qJNcocJwr0s/ydqtB52ZQZnxBKxda + 9u0nUBpFdYw5F0rb+49AaRRx1MPQuRGW4ce1XOFHdX+NvWiMcjRvsRfq/izxzBooR1D4H2vJ9RYoR3ED + boRqLVCO4svdRPQ9oJwJypmgnAnKmaCcCcp5pOUXE6FUDVSCTxsAAAAASUVORK5CYII= @@ -848,66 +847,66 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC2 - DQAAAk1TRnQBSQFMAgEBDgIAAQwBAAEMARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AUADAAFAAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/9DAAv8NQAC/AcAAvwHAAf8 - JgAB/AIAAfwFAAH8AQAB/AkAA/woAAH8AwAB/AMAAfwCAAH8CQAD/CgAAfwEAAH8AQAB/AMAAfwJAAP8 - KAAB/AQAAvwEAAH8CQAD/CcAAfwBAAT8AQAC/AQAAfwIAAP8JwAC/AUAAfwBAAH8AwAB/AgAA/woAAH8 - BQAB/AIAAfwCAAH8CAAD/CkAAfwDAAH8BAAB/AEAAfwIAAP8KgAC/AEAAfwFAAL8BAAB/AMAA/wDAAH8 - KAAC/AMABPwEAAH8AwAD/AMAAfwpAAT8CAAL/PUAAvwjAAb8DwAC/AQAAvwjAAf8DQAD/AQAAvwNAAL8 - GQAC/AwAA/wFAAL8DQAC/BoAAvwKAAP8BgAD/AwAAvwFAAX8EAAC/AkAA/wIAAL8DAAC/AQAB/wDAAL8 - CgAC/AgAA/wJAAP8CwAD/AIAA/wDAAL8AwAC/AoAAvwHAAP8CwAD/AsABvwFAAL8AgAC/AoAAvwGAAP8 - DAAD/AwAA/wHAAL8AgAC/AoAAvwFAAP8DgAE/BQAAvwCAAL8CgAC/AQAA/wQAAX8EgAC/AIAAvwKAAL8 - AwAD/BMAB/wSAAP8CAAD/AMAAvwWAAX8EwAM/DUACfyAAAH5PwAC+TcACvkCAAjZCgAC/CAACvkKAAHZ - CQAD/B4AAvoGAAL5DAAB2QkAA/wQAAL8CQAC/AP6BQAB+QQACNkCAAHZCQAD/A4ABPwIAAL8AQAD+goA - CNkCAAHZCQAD/AIAAvwIAAb8BwAC/AIAA/oKAAjZAgAB2QkAA/wBAAL8CAAG/AcAAvwDAAP6AQAB+ggA - CNkCAAHZCQAF/AkABPwIAAL8BAAE+gkACNkMAAT8CgAC/AkAAvwFAAP6CgAI2QkABvwVAAL8BAAE+gsA - CNkIAAb8EwAG/DsABPw9AAL8jgAD+QP6A/sD/DQAA/kD+gP7A/wXAAT8CAAJrAgAA/kD+gP7A/wJAAL5 - CwAE/AIAAvkFAAmsAYUHAAP5A/oD+wP8CQAC+QoABPwBAAP5BgAJrAKFBgAD+QP6A/sD/BYAAvwBAAL5 - AwACBAMACawDhQUAA/kD+gP7A/wJAAL5DAAC+QIAA/oCBAMACawEhQQAA/kD+gP7A/wJAAL5CwAC+QEA - BPoBAAIEBAAI2QWFAwAD+QP6A/sD/AoAAvkIAAP5BPoDAAIEBQAI2QWFAgAD+QP6A/sD/AsAAvkGAAL5 - AgAC+gUAAgQGAAjZBIUCAAP5A/oD+wP8BwAC+QIAAvkJAAL6AgADBwoACNkDhQIAA/kD+gP7A/wHAAL5 - AgAC+QkAAvoCAAMHCwAI2QKFAgAD+QP6A/sD/AgABPkLAAH6EQAI2QGFAgAD+QP6A/sD/DQAA/kD+gP7 - A/xyAAFCAU0BPgcAAT4DAAEoAwABQAMAAUADAAEBAQABAQYAAQIWAAP/AQAE/wQAAcABBwL/BAABzwHn - AfABHwQAAbcB1wH8AX8EAAG7AbcB/AF/BAABvQF3AfwBfwQAAbwB9wH8AX8EAAFCAXsB/AF/BAABPgG7 - AfwBfwQAAb4B2wH8AX8EAAHdAesB/AF/BAAB5QHzAdwBdwQAAfkBwwHcAXcEAAH8AT8BwAEHBAAE/wQA - BP8EAAr/Ac8D/wH+AQcB/wHzAc8D/wH+AQMB/wHjAc8B/wGfAv8B8wH/AccBzwH/AZ8C/wH5Af8BjwHH - Af8BnwEHAf8B+QH/AR8B5wH/AZ4BAwGfAfkB/gE/AeMB/wGMAXMBnwH5AfwBfwHxAf8BwAH5AZ8B+QH4 - Af8B8QH/AeMB+QGfAfkB8QH/AfgBfwH/AfkBnwH5AeMB/wH8AR8B/wH5AZ8B+QHHAv8BAQL/AY8B8QHP - Av8BwQL/AcABAwb/AeABDw//AfcG/wHPAfMG/wGAAQEBgAF/AecD/wGAAQEB/wG/AeMD/wHDAfMB/wHf - AfEB/wH+AX8BwQH3AYABbwH4Af8B/AE/AcgB/wHAATcB/AFnAfgBHwHMAX8B4AEbAf4BJwH4AR8BzgEv - AfABDQH/AQcB/AE/Ac8BDwH4AQcB/wGHAf4BfwHPAY8B/AEDAf4BBwL/Ac8BDwH+AQEB/gEHAv8BAwf/ - AYcH/wHPEf8BwAEDAv8B+AEfAv8BwAEDAv8B4AFnAYABPwHAAQMB/gF/AdABywGAAR8BwAEDAf4BfwGh - AR0BgAEPAcABAwL/AbIBcQGAAQcBwAEDAf4BfwF5AYIBgAEDAcABAwH+AX8BcgESAcABAQHAAQMB/wE/ - AUABcgHgAQABwAEDAf8BnwEZARIB8AEAAcABAwH5AZ8BsgENAfgBAAHAAQMB+QGfAbIBDQH8AQABwAED - AfwBPwHbARsB/gEAAcABAwL/AucC/wHAAQMC/wH4AR8K/ws= + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 + DQAAAk1TRnQBSQFMAgEBDgEAAQgBDAEIAQwBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/0MAC/w1AAL8BwAC/AcA + B/wmAAH8AgAB/AUAAfwBAAH8CQAD/CgAAfwDAAH8AwAB/AIAAfwJAAP8KAAB/AQAAfwBAAH8AwAB/AkA + A/woAAH8BAAC/AQAAfwJAAP8JwAB/AEABPwBAAL8BAAB/AgAA/wnAAL8BQAB/AEAAfwDAAH8CAAD/CgA + AfwFAAH8AgAB/AIAAfwIAAP8KQAB/AMAAfwEAAH8AQAB/AgAA/wqAAL8AQAB/AUAAvwEAAH8AwAD/AMA + AfwoAAL8AwAE/AQAAfwDAAP8AwAB/CkABPwIAAv89QAC/CMABvwPAAL8BAAC/CMAB/wNAAP8BAAC/A0A + AvwZAAL8DAAD/AUAAvwNAAL8GgAC/AoAA/wGAAP8DAAC/AUABfwQAAL8CQAD/AgAAvwMAAL8BAAH/AMA + AvwKAAL8CAAD/AkAA/wLAAP8AgAD/AMAAvwDAAL8CgAC/AcAA/wLAAP8CwAG/AUAAvwCAAL8CgAC/AYA + A/wMAAP8DAAD/AcAAvwCAAL8CgAC/AUAA/wOAAT8FAAC/AIAAvwKAAL8BAAD/BAABfwSAAL8AgAC/AoA + AvwDAAP8EwAH/BIAA/wIAAP8AwAC/BYABfwTAAz8NQAJ/IAAAfk/AAL5NwAK+QIACNkKAAL8IAAK+QoA + AdkJAAP8HgAC+gYAAvkMAAHZCQAD/BAAAvwJAAL8A/oFAAH5BAAI2QIAAdkJAAP8DgAE/AgAAvwBAAP6 + CgAI2QIAAdkJAAP8AgAC/AgABvwHAAL8AgAD+goACNkCAAHZCQAD/AEAAvwIAAb8BwAC/AMAA/oBAAH6 + CAAI2QIAAdkJAAX8CQAE/AgAAvwEAAT6CQAI2QwABPwKAAL8CQAC/AUAA/oKAAjZCQAG/BUAAvwEAAT6 + CwAI2QgABvwTAAb8OwAE/D0AAvyOAAP5A/oD+wP8NAAD+QP6A/sD/BcABPwIAAmsCAAD+QP6A/sD/AkA + AvkLAAT8AgAC+QUACawBhQcAA/kD+gP7A/wJAAL5CgAE/AEAA/kGAAmsAoUGAAP5A/oD+wP8FgAC/AEA + AvkDAAIEAwAJrAOFBQAD+QP6A/sD/AkAAvkMAAL5AgAD+gIEAwAJrASFBAAD+QP6A/sD/AkAAvkLAAL5 + AQAE+gEAAgQEAAjZBYUDAAP5A/oD+wP8CgAC+QgAA/kE+gMAAgQFAAjZBYUCAAP5A/oD+wP8CwAC+QYA + AvkCAAL6BQACBAYACNkEhQIAA/kD+gP7A/wHAAL5AgAC+QkAAvoCAAMHCgAI2QOFAgAD+QP6A/sD/AcA + AvkCAAL5CQAC+gIAAwcLAAjZAoUCAAP5A/oD+wP8CAAE+QsAAfoRAAjZAYUCAAP5A/oD+wP8NAAD+QP6 + A/sD/HIAAUIBTQE+BwABPgMAASgDAAFAAwABQAMAAQEBAAEBBgABAhYAA/8BAAT/BAABwAEHAv8EAAHP + AecB8AEfBAABtwHXAfwBfwQAAbsBtwH8AX8EAAG9AXcB/AF/BAABvAH3AfwBfwQAAUIBewH8AX8EAAE+ + AbsB/AF/BAABvgHbAfwBfwQAAd0B6wH8AX8EAAHlAfMB3AF3BAAB+QHDAdwBdwQAAfwBPwHAAQcEAAT/ + BAAE/wQACv8BzwP/Af4BBwH/AfMBzwP/Af4BAwH/AeMBzwH/AZ8C/wHzAf8BxwHPAf8BnwL/AfkB/wGP + AccB/wGfAQcB/wH5Af8BHwHnAf8BngEDAZ8B+QH+AT8B4wH/AYwBcwGfAfkB/AF/AfEB/wHAAfkBnwH5 + AfgB/wHxAf8B4wH5AZ8B+QHxAf8B+AF/Af8B+QGfAfkB4wH/AfwBHwH/AfkBnwH5AccC/wEBAv8BjwHx + Ac8C/wHBAv8BwAEDBv8B4AEPD/8B9wb/Ac8B8wb/AYABAQGAAX8B5wP/AYABAQH/Ab8B4wP/AcMB8wH/ + Ad8B8QH/Af4BfwHBAfcBgAFvAfgB/wH8AT8ByAH/AcABNwH8AWcB+AEfAcwBfwHgARsB/gEnAfgBHwHO + AS8B8AENAf8BBwH8AT8BzwEPAfgBBwH/AYcB/gF/Ac8BjwH8AQMB/gEHAv8BzwEPAf4BAQH+AQcC/wED + B/8Bhwf/Ac8R/wHAAQMC/wH4AR8C/wHAAQMC/wHgAWcBgAE/AcABAwH+AX8B0AHLAYABHwHAAQMB/gF/ + AaEBHQGAAQ8BwAEDAv8BsgFxAYABBwHAAQMB/gF/AXkBggGAAQMBwAEDAf4BfwFyARIBwAEBAcABAwH/ + AT8BQAFyAeABAAHAAQMB/wGfARkBEgHwAQABwAEDAfkBnwGyAQ0B+AEAAcABAwH5AZ8BsgENAfwBAAHA + AQMB/AE/AdsBGwH+AQABwAEDAv8C5wL/AcABAwL/AfgBHwr/Cw== @@ -918,7 +917,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW - CAAAAk1TRnQBSQFMAgEBAgEAASABAwEgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAASgBAwEoAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/Form1.vb b/Form1.vb index 142b972..6cd2372 100644 --- a/Form1.vb +++ b/Form1.vb @@ -109,7 +109,9 @@ Public Class Form1 AppendMenu(hSysMenu, MF_SEPARATOR, 0, "") AppendMenu(hSysMenu, MF_STRING, IDM_ABOUTBOX, "About TestEIn...") End If - 'Posizione e dimensioni del Form + ' Nascondo TabTest + TabControl2.TabPages.Remove(TabTest) + ' Posizione e dimensioni del Form If ModifierKeys <> Keys.Shift Then Dim nFlag As Integer Dim nLeft As Integer @@ -179,37 +181,16 @@ Public Class Form1 tsStatusCursorPos.Text = sCursorPos End Sub - Private Sub OnMouseSelected(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean) Handles Scene1.OnMouseSelected - If EgtIsSelectedObj(nId) Then - EgtDeselectObj(nId) - Else - EgtSelectObj(nId) - End If - If bLast Then - EgtDraw() - End If + 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 OnMousePartSelected(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMousePartSelected - ' recupero il pezzo - Dim nPartId = EgtGetParent(EgtGetParent(nId)) - If EgtGetParent(nPartId) <> GDB_ID.ROOT Then - Return - End If - ' eseguo la selezione ed aggiorno - EgtSelectPartObjs(nPartId) - EgtDraw() + Private Sub OnMouseSelectedPart(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseSelectedPart + m_Controller.MouseSelectedPart(nId) End Sub - Private Sub OnMouseLayerSelected(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseLayerSelected - ' recupero il layer - Dim nLayerId = EgtGetParent(nId) - If EgtGetParent(EgtGetParent(nLayerId)) <> GDB_ID.ROOT Then - Return - End If - ' eseguo la selezione ed aggiorno - EgtSelectLayerObjs(nLayerId) - EgtDraw() + 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 @@ -217,17 +198,7 @@ Public Class Form1 End Sub Private Sub OnMouseSelectedPoint(ByVal sender As Object, ByVal PtP As Point3d) Handles Scene1.OnMouseSelectedPoint - m_Controller.SetLastPoint3d(PtP) - If (ModifierKeys And Keys.Control) <> Keys.Control Then - m_Controller.ProcessStatus() - Else - ' eseguo ultimo drag - m_Controller.SetLastPoint3d(PtP) - m_Controller.ExecuteDrag() - ' passo in modalità input da box - Scene1.DisableDrag() - SetInputBoxPoint3d(PtP) - End If + 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 @@ -235,8 +206,7 @@ Public Class Form1 End Sub Private Sub OnMouseMoveSelPoint(ByVal sender As Object, ByVal PtP As Point3d) Handles Scene1.OnMouseMoveSelPoint - m_Controller.SetLastPoint3d(PtP) - m_Controller.ExecuteDrag() + m_Controller.MouseMoveInSelectionPoint(PtP) End Sub Private Sub OnMouseAnalyzed(ByVal sender As Object, ByVal nId As Integer) Handles Scene1.OnMouseAnalyzed @@ -301,32 +271,16 @@ Public Class Form1 m_Controller.SetModified() End Sub - Private Sub OnSetInputBox(ByVal sTitle As String, ByVal sLabel As String, ByVal nType As IBT) Handles m_Controller.SetInputBox - SetInputBox(sTitle, sLabel, nType) + 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 OnAddInputCheck(ByVal sLabel As String) Handles m_Controller.AddInputCheck - AddInputCheck(sLabel) + Private Sub OnSetInputBoxText(ByVal sText As String) Handles m_Controller.SetInputBoxText + SetInputBoxText(sText) End Sub - Private Sub OnAddButtonShow() Handles m_Controller.AddButtonShow - btnShow.Show() - End Sub - - Private Sub OnRemoveButtonShow() Handles m_Controller.RemoveButtonShow - btnShow.Hide() - End Sub - - Private Sub OnSetInputBoxString(ByVal sText As String) Handles m_Controller.SetInputBoxString - SetInputBoxString(sText) - End Sub - - Private Sub OnSetInputBoxDouble(ByVal dVal As Double) Handles m_Controller.SetInputBoxDouble - SetInputBoxDouble(dVal) - End Sub - - Private Sub OnSetInputBoxPoint3d(ByVal ptP As Point3d) Handles m_Controller.SetInputBoxPoint3d - SetInputBoxPoint3d(ptP) + 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 @@ -546,6 +500,7 @@ Public Class Form1 btnCplaneOrigin.Enabled = m_bShowGrid btnCplaneRotate.Enabled = m_bShowGrid btnCplane3P.Enabled = m_bShowGrid + btnCPlanePerpCurve.Enabled = m_bShowGrid btnCPlaneObj.Enabled = m_bShowGrid ' Draw btnPoint.Enabled = bLayerOk @@ -789,170 +744,46 @@ Public Class Form1 ' --------------------- Input Box ------------------------------- - Private m_nInpType As IBT = IBT.TY_NULL - - Public Sub SetInputBox(ByRef sTitle As String, ByRef sLabel As String, ByVal nType As IBT) + 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() - m_nInpType = nType + If sCheckLabel <> "" Then + InputCheck.Text = sCheckLabel + InputCheck.Show() + End If + If bShowBtn Then + btnShow.Show() + End If InputText.Focus() End Sub - Public Sub AddInputCheck(ByRef sLabel As String) - InputCheck.Text = sLabel - InputCheck.Checked = False - InputCheck.Show() - End Sub - - Public Sub ResetInputBox() + Private Sub ResetInputBox() InputBox.Hide() InputCheck.Hide() btnShow.Hide() - m_nInpType = IBT.TY_NULL End Sub - Private Function SetInputBoxString(ByVal sVal As String) As Boolean + Private Function SetInputBoxText(ByVal sVal As String) As Boolean InputText.Text = sVal Return True End Function - Private Function DoubleToString(ByVal dVal As Double, ByVal nNumDec As UInteger) As String - Dim sFormat As String = "F" + nNumDec.ToString() - Dim sVal As String = dVal.ToString(sFormat, CultureInfo.InvariantCulture) - If nNumDec > 0 Then - Return sVal.TrimEnd("0".ToCharArray()) - Else - Return sVal - End If - End Function - - Private Function SetInputBoxDouble(ByVal dVal As Double) As Boolean - InputText.Text = DoubleToString(dVal, 4) + Private Function SetInputBoxCheck(ByVal bCheck As Boolean) As Boolean + InputCheck.Checked = bCheck Return True End Function - Private Function SetInputBox3Double(ByVal d3Val() As Double) As Boolean - ' verifico ci siano almeno 3 elementi nell'array - If d3Val.Length < 3 Then - Return False - End If - ' visualizzo - Dim sText As New StringBuilder(128) - sText.Append(DoubleToString(d3Val(0), 4)) - sText.Append(",") - sText.Append(DoubleToString(d3Val(1), 4)) - sText.Append(",") - sText.Append(DoubleToString(d3Val(2), 4)) - InputText.Text = sText.ToString() - Return True - End Function - - Private Function SetInputBoxPoint3d(ByVal PtVal As Point3d) As Boolean - ' converto da coordinate globali a griglia - Dim frGrid As New Frame3d - EgtGetGridFrame(frGrid) - PtVal.ToLoc(frGrid) - ' visualizzo - Dim sText As New StringBuilder(128) - sText.Append(DoubleToString(PtVal.x, 4)) - sText.Append(",") - sText.Append(DoubleToString(PtVal.y, 4)) - sText.Append(",") - sText.Append(DoubleToString(PtVal.z, 4)) - InputText.Text = sText.ToString() - Return True - End Function - - Private Function GetInputBoxDouble(ByRef dVal As Double) As Boolean - Return Double.TryParse(InputText.Text, NumberStyles.Float, CultureInfo.InvariantCulture, dVal) - End Function - - Private Function GetInputBox3Double(ByRef d3Val() As Double) As Boolean - ' verifico ci siano almeno 3 elementi nell'array - If d3Val.Length < 3 Then - Return False - End If - ' leggo le ccordinate - Dim sItems() As String = InputText.Text.Split(",".ToCharArray) - Dim bOk As Boolean = False - d3Val(0) = 0 - d3Val(1) = 0 - d3Val(2) = 0 - If sItems.Count() >= 1 Then - bOk = Double.TryParse(sItems(0), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(0)) - If sItems.Count() >= 2 Then - bOk = Double.TryParse(sItems(1), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(1)) And bOk - If sItems.Count() >= 3 Then - bOk = Double.TryParse(sItems(2), NumberStyles.Float, CultureInfo.InvariantCulture, d3Val(2)) And bOk - End If - End If - End If - Return bOk - End Function - - Private Function GetInputBoxPoint3d(ByRef PtVal As Point3d) As Boolean - ' leggo le coordinate - Dim sItems() As String = InputText.Text.Split(",".ToCharArray) - Dim bOk As Boolean = False - PtVal = Point3d.ORIG - If sItems.Count() >= 1 Then - bOk = Double.TryParse(sItems(0), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.x) - If sItems.Count() >= 2 Then - bOk = Double.TryParse(sItems(1), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.y) And bOk - If sItems.Count() >= 3 Then - bOk = Double.TryParse(sItems(2), NumberStyles.Float, CultureInfo.InvariantCulture, PtVal.z) And bOk - End If - End If - End If - ' converto in globale - Dim frGrid As New Frame3d - EgtGetGridFrame(frGrid) - PtVal.ToGlob(frGrid) - Return bOk - End Function - - Private Function InputBoxTextToLast() As Boolean - Select Case m_nInpType - Case IBT.TY_STRING - m_Controller.SetLastString(InputText.Text) - Return True - Case IBT.TY_DOUBLE - Dim dVal As Double - If GetInputBoxDouble(dVal) Then - m_Controller.SetLastDouble(dVal) - Return True - End If - Case IBT.TY_3DOUBLE - Dim d3Val(3) As Double - If GetInputBox3Double(d3Val) Then - m_Controller.SetLast3Double(d3Val) - Return True - End If - Case IBT.TY_POINT3D - Dim ptP As Point3d - If GetInputBoxPoint3d(ptP) Then - m_Controller.SetLastPoint3d(ptP) - Return True - End If - End Select - Return False - 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 - InputBoxTextToLast() - Scene1.DisableDrag() - EgtResetGeoLine() - m_Controller.ExecuteDrag() - ' Con RETURN devo eseguire lo stato corrente + m_Controller.Show(InputText.Text) + ' Con RETURN avanzo di un passo ElseIf e.KeyData = Keys.Return Then - InputBoxTextToLast() - m_Controller.ProcessStatus() + m_Controller.Done(InputText.Text) End If End Sub @@ -961,17 +792,11 @@ Public Class Form1 End Sub Private Sub btnShow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShow.Click - ' aggiorno la visualizzazione grafica - InputBoxTextToLast() - Scene1.DisableDrag() - EgtResetGeoLine() - m_Controller.ExecuteDrag() + m_Controller.Show(InputText.Text) End Sub Private Sub btnDone_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDone.Click - ' eseguo lo stato corrente - InputBoxTextToLast() - m_Controller.ProcessStatus() + m_Controller.Done(InputText.Text) End Sub '-------------------------------- Command Box ---------------------------------------------------- diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 46761aa..2eb0556 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -43,5 +43,5 @@ Imports System.Runtime.InteropServices ' utilizzando l'asterisco (*) come descritto di seguito: ' - - + + diff --git a/Scene.Designer.vb b/Scene.Designer.vb index c858ba0..406f275 100644 --- a/Scene.Designer.vb +++ b/Scene.Designer.vb @@ -26,11 +26,11 @@ Partial Class Scene Me.MenuScene = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cmdSelectAll = New System.Windows.Forms.ToolStripMenuItem() Me.cmdDeselectAll = New System.Windows.Forms.ToolStripMenuItem() - Me.SepSel1 = New System.Windows.Forms.ToolStripSeparator() + Me.sepSel1 = New System.Windows.Forms.ToolStripSeparator() Me.cmdWinSelect = New System.Windows.Forms.ToolStripMenuItem() Me.cmdSelectLayer = New System.Windows.Forms.ToolStripMenuItem() Me.cmdSelectPart = New System.Windows.Forms.ToolStripMenuItem() - Me.cmdResumeDrag = New System.Windows.Forms.ToolStripMenuItem() + Me.cmdRestartDrag = New System.Windows.Forms.ToolStripMenuItem() Me.cmdSketchPoint = New System.Windows.Forms.ToolStripMenuItem() Me.cmdGridPoint = New System.Windows.Forms.ToolStripMenuItem() Me.cmdEndPoint = New System.Windows.Forms.ToolStripMenuItem() @@ -38,16 +38,18 @@ Partial Class Scene Me.cmdCenterPoint = New System.Windows.Forms.ToolStripMenuItem() Me.cmdNearPoint = New System.Windows.Forms.ToolStripMenuItem() Me.cmdIntersectionPoint = New System.Windows.Forms.ToolStripMenuItem() + Me.sepSelPnt1 = New System.Windows.Forms.ToolStripSeparator() + Me.cmdStopDrag = New System.Windows.Forms.ToolStripMenuItem() Me.MenuScene.SuspendLayout() Me.SuspendLayout() ' 'MenuScene ' - Me.MenuScene.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectAll, Me.cmdDeselectAll, Me.SepSel1, Me.cmdWinSelect, Me.cmdSelectLayer, Me.cmdSelectPart, Me.cmdResumeDrag, Me.cmdSketchPoint, Me.cmdGridPoint, Me.cmdEndPoint, Me.cmdMidPoint, Me.cmdCenterPoint, Me.cmdNearPoint, Me.cmdIntersectionPoint}) + Me.MenuScene.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectAll, Me.cmdDeselectAll, Me.sepSel1, Me.cmdWinSelect, Me.cmdSelectLayer, Me.cmdSelectPart, Me.cmdRestartDrag, Me.cmdSketchPoint, Me.cmdGridPoint, Me.cmdEndPoint, Me.cmdMidPoint, Me.cmdCenterPoint, Me.cmdNearPoint, Me.cmdIntersectionPoint, Me.sepSelPnt1, Me.cmdStopDrag}) Me.MenuScene.Name = "ContextMenuStrip1" Me.MenuScene.ShowCheckMargin = True Me.MenuScene.ShowImageMargin = False - Me.MenuScene.Size = New System.Drawing.Size(168, 318) + Me.MenuScene.Size = New System.Drawing.Size(168, 346) ' 'cmdSelectAll ' @@ -61,10 +63,10 @@ Partial Class Scene Me.cmdDeselectAll.Size = New System.Drawing.Size(167, 22) Me.cmdDeselectAll.Text = "Deselect All" ' - 'SepSel1 + 'sepSel1 ' - Me.SepSel1.Name = "SepSel1" - Me.SepSel1.Size = New System.Drawing.Size(164, 6) + Me.sepSel1.Name = "sepSel1" + Me.sepSel1.Size = New System.Drawing.Size(164, 6) ' 'cmdWinSelect ' @@ -84,11 +86,11 @@ Partial Class Scene Me.cmdSelectPart.Size = New System.Drawing.Size(167, 22) Me.cmdSelectPart.Text = "Select Part" ' - 'cmdResumeDrag + 'cmdRestartDrag ' - Me.cmdResumeDrag.Name = "cmdResumeDrag" - Me.cmdResumeDrag.Size = New System.Drawing.Size(167, 22) - Me.cmdResumeDrag.Text = "ResumeDrag" + Me.cmdRestartDrag.Name = "cmdRestartDrag" + Me.cmdRestartDrag.Size = New System.Drawing.Size(167, 22) + Me.cmdRestartDrag.Text = "Restart Drag" ' 'cmdSketchPoint ' @@ -132,6 +134,17 @@ Partial Class Scene Me.cmdIntersectionPoint.Size = New System.Drawing.Size(167, 22) Me.cmdIntersectionPoint.Text = "Intersection Point" ' + 'sepSelPnt1 + ' + Me.sepSelPnt1.Name = "sepSelPnt1" + Me.sepSelPnt1.Size = New System.Drawing.Size(164, 6) + ' + 'cmdStopDrag + ' + Me.cmdStopDrag.Name = "cmdStopDrag" + Me.cmdStopDrag.Size = New System.Drawing.Size(167, 22) + Me.cmdStopDrag.Text = "Stop Drag" + ' 'Scene ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -150,12 +163,14 @@ End Sub Friend WithEvents cmdDeselectAll As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdSelectAll As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdWinSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents SepSel1 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents sepSel1 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cmdSketchPoint As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdGridPoint As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents cmdResumeDrag As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents cmdRestartDrag As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdSelectLayer As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdSelectPart As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdIntersectionPoint As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents sepSelPnt1 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmdStopDrag As System.Windows.Forms.ToolStripMenuItem End Class diff --git a/Scene.vb b/Scene.vb index 29be183..cba32e6 100644 --- a/Scene.vb +++ b/Scene.vb @@ -168,9 +168,9 @@ Public Class Scene End Sub '---- Events ---------- - Public Event OnMouseSelected(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean) - Public Event OnMousePartSelected(ByVal sender As Object, ByVal nId As Integer) - Public Event OnMouseLayerSelected(ByVal sender As Object, ByVal nId As Integer) + Public Event OnMouseSelectedObj(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean) + Public Event OnMouseSelectedPart(ByVal sender As Object, ByVal nId As Integer) + Public Event OnMouseSelectedLayer(ByVal sender As Object, ByVal nId As Integer) Public Event OnMouseAnalyzed(ByVal sender As Object, ByVal nId As Integer) Public Event OnMousePointForSelection(ByVal sender As Object, ByVal PtP As Point3d) Public Event OnMouseDownScene(ByVal sender As Object) @@ -236,12 +236,12 @@ Public Class Scene ' evento per entità selezionate Select Case m_nStatus Case ST.NULL - RaiseEvent OnMouseSelected(Me, nId, True) + RaiseEvent OnMouseSelectedObj(Me, nId, True) Case ST.SELPART - RaiseEvent OnMousePartSelected(Me, nId) + RaiseEvent OnMouseSelectedPart(Me, nId) m_nStatus = ST.NULL Case ST.SELLAYER - RaiseEvent OnMouseLayerSelected(Me, nId) + RaiseEvent OnMouseSelectedLayer(Me, nId) m_nStatus = ST.NULL Case Else RaiseEvent OnMouseAnalyzed(Me, nId) @@ -369,7 +369,7 @@ Public Class Scene Dim nId = EgtGetFirstObjInSelWin() While nId <> GDB_ID.NULL Dim nNextId = EgtGetNextObjInSelWin() - RaiseEvent OnMouseSelected(Me, nId, (nNextId = GDB_ID.NULL)) + RaiseEvent OnMouseSelectedObj(Me, nId, (nNextId = GDB_ID.NULL)) nId = nNextId End While ' ritorno allo stato NULL @@ -436,13 +436,17 @@ Public Class Scene ElseIf i.Name = "cmdIntersectionPoint" Then i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_INTERS) + ElseIf i.Name = "sepSelPnt1" Then + i.Visible = True + ElseIf i.Name = "cmdStopDrag" Then + i.Visible = True Else i.Visible = False End If Next Else For Each i As ToolStripItem In MenuScene.Items - If i.Name = "cmdResumeDrag" Then + If i.Name = "cmdRestartDrag" Then i.Visible = True Else i.Visible = False @@ -643,7 +647,7 @@ Public Class Scene ElseIf e.ClickedItem.Name = "cmdSelectLayer" Then m_nStatus = ST.SELLAYER ' Riabilitazione drag sospeso - ElseIf e.ClickedItem.Name = "cmdResumeDrag" Then + ElseIf e.ClickedItem.Name = "cmdRestartDrag" Then EgtResetGeoLine() m_bDragOn = True ' Scelta tipo punto snap @@ -661,6 +665,9 @@ Public Class Scene m_nSnapType = SP.PT_NEAR ElseIf e.ClickedItem.Name = "cmdIntersectionPoint" Then m_nSnapType = SP.PT_INTERS + ' Sospensione drag + ElseIf e.ClickedItem.Name = "cmdStopDrag" Then + m_bDragOn = False End If End Sub