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