EgtUILib 2.7l2 :
- aggiunta gestione selezione per colore.
This commit is contained in:
@@ -846,6 +846,40 @@ Public Class Controller
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub MouseSelectedColor(nId As Integer)
|
||||
' recupero stato e colore
|
||||
Dim nStat As Integer = GDB_ST.ON_
|
||||
EgtGetStatus(nId, nStat)
|
||||
Dim colRef As Color3d
|
||||
EgtGetCalcColor( nId, colRef)
|
||||
' eseguo selezione o deselezione ed aggiorno
|
||||
EnableCommandLog()
|
||||
Dim nPartId As Integer = EgtGetFirstPart( True)
|
||||
While nPartId <> GDB_ID.NULL
|
||||
Dim nLayerId As Integer = EgtGetFirstLayer( nPartId, True)
|
||||
While nLayerId <> GDB_ID.NULL
|
||||
Dim nEntId As Integer = EgtGetFirstInGroup( nLayerId)
|
||||
While nEntId <> GDB_ID.NULL
|
||||
Dim nEntStat As GDB_ST = GDB_ST.ON_
|
||||
Dim colEnt As Color3d
|
||||
If EgtGetCalcStatus( nEntId, nEntStat) AndAlso nEntStat <> GDB_ST.OFF AndAlso
|
||||
EgtGetCalcColor( nEntId, colEnt) AndAlso Color3d.Similar( colEnt, colRef, 10) Then
|
||||
If nStat <> GDB_ST.SEL Then
|
||||
EgtSelectObj(nEntId)
|
||||
Else
|
||||
EgtDeselectObj(nEntId)
|
||||
End If
|
||||
End If
|
||||
nEntId = EgtGetNext( nEntId)
|
||||
End While
|
||||
nLayerId = EgtGetNextLayer( nLayerId, True)
|
||||
End While
|
||||
nPartId = EgtGetNextPart( nPartId, True)
|
||||
End While
|
||||
DisableCommandLog()
|
||||
EgtDraw()
|
||||
End Sub
|
||||
|
||||
Public Sub MouseSelectedPart(nId As Integer)
|
||||
' recupero il pezzo
|
||||
Dim nPartId = EgtGetParent(EgtGetParent(nId))
|
||||
|
||||
@@ -977,6 +977,12 @@ Structure Color3d
|
||||
If nVal > nMax Then Return nMax
|
||||
Return nVal
|
||||
End Function
|
||||
' Conronto di colori con tolleranza
|
||||
Shared Function Similar( ByRef colOne As Color3d, ByRef colTwo As Color3d, nTol As Integer) As Boolean
|
||||
return Math.Abs( colOne.R - colTwo.R) < nTol AndAlso
|
||||
Math.Abs( colOne.G - colTwo.G) < nTol AndAlso
|
||||
Math.Abs( colOne.B - colTwo.B) < nTol
|
||||
End Function
|
||||
End Structure
|
||||
|
||||
Structure FlagPar
|
||||
|
||||
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
|
||||
' È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
|
||||
' utilizzando l'asterisco (*) come descritto di seguito:
|
||||
|
||||
<Assembly: AssemblyVersion("2.7.11.3")>
|
||||
<Assembly: AssemblyFileVersion("2.7.11.3")>
|
||||
<Assembly: AssemblyVersion("2.7.12.2")>
|
||||
<Assembly: AssemblyFileVersion("2.7.12.2")>
|
||||
|
||||
Generated
+10
-3
@@ -29,6 +29,7 @@ Partial Class Scene
|
||||
Me.cmdDeselectAll = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.sepSel1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cmdWinSelect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cmdColorSelect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cmdSelectPart = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cmdSelectLayer = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cmdSelectPath = New System.Windows.Forms.ToolStripMenuItem()
|
||||
@@ -56,12 +57,12 @@ Partial Class Scene
|
||||
'
|
||||
'MenuScene
|
||||
'
|
||||
Me.MenuScene.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectAllVisible, Me.cmdSelectAll, Me.cmdDeselectAll, Me.sepSel1, Me.cmdWinSelect, Me.cmdSelectPart, Me.cmdSelectLayer, Me.cmdSelectPath, Me.cmdSelectPathAuto, Me.cmdSelectEntity, 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.cmdExcludeSurfFromSel, Me.cmdExcludeSurfFromSnap, Me.sepSelPnt2, Me.cmdStopDrag})
|
||||
Me.MenuScene.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectAllVisible, Me.cmdSelectAll, Me.cmdDeselectAll, Me.sepSel1, Me.cmdWinSelect, Me.cmdSelectPart, Me.cmdSelectLayer, Me.cmdSelectPath, Me.cmdSelectPathAuto, Me.cmdColorSelect, Me.cmdSelectEntity, 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.cmdExcludeSurfFromSel, Me.cmdExcludeSurfFromSnap, Me.sepSelPnt2, Me.cmdStopDrag})
|
||||
Me.MenuScene.Name = "ContextMenuStrip1"
|
||||
Me.MenuScene.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
|
||||
Me.MenuScene.ShowCheckMargin = true
|
||||
Me.MenuScene.ShowImageMargin = false
|
||||
Me.MenuScene.Size = New System.Drawing.Size(193, 572)
|
||||
Me.MenuScene.Size = New System.Drawing.Size(193, 594)
|
||||
'
|
||||
'cmdSelectAllVisible
|
||||
'
|
||||
@@ -94,6 +95,12 @@ Partial Class Scene
|
||||
Me.cmdWinSelect.Size = New System.Drawing.Size(192, 22)
|
||||
Me.cmdWinSelect.Text = "Select Window"
|
||||
'
|
||||
'cmdColorSelect
|
||||
'
|
||||
Me.cmdColorSelect.Name = "cmdColorSelect"
|
||||
Me.cmdColorSelect.Size = New System.Drawing.Size(192, 22)
|
||||
Me.cmdColorSelect.Text = "Select Color"
|
||||
'
|
||||
'cmdSelectPart
|
||||
'
|
||||
Me.cmdSelectPart.Name = "cmdSelectPart"
|
||||
@@ -278,5 +285,5 @@ End Sub
|
||||
Friend WithEvents cmdExcludeSurfFromSel As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents cmdSelectEntity As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents cmdSelectAllVisible As System.Windows.Forms.ToolStripMenuItem
|
||||
|
||||
Friend WithEvents cmdColorSelect As ToolStripMenuItem
|
||||
End Class
|
||||
|
||||
@@ -41,6 +41,7 @@ Public Class Scene
|
||||
GETDIST2
|
||||
SELPOINT
|
||||
SELPOINTZ
|
||||
SELCOLOR
|
||||
End Enum
|
||||
Private m_nSnapType As SP = SP.PT_GRID ' tipo di snap in selezione punto
|
||||
Private m_bAlsoSelDir As Boolean = False ' abilita anche selezione direzione quando selezione punto
|
||||
@@ -266,6 +267,7 @@ Public Class Scene
|
||||
Public Event OnMouseSelectedAll(sender As Object, bOnlyVisible As Boolean)
|
||||
Public Event OnMouseDeselectedAll(sender As Object)
|
||||
Public Event OnMouseSelectedObj(sender As Object, nId As Integer, bLast As Boolean)
|
||||
Public Event OnMouseSelectedColor(sender As Object, nId As Integer)
|
||||
Public Event OnMouseSelectedPart(sender As Object, nId As Integer)
|
||||
Public Event OnMouseSelectedLayer(sender As Object, nId As Integer)
|
||||
Public Event OnMouseSelectedPath(sender As Object, nId As Integer, bHaltOnFork As Boolean)
|
||||
@@ -344,8 +346,8 @@ Public Class Scene
|
||||
End If
|
||||
m_nStatus = ST.SEL
|
||||
End If
|
||||
' se stato SEL, SELPART, SELLAYER
|
||||
ElseIf m_nStatus = ST.SEL Or m_nStatus = ST.SELPART Or m_nStatus = ST.SELLAYER Then
|
||||
' se stato SEL, SELCOLOR, SELPART, SELLAYER
|
||||
ElseIf m_nStatus = ST.SEL Or m_nStatus = ST.SELCOLOR Or m_nStatus = ST.SELPART Or m_nStatus = ST.SELLAYER Then
|
||||
' SEL + Ctrl + Alt --> SELLAYER
|
||||
If m_nStatus = ST.SEL And (ModifierKeys And Keys.Control) = Keys.Control And (ModifierKeys And Keys.Alt) = Keys.Alt Then m_nStatus = ST.SELLAYER
|
||||
' SEL + Alt --> SELPART
|
||||
@@ -357,6 +359,8 @@ Public Class Scene
|
||||
Select Case m_nStatus
|
||||
Case ST.SEL
|
||||
RaiseEvent OnMouseSelectedObj(Me, nId, True)
|
||||
Case ST.SELCOLOR
|
||||
RaiseEvent OnMouseSelectedColor(Me, nId)
|
||||
Case ST.SELPART
|
||||
RaiseEvent OnMouseSelectedPart(Me, nId)
|
||||
Case ST.SELLAYER
|
||||
@@ -946,7 +950,8 @@ Public Class Scene
|
||||
|
||||
Private Sub PrepareMenuScene()
|
||||
' per selezione oggetti
|
||||
If m_nStatus = ST.SEL Or m_nStatus = ST.WINSEL Or m_nStatus = ST.SELPART Or m_nStatus = ST.SELLAYER Or m_nStatus = ST.SELPATH Or m_nStatus = ST.SELPATHAUTO Then
|
||||
If m_nStatus = ST.SEL Or m_nStatus = ST.WINSEL Or m_nStatus = ST.SELCOLOR Or
|
||||
m_nStatus = ST.SELPART Or m_nStatus = ST.SELLAYER Or m_nStatus = ST.SELPATH Or m_nStatus = ST.SELPATHAUTO Then
|
||||
For Each i As ToolStripItem In MenuScene.Items
|
||||
Select Case i.Name
|
||||
Case "cmdSelectAllVisible"
|
||||
@@ -964,6 +969,10 @@ Public Class Scene
|
||||
i.Text = EgtMsg(1005) ' Select Window
|
||||
i.Visible = True
|
||||
DirectCast(i, ToolStripMenuItem).Checked = (m_nStatus = ST.WINSEL)
|
||||
Case "cmdColorSelect"
|
||||
i.Text = EgtMsg(1006) ' Select Color
|
||||
i.Visible = True
|
||||
DirectCast(i, ToolStripMenuItem).Checked = (m_nStatus = ST.SELCOLOR)
|
||||
Case "cmdSelectPart"
|
||||
i.Text = EgtMsg(1007) ' Select Part
|
||||
i.Visible = True
|
||||
@@ -1104,6 +1113,8 @@ Public Class Scene
|
||||
RaiseEvent OnMouseDeselectedAll(Me)
|
||||
ElseIf e.ClickedItem.Name = "cmdWinSelect" Then
|
||||
m_nStatus = ST.WINSEL
|
||||
ElseIf e.ClickedItem.Name = "cmdColorSelect" Then
|
||||
m_nStatus = ST.SELCOLOR
|
||||
ElseIf e.ClickedItem.Name = "cmdSelectPart" Then
|
||||
m_nStatus = ST.SELPART
|
||||
ElseIf e.ClickedItem.Name = "cmdSelectLayer" Then
|
||||
@@ -1244,7 +1255,7 @@ Public Class Scene
|
||||
Private Function IsRestorableCurrStatus() As Boolean
|
||||
Select Case m_nStatus
|
||||
Case ST.NULL, ST.SEL, ST.ANALYZE, ST.SELPART, ST.SELLAYER,
|
||||
ST.SELPATH, ST.SELPATHAUTO, ST.GETDIST, ST.GETDIST2, ST.SELPOINT, ST.SELPOINTZ
|
||||
ST.SELPATH, ST.SELPATHAUTO, ST.GETDIST, ST.GETDIST2, ST.SELPOINT, ST.SELPOINTZ, ST.SELCOLOR
|
||||
Return True
|
||||
Case Else
|
||||
Return False
|
||||
@@ -1264,7 +1275,7 @@ Public Class Scene
|
||||
Cursor = Cursors.Default
|
||||
Return True
|
||||
ElseIf m_nOldStatus = ST.SEL Or m_nOldStatus = ST.SELPART Or m_nOldStatus = ST.SELLAYER Or
|
||||
m_nOldStatus = ST.SELPATH Or m_nOldStatus = ST.SELPATHAUTO Then
|
||||
m_nOldStatus = ST.SELPATH Or m_nOldStatus = ST.SELPATHAUTO Or m_nOldStatus = ST.SELCOLOR Then
|
||||
m_nStatus = m_nOldStatus
|
||||
Cursor = New Cursor(Me.GetType(), "Select.cur")
|
||||
Return True
|
||||
|
||||
Reference in New Issue
Block a user