216 lines
7.5 KiB
VB.net
216 lines
7.5 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
|
|
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 "┌"
|
|
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 |