From d65e1d1279a0e5369b49667c493ac8366fae495f Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 24 Feb 2015 22:59:46 +0000 Subject: [PATCH] TestEIn 1.6b6 : - aggiunta creazione Linea PVL e Arco PVP - aggiunta gestione punto notevole baricentro - portati su file altri messaggi. --- Controller.vb | 260 ++++++++++++++++++++++++++++++++++--- EgtInterface.vb | 18 ++- Form1.resx | 30 ++--- Form1.vb | 34 +++-- My Project/AssemblyInfo.vb | 4 +- Resources/ArcPDP.png | Bin 365 -> 405 bytes Resources/LinePDL.png | Bin 435 -> 473 bytes Scene.Designer.vb | 12 +- Scene.vb | 28 +++- 9 files changed, 330 insertions(+), 56 deletions(-) diff --git a/Controller.vb b/Controller.vb index e667493..84d828e 100644 --- a/Controller.vb +++ b/Controller.vb @@ -71,11 +71,13 @@ Public Class Controller POINT LINE2P LINEPDL + LINEPVL CIRCLECP CIRCLECD ARCCSE ARC3P ARCPDP + ARCPVP RECTANGLE2P POLYGON POLYGONSIDE @@ -129,7 +131,8 @@ Public Class Controller Private m_ptP3 As Point3d Private m_ptLast As Point3d Private m_sepLast As SEP - Private m_nIdLast As Integer + Private m_vtLast As Vector3d = Vector3d.X_AX() + Private m_nIdLast As Integer = GDB_ID.NULL Private m_dPrev As Double = 0 Private m_dAux As Double = 0 Private m_dLast As Double = 0 @@ -138,8 +141,8 @@ Public Class Controller Private m_nLast 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) + Private m_ptCont As Point3d ' punto finale di entità precedente (per continuazione) + Private m_vtCont As Vector3d = Vector3d.X_AX() ' direzione finale di entità precedente (per continuazione) ' Input Private Enum IBT As Integer @@ -152,6 +155,7 @@ Public Class Controller TY_SPECIALDOUBLE TY_3DOUBLE TY_POINT3D + TY_VECTOR3D End Enum Private m_nInpType As IBT = IBT.TY_NULL @@ -518,6 +522,8 @@ Public Class Controller Select Case m_nInpType Case IBT.TY_POINT3D SetInputBoxPoint3d(m_ptLast) + Case IBT.TY_VECTOR3D + SetInputBoxVector3d(m_vtLast) Case IBT.TY_DIRECTION, IBT.TY_LENGTH, IBT.TY_SPECIALDOUBLE SetInputBoxDouble(m_dLast) End Select @@ -537,6 +543,9 @@ Public Class Controller m_nIdLast = nId ' se usato per tipi speciali Select Case m_nInpType + Case IBT.TY_VECTOR3D + m_vtLast = m_ptLast - m_ptP1 + m_vtLast.Normalize() Case IBT.TY_DIRECTION m_dLast = GridAngFromGlobDir(m_ptLast - m_ptP1) m_dAux = GridLenFromGlobLen(m_ptLast - m_ptP1) @@ -617,6 +626,19 @@ Public Class Controller RaiseEvent SetInputBoxText(sText.ToString()) End Sub + Private Sub SetInputBoxVector3d(ByVal vtVal As Vector3d) + ' converto da coordinate globali a griglia + vtVal = vtVal.Loc(GDB_ID.GRID) + ' visualizzo + Dim sText As New StringBuilder(128) + sText.Append(DoubleToString(vtVal.x, 6)) + sText.Append(",") + sText.Append(DoubleToString(vtVal.y, 6)) + sText.Append(",") + sText.Append(DoubleToString(vtVal.z, 6)) + RaiseEvent SetInputBoxText(sText.ToString()) + End Sub + Private Function InputTextToLast(ByRef sText As String) As Boolean Select Case m_nInpType Case IBT.TY_STRING @@ -637,6 +659,13 @@ Public Class Controller m_ptLast = New Point3d(d3Val(0), d3Val(1), d3Val(2)).Glob(GDB_ID.GRID) Return True End If + Case IBT.TY_VECTOR3D + Dim d3Val(3) As Double + If TextTo3Double(sText, d3Val) Then + ' converto da riferimento griglia a globale + m_vtLast = New Vector3d(d3Val(0), d3Val(1), d3Val(2)).Glob(GDB_ID.GRID) + Return True + End If End Select Return False End Function @@ -812,6 +841,9 @@ Public Class Controller ' LinePDL Case CMD.LINEPDL Return ProcessLinePDL() + ' LinePVL + Case CMD.LINEPVL + Return ProcessLinePVL() ' CircleCP Case CMD.CIRCLECP Return ProcessCircleCP() @@ -827,6 +859,9 @@ Public Class Controller ' ArcPDP Case CMD.ARCPDP Return ProcessArcPDP() + ' ArcPVP + Case CMD.ARCPVP + Return ProcessArcPVP() ' Rectangle 2P Case CMD.RECTANGLE2P Return ProcessRectangle2P() @@ -925,6 +960,8 @@ Public Class Controller End Function Private Function ExecuteDrag() As Boolean + Dim bOk As Boolean = True + ' Eseguo drag EgtDisableModified() Select Case m_nLastCmd Case CMD.GRID_ROTATE @@ -935,6 +972,8 @@ Public Class Controller DragLine2P() Case CMD.LINEPDL DragLinePDL() + Case CMD.LINEPVL + DragLinePVL() Case CMD.CIRCLECP DragCircleCP() Case CMD.CIRCLECD @@ -945,6 +984,8 @@ Public Class Controller DragArc3P() Case CMD.ARCPDP DragArcPDP() + Case CMD.ARCPVP + DragArcPVP() Case CMD.RECTANGLE2P DragRectangle2P() Case CMD.POLYGON @@ -982,11 +1023,10 @@ Public Class Controller Case CMD.OFFSET DragOffset() Case Else - EgtEnableModified() - Return False + bOk = False End Select EgtEnableModified() - Return True + Return bOk End Function Private Function ExecuteSpecialData() As Boolean @@ -1882,6 +1922,7 @@ Public Class Controller SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast + m_vtLast = m_vtCont m_dAux = LEN_STD ' posso prendere punto per definire direzione, ma non prendo direzione notevole m_Scene.SetStatusSelPoint(False) @@ -1889,12 +1930,12 @@ Public Class Controller m_Scene.DisableDrag() RaiseEvent PrepareInputBox("LINE PDL", "Insert Direction", "", False, True) m_nInpType = IBT.TY_DIRECTION - m_dLast = GridAngFromGlobDir(m_vtCont) + m_dLast = GridAngFromGlobDir(m_vtLast) SetInputBoxDouble(m_dLast) DragLinePDL() Case 2 m_dPrev = m_dLast - m_vtCont = GlobDirFromGridAng(m_dPrev) + m_vtLast = GlobDirFromGridAng(m_dPrev) m_dLast = m_dAux m_nStep = 3 m_Scene.DisableDrag() @@ -1909,7 +1950,7 @@ Public Class Controller ' creo la linea (i punti sono in globale) EnableCommandLog() Dim nId As Integer = EgtCreateCurveLinePVL(GetCurrLayer(), m_ptP1.Loc(GDB_ID.GRID), - m_vtCont.Loc(GDB_ID.GRID), m_dLast, REF_TY.GRID) + m_vtLast.Loc(GDB_ID.GRID), m_dLast, REF_TY.GRID) DisableCommandLog() If nId <> GDB_ID.NULL Then m_ptCont = m_ptLast @@ -1930,14 +1971,14 @@ Public Class Controller Private Sub DragLinePDL() If m_nStep = 2 Then ' inserimento direzione ' determino il versore direzione iniziale - Dim vtDirS = GlobDirFromGridAng(m_dLast) + Dim m_vtLast = 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, m_dAux, REF_TY.GLOB) + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, m_vtLast, m_dAux, REF_TY.GLOB) Else - Dim ptP2 As Point3d = m_ptP1 + vtDirS * m_dAux + Dim ptP2 As Point3d = m_ptP1 + m_vtLast * m_dAux EgtModifyCurveEndPoint(nId, ptP2, REF_TY.GLOB) End If EgtDraw() @@ -1946,9 +1987,96 @@ Public Class Controller 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, m_vtCont, m_dLast, REF_TY.GLOB) + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, m_vtLast, m_dLast, REF_TY.GLOB) Else - Dim ptP2 As Point3d = m_ptP1 + m_vtCont * m_dLast + Dim ptP2 As Point3d = m_ptP1 + m_vtLast * m_dLast + EgtModifyCurveEndPoint(nId, ptP2) + End If + EgtDraw() + End If + End Sub + + Private Function ProcessLinePVL() 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 + ' imposto stato a primo punto per Line2P + m_Scene.SetStatusSelPoint(True) + m_nStep = 1 + ' abilito dialogo + RaiseEvent PrepareInputBox("LINE PVL", "Insert Start Point", "", False, False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) + Case 1 + m_ptP1 = m_ptLast + m_vtLast = m_vtCont + 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 PrepareInputBox("LINE PVL", "Insert Direction Vector", "", False, True) + m_nInpType = IBT.TY_VECTOR3D + SetInputBoxVector3d(m_vtLast) + DragLinePVL() + Case 2 + m_dLast = m_dAux + m_nStep = 3 + m_Scene.DisableDrag() + EgtUnselectableRemove(m_Scene.GetDragGroup()) + RaiseEvent PrepareInputBox("LINE PVL", "Insert Length", "", False, True) + m_nInpType = IBT.TY_LENGTH + SetInputBoxDouble(m_dLast) + DragLinePVL() + Case 3 + ' reset scena + m_Scene.ResetStatus(False) + ' creo la linea (i punti sono in globale) + EnableCommandLog() + Dim nId As Integer = EgtCreateCurveLinePVL(GetCurrLayer(), m_ptP1.Loc(GDB_ID.GRID), + m_vtLast.Loc(GDB_ID.GRID), m_dLast, REF_TY.GRID) + DisableCommandLog() + If nId <> GDB_ID.NULL Then + m_ptCont = m_ptLast + m_vtCont = (m_ptLast - m_ptP1) + m_vtCont.Normalize() + End If + 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 DragLinePVL() + If m_nStep = 2 Then ' inserimento direzione + ' 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, m_vtLast, m_dAux, REF_TY.GLOB) + Else + m_vtLast.Normalize() + Dim ptP2 As Point3d = m_ptP1 + m_vtLast * m_dAux + EgtModifyCurveEndPoint(nId, ptP2, REF_TY.GLOB) + End If + EgtDraw() + 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 + ' creo la linea di direzione + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, m_vtLast, m_dLast, REF_TY.GLOB) + Else + m_vtLast.Normalize() + Dim ptP2 As Point3d = m_ptP1 + m_vtLast * m_dLast EgtModifyCurveEndPoint(nId, ptP2) End If EgtDraw() @@ -2233,13 +2361,14 @@ Public Class Controller SetInputBoxPoint3d(m_ptCont) Case 1 m_ptP1 = m_ptLast + m_vtLast = m_vtCont m_dAux = LEN_STD m_Scene.SetStatusSelPoint(False) m_nStep = 2 m_Scene.DisableDrag() RaiseEvent PrepareInputBox("ARC PDP", "Insert Direction", "", False, True) m_nInpType = IBT.TY_DIRECTION - m_dLast = GridAngFromGlobDir(m_vtCont) + m_dLast = GridAngFromGlobDir(m_vtLast) SetInputBoxDouble(m_dLast) DragArcPDP() Case 2 @@ -2251,11 +2380,11 @@ Public Class Controller ' reset scena m_Scene.ResetStatus(False) ' determino il versore direzione iniziale - Dim vtDirS As Vector3d = GlobDirFromGridAng(m_dLast) + m_vtLast = GlobDirFromGridAng(m_dLast) ' creo l'arco (i punti sono in globale) EnableCommandLog() Dim nId = EgtCreateCurveArc2PVN(GetCurrLayer(), m_ptP1.Loc(GDB_ID.GRID), m_ptLast.Loc(GDB_ID.GRID), - vtDirS.Loc(GDB_ID.GRID), Vector3d.Z_AX, REF_TY.GRID) + m_vtLast.Loc(GDB_ID.GRID), Vector3d.Z_AX, REF_TY.GRID) DisableCommandLog() If nId <> GDB_ID.NULL Then m_ptCont = m_ptLast @@ -2314,6 +2443,102 @@ Public Class Controller End If End Sub + Private Function ProcessArcPVP() 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 + ' imposto stato a primo punto per Arc3P + m_Scene.SetStatusSelPoint(True) + m_nStep = 1 + ' abilito dialogo + RaiseEvent PrepareInputBox("ARC PVP", "Insert Start Point", "", False, False) + m_nInpType = IBT.TY_POINT3D + SetInputBoxPoint3d(m_ptCont) + Case 1 + m_ptP1 = m_ptLast + m_vtLast = m_vtCont + m_dAux = LEN_STD + m_Scene.SetStatusSelPoint(False) + m_nStep = 2 + m_Scene.DisableDrag() + RaiseEvent PrepareInputBox("ARC PVP", "Insert Direction Vector", "", False, True) + m_nInpType = IBT.TY_VECTOR3D + SetInputBoxVector3d(m_vtLast) + DragArcPVP() + Case 2 + m_nStep = 3 + m_Scene.EnableDrag() + RaiseEvent PrepareInputBox("ARC PVP", "Insert End Point", "", False, True) + m_nInpType = IBT.TY_POINT3D + Case 3 + ' reset scena + m_Scene.ResetStatus(False) + ' versore normale al piano dell'arco + Dim vtNorm As Vector3d = m_vtLast ^ (m_ptLast - m_ptP1) + If vtNorm.Normalize() Then + If (vtNorm * EgtGetGridVersZ()) < 0 Then + vtNorm *= -1 + End If + Else + vtNorm = EgtGetGridVersZ() + End If + ' creo l'arco (i punti sono in globale) + EnableCommandLog() + Dim nId = EgtCreateCurveArc2PVN(GetCurrLayer(), m_ptP1.Loc(GDB_ID.GRID), m_ptLast.Loc(GDB_ID.GRID), + m_vtLast.Loc(GDB_ID.GRID), vtNorm.Loc(GDB_ID.GRID), REF_TY.GRID) + DisableCommandLog() + If nId <> GDB_ID.NULL Then + m_ptCont = m_ptLast + Dim VtV As Vector3d + EgtEndVector(nId, VtV) + m_vtCont = VtV.Glob(GetCurrLayer()) + End If + 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 DragArcPVP() + 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 + ' creo la linea di direzione + EgtCreateCurveLinePVL(m_Scene.GetDragGroup(), m_ptP1, m_vtLast, m_dAux, REF_TY.GLOB) + Else + m_vtLast.Normalize() + Dim ptP2 As Point3d = m_ptP1 + m_vtLast * m_dAux + EgtModifyCurveEndPoint(nId, ptP2, REF_TY.GLOB) + End If + EgtDraw() + ElseIf m_nStep = 3 Then + ' svuoto il gruppo di drag + EgtEmptyGroup(m_Scene.GetDragGroup()) + ' durante la creazione di oggetti il gruppo di Drag ha riferimento globale + ' arco sempre da ricreare (può cambiare la normale al suo piano) + Dim vtNorm As Vector3d = m_vtLast ^ (m_ptLast - m_ptP1) + If vtNorm.Normalize() Then + If (vtNorm * EgtGetGridVersZ()) < 0 Then + vtNorm *= -1 + End If + Else + vtNorm = EgtGetGridVersZ() + End If + ' creo l'arco (i punti sono in globale), in alcuni casi particolari crea una retta + EgtCreateCurveArc2PVN(m_Scene.GetDragGroup(), m_ptP1, m_ptLast, m_vtLast, vtNorm, REF_TY.GLOB) + EgtDraw() + End If + End Sub + Private Function ProcessRectangle2P() As Boolean Select Case m_nStep Case 0 @@ -2844,7 +3069,6 @@ Public Class Controller EgtCreateSurfTriMeshByRevolve(m_Scene.GetDragGroup(), EgtGetLastSelectedObj(), m_ptP1, vtAx, m_bLast, EPS_STM_DRAG, REF_TY.GLOB) EgtDraw() - EgtDraw() End If End Sub diff --git a/EgtInterface.vb b/EgtInterface.vb index df6c025..0e22b65 100644 --- a/EgtInterface.vb +++ b/EgtInterface.vb @@ -1562,6 +1562,13 @@ Public Function EgtCenterPoint(ByVal nId As Integer, ByRef PtP As Point3d) As Bo Return EgtCenterPoint(nId, nId, PtP) End Function + +Public Function EgtCentroid(ByVal nId As Integer, ByVal nRefId As Integer, ByRef PtP As Point3d) As Boolean +End Function +Public Function EgtCentroid(ByVal nId As Integer, ByRef PtP As Point3d) As Boolean + Return EgtCentroid(nId, nId, PtP) +End Function + Public Function EgtAtParamPoint(ByVal nId As Integer, ByVal dU As Double, ByVal nRefId As Integer, ByRef PtP As Point3d) As Boolean End Function @@ -2166,11 +2173,12 @@ Public Enum SP As Integer PT_END = 3 PT_MID = 4 CENTER = 5 - PT_NEAR = 6 - PT_INTERS = 7 - PT_TANGENT = 8 - PT_PERPENDICULAR = 9 - PT_MINDIST = 10 + CENTROID = 6 + PT_NEAR = 7 + PT_INTERS = 8 + PT_TANGENT = 9 + PT_PERPENDICULAR = 10 + PT_MINDIST = 11 End Enum 'Costanti : TIPO SELECTED POINT Public Enum SEP As Integer diff --git a/Form1.resx b/Form1.resx index ae25627..f9f4ef3 100644 --- a/Form1.resx +++ b/Form1.resx @@ -882,7 +882,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 - DQAAAk1TRnQBSQFMAgEBDgEAAUgBDwFIAQ8BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + DQAAAk1TRnQBSQFMAgEBDgEAAVgBDwFYAQ8BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -951,7 +951,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW - CAAAAk1TRnQBSQFMAgEBAgEAAWgBBgFoAQYBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAXgBBgF4AQYBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -1039,23 +1039,23 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAAd0SU1FB94LFAgmBIbrMKMAAAEJSURBVFhHzZJBDoIwEEW79U5cwoUX9GpuTDxE - 5TcODp3fsRRaNHkRHkPfmBhijKdCZS2vcHnksDkPKjcTbtfzFvjEl28240BlNSqO+7ELZHEwbgESZ8yf - aQYXifw5MOInjXGQzwAjXHbEQT4HjCiyMz4z0XkmDZ3igMoVHePAiBST+0IczqM2DozAAena+eU6xqiN - AyNwgBfXIIKYjoPaODBCDmmNp3fJfAkjag5kcX2fz3tQ6VGKw3dfwIvjeZcFJCqU4uDwBXB4ityfCS/e - CpWCjusFjooDKoV8gYX0Gn9nK1QK/7DA6j8gcXg23wKVmmWJL4fFAZUjoXIkVI6EypFQORIqxxHDG6PK - sKUdv+zYAAAAAElFTkSuQmCC + xAAADsQBlSsOGwAAAAd0SU1FB98CFBEwL+N0VR8AAAEzSURBVFhHxZNBTgMxDEWz5U69BAvu07NwNTZI + HCL4h/HIiX+M6ZDU0tNMfpw8t2pLrfWp0DDLV3n5GGF9ETT8M+Xt9XkDHPLzyXoCaJjGyLHeO8AgB/sG + IHKG1E3AS2PcBy74lQflYOwBLgi5IAdjH3DBlIty4Ub7WehYJAc07FgoBy5oMl1P5MgisnLgAlzQ3oNP + bmWMrBy4ABdEcgskkFk5yMqBC/SSR+XtLOmf4YLMhUxu12N/BA0jZnLkyweI5NhfMoBKlZkcZAewZ9ym + BY1CLe+fjUie5bjzrmdpkyJ1yu0ALb8gP97bELRRkeoGOGlz8zMRUpDaAe60UZH61wEApN3Tbo5Idb8B + lSNn/Rmk8gMAqe5fgDXryyL189VnB1gNDXdCw53QcCc03AkN91HLN055gAr2pAmrAAAAAElFTkSuQmCC - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAAd0SU1FB94LEhIjLPrzFWYAAAEBSURBVFhH7ZVRDsIgEET59U49rVfzx8RDIEOy - 7XZ3aFS22x9JXpQHMoMaLbXWS6EyEypnaWNp4ImwsH2AyhkQ1kPvz42DEk4Ir3J7MG9ZAzU6XJWwrwVO - AIQLbB204YOFmQI6fFSijXE4+LUACxf65uPg/hnjsc9NuKxbnAA2GKwHe9zBcGqd7hGotAVwgDpMGB76 - DVTqAggywWHhgEpT4LRwQOVBgdBwQOWgQHg4oJIVsHuioJIUOOX2gEpbwK5HQqUpcNrtAZW6AFuPxIt2 - Y10g9R1AWOPjP5II9hMbrkrofZHsJ/8CV38HupASG/m/A5lQmQmVmVCZCZWZUJlHLW9mibhNTtEhqQAA - AABJRU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQffAhUIECU9bmc5AAABJElEQVRYR8WVUQ6CMBBE + +fVOHo6zeDV/TDxE7VQWl9kpUWhrkxdwdtmZIoQppfRXpDgSKZ4lr2sGJ8ZV9QEpngFmxfT2+LATIgjG + c7rclc6shh5v7kLwtSAIAOaGqoO8orFxJoA3r4XIq24OjgZQ5kZp3jcu/zGO5TeZW50JAmBjsA6OhMHQ + XF32GFLkABjghhnVob8gRR8ARmTczBxIkQJ0MwdS3AnQ1BxIsRKguTmQogrAPa2QogjQZfdAihyA6y2R + IgXotnsgRR9A1VsShbxjH6DHHfAzQyHz9YfkCIvHbDO5uDV3IXzfUWCamZfzEoIbegeAqQ8wc0PXAACm + myMVRzwD9QBLgT+/Td+CvN63vhZgNFIciRRHIsWRSHEkUhxHml4ROIeysZlykAAAAABJRU5ErkJggg== diff --git a/Form1.vb b/Form1.vb index 87d026e..d49de7a 100644 --- a/Form1.vb +++ b/Form1.vb @@ -850,7 +850,11 @@ Public Class Form1 End Sub Private Sub btnLinePDL_Click(sender As System.Object, e As System.EventArgs) Handles btnLinePDL.Click - m_Controller.ExecuteCommand(CMD.LINEPDL) + If (ModifierKeys And Keys.Shift) <> Keys.Shift Then + m_Controller.ExecuteCommand(CMD.LINEPDL) + Else + m_Controller.ExecuteCommand(CMD.LINEPVL) + End If End Sub Private Sub btnCircleCP_Click(sender As System.Object, e As System.EventArgs) Handles btnCircleCP.Click @@ -870,7 +874,11 @@ Public Class Form1 End Sub Private Sub btnArcPDP_Click(sender As System.Object, e As System.EventArgs) Handles btnArcPDP.Click - m_Controller.ExecuteCommand(CMD.ARCPDP) + If (ModifierKeys And Keys.Shift) <> Keys.Shift Then + m_Controller.ExecuteCommand(CMD.ARCPDP) + Else + m_Controller.ExecuteCommand(CMD.ARCPVP) + End If End Sub Private Sub btnRectangle2P_Click(sender As System.Object, e As System.EventArgs) Handles btnRectangle2P.Click @@ -1478,25 +1486,27 @@ Public Class Form1 Private Sub ToolStripStatusSnapPointType_Changed(ByVal sender As Object, ByVal nSpType As SP) Handles Scene1.OnChangedSnapPointType Select Case nSpType Case SP.PT_SKETCH - tsStatusSnapPointType.Text = "Sketch Point" + tsStatusSnapPointType.Text = EgtMsg(1102) 'Sketch Point Case SP.PT_GRID - tsStatusSnapPointType.Text = "Grid Point" + tsStatusSnapPointType.Text = EgtMsg(1104) 'Grid Point Case SP.PT_END - tsStatusSnapPointType.Text = "End Point" + tsStatusSnapPointType.Text = EgtMsg(1106) 'End Point Case SP.PT_MID - tsStatusSnapPointType.Text = "Mid Point" + tsStatusSnapPointType.Text = EgtMsg(1108) 'Mid Point Case SP.CENTER - tsStatusSnapPointType.Text = "Center" + tsStatusSnapPointType.Text = EgtMsg(1110) 'Center + Case SP.CENTROID + tsStatusSnapPointType.Text = EgtMsg(1112) 'Centroid Case SP.PT_NEAR - tsStatusSnapPointType.Text = "Near Point" + tsStatusSnapPointType.Text = EgtMsg(1114) 'Near Point" Case SP.PT_INTERS - tsStatusSnapPointType.Text = "Inters Point" + tsStatusSnapPointType.Text = EgtMsg(1116) 'Inters Point Case SP.PT_TANGENT - tsStatusSnapPointType.Text = "Tang Point" + tsStatusSnapPointType.Text = EgtMsg(1118) 'Tang Point Case SP.PT_PERPENDICULAR - tsStatusSnapPointType.Text = "Perp Point" + tsStatusSnapPointType.Text = EgtMsg(1120) 'Perp Point Case SP.PT_MINDIST - tsStatusSnapPointType.Text = "MinDist Point" + tsStatusSnapPointType.Text = EgtMsg(1122) 'MinDist Point" Case Else tsStatusSnapPointType.Text = "---" End Select diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index dbadf5c..0b3df7f 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/ArcPDP.png b/Resources/ArcPDP.png index e99efeb0126aa45fae0ab40b482e2afabfc63e2a..75735e655f09c75463b1afd0c02e5bc70b661669 100644 GIT binary patch delta 333 zcmV-T0kZz>0+j=hQGee86$lU|J#J??0003ZNklBv?YKR6m+O0F9w47zsE!P6_VJpW!ShS0T2--BGf{S&W&Ay zUhIzB<2!gg13*Et@doH5Z%=$(yan~9i)#=h#j6CJwnGeK02BZ^LYeP7<|>yCNgRT9ww-Y^l2ijgqMQSv z;wcWIWa4v9!l>e*0MW&R08)sD02G_vhN-gm1xS{?7eLDFodBkJm@*R!J%jBBLe0bi z@e)8yvM~V|Vn!zBij%BFqykW{ZAweCzbXL9%Is&>Cl_KSV(bailsc~8sCPhL`_Br< f{%5oU{5`-M_tnqJ;AV!r00000NkvXXu0mjf6eO04 delta 293 zcmV+=0owkR1MLEkQGebG5)vaU`tucL0002`Nkl-V6PtqWfns#XtVZ{#k$emJ}g<&PGUL&Dvq*asd#LAR-{}=IRQW<*;WJe(sV~Y&((ryrQ!($NvYa`UYag_ep=>Ce1GW~n2MGlimojH<{XdX zUtGswiQ};6*%>Gjkj(mlLpSy~1|R@np~Lk3!rV~OA&I@}Wap0C8B;9)F}Vk{;vN@~ zoA@s`p{ckQz+7Af;32L7h^u}Lz1-IVxVf(a@N{1Un1+W>VZtOoqQ$+*00000NkvXXu0mjf{vU%S diff --git a/Resources/LinePDL.png b/Resources/LinePDL.png index 78bece9523b7c0049e166c19eb3ec737bed09e24..2c35de4177217fc48bd57e6ed4fb4d0f70ad6684 100644 GIT binary patch delta 402 zcmV;D0d4-X1K9(RQGee86cI2l<8)OY0004INkl9C6vn?7WuY^XGK8C$ zjWJ7xcFYlS2F}nUuvF^Or8h|L(SZ&~WTxZSAtfr*fd3^dv1FlV$?yBw*zY|HNzB=n zK9f)KQ1-`SHi?aog%3c?CW+Z3F}4S1CnWtk9(OgO^76HuAAd}oByJ1P6TdBhMqKM0 zPypEWFaVC?VE{bD{Q*410VsEXD~X!{Tv1#L(78$j;x(djtec9H90|qpv^(MbImY$? zzP>pG*_7mmbtvwHRl{x9?0_;o+|p0SZHAj#xritL#~RU>PevRB7;~r-U*UVx+BN`7 zTlyh!04abM+kb;%RS%4b8yz?o01;6lLJ?so@!y3^7bKV9QdC4yQFGUob^1N~%-gwB zJ8(o%{TuXLc}6k^kco)0DoR(y=LP_M_dD9aW01E&B07*qoM6N<$f<1e)*#H0l delta 363 zcmV-x0hIpP1G58=QGebG6bL2+hU+k+0003%NklKW@S>6vjUzmUK1}Lo@Uq z&J9=?=$IpLm>!`^r7m51gL0EFASH7cKZari!EyXAz`&EN$dUYhpY7-Oo*;>P+B9Zy zBVMZRKgl-t@iB=JAlc@UZ7#7`2Rk7dH?UgP$g0!VbA2*6Nq^i{KnH$X0S36yIiLVg zk2C@T;b{a!z~co(!U3po0VBcP1dIqb3b=SmJ@6V?WgD(=l9p5~-j@x2KO`1w@cSnq z$rdCx-l_N^tvVjN;RKXxaEop^))j7O=Rybt;IBrujj4#e0&EUV@EP{6dhR1&>Z`sF z4xj+=!o%sL& diff --git a/Scene.Designer.vb b/Scene.Designer.vb index d167ca7..d0fb83f 100644 --- a/Scene.Designer.vb +++ b/Scene.Designer.vb @@ -43,16 +43,17 @@ Partial Class Scene Me.cmdMinDistPoint = New System.Windows.Forms.ToolStripMenuItem() Me.sepSelPnt1 = New System.Windows.Forms.ToolStripSeparator() Me.cmdStopDrag = New System.Windows.Forms.ToolStripMenuItem() + Me.cmdCentroid = 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.cmdRestartDrag, Me.cmdSketchPoint, Me.cmdGridPoint, Me.cmdEndPoint, Me.cmdMidPoint, Me.cmdCenterPoint, Me.cmdNearPoint, Me.cmdIntersectionPoint, Me.cmdTangentPoint, Me.cmdPerpendicularPoint, Me.cmdMinDistPoint, Me.sepSelPnt1, Me.cmdStopDrag}) + 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.cmdCentroid, Me.cmdNearPoint, Me.cmdIntersectionPoint, Me.cmdTangentPoint, Me.cmdPerpendicularPoint, Me.cmdMinDistPoint, Me.sepSelPnt1, Me.cmdStopDrag}) Me.MenuScene.Name = "ContextMenuStrip1" Me.MenuScene.ShowCheckMargin = True Me.MenuScene.ShowImageMargin = False - Me.MenuScene.Size = New System.Drawing.Size(179, 412) + Me.MenuScene.Size = New System.Drawing.Size(179, 434) ' 'cmdSelectAll ' @@ -166,6 +167,12 @@ Partial Class Scene Me.cmdStopDrag.Size = New System.Drawing.Size(178, 22) Me.cmdStopDrag.Text = "Drag Off" ' + 'cmdCentroid + ' + Me.cmdCentroid.Name = "cmdCentroid" + Me.cmdCentroid.Size = New System.Drawing.Size(178, 22) + Me.cmdCentroid.Text = "Centroid" + ' 'Scene ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -196,5 +203,6 @@ End Sub Friend WithEvents cmdTangentPoint As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdPerpendicularPoint As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cmdMinDistPoint As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents cmdCentroid As System.Windows.Forms.ToolStripMenuItem End Class diff --git a/Scene.vb b/Scene.vb index 1c5a68f..b457057 100644 --- a/Scene.vb +++ b/Scene.vb @@ -72,7 +72,6 @@ Public Class Scene m_nStatus = ST.SEL m_nOldStatus = ST.SEL m_nSnapType = SP.PT_GRID - RaiseEvent OnChangedSnapPointType(Me, m_nSnapType) m_bAlsoSelDir = False m_PrevPoint = Point.Empty m_bGridCursorPos = False @@ -143,6 +142,7 @@ Public Class Scene EgtSetGeoLineAttribs(m_DstLnColor) EgtSetGeoTriaAttribs(m_DstLnColor) EgtInitTscExec() + RaiseEvent OnChangedSnapPointType(Me, m_nSnapType) End Sub Public Function GetCtx() As Integer @@ -277,7 +277,7 @@ Public Class Scene Dim dZ As Double = ptSel.z - m_ptPrev.z Dim dDist As Double = Sqrt(dX * dX + dY * dY + dZ * dZ) Dim sOut As New System.Text.StringBuilder - sOut.Append("Dist=") + sOut.Append(EgtMsg(1301)) ' Dist= sOut.Append(dDist.ToString("F4", CultureInfo.InvariantCulture)) sOut.Append(" dX=") sOut.Append(dX.ToString("F4", CultureInfo.InvariantCulture)) @@ -681,16 +681,21 @@ Public Class Scene MenuScene.Visible = True For Each i As ToolStripItem In MenuScene.Items If i.Name = "cmdSelectAll" Then + i.Text = EgtMsg(1001) ' Select All i.Visible = True ElseIf i.Name = "cmdDeselectAll" Then + i.Text = EgtMsg(1003) ' Deselect All i.Visible = True ElseIf i.Name = "sepSel1" Then i.Visible = True ElseIf i.Name = "cmdWinSelect" Then + i.Text = EgtMsg(1005) ' Select Window i.Visible = True ElseIf i.Name = "cmdSelectPart" Then + i.Text = EgtMsg(1007) ' Select Part i.Visible = True ElseIf i.Name = "cmdSelectLayer" Then + i.Text = EgtMsg(1009) ' Select Layer i.Visible = True Else i.Visible = False @@ -704,27 +709,39 @@ Public Class Scene For Each i As ToolStripItem In MenuScene.Items Select Case i.Name Case "cmdSketchPoint" + i.Text = EgtMsg(1101) ' Sketch Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_SKETCH) Case "cmdGridPoint" + i.Text = EgtMsg(1103) ' Grid Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_GRID) Case "cmdEndPoint" + i.Text = EgtMsg(1105) ' End Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_END) Case "cmdMidPoint" + i.Text = EgtMsg(1107) ' Mid Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_MID) Case "cmdCenterPoint" + i.Text = EgtMsg(1109) ' Center Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.CENTER) + Case "cmdCentroid" + i.Text = EgtMsg(1111) ' Centroid + i.Visible = True + DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.CENTROID) Case "cmdNearPoint" + i.Text = EgtMsg(1113) ' Near Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_NEAR) Case "cmdIntersectionPoint" + i.Text = EgtMsg(1115) ' Intersection Point i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_INTERS) Case "cmdTangentPoint" + i.Text = EgtMsg(1117) ' Tangent Point If m_bTangentPointOn Then i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_TANGENT) @@ -732,6 +749,7 @@ Public Class Scene i.Visible = False End If Case "cmdPerpendicularPoint" + i.Text = EgtMsg(1119) ' Perpendicular Point If m_bPerpendicularPointOn Then i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_PERPENDICULAR) @@ -739,6 +757,7 @@ Public Class Scene i.Visible = False End If Case "cmdMinDistPoint" + i.Text = EgtMsg(1121) ' Min Dist Point If m_bMinDistPointOn Then i.Visible = True DirectCast(i, ToolStripMenuItem).Checked = (m_nSnapType = SP.PT_MINDIST) @@ -748,6 +767,7 @@ Public Class Scene Case "sepSelPnt1" i.Visible = (m_nStatus <> ST.GETDIST And m_nStatus <> ST.GETDIST2) Case "cmdStopDrag" + i.Text = EgtMsg(1201) ' Drag Off i.Visible = (m_nStatus <> ST.GETDIST And m_nStatus <> ST.GETDIST2) Case Else i.Visible = False @@ -757,6 +777,7 @@ Public Class Scene Else For Each i As ToolStripItem In MenuScene.Items If i.Name = "cmdRestartDrag" Then + i.Text = EgtMsg(1203) ' Drag On i.Visible = True Else i.Visible = False @@ -802,6 +823,9 @@ Public Class Scene ElseIf e.ClickedItem.Name = "cmdCenterPoint" Then m_nSnapType = SP.CENTER RaiseEvent OnChangedSnapPointType(Me, m_nSnapType) + ElseIf e.ClickedItem.Name = "cmdCentroid" Then + m_nSnapType = SP.CENTROID + RaiseEvent OnChangedSnapPointType(Me, m_nSnapType) ElseIf e.ClickedItem.Name = "cmdNearPoint" Then m_nSnapType = SP.PT_NEAR RaiseEvent OnChangedSnapPointType(Me, m_nSnapType)