Files
icarus/Icarus/ReferencePanel/ReferencePanelVM.vb
T
Emmanuele Sassi e67c79992c - aggiornati bottoni Ok, Cancel su molte pagine
- cambiate icone Reference
- aggiunte icone in slice manager
- spostato Update in TFS vicino a Reset
2023-04-07 09:49:44 +02:00

247 lines
9.2 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class ReferencePanelVM
Inherits VMBase
Private m_ReferenceList As New List(Of ReferenceBtn)({New ReferenceBtn(ReferenceBtn.References.TL),
New ReferenceBtn(ReferenceBtn.References.TC),
New ReferenceBtn(ReferenceBtn.References.TR),
New ReferenceBtn(ReferenceBtn.References.ML),
New ReferenceBtn(ReferenceBtn.References.MC),
New ReferenceBtn(ReferenceBtn.References.MR),
New ReferenceBtn(ReferenceBtn.References.BL),
New ReferenceBtn(ReferenceBtn.References.BC),
New ReferenceBtn(ReferenceBtn.References.BR)})
Public Property ReferenceList As List(Of ReferenceBtn)
Get
Return m_ReferenceList
End Get
Set(value As List(Of ReferenceBtn))
m_ReferenceList = value
End Set
End Property
Private m_SelReference As ReferenceBtn.References
Public Property ghSelReference As ReferenceBtn
Get
Return m_ReferenceList.FirstOrDefault(Function(x) x.Type = m_SelReference)
End Get
Set(value As ReferenceBtn)
m_SelReference = value.Type
EgtSetInfo(Map.refTopPanelVM.SelPart.nReferenceLayerId, KEY_REFERENCE, value.Type)
UpdateFramePosition()
End Set
End Property
Public Property FromImport_IsChecked As Boolean
Get
Return m_SelReference = ReferenceBtn.References.FROM_IMPORT
End Get
Set(value As Boolean)
If value Then
m_SelReference = ReferenceBtn.References.FROM_IMPORT
NotifyPropertyChanged(NameOf(ghSelReference))
EgtSetInfo(Map.refTopPanelVM.SelPart.nReferenceLayerId, KEY_REFERENCE, ReferenceBtn.References.FROM_IMPORT)
UpdateFramePosition()
End If
End Set
End Property
' Definizione comandi
Private m_cmdFromImport As ICommand
#Region "CONSTRUCTORS"
Sub New()
' Creo riferimento a questa classe in EgtCAM5Map
Map.SetRefReferencePanelVM(Me)
End Sub
#End Region ' CONSTRUCTORS
#Region "METHODS"
Friend Sub Init()
Dim nReference As Integer = 3
EgtGetInfo(Map.refTopPanelVM.SelPart.nReferenceLayerId, KEY_REFERENCE, nReference)
m_SelReference = nReference
NotifyPropertyChanged(NameOf(ghSelReference))
End Sub
Friend Sub UpdateFramePosition(Optional SelPart As Print3dPartVM = Nothing)
Dim SelReference As Integer = ReferenceBtn.References.BL
If IsNothing(SelPart) Then
SelPart = Map.refTopPanelVM.SelPart
End If
EgtGetInfo(SelPart.nReferenceLayerId, KEY_REFERENCE, SelReference)
' elimino precedente
EgtEmptyGroup(SelPart.nReferenceLayerId)
' Creo riferimento
Dim frPrintSolid As New Frame3d()
If SelReference = ReferenceBtn.References.FROM_IMPORT Then
EgtGetGlobFrame(SelPart.nPrintSolidId, frPrintSolid)
frPrintSolid.Setup(New Point3d(frPrintSolid.Orig.x, frPrintSolid.Orig.y, 0))
Else
Dim b3ToBePrintSolid As BBox3d = Map.refDispositionPanelVM.GetSolidForReferenceBBox(SelPart)
' Creo riferimento
Dim ptOrig As New Point3d(b3ToBePrintSolid.Min())
Select Case SelReference
Case ReferenceBtn.References.TL
ptOrig += b3ToBePrintSolid.DimY() * Vector3d.Y_AX
Case ReferenceBtn.References.TR
ptOrig += b3ToBePrintSolid.DimY() * Vector3d.Y_AX + b3ToBePrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.BL
Case ReferenceBtn.References.BR
ptOrig += b3ToBePrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.TC
ptOrig += b3ToBePrintSolid.DimY() * Vector3d.Y_AX + b3ToBePrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.ML
ptOrig += b3ToBePrintSolid.DimY() / 2 * Vector3d.Y_AX
Case ReferenceBtn.References.MR
ptOrig += b3ToBePrintSolid.DimY() / 2 * Vector3d.Y_AX + b3ToBePrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.TC
ptOrig += b3ToBePrintSolid.DimY() * Vector3d.Y_AX + b3ToBePrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.MR
ptOrig += b3ToBePrintSolid.DimY() / 2 * Vector3d.Y_AX + b3ToBePrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.BC
ptOrig += b3ToBePrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.MC
ptOrig += b3ToBePrintSolid.DimY() / 2 * Vector3d.Y_AX + b3ToBePrintSolid.DimX() / 2 * Vector3d.X_AX
End Select
Dim vtMovedPart As Vector3d
If EgtGetInfo(SelPart.nPartId, KEY_MOVEDPART, vtMovedPart) Then
ptOrig = ptOrig - vtMovedPart
ElseIf EgtGetInfo(SelPart.nPartId, KEY_MOVEDPART2, vtMovedPart) Then
ptOrig = ptOrig - vtMovedPart
End If
Dim nPartFrameId As Integer = EgtCreateGeoFrame(SelPart.nPartReferenceLayerId, New Frame3d(ptOrig), GDB_RT.GLOB)
EgtSetStatus(nPartFrameId, GDB_ST.OFF)
' elimino componente Z
ptOrig = ptOrig + New Vector3d(0, 0, -ptOrig.z)
frPrintSolid = New Frame3d(ptOrig)
End If
Dim nFrameId As Integer = EgtCreateGeoFrame(SelPart.nReferenceLayerId, frPrintSolid, GDB_RT.GLOB)
If nFrameId Then
EgtSetName(nFrameId, FRAME_PART)
EgtSetMode(nFrameId, GDB_MD.LOCKED)
SelPart.UpdateReferenceId(nFrameId)
End If
Map.refDispositionPanelVM.RefreshPos()
EgtDraw()
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "FromImport"
''' <summary>
''' Returns a command that do CPlaneTop.
''' </summary>
Public ReadOnly Property FromImport_Command As ICommand
Get
If m_cmdFromImport Is Nothing Then
m_cmdFromImport = New Command(AddressOf FromImport)
End If
Return m_cmdFromImport
End Get
End Property
''' <summary>
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
''' </summary>
Public Sub FromImport()
m_SelReference = ReferenceBtn.References.FROM_IMPORT
NotifyPropertyChanged(NameOf(ghSelReference))
UpdateFramePosition()
End Sub
#End Region ' FromImport
#End Region ' COMMANDS
End Class
Public Class ReferenceBtn
Public Enum References As Integer
TL = 1
TR = 2
BL = 3
BR = 4
TC = 5
ML = 6
MR = 7
BC = 8
MC = 9
FROM_IMPORT = 10
End Enum
Private m_Type As References
Public ReadOnly Property Type As References
Get
Return m_Type
End Get
End Property
Public ReadOnly Property sText As String
Get
Select Case Type
Case References.TL
Return "/Resources/ReferencePanel/TL.png" '"┌"
Case References.TR
Return "/Resources/ReferencePanel/TR.png" '"┐"
Case References.BL
Return "/Resources/ReferencePanel/BL.png" '"└"
Case References.BR
Return "/Resources/ReferencePanel/BR.png" '"┘"
Case References.TC
Return "/Resources/ReferencePanel/TC.png" '"┬"
Case References.ML
Return "/Resources/ReferencePanel/ML.png" '"├"
Case References.MR
Return "/Resources/ReferencePanel/MR.png" '"┤"
Case References.BC
Return "/Resources/ReferencePanel/BC.png" '"┴"
Case References.MC
Return "/Resources/ReferencePanel/MC.png" '"┼"
Case Else
Return "" '"X"
End Select
End Get
End Property
Public ReadOnly Property sSelText As String
Get
Select Case Type
Case References.TL
Return "/Resources/ReferencePanel/White_TL.png" '"┌"
Case References.TR
Return "/Resources/ReferencePanel/White_TR.png" '"┐"
Case References.BL
Return "/Resources/ReferencePanel/White_BL.png" '"└"
Case References.BR
Return "/Resources/ReferencePanel/White_BR.png" '"┘"
Case References.TC
Return "/Resources/ReferencePanel/White_TC.png" '"┬"
Case References.ML
Return "/Resources/ReferencePanel/White_ML.png" '"├"
Case References.MR
Return "/Resources/ReferencePanel/White_MR.png" '"┤"
Case References.BC
Return "/Resources/ReferencePanel/White_BC.png" '"┴"
Case References.MC
Return "/Resources/ReferencePanel/White_MC.png" '"┼"
Case Else
Return "" '"X"
End Select
End Get
End Property
Sub New(Type As References)
m_Type = Type
End Sub
End Class