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
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))
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()
' elimino precedente
EgtEmptyGroup(Map.refTopPanelVM.SelPart.nReferenceLayerId)
' Creo riferimento
Dim frPrintSolid As New Frame3d()
If m_SelReference = ReferenceBtn.References.FROM_IMPORT Then
EgtGetGlobFrame(Map.refTopPanelVM.SelPart.nPrintSolidId, frPrintSolid)
frPrintSolid.Setup(New Point3d(frPrintSolid.Orig.x, frPrintSolid.Orig.y, 0))
Else
Dim b3PrintSolid As New BBox3d
EgtGetBBoxGlob(Map.refTopPanelVM.SelPart.nPrintSolidId, GDB_BB.STANDARD, b3PrintSolid)
' Creo riferimento
Dim ptOrig As New Point3d(b3PrintSolid.Min())
Select Case m_SelReference
Case ReferenceBtn.References.TL
ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX
Case ReferenceBtn.References.TR
ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.BL
Case ReferenceBtn.References.BR
ptOrig += b3PrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.TC
ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.ML
ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX
Case ReferenceBtn.References.MR
ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.TC
ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.MR
ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
Case ReferenceBtn.References.BC
ptOrig += b3PrintSolid.DimX() / 2 * Vector3d.X_AX
Case ReferenceBtn.References.MC
ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
End Select
frPrintSolid = New Frame3d(ptOrig)
End If
Dim nFrameId As Integer = EgtCreateGeoFrame(Map.refTopPanelVM.SelPart.nReferenceLayerId, frPrintSolid, GDB_RT.GLOB)
If nFrameId Then
EgtSetName(nFrameId, FRAME_PART)
EgtSetMode(nFrameId, GDB_MD.LOCKED)
Map.refTopPanelVM.SelPart.UpdateReferenceId(nFrameId)
End If
EgtSetInfo(Map.refTopPanelVM.SelPart.nReferenceLayerId, KEY_REFERENCE, m_SelReference)
EgtDraw()
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "FromImport"
'''
''' Returns a command that do CPlaneTop.
'''
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
'''
''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
'''
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 "┌"
Case References.TR
Return "┐"
Case References.BL
Return "└"
Case References.BR
Return "┘"
Case References.TC
Return "┬"
Case References.ML
Return "├"
Case References.MR
Return "┤"
Case References.BC
Return "┴"
Case References.MC
Return "┼"
Case Else
Return "X"
End Select
End Get
End Property
Sub New(Type As References)
m_Type = Type
End Sub
End Class