408 lines
17 KiB
VB.net
408 lines
17 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class ModifyPartPanelVM
|
|
Inherits VMBase
|
|
|
|
'Private m_nImportedPartId As Integer = GDB_ID.NULL
|
|
'Friend ReadOnly Property nImportedPartId As Integer
|
|
' Get
|
|
' Return m_nImportedPartId
|
|
' End Get
|
|
'End Property
|
|
|
|
'Private m_ImportedEntityList As New ObservableCollection(Of GeomEntity)
|
|
'Public Property ImportedEntityList As ObservableCollection(Of GeomEntity)
|
|
' Get
|
|
' Return m_ImportedEntityList
|
|
' End Get
|
|
' Set(value As ObservableCollection(Of GeomEntity))
|
|
' m_ImportedEntityList = value
|
|
' End Set
|
|
'End Property
|
|
|
|
'Private m_SelImportedEntity As GeomEntity
|
|
'Public Property SelImportedEntity As GeomEntity
|
|
' Get
|
|
' Return m_SelImportedEntity
|
|
' End Get
|
|
' Set(value As GeomEntity)
|
|
' m_SelImportedEntity = value
|
|
' EgtDeselectAll()
|
|
' If Not IsNothing(m_SelImportedEntity) Then
|
|
' EgtSelectObj(m_SelImportedEntity.nId)
|
|
' End If
|
|
' EgtDraw()
|
|
' End Set
|
|
'End Property
|
|
'Friend Sub SetSelImportedEntity(nId As Integer)
|
|
' m_SelImportedEntity = Map.refImportPanelVM.ImportedEntityList.FirstOrDefault(Function(x) x.nId = nId)
|
|
' EgtDeselectAll()
|
|
' If Not IsNothing(m_SelImportedEntity) Then
|
|
' EgtSelectObj(m_SelImportedEntity.nId)
|
|
' End If
|
|
' EgtDraw()
|
|
' NotifyPropertyChanged(NameOf(SelImportedEntity))
|
|
'End Sub
|
|
|
|
Private m_ModifyPartList As New ObservableCollection(Of ModifyPart)
|
|
Public ReadOnly Property ModifyPartList As ObservableCollection(Of ModifyPart)
|
|
Get
|
|
Return m_ModifyPartList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelModifyPart As ModifyPart
|
|
Friend Sub SetSelModifyPart(SelModifyPart As ModifyPart)
|
|
m_SelModifyPart = SelModifyPart
|
|
m_SelModifyLayer = Nothing
|
|
End Sub
|
|
Public ReadOnly Property SelModifyPart As ModifyPart
|
|
Get
|
|
Return m_SelModifyPart
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelModifyLayer As ModifyLayer
|
|
Public ReadOnly Property SelModifyLayer As ModifyLayer
|
|
Get
|
|
Return m_SelModifyLayer
|
|
End Get
|
|
End Property
|
|
Friend Sub SetSelModifyLayer(SelModifyLayer As ModifyLayer)
|
|
m_SelModifyPart = m_ModifyPartList.FirstOrDefault(Function(x) x.LayerList.Contains(SelModifyLayer))
|
|
m_SelModifyLayer = SelModifyLayer
|
|
End Sub
|
|
|
|
Private m_SelModifyEntity As ModifyEntity
|
|
Public ReadOnly Property SelModifyEntity As ModifyEntity
|
|
Get
|
|
Return m_SelModifyEntity
|
|
End Get
|
|
End Property
|
|
Friend Sub SetSelModifyEntity(SelModifyEntity As ModifyEntity)
|
|
For Each CurrPart In m_ModifyPartList
|
|
Dim CurrLayer As ModifyLayer = CurrPart.LayerList.FirstOrDefault(Function(x) x.EntityList.Contains(SelModifyEntity))
|
|
If Not IsNothing(CurrLayer) Then
|
|
m_SelModifyPart = CurrPart
|
|
m_SelModifyLayer = CurrLayer
|
|
Exit For
|
|
End If
|
|
Next
|
|
m_SelModifyEntity = SelModifyEntity
|
|
End Sub
|
|
|
|
' Definizione comandi
|
|
Private m_cmdOk As ICommand
|
|
Private m_cmdCancel As ICommand
|
|
|
|
Sub New()
|
|
' Creo riferimento a questa classe in EgtCAM5Map
|
|
Map.SetRefModifyPartPanelVM(Me)
|
|
End Sub
|
|
|
|
#Region "METHODS"
|
|
|
|
Friend Sub Init()
|
|
m_ModifyPartList.Clear()
|
|
' carico pezzi in lista
|
|
For Each PrintPart In Map.refTopPanelVM.PartList
|
|
m_ModifyPartList.Add(New ModifyPart(PrintPart))
|
|
Next
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "COMMANDS"
|
|
|
|
'#Region "SetReference"
|
|
|
|
' Public ReadOnly Property SetReference_Command As ICommand
|
|
' Get
|
|
' If m_cmdSetReference Is Nothing Then
|
|
' m_cmdSetReference = New Command(AddressOf SetReference)
|
|
' End If
|
|
' Return m_cmdSetReference
|
|
' End Get
|
|
' End Property
|
|
|
|
' Public Sub SetReference()
|
|
' If Not IsNothing(SelGeomEntity) Then
|
|
' Dim ChooseReferenceWndVM As New ChooseReferenceWndVM
|
|
' Dim ChooseReferenceWndV As New ChooseReferenceWndV(Application.Current.MainWindow, ChooseReferenceWndVM)
|
|
' If Not ChooseReferenceWndV.ShowDialog() Then Return
|
|
' SelGeomEntity.Reference = ChooseReferenceWndVM.SelReference
|
|
' End If
|
|
' End Sub
|
|
|
|
'#End Region ' SetReference
|
|
|
|
'#Region "AddPart"
|
|
|
|
' Public ReadOnly Property AddPart_Command As ICommand
|
|
' Get
|
|
' If m_cmdAddPart Is Nothing Then
|
|
' m_cmdAddPart = New Command(AddressOf AddPart)
|
|
' End If
|
|
' Return m_cmdAddPart
|
|
' End Get
|
|
' End Property
|
|
|
|
' Public Sub AddPart()
|
|
' m_ImportPartList.Add(New ImportPart)
|
|
' End Sub
|
|
|
|
'#End Region ' AddPart
|
|
|
|
'#Region "RemovePart"
|
|
|
|
' Public ReadOnly Property RemovePart_Command As ICommand
|
|
' Get
|
|
' If m_cmdRemovePart Is Nothing Then
|
|
' m_cmdRemovePart = New Command(AddressOf RemovePart)
|
|
' End If
|
|
' Return m_cmdRemovePart
|
|
' End Get
|
|
' End Property
|
|
|
|
' Public Sub RemovePart()
|
|
' If IsNothing(SelImportLayer) Then
|
|
' ' rimuovo pezzo
|
|
' m_ImportPartList.Remove(SelImportPart)
|
|
' Else
|
|
' ' rimuovo geometria
|
|
' Dim CurrEntity As GeomEntity = m_SelGeomEntity
|
|
' SelImportLayer.EntityList.Remove(m_SelGeomEntity)
|
|
' ' la rimetto in lista importati
|
|
' ImportedEntityList.Add(CurrEntity)
|
|
' End If
|
|
' End Sub
|
|
|
|
'#End Region ' RemovePart
|
|
|
|
#Region "Ok"
|
|
|
|
Public ReadOnly Property Ok_Command As ICommand
|
|
Get
|
|
If m_cmdOk Is Nothing Then
|
|
m_cmdOk = New Command(AddressOf Ok)
|
|
End If
|
|
Return m_cmdOk
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Ok()
|
|
'Dim sErr As New List(Of String)
|
|
'' verifico che tutti i pezzi abbiano una superficie da stampare nel layer apposito
|
|
'For Each CurrPart In m_ImportPartList
|
|
' For Each CurrLayer In CurrPart.LayerList
|
|
' Select Case CurrLayer.Type
|
|
' Case ImportLayer.LayerType.PRINT_SOLID
|
|
' If CurrLayer.EntityList.Count = 0 Then
|
|
' If sErr.Count > 0 Then sErr(sErr.Count - 1) &= Environment.NewLine
|
|
' sErr.Add(CurrPart.ghName & " - No print surface defined!")
|
|
' End If
|
|
' End Select
|
|
' Next
|
|
'Next
|
|
'If sErr.Count > 0 Then
|
|
' MessageBox.Show(String.Concat(sErr), "Error")
|
|
' Return
|
|
'Else
|
|
' ' Creo pezzi e layer necessari
|
|
' For Each ImportPart In m_ImportPartList
|
|
' Dim frImportedPart As New Frame3d
|
|
' EgtGetGroupGlobFrame(m_nImportedPartId, frImportedPart)
|
|
' Dim nPartId As Integer = EgtCreateGroup(GDB_ID.ROOT, frImportedPart)
|
|
' EgtSetName(nPartId, PART)
|
|
' Dim nFrameId As Integer = GDB_ID.NULL
|
|
' Dim b3PrintSolid As New BBox3d
|
|
' Dim nPrintPartLayerId As Integer = GDB_ID.NULL
|
|
' Dim PrintSolidEntity As GeomEntity = Nothing
|
|
' Dim nOriginalPartLayerId As Integer = GDB_ID.NULL
|
|
' Dim nRibsLayerId As Integer = GDB_ID.NULL
|
|
' Dim nShellNumberLayerId As Integer = GDB_ID.NULL
|
|
' Dim nAuxSolidsLayerId As Integer = GDB_ID.NULL
|
|
' Dim nMachStartLayerId As Integer = GDB_ID.NULL
|
|
' Dim nOthersLayerId As Integer = GDB_ID.NULL
|
|
' For Each ImportLayer In ImportPart.LayerList
|
|
' Select Case ImportLayer.Type
|
|
' Case ImportLayer.LayerType.PRINT_SOLID
|
|
' nPrintPartLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nPrintPartLayerId, PRINT_SOLID)
|
|
' If ImportLayer.EntityList.Count > 0 Then
|
|
' PrintSolidEntity = ImportLayer.EntityList(0)
|
|
' EgtRelocateGlob(PrintSolidEntity.nId, nPrintPartLayerId, GDB_POS.LAST_SON)
|
|
' ' calcolo box superficie per creazione riferimento
|
|
' EgtGetBBoxGlob(PrintSolidEntity.nId, GDB_BB.STANDARD, b3PrintSolid)
|
|
' End If
|
|
' 'Case ImportLayer.LayerType.ORIGINAL_SOLID
|
|
' ' nOriginalPartLayerId = EgtCreateGroup(nPartId)
|
|
' ' EgtSetName(nOriginalPartLayerId, ORIGINAL_SOLID)
|
|
' ' For Each GeomEntity In ImportLayer.EntityList
|
|
' ' EgtRelocateGlob(GeomEntity.nId, nOriginalPartLayerId, GDB_POS.LAST_SON)
|
|
' ' Next
|
|
' Case ImportLayer.LayerType.MACH_START
|
|
' nMachStartLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nMachStartLayerId, LAY_MACH_START)
|
|
' Dim nMachStartId As Integer = GDB_ID.NULL
|
|
' If ImportLayer.EntityList.Count > 0 Then
|
|
' For Each GeomEntity In ImportLayer.EntityList
|
|
' ' se punto o curva compo
|
|
' Dim EntityType As GDB_TY = EgtGetType(GeomEntity.nId)
|
|
' Select Case EntityType
|
|
' Case GDB_TY.GEO_POINT, GDB_TY.CRV_COMPO
|
|
' ' gli cambio layer
|
|
' EgtRelocateGlob(GeomEntity.nId, nMachStartLayerId, GDB_POS.LAST_SON)
|
|
' nMachStartId = GeomEntity.nId
|
|
' Case GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_LINE
|
|
' ' altrimenti la trasformo in curva compo
|
|
' nMachStartId = EgtCreateCurveCompo(nMachStartLayerId, GeomEntity.nId, True)
|
|
' End Select
|
|
' EgtSetName(nMachStartId, START_GEOM)
|
|
' ' coloro l'entita' di rosso
|
|
' Dim c3Red As Color3d
|
|
' c3Red.FromColor(System.Drawing.Color.Red)
|
|
' EgtSetColor(nMachStartId, c3Red)
|
|
' Next
|
|
' Else
|
|
' ' creo punto di partenza
|
|
' Dim ptStart As Point3d = b3PrintSolid.Center() - 0.6 * b3PrintSolid.DimY() * Vector3d.Y_AX() - 0.5 * b3PrintSolid.DimZ() * Vector3d.Z_AX()
|
|
' nMachStartId = EgtCreateGeoPoint(nMachStartLayerId, ptStart, GDB_RT.GLOB)
|
|
' EgtSetName(nMachStartId, START_GEOM)
|
|
' ' coloro l'entita' di rosso
|
|
' Dim c3Red As Color3d
|
|
' c3Red.FromColor(System.Drawing.Color.Red)
|
|
' EgtSetColor(nMachStartId, c3Red)
|
|
' End If
|
|
' Case ImportLayer.LayerType.RIBS
|
|
' nRibsLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nRibsLayerId, LAY_RIBS)
|
|
' For Each GeomEntity In ImportLayer.EntityList
|
|
' EgtSetInfo(GeomEntity.nId, KEY_RIB_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
' EgtRelocateGlob(GeomEntity.nId, nRibsLayerId, GDB_POS.LAST_SON)
|
|
' ' coloro l'entita' di viola
|
|
' Dim c3LightBlue As Color3d
|
|
' c3LightBlue.FromColor(System.Drawing.Color.MediumOrchid)
|
|
' EgtSetColor(GeomEntity.nId, c3LightBlue)
|
|
' Next
|
|
' Case ImportLayer.LayerType.SHELL_NUMBER
|
|
' nShellNumberLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nShellNumberLayerId, LAY_SHELL_NBR)
|
|
' For Each GeomEntity In ImportLayer.EntityList
|
|
' EgtSetInfo(GeomEntity.nId, KEY_SHELLNBR_TYPE, ShellNumberEntity.ShellNumberTypes.FROMIMPORT)
|
|
' EgtRelocateGlob(GeomEntity.nId, nShellNumberLayerId, GDB_POS.LAST_SON)
|
|
' ' coloro l'entita' di verde
|
|
' Dim c3LightBlue As Color3d
|
|
' c3LightBlue.FromColor(System.Drawing.Color.Lime)
|
|
' EgtSetColor(GeomEntity.nId, c3LightBlue)
|
|
' Next
|
|
' Case ImportLayer.LayerType.AUX_SOLIDS
|
|
' nAuxSolidsLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nAuxSolidsLayerId, LAY_AUX_SOLIDS)
|
|
' For Each GeomEntity In ImportLayer.EntityList
|
|
' EgtSetInfo(GeomEntity.nId, KEY_AUXSOLID_TYPE, RibEntity.RibTypes.FROMIMPORT)
|
|
' EgtRelocateGlob(GeomEntity.nId, nAuxSolidsLayerId, GDB_POS.LAST_SON)
|
|
' ' coloro l'entita' di oro
|
|
' Dim c3LightBlue As Color3d
|
|
' c3LightBlue.FromColor(System.Drawing.Color.DarkGoldenrod)
|
|
' EgtSetColor(GeomEntity.nId, c3LightBlue)
|
|
' Next
|
|
' Case ImportLayer.LayerType.OTHERS
|
|
' nOthersLayerId = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nOthersLayerId, LAY_OTHERS)
|
|
' For Each GeomEntity In ImportLayer.EntityList
|
|
' EgtRelocateGlob(GeomEntity.nId, nOthersLayerId, GDB_POS.LAST_SON)
|
|
' Next
|
|
' End Select
|
|
' Next
|
|
' ' aggiungo riferimento
|
|
' Dim nReferenceLayerId As Integer = EgtCreateGroup(nPartId)
|
|
' EgtSetName(nReferenceLayerId, LAY_REFERENCE)
|
|
' ' Creo riferimento
|
|
' Dim ptOrig As New Point3d(b3PrintSolid.Min())
|
|
' Select Case PrintSolidEntity.Reference
|
|
' Case ChooseReferenceWndVM.References.TL
|
|
' ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX
|
|
' Case ChooseReferenceWndVM.References.TR
|
|
' ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.BL
|
|
' Case ChooseReferenceWndVM.References.BR
|
|
' ptOrig += b3PrintSolid.DimX() * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.TC
|
|
' ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.ML
|
|
' ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX
|
|
' Case ChooseReferenceWndVM.References.MR
|
|
' ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.TC
|
|
' ptOrig += b3PrintSolid.DimY() * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.MR
|
|
' ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.BC
|
|
' ptOrig += b3PrintSolid.DimX() / 2 * Vector3d.X_AX
|
|
' Case ChooseReferenceWndVM.References.MC
|
|
' ptOrig += b3PrintSolid.DimY() / 2 * Vector3d.Y_AX + b3PrintSolid.DimX() / 2 * Vector3d.X_AX
|
|
' End Select
|
|
' Dim frPrintSolid As New Frame3d(ptOrig)
|
|
' nFrameId = EgtCreateGeoFrame(nReferenceLayerId, frPrintSolid, GDB_RT.GLOB)
|
|
' If nFrameId Then
|
|
' EgtSetName(nFrameId, FRAME_PART)
|
|
' EgtSetMode(nFrameId, GDB_MD.LOCKED)
|
|
' End If
|
|
' EgtSetInfo(nReferenceLayerId, KEY_REFERENCE, PrintSolidEntity.Reference)
|
|
' ' appoggio il pezzo sulla tavola
|
|
' EgtMove( nPartId, New Vector3d(0, 0, -b3PrintSolid.Min.z))
|
|
' ' lo aggiungo a lista pezzi
|
|
' Dim sFilePath As String = ""
|
|
' EgtGetInfo(m_nImportedPartId, FILE_PATH, sFilePath)
|
|
' EgtSetInfo(nPartId, FILE_PATH, sFilePath)
|
|
' EgtSetInfo(nPartId, "PartOnTable", 1)
|
|
' Dim NewPart As New Print3dPartVM(nPartId, nPrintPartLayerId, PrintSolidEntity.nId, nOriginalPartLayerId, nReferenceLayerId, nFrameId, nMachStartLayerId, nRibsLayerId, nShellNumberLayerId, nAuxSolidsLayerId, nOthersLayerId, sFilePath)
|
|
' Map.refTopPanelVM.PartList.Add(NewPart)
|
|
' Next
|
|
'End If
|
|
''EgtAddMachGroup("3dPrint")
|
|
''EgtSetTable("Tab")
|
|
|
|
''Dim nRawId As Integer = EgtAddRawPart(b3PrintSolid.Min, b3PrintSolid.DimX, b3PrintSolid.DimY, b3PrintSolid.DimZ, New Color3d(128, 128, 128, 30))
|
|
''EgtAddPartToRawPart(nPartId, b3PrintSolid.Min, nRawId)
|
|
''EgtMoveToCornerRawPart(nRawId, New Point3d(dPosX, dPosY, 0), MCH_CR.BL)
|
|
|
|
''EgtResetCurrMachGroup()
|
|
|
|
'' seleziono ultimo pezzo aggiunto
|
|
'Map.refTopPanelVM.SelLastPart()
|
|
'' elimino vecchio pezzo d'importazione
|
|
'EgtErase(m_nImportedPartId)
|
|
|
|
'EgtDraw()
|
|
' ripristino modalita' standard
|
|
Map.refTopPanelVM.SelPage = Pages.MODIFY
|
|
End Sub
|
|
|
|
#End Region ' Ok
|
|
|
|
#Region "Cancel"
|
|
|
|
Public ReadOnly Property Cancel_Command As ICommand
|
|
Get
|
|
If m_cmdCancel Is Nothing Then
|
|
m_cmdCancel = New Command(AddressOf Cancel)
|
|
End If
|
|
Return m_cmdCancel
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Cancel()
|
|
' ripristino modalita' standard
|
|
Map.refTopPanelVM.SelPage = Pages.MODIFY
|
|
End Sub
|
|
|
|
#End Region ' Cancel
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class
|