diff --git a/3dPrintApp/Constants/Const3dPrint.vb b/3dPrintApp/Constants/Const3dPrint.vb
index 34c2e65..a463b79 100644
--- a/3dPrintApp/Constants/Const3dPrint.vb
+++ b/3dPrintApp/Constants/Const3dPrint.vb
@@ -96,6 +96,8 @@
Public Const MAC_RIBSLEADOUTWIPEDIR = "RibsLeadOutWipeDir"
Public Const MAC_MATERIALS = "Materials"
+ ' parametri StartMach
+ Public Const LAY_NEWSTART = "NewStart"
Public Const FILE_PATH = "FilePath"
diff --git a/3dPrintApp/Constants/ConstGen.vb b/3dPrintApp/Constants/ConstGen.vb
index ffbf0cd..5463dfd 100644
--- a/3dPrintApp/Constants/ConstGen.vb
+++ b/3dPrintApp/Constants/ConstGen.vb
@@ -39,6 +39,7 @@ Public Module ConstGen
' MOdalita' di modifica
Public Enum ModifyModes As Integer
NULL = 0
+ SELECT_ = 1
DISPOSITION = 2
REFERENCE = 3
STARTMACH = 4
diff --git a/3dPrintApp/ControllerInputPanel/ControllerInputPanelVM.vb b/3dPrintApp/ControllerInputPanel/ControllerInputPanelVM.vb
index 4bc2a73..2441db9 100644
--- a/3dPrintApp/ControllerInputPanel/ControllerInputPanelVM.vb
+++ b/3dPrintApp/ControllerInputPanel/ControllerInputPanelVM.vb
@@ -223,6 +223,7 @@ Public Class ControllerInputPanelVM
Friend Sub PrepareInputBox(sTitle As String, sLabel As String, sCheckLabel As String,
bShowCombo As Boolean, bShowBtn As Boolean)
+ If Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.DISPOSITION Then Return
Title = sTitle
If sLabel <> "" Then
Message = sLabel
diff --git a/3dPrintApp/DispositionPanel/DispositionPanelV.xaml b/3dPrintApp/DispositionPanel/DispositionPanelV.xaml
index 6726655..f126e04 100644
--- a/3dPrintApp/DispositionPanel/DispositionPanelV.xaml
+++ b/3dPrintApp/DispositionPanel/DispositionPanelV.xaml
@@ -20,6 +20,7 @@
+
@@ -59,6 +60,12 @@
Margin="5,0,0,0"
Style="{StaticResource LeftPanel_TextBox}"/>
+
+
+
@@ -76,6 +83,7 @@
+
+
+
+
diff --git a/3dPrintApp/DispositionPanel/DispositionPanelVM.vb b/3dPrintApp/DispositionPanel/DispositionPanelVM.vb
index 4044452..09a73b7 100644
--- a/3dPrintApp/DispositionPanel/DispositionPanelVM.vb
+++ b/3dPrintApp/DispositionPanel/DispositionPanelVM.vb
@@ -152,6 +152,14 @@ Public Class DispositionPanelVM
End Set
End Property
+ ' riferimento griglia prima della rotazione
+ Private m_PrevGridOrigin As New Frame3d
+ Private m_bRotating As Boolean
+
+ ' Definizione comandi
+ Private m_cmdDragMove As ICommand
+ Private m_cmdDragRotate As ICommand
+
Sub New()
' Creo riferimento a questa classe in EgtCAM5Map
Map.SetRefDispositionPanelVM(Me)
@@ -167,6 +175,94 @@ Public Class DispositionPanelVM
NotifyPropertyChanged(NameOf(sZPos))
End Sub
+ Private Sub InitCommand()
+ ' attivo modifiche su scena
+ Map.refSceneHostVM.MainScene.ResetStatus()
+ ' seleziono percorso corrente
+ EgtDeselectAll()
+ EgtSelectObj(Map.refTopPanelVM.SelPart.nPartId)
+ End Sub
+
+ Friend Sub UpdateUi()
+ RefreshPos()
+ If m_bRotating Then
+ m_bRotating = False
+ ' ripristino griglia
+ EgtSetGridFrame(m_PrevGridOrigin)
+ EgtDraw()
+ End If
+ End Sub
+
+ Friend Sub OnKeyDown(Key As Forms.Keys)
+ If Key = Forms.Keys.Escape Then
+ If m_bRotating Then
+ m_bRotating = False
+ ' ripristino griglia
+ EgtSetGridFrame(m_PrevGridOrigin)
+ EgtDraw()
+ End If
+ End If
+ End Sub
+
+#Region "COMMANDS"
+
+#Region "DragMove"
+
+ Public ReadOnly Property DragMove_Command As ICommand
+ Get
+ If m_cmdDragMove Is Nothing Then
+ m_cmdDragMove = New Command(AddressOf DragMove)
+ End If
+ Return m_cmdDragMove
+ End Get
+ End Property
+
+ Public Sub DragMove()
+ InitCommand()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.MOVE)
+ End Sub
+
+#End Region ' DragMove
+
+#Region "DragRotate"
+
+ Public ReadOnly Property DragRotate_Command As ICommand
+ Get
+ If m_cmdDragRotate Is Nothing Then
+ m_cmdDragRotate = New Command(AddressOf DragRotate)
+ End If
+ Return m_cmdDragRotate
+ End Get
+ End Property
+
+ Public Sub DragRotate()
+ m_bRotating = True
+ m_PrevGridOrigin = EgtGetGridFrame()
+ InitCommand()
+ If AreSameVectorApprox(vtSelRotAxes, Vector3d.X_AX) Then
+ Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.RIGHT)
+ ElseIf AreSameVectorApprox(vtSelRotAxes, Vector3d.Y_AX) Then
+ Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.FRONT)
+ ElseIf AreSameVectorApprox(vtSelRotAxes, Vector3d.Z_AX) Then
+ Map.refSceneHostVM.MainController.SetLastInteger(Controller.GRID_TYPE.TOP)
+ End If
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.GRID)
+ ' recupero il piano di griglia corrente
+ Dim frCurr As New Frame3d(EgtGetGridFrame())
+ ' ne modifico l'origine per portarla sullo stesso piano del punto( o punto inizio della curva)
+ Dim StartPoint As Point3d
+ EgtStartPoint(Map.refTopPanelVM.SelPart.nPartId, StartPoint)
+ frCurr.Move(StartPoint - frCurr.Orig())
+ ' imposto nuova griglia
+ EgtSetGridFrame(frCurr)
+ EgtDraw()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.ROTATE)
+ End Sub
+
+#End Region ' DragMove
+
+#End Region ' COMMANDS
+
End Class
Public Class CenterToolTipConverter
diff --git a/3dPrintApp/LeftPanel/LeftPanelVM.vb b/3dPrintApp/LeftPanel/LeftPanelVM.vb
index 1be22e1..6321022 100644
--- a/3dPrintApp/LeftPanel/LeftPanelVM.vb
+++ b/3dPrintApp/LeftPanel/LeftPanelVM.vb
@@ -26,6 +26,15 @@ Public Class LeftPanelVM
End Set
End Property
Friend Sub SetSelPanel(Panel As Panels)
+ ' esco da modalita' precedente
+ Select Case m_SelPanel
+ Case Panels.IMPORT
+
+ Case Panels.DISPOSITION
+
+ Case Panels.STARTMACH
+ Map.refStartMachPanelVM.Dispose()
+ End Select
m_SelPanel = Panel
Select Case Panel
Case Panels.IMPORT
diff --git a/3dPrintApp/MachiningManager/CurrMachining.vb b/3dPrintApp/MachiningManager/CurrMachining.vb
index 6137861..68991a1 100644
--- a/3dPrintApp/MachiningManager/CurrMachining.vb
+++ b/3dPrintApp/MachiningManager/CurrMachining.vb
@@ -1273,11 +1273,10 @@ Public Class CurrStringMachiningParam
m_sOrigValue = m_sValue
End Sub
- Friend Overrides Sub WriteParamOnDb(nIndex As Integer)
- Dim sMacIniFilePath As String = Map.refMainWindowVM.MainWindowM.sMachiningsDir & "/Machinings.ini"
+ Friend Overrides Sub WriteParamInPart(nIndex As Integer)
Select Case Type
- Case Params.STRANDH
- 'EgtSetInfo(nPartId, MAC_STRANDH, sWriteValue)
+ 'Case Params.STRANDH
+ 'EgtSetInfo(nPartId, MAC_STRANDH, sWriteValue)
End Select
End Sub
@@ -1400,8 +1399,7 @@ Public Class CurrComboMachiningParam
End If
End Sub
- Friend Overrides Sub WriteParamOnDb(nPartId As Integer)
- Dim sMacIniFilePath As String = Map.refMainWindowVM.MainWindowM.sMachiningsDir & "/Machinings.ini"
+ Friend Overrides Sub WriteParamInPart(nPartId As Integer)
Select Case Type
Case Params.STRANDORDER
EgtSetInfo(nPartId, MAC_STRANDORDER, m_SelValue.Id)
@@ -1500,8 +1498,7 @@ Public Class CurrCheckMachiningParam
End If
End Sub
- Friend Overrides Sub WriteParamOnDb(nPartId As Integer)
- Dim sMacIniFilePath As String = Map.refMainWindowVM.MainWindowM.sMachiningsDir & "/Machinings.ini"
+ Friend Overrides Sub WriteParamInPart(nPartId As Integer)
Select Case Type
Case Params.SLICING45
EgtSetInfo(nPartId, MAC_SLICING45, If(m_bValue, 1, 0))
diff --git a/3dPrintApp/SceneHost/MySceneHostVM.vb b/3dPrintApp/SceneHost/MySceneHostVM.vb
index 42a73da..5605a4c 100644
--- a/3dPrintApp/SceneHost/MySceneHostVM.vb
+++ b/3dPrintApp/SceneHost/MySceneHostVM.vb
@@ -124,6 +124,7 @@ Public Class MySceneHostVM
AddHandler MainScene.OnMouseDownScene, AddressOf OnMouseDownScene
AddHandler MainScene.OnMouseMoveScene, AddressOf OnMouseMoveScene
AddHandler MainScene.OnMouseUpScene, AddressOf OnMouseUpScene
+ AddHandler MainScene.OnMouseSelectingObj, AddressOf OnMouseSelectingObj
AddHandler MainScene.OnMouseSelectedObj, AddressOf OnMouseSelectedObj
AddHandler MainScene.OnMouseSelectedPart, AddressOf OnMouseSelectedPart
AddHandler MainScene.OnMouseSelectedLayer, AddressOf OnMouseSelectedLayer
@@ -333,18 +334,43 @@ Public Class MySceneHostVM
Private Sub OnMouseSetObjFilterForSelect(sender As Object, bZeroDim As Boolean, bCurve As Boolean,
bSurf As Boolean, bVolume As Boolean, bExtra As Boolean)
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseSetObjFilterForSelect(bZeroDim, bCurve, bSurf, bVolume, bExtra)
+ End If
End Sub
Private Sub OnMouseSelectedAll(ByVal sender As Object, bOnlyVisble As Boolean)
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseSelectedAll(bOnlyVisble)
+ End If
End Sub
Private Sub OnMouseDeselectedAll(ByVal sender As Object)
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseDeselectedAll()
+ End If
End Sub
Private Sub OnMouseDownScene(sender As Object, e As Forms.MouseEventArgs)
If e.Button = Forms.MouseButtons.Middle Then Return
If Map.refInstrumentPanelVM.GetDistIsChecked Then Return
- If Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.DISPOSITION Then Basic_OnMouseDownScene(sender, e)
+ ' Se in modalità modifica
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ Case ModifyModes.SELECT_
+ Part_OnMouseDownScene(sender, e)
+ Case ModifyModes.STARTMACH
+ StartMach_OnMouseDownScene(sender, e)
+ End Select
+ End If
+
'Select Case Map.refMainMenuVM.SelPage
' Case Pages.VIEW
' If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
@@ -371,7 +397,16 @@ Public Class MySceneHostVM
Private Sub OnMouseMoveScene(sender As Object, e As Forms.MouseEventArgs)
If e.Button = Forms.MouseButtons.Middle Then Return
If Map.refInstrumentPanelVM.GetDistIsChecked Then Return
- If Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.DISPOSITION Then Basic_OnMouseMoveScene(sender, e)
+ ' Se in modalità modifica
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ Case ModifyModes.SELECT_
+ Part_OnMouseMoveScene(sender, e)
+ Case ModifyModes.STARTMACH
+ StartMach_OnMouseMoveScene(sender, e)
+ End Select
+ End If
'Select Case Map.refMainMenuVM.SelPage
' Case Pages.VIEW
' If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
@@ -398,7 +433,16 @@ Public Class MySceneHostVM
Private Sub OnMouseUpScene(sender As Object, e As Forms.MouseEventArgs)
If e.Button = Forms.MouseButtons.Middle Then Return
If Map.refInstrumentPanelVM.GetDistIsChecked Then Return
- If Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.DISPOSITION Then Basic_OnMouseUpScene(sender, e)
+ ' Se in modalità modifica
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ Case ModifyModes.SELECT_
+ Part_OnMouseUpScene(sender, e)
+ Case ModifyModes.STARTMACH
+ StartMach_OnMouseUpScene(sender, e)
+ End Select
+ End If
'Select Case Map.refMainMenuVM.SelPage
' Case Pages.VIEW
' If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
@@ -422,73 +466,106 @@ Public Class MySceneHostVM
'End Select
End Sub
+ Private Sub OnMouseSelectingObj(ByVal sender As Object, ByVal nId As Integer, ByRef bOk As Boolean)
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ 'Case ModifyModes.SELECT_
+ Case ModifyModes.DISPOSITION
+ 'bOk = Map.refDispositionPanelVM.OnMouseSelectingObj(nId)
+ Case ModifyModes.REFERENCE
+ Case ModifyModes.STARTMACH
+ bOk = Map.refStartMachPanelVM.OnMouseSelectingObj(nId)
+ Case ModifyModes.RIBS
+ Case ModifyModes.SHELLNUMBER
+ Case ModifyModes.AUXSOLIDS
+ End Select
+ End If
+ End Sub
+
Private Sub OnMouseSelectedObj(ByVal sender As Object, ByVal nId As Integer, ByVal bLast As Boolean)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' ' se sto editando testo angoli
- ' If Map.refFreeContourManagerVM.bIsModifyingTextAngle Then
- ' ' passo testo selezionato
- ' Map.refFreeContourManagerVM.TextAngleSelected(nId)
- ' End If
- ' MainController.MouseSelectedObj(nId, bLast)
+ ' Se in modalità modifica e non seleziona pezzo
+ 'If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ ' Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ ' Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ ' 'Case ModifyModes.SELECT_
+ ' Case ModifyModes.DISPOSITION
+ ' 'bOk = Map.refDispositionPanelVM.OnMouseSelectingObj(nId)
+ ' Case ModifyModes.REFERENCE
+ ' Case ModifyModes.STARTMACH
+ ' Map.refStartMachPanelVM.OnMouseSelectedObj(nId)
+ ' Case ModifyModes.RIBS
+ ' Case ModifyModes.SHELLNUMBER
+ ' Case ModifyModes.AUXSOLIDS
+ ' End Select
'End If
+ MainController.MouseSelectedObj(nId, bLast)
End Sub
Private Sub OnMouseSelectedPart(ByVal sender As Object, ByVal nId As Integer)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.MouseSelectedPart(nId)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseSelectedPart(nId)
+ End If
End Sub
Private Sub OnMouseSelectedLayer(ByVal sender As Object, ByVal nId As Integer)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.MouseSelectedLayer(nId)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseSelectedLayer(nId)
+ End If
End Sub
Private Sub OnMouseSelectedPath(ByVal sender As Object, ByVal nId As Integer, ByVal bHaltOnFork As Boolean)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.MouseSelectedPath(nId, bHaltOnFork)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseSelectedPath(nId, bHaltOnFork)
+ End If
End Sub
Private Sub OnMousePointFromSelection(ByVal sender As Object, ByVal nId As Integer, ByVal PtP As Point3d, ByVal nAux As Integer)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.SetPointFromSelection(nId, PtP, nAux)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.SetPointFromSelection(nId, PtP, nAux)
+ End If
End Sub
Private Sub OnMouseDone(ByVal sender As Object)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.Done(Map.refFreeContourInputVM.Text)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.Done(Map.refControllerInputPanelVM.Text)
+ End If
End Sub
Private Sub OnMouseSelectedPoint(ByVal sender As Object, ByVal PtP As Point3d, ByVal nSep As SEP, ByVal nId As Integer)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' Dim bDone As Boolean = (Keyboard.Modifiers And ModifierKeys.Control) <> ModifierKeys.Control
- ' MainController.MouseSelectedPoint(PtP, nSep, nId, bDone)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ Dim bDone As Boolean = (Keyboard.Modifiers And ModifierKeys.Control) <> ModifierKeys.Control
+ MainController.MouseSelectedPoint(PtP, nSep, nId, bDone)
+ End If
End Sub
Private Sub OnMouseSelectedDir(ByVal sender As Object, ByVal VtDir As Vector3d)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.SetLastVector3d(VtDir)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.SetLastVector3d(VtDir)
+ End If
End Sub
Private Sub OnMouseMoveSelPoint(ByVal sender As Object, ByVal PtP As Point3d)
- '' Se in modalità edit L250
- 'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
- ' MainController.MouseMoveInSelectionPoint(PtP)
- 'End If
+ ' Se in modalità modifica e non seleziona pezzo
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
+ Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso Map.refTopPanelVM.SelModifyMode.ModifyMode <> ModifyModes.SELECT_ Then
+ MainController.MouseMoveInSelectionPoint(PtP)
+ End If
End Sub
Private Sub OnShowDistance(ByVal sender As Object, ByVal sDistance As String)
@@ -496,6 +573,18 @@ Public Class MySceneHostVM
End Sub
Private Sub OnKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs)
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ 'Case ModifyModes.SELECT_
+ Case ModifyModes.DISPOSITION
+ Map.refDispositionPanelVM.OnKeyDown(e.KeyData)
+ Case ModifyModes.REFERENCE
+ Case ModifyModes.STARTMACH
+ Case ModifyModes.RIBS
+ Case ModifyModes.SHELLNUMBER
+ Case ModifyModes.AUXSOLIDS
+ End Select
+ End If
'' Se in modalità edit L250
'If Map.refMainMenuVM.SelPage = Pages.VIEW AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) AndAlso Map.refFreeContourManagerVM.bIsActive Then
' ' Con DEL eseguo cancellazione delle entità selezionate
@@ -673,13 +762,28 @@ Public Class MySceneHostVM
Else
Map.refMyStatusBarVM.ClearOutputMessage()
End If
+ If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
+ Select Case Map.refTopPanelVM.SelModifyMode.ModifyMode
+ 'Case ModifyModes.SELECT_
+ Case ModifyModes.DISPOSITION
+ Map.refDispositionPanelVM.UpdateUi()
+ Case ModifyModes.REFERENCE
+ Case ModifyModes.STARTMACH
+ Map.refStartMachPanelVM.UpdateUi()
+ Case ModifyModes.RIBS
+ Case ModifyModes.SHELLNUMBER
+ Case ModifyModes.AUXSOLIDS
+ End Select
+ End If
End Sub
#End Region ' CONTROLLER EVENTS
+#Region "VIEW EVENTS"
+
#Region "Part"
- Friend Sub Basic_OnMouseDownScene(sender As Object, e As Forms.MouseEventArgs)
+ Friend Sub Part_OnMouseDownScene(sender As Object, e As Forms.MouseEventArgs)
' Verifico se selezionato indicativo di pezzo
EgtSetObjFilterForSelWin(True, True, True, True, True)
Dim nSel As Integer
@@ -711,7 +815,7 @@ Public Class MySceneHostVM
m_bDragToStart = True
End Sub
- Friend Sub Basic_OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
+ Friend Sub Part_OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Se drag non abilitato o già in esecuzione, esco
If Not m_bDragToStart Then Return
' Se primo movimento di drag, verifico di aver superato la soglia di movimento in pixel
@@ -724,7 +828,7 @@ Public Class MySceneHostVM
End If
End Sub
- Friend Sub Basic_OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
+ Friend Sub Part_OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Se eseguito drag
If Not m_bDragToStart Then
' Se selezione da eseguire
@@ -758,4 +862,89 @@ Public Class MySceneHostVM
#End Region ' Part
+
+
+#Region "StartMach"
+
+ Friend Sub StartMach_OnMouseDownScene(sender As Object, e As Forms.MouseEventArgs)
+ ' Verifico se selezionato indicativo di pezzo
+ EgtSetObjFilterForSelWin(True, True, True, True, True)
+ Dim nSel As Integer
+ EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
+ Dim nId As Integer = EgtGetFirstObjInSelWin()
+ While nId <> GDB_ID.NULL
+ ' Recupero l'identificativo del pezzo cui appartiene
+ Dim nPartId As Integer = EgtGetParent(nId)
+ Dim bFound As Boolean = False
+ If nPartId = Map.refStartMachPanelVM.nStartMachLayerId Then bFound = True
+ If Not bFound Then
+ nId = EgtGetNextObjInSelWin()
+ Continue While
+ End If
+ 'Dim nStat As Integer = GDB_ST.ON_
+ 'EgtGetStatus(nId, nStat)
+ '' Se già selezionato
+ 'If nStat = GDB_ST.SEL Then
+ ' ' Memorizzo Id da deselezionare
+ ' m_nIdToDesel = nId
+ 'Else
+ ' Memorizzo Id da selezionare
+ m_nIdToSel = nId
+ 'End If
+ Exit While
+ nId = EgtGetNextObjInSelWin()
+ End While
+ ' Dati per drag
+ m_bDragToStart = True
+ End Sub
+
+ Friend Sub StartMach_OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
+ ' Se drag non abilitato o già in esecuzione, esco
+ If Not m_bDragToStart Then Return
+ ' Se primo movimento di drag, verifico di aver superato la soglia di movimento in pixel
+ If m_bDragToStart Then
+ If Math.Abs(e.Location.X - m_locPrev.X) < m_nRestRadius And
+ Math.Abs(e.Location.Y - m_locPrev.Y) < m_nRestRadius Then
+ Return
+ End If
+ m_bDragToStart = False
+ End If
+ End Sub
+
+ Friend Sub StartMach_OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
+ ' Se eseguito drag
+ If Not m_bDragToStart Then
+ ' Se selezione da eseguire
+ ElseIf m_nIdToSel <> GDB_ID.NULL Then
+ ' Se pezzo da selezionare non è già selezionato
+ 'If EgtIsSelectedObj(m_nIdToSel) Then
+ ' Eseguo la selezione
+ Map.refStartMachPanelVM.SelStartFromId(m_nIdToSel)
+ 'EgtDeselectAll()
+ 'EgtSelectPartObjs(m_nIdToSel)
+ 'EgtSelectObj(m_nIdToSel)
+ 'EgtSetMark(m_nIdToSel)
+ 'End If
+ 'If IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) OrElse Map.refProjectVM.BTLStructureVM.SelBTLPart.nPartId <> m_nIdToSel Then
+ ' ' Eseguo la selezione
+ ' For Each BTLPart In Map.refProjectVM.BTLStructureVM.BTLPartVMList
+ ' If BTLPart.nPartId = m_nIdToSel Then
+ ' BTLPart.SetIsSelected(True)
+ ' ElseIf BTLPart.IsSelected Then
+ ' BTLPart.SetIsSelected(False)
+ ' End If
+ ' Next
+ ' End If
+ End If
+ ' Reset
+ m_bDrag = False
+ m_nIdToSel = GDB_ID.NULL
+ m_nIdToDesel = GDB_ID.NULL
+ EgtDraw()
+ End Sub
+
+#End Region ' StartMach
+
+#End Region ' VIEW EVENTS
+
End Class
diff --git a/3dPrintApp/SliderManager/SliderManagerVM.vb b/3dPrintApp/SliderManager/SliderManagerVM.vb
index 19b9340..05520a3 100644
--- a/3dPrintApp/SliderManager/SliderManagerVM.vb
+++ b/3dPrintApp/SliderManager/SliderManagerVM.vb
@@ -13,9 +13,6 @@ Public Class SliderManagerVM
End Get
Set(value As Double)
m_nLayerIndex = value
- If value = 1 Then
- Dim x = 3
- End If
' ciclo tutti i layer per nasconderli/mostrarli
If IsNothing(Map.refTopPanelVM.SelPart) OrElse IsNothing(Map.refTopPanelVM.SelPart.LayerList) Then Return
For Each Layer In Map.refTopPanelVM.SelPart.LayerList
diff --git a/3dPrintApp/StartMachPanel/StartMachPanelV.xaml b/3dPrintApp/StartMachPanel/StartMachPanelV.xaml
index 4163f62..71d096d 100644
--- a/3dPrintApp/StartMachPanel/StartMachPanelV.xaml
+++ b/3dPrintApp/StartMachPanel/StartMachPanelV.xaml
@@ -7,13 +7,16 @@
+
-
-
@@ -21,15 +24,18 @@
-
-
-
-
-
-
+
+
@@ -54,48 +60,32 @@
-
-
-
-
-
-
@@ -183,6 +173,7 @@
+
@@ -222,6 +213,12 @@
Margin="5,0,0,0"
Style="{StaticResource LeftPanel_TextBox}"/>
+
+
+
diff --git a/3dPrintApp/StartMachPanel/StartMachPanelVM.vb b/3dPrintApp/StartMachPanel/StartMachPanelVM.vb
index 5f80228..bf97085 100644
--- a/3dPrintApp/StartMachPanel/StartMachPanelVM.vb
+++ b/3dPrintApp/StartMachPanel/StartMachPanelVM.vb
@@ -1,4 +1,6 @@
-Imports System.Globalization
+Imports System.Collections.ObjectModel
+Imports System.Collections.Specialized
+Imports System.Globalization
Imports EgtUILib
Imports EgtWPFLib5
@@ -15,45 +17,56 @@ Public Class StartMachPanelVM
Private m_nPartId As Integer = GDB_ID.NULL
Private m_nStartMachLayerId As Integer = GDB_ID.NULL
- Private m_nStartMachId As Integer = GDB_ID.NULL
-
- Private m_TypeList() As Boolean = {True, False}
- Public ReadOnly Property TypeList As Boolean()
+ Friend ReadOnly Property nStartMachLayerId As Integer
Get
- Return m_TypeList
+ Return m_nStartMachLayerId
End Get
End Property
- Public Property SelType As StartMachTypes
+ Private m_StartList As New ObservableCollection(Of StartEntity)
+ Public ReadOnly Property StartList As ObservableCollection(Of StartEntity)
Get
- Dim Index As Integer = m_TypeList.FirstOrDefault(Function(x) x)
- Select Case Index
- Case -1
- Return StartMachTypes.NULL
- Case 0
- Return StartMachTypes.POINT
- Case 1
- Return StartMachTypes.COMPO
- End Select
+ Return m_StartList
End Get
- Set(value As StartMachTypes)
- m_TypeList(value - 1) = True
+ End Property
+ Private m_SelStart As StartEntity
+ Public Property SelStart As StartEntity
+ Get
+ Return m_SelStart
+ End Get
+ Set(value As StartEntity)
+ m_SelStart = value
+ EgtDeselectLayerObjs(m_nStartMachLayerId)
+ If Not IsNothing(value) Then
+ EgtSelectObj(value.nId)
+ ' aggiorno visibilita' bottoni edit
+ NotifyPropertyChanged(NameOf(Compo_Visibility))
+ ' aggiorno campi di testo posizione
+ NotifyPropertyChanged(NameOf(sXPos))
+ NotifyPropertyChanged(NameOf(sYPos))
+ NotifyPropertyChanged(NameOf(sZPos))
+ End If
+ EgtDraw()
End Set
End Property
Public Property sXPos As String
Get
- Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
- Return LenToString(ptReference.x, 1)
+ If Not IsNothing(m_SelStart) Then
+ Dim ptReference As New Point3d
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
+ Return LenToString(ptReference.x, 1)
+ Else
+ Return ""
+ End If
End Get
Set(value As String)
Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
Dim dNewXPos As Double = ptReference.x
StringToLen(value, dNewXPos)
If dNewXPos >= 0 AndAlso dNewXPos <= CurrentMachine.b3Tab.DimX Then
- EgtMove(m_nStartMachId, New Point3d(dNewXPos, ptReference.y, ptReference.z) - ptReference)
+ EgtMove(m_SelStart.nId, New Point3d(dNewXPos, ptReference.y, ptReference.z) - ptReference)
EgtDraw()
Else
NotifyPropertyChanged(NameOf(sXPos))
@@ -63,17 +76,21 @@ Public Class StartMachPanelVM
Public Property sYPos As String
Get
- Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
- Return LenToString(ptReference.y, 1)
+ If Not IsNothing(m_SelStart) Then
+ Dim ptReference As New Point3d
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
+ Return LenToString(ptReference.y, 1)
+ Else
+ Return ""
+ End If
End Get
Set(value As String)
Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
Dim dNewYPos As Double = ptReference.y
StringToLen(value, dNewYPos)
If dNewYPos >= 0 AndAlso dNewYPos <= CurrentMachine.b3Tab.DimY Then
- EgtMove(m_nStartMachId, New Point3d(ptReference.x, dNewYPos, ptReference.z) - ptReference)
+ EgtMove(m_SelStart.nId, New Point3d(ptReference.x, dNewYPos, ptReference.z) - ptReference)
EgtDraw()
Else
NotifyPropertyChanged(NameOf(sYPos))
@@ -83,17 +100,21 @@ Public Class StartMachPanelVM
Public Property sZPos As String
Get
- Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
- Return LenToString(ptReference.z, 1)
+ If Not IsNothing(m_SelStart) Then
+ Dim ptReference As New Point3d
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
+ Return LenToString(ptReference.z, 1)
+ Else
+ Return ""
+ End If
End Get
Set(value As String)
Dim ptReference As New Point3d
- EgtStartPoint(m_nStartMachId, GDB_ID.ROOT, ptReference)
+ EgtStartPoint(m_SelStart.nId, GDB_ID.ROOT, ptReference)
Dim dNewZPos As Double = ptReference.z
StringToLen(value, dNewZPos)
If dNewZPos >= 0 Then
- EgtMove(m_nStartMachId, New Point3d(ptReference.x, ptReference.y, dNewZPos) - ptReference)
+ EgtMove(m_SelStart.nId, New Point3d(ptReference.x, ptReference.y, dNewZPos) - ptReference)
EgtDraw()
Else
NotifyPropertyChanged(NameOf(sZPos))
@@ -148,13 +169,13 @@ Public Class StartMachPanelVM
End Set
End Property
- Private m_bType_IsChecked As Boolean
- Public Property bType_IsChecked As Boolean
+ Private m_bAdd_IsChecked As Boolean
+ Public Property bAdd_IsChecked As Boolean
Get
- Return m_bType_IsChecked
+ Return m_bAdd_IsChecked
End Get
Set(value As Boolean)
- m_bType_IsChecked = value
+ m_bAdd_IsChecked = value
If value Then
m_bEdit_IsChecked = False
m_bGrid_IsChecked = False
@@ -172,14 +193,18 @@ Public Class StartMachPanelVM
Return m_bEdit_IsChecked
End Get
Set(value As Boolean)
- m_bEdit_IsChecked = value
- If value Then
- m_bType_IsChecked = False
- m_bGrid_IsChecked = False
- m_bMove_IsChecked = False
- NotifyPropertyChanged(NameOf(bType_IsChecked))
- NotifyPropertyChanged(NameOf(bGrid_IsChecked))
- NotifyPropertyChanged(NameOf(bMove_IsChecked))
+ If Not IsNothing(m_SelStart) Then
+ m_bEdit_IsChecked = value
+ If value Then
+ m_bAdd_IsChecked = False
+ m_bGrid_IsChecked = False
+ m_bMove_IsChecked = False
+ NotifyPropertyChanged(NameOf(bAdd_IsChecked))
+ NotifyPropertyChanged(NameOf(bGrid_IsChecked))
+ NotifyPropertyChanged(NameOf(bMove_IsChecked))
+ End If
+ Else
+ NotifyPropertyChanged(NameOf(bEdit_IsChecked))
End If
End Set
End Property
@@ -192,10 +217,10 @@ Public Class StartMachPanelVM
Set(value As Boolean)
m_bGrid_IsChecked = value
If value Then
- m_bType_IsChecked = False
+ m_bAdd_IsChecked = False
m_bEdit_IsChecked = False
m_bMove_IsChecked = False
- NotifyPropertyChanged(NameOf(bType_IsChecked))
+ NotifyPropertyChanged(NameOf(bAdd_IsChecked))
NotifyPropertyChanged(NameOf(bEdit_IsChecked))
NotifyPropertyChanged(NameOf(bMove_IsChecked))
End If
@@ -208,19 +233,45 @@ Public Class StartMachPanelVM
Return m_bMove_IsChecked
End Get
Set(value As Boolean)
- m_bMove_IsChecked = value
- If value Then
- m_bType_IsChecked = False
- m_bEdit_IsChecked = False
- m_bGrid_IsChecked = False
- NotifyPropertyChanged(NameOf(bType_IsChecked))
- NotifyPropertyChanged(NameOf(bEdit_IsChecked))
- NotifyPropertyChanged(NameOf(bGrid_IsChecked))
+ If Not IsNothing(m_SelStart) Then
+ m_bMove_IsChecked = value
+ If value Then
+ m_bAdd_IsChecked = False
+ m_bEdit_IsChecked = False
+ m_bGrid_IsChecked = False
+ NotifyPropertyChanged(NameOf(bAdd_IsChecked))
+ NotifyPropertyChanged(NameOf(bEdit_IsChecked))
+ NotifyPropertyChanged(NameOf(bGrid_IsChecked))
+ End If
+ Else
+ NotifyPropertyChanged(NameOf(bMove_IsChecked))
End If
End Set
End Property
+ Public ReadOnly Property Compo_Visibility As Visibility
+ Get
+ Return If(Not IsNothing(m_SelStart) AndAlso m_SelStart.Type = StartMachTypes.COMPO, Visibility.Visible, Visibility.Collapsed)
+ End Get
+ End Property
+
+ ' riferimento griglia all'ingresso in questa pagina
+ Private m_OriginalGridFrame As New Frame3d
+
+ ' parametro che indica se e' in corso il disegno di un percorso
+ Private m_bIsCreatingPath As Boolean = False
+ Public ReadOnly Property bIsCreatingPath As Boolean
+ Get
+ Return m_bIsCreatingPath
+ End Get
+ End Property
+
' Definizione comandi
+ Private m_cmdPoint As ICommand
+ Private m_cmdLine2P As ICommand
+ Private m_cmdModifyCurve As ICommand
+ Private m_cmdAddPointCurve As ICommand
+ Private m_cmdRemovePointCurve As ICommand
Private m_cmdCPlaneTop As ICommand
Private m_cmdCPlaneFront As ICommand
Private m_cmdCPlaneRight As ICommand
@@ -234,6 +285,8 @@ Public Class StartMachPanelVM
Private m_cmdCPlane3P As ICommand
Private m_cmdCPlanePerpObj As ICommand
Private m_cmdCPlaneObj As ICommand
+ Private m_cmdDragMove As ICommand
+ Private m_cmdDelete As ICommand
#End Region ' FIELDS & PROPERTIES
@@ -249,23 +302,38 @@ Public Class StartMachPanelVM
#Region "METHODS"
Friend Sub Init()
+ ' azzero indice
+ StartEntity.ResetSharedIndex()
+ ' fisso frame originale
+ m_OriginalGridFrame = EgtGetGridFrame()
' recupero dati pezzo selezionato layer ed entita'
m_nPartId = Map.refTopPanelVM.SelPart.nPartId
m_nStartMachLayerId = Map.refTopPanelVM.SelPart.nMachStartLayerId
- m_nStartMachId = Map.refTopPanelVM.SelPart.nMachStartId
- ' verifico se punto o curva
- Dim StartMachType As GDB_TY = EgtGetType(m_nStartMachId)
- Select Case StartMachType
- Case GDB_TY.GEO_POINT
- SelType = StartMachTypes.POINT
- Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_COMPO
- SelType = StartMachTypes.COMPO
- End Select
- NotifyPropertyChanged(NameOf(TypeList))
- ' aggiorno campi di testo posizione
- NotifyPropertyChanged(NameOf(sXPos))
- NotifyPropertyChanged(NameOf(sYPos))
- NotifyPropertyChanged(NameOf(sZPos))
+ 'recupero tutte le entita' di partenza
+ m_StartList.Clear()
+ Dim nStartMachId As Integer = EgtGetFirstInGroup(m_nStartMachLayerId)
+ While nStartMachId <> GDB_ID.NULL
+ Dim StartMachType As GDB_TY = EgtGetType(nStartMachId)
+ Select Case StartMachType
+ Case GDB_TY.GEO_POINT
+ m_StartList.Add(New StartEntity(nStartMachId, StartMachTypes.POINT))
+ Case GDB_TY.CRV_COMPO
+ m_StartList.Add(New StartEntity(nStartMachId, StartMachTypes.COMPO))
+ End Select
+ nStartMachId = EgtGetNext(nStartMachId)
+ End While
+ If m_StartList.Count > 0 Then
+ SelStart = m_StartList(0)
+ NotifyPropertyChanged(NameOf(SelStart))
+ End If
+ Map.refSceneHostVM.MainScene.SetStatusNull()
+ End Sub
+
+ Friend Sub Dispose()
+ ' ripristino frame originale
+ EgtSetGridFrame(m_OriginalGridFrame)
+ EgtDraw()
+ Map.refSceneHostVM.MainScene.SetStatusNull()
End Sub
Friend Sub RefreshPos()
@@ -274,10 +342,219 @@ Public Class StartMachPanelVM
NotifyPropertyChanged(NameOf(sZPos))
End Sub
+ Private Function InitCommand() As Boolean
+ ' attivo modifiche su scena
+ Map.refSceneHostVM.MainScene.ResetStatus()
+ ' seleziono percorso corrente
+ EgtDeselectAll()
+ EgtSelectObj(m_SelStart.nId)
+ End Function
+
+ Friend Sub UpdateUi()
+ ' se attiva operazione in piu' passaggi, esco
+ If Map.refSceneHostVM.MainController.GetContinue() Then Return
+ Dim NewEntity As StartEntity = Nothing
+ ' se finita creazione curva (è stata chiusa)
+ If bIsCreatingPath Then
+ m_bIsCreatingPath = False
+ Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWSTART)
+ Dim nNewEntityId As Integer = EgtGetFirstInGroup(nNewStartLayerId)
+ Dim NewGeomType As GDB_TY = EgtGetType(nNewEntityId)
+ If NewGeomType = GDB_TY.GEO_POINT OrElse NewGeomType = GDB_TY.CRV_COMPO Then
+ Dim NewEntityType As StartMachTypes
+ Select Case NewGeomType
+ Case GDB_TY.GEO_POINT
+ NewEntityType = StartMachTypes.POINT
+ Case GDB_TY.CRV_COMPO
+ NewEntityType = StartMachTypes.COMPO
+ End Select
+ EgtSetName(nNewEntityId, START_GEOM)
+ ' coloro l'entita' di rosso
+ Dim c3Red As Color3d
+ c3Red.FromColor(System.Drawing.Color.Red)
+ EgtSetColor(nNewEntityId, c3Red)
+ ' lo sposto nel layer degli start
+ EgtRelocateGlob(nNewEntityId, m_nStartMachLayerId, GDB_POS.LAST_SON)
+ ' lo aggiungo alla lista
+ NewEntity = New StartEntity(nNewEntityId, NewEntityType)
+ m_StartList.Add(NewEntity)
+ ' cancello layer di disegno
+ EgtErase(nNewStartLayerId)
+ End If
+ End If
+ ' aggiorno posizione
+ RefreshPos()
+ ' se aggiunta entita'
+ If Not IsNothing(NewEntity) Then
+ SelStart = NewEntity
+ NotifyPropertyChanged(NameOf(SelStart))
+ End If
+ ' rimetto la selezione scena a null
+ Map.refSceneHostVM.MainScene.SetStatusNull()
+ End Sub
+
+ Friend Sub OnKeyDown(Key As Forms.Keys)
+ If Key = Forms.Keys.Escape Then
+
+ End If
+ End Sub
+
+ Friend Function OnMouseSelectingObj(nId As Integer) As Boolean
+ Return EgtGetParent(nId) = m_nStartMachLayerId
+ End Function
+
+ Friend Sub SelStartFromId(nId)
+ Dim SelStartEntity As StartEntity = m_StartList.FirstOrDefault(Function(x) x.nId = nId)
+ If Not IsNothing(SelStartEntity) Then
+ SelStart = SelStartEntity
+ NotifyPropertyChanged(NameOf(SelStart))
+ End If
+ End Sub
+
#End Region ' METHODS
#Region "COMMANDS"
+#Region "Point"
+
+ '''
+ ''' Returns a command that do CPlaneTop.
+ '''
+ Public ReadOnly Property Point_Command As ICommand
+ Get
+ If m_cmdPoint Is Nothing Then
+ m_cmdPoint = New Command(AddressOf Point)
+ End If
+ Return m_cmdPoint
+ End Get
+ End Property
+
+ '''
+ ''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
+ '''
+ Public Sub Point(ByVal param As Object)
+ Dim nNewStartLayerId As Integer = EgtCreateGroup(m_nPartId)
+ EgtSetName(nNewStartLayerId, LAY_NEWSTART)
+ EgtSetCurrPartLayer(m_nPartId, nNewStartLayerId)
+ 'InitCommand(True)
+ If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.POINT) Then
+ m_bIsCreatingPath = True
+ End If
+ End Sub
+
+#End Region ' Point
+
+#Region "Line2P"
+
+ '''
+ ''' Returns a command that do CPlaneTop.
+ '''
+ Public ReadOnly Property Line2P_Command As ICommand
+ Get
+ If m_cmdLine2P Is Nothing Then
+ m_cmdLine2P = New Command(AddressOf Line2P)
+ End If
+ Return m_cmdLine2P
+ End Get
+ End Property
+
+ '''
+ ''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand.
+ '''
+ Public Sub Line2P(ByVal param As Object)
+ Dim nNewStartLayerId As Integer = EgtCreateGroup(m_nPartId)
+ EgtSetName(nNewStartLayerId, LAY_NEWSTART)
+ EgtSetCurrPartLayer(m_nPartId, nNewStartLayerId)
+ Map.refSceneHostVM.MainController.SetContinue()
+ If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.LINE2P) Then
+ m_bIsCreatingPath = True
+ End If
+ End Sub
+
+#End Region ' Line2P
+
+#Region "ModifyCurve"
+
+ '''
+ ''' Returns a command that do Linear Dimension.
+ '''
+ Public ReadOnly Property ModifyCurve_Command As ICommand
+ Get
+ If m_cmdModifyCurve Is Nothing Then
+ m_cmdModifyCurve = New Command(AddressOf ModifyCurve)
+ End If
+ Return m_cmdModifyCurve
+ End Get
+ End Property
+
+ '''
+ ''' Execute the LinearDimension. This method is invoked by the LinDimCommand.
+ '''
+ Public Sub ModifyCurve(ByVal param As Object)
+ InitCommand()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.MODIFYCURVE)
+ End Sub
+
+#End Region ' ModifyCurve
+
+#Region "AddPointCurve"
+
+ '''
+ ''' Returns a command that do Linear Dimension.
+ '''
+ Public ReadOnly Property AddPointCurve_Command As ICommand
+ Get
+ If m_cmdAddPointCurve Is Nothing Then
+ m_cmdAddPointCurve = New Command(AddressOf AddPointCurve)
+ End If
+ Return m_cmdAddPointCurve
+ End Get
+ End Property
+
+ '''
+ ''' Execute the LinearDimension. This method is invoked by the LinDimCommand.
+ '''
+ Public Sub AddPointCurve(ByVal param As Object)
+ InitCommand()
+ If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.CURVETOARC)
+ Else
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.ADDPOINTCURVE)
+ End If
+ End Sub
+
+#End Region ' AddPointCurve
+
+#Region "RemovePointCurve"
+
+ '''
+ ''' Returns a command that do Linear Dimension.
+ '''
+ Public ReadOnly Property RemovePointCurve_Command As ICommand
+ Get
+ If m_cmdRemovePointCurve Is Nothing Then
+ m_cmdRemovePointCurve = New Command(AddressOf RemovePointCurve)
+ End If
+ Return m_cmdRemovePointCurve
+ End Get
+ End Property
+
+ '''
+ ''' Execute the LinearDimension. This method is invoked by the LinDimCommand.
+ '''
+ Public Sub RemovePointCurve(ByVal param As Object)
+ If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then
+ InitCommand()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.CURVETOLINE)
+ Else
+ InitCommand()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.REMOVEPOINTCURVE)
+ End If
+ End Sub
+
+#End Region ' RemovePointCurve
+
+
#Region "CPlaneTop"
'''
@@ -468,6 +745,109 @@ Public Class StartMachPanelVM
#End Region ' CPlaneOrigin
+#Region "DragMove"
+
+ Public ReadOnly Property DragMove_Command As ICommand
+ Get
+ If m_cmdDragMove Is Nothing Then
+ m_cmdDragMove = New Command(AddressOf DragMove)
+ End If
+ Return m_cmdDragMove
+ End Get
+ End Property
+
+ Public Sub DragMove()
+ InitCommand()
+ Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.MOVE)
+ End Sub
+
+#End Region ' DragMove
+
+#Region "Delete"
+
+ Public ReadOnly Property Delete_Command As ICommand
+ Get
+ If m_cmdDelete Is Nothing Then
+ m_cmdDelete = New Command(AddressOf Delete)
+ End If
+ Return m_cmdDelete
+ End Get
+ End Property
+
+ Public Sub Delete()
+ If IsNothing(SelStart) Then Return
+ If EgtErase(m_SelStart.nId) Then
+ Dim nSelStartIndex As Integer = m_StartList.IndexOf(SelStart)
+ m_StartList.Remove(SelStart)
+ If nSelStartIndex < m_StartList.Count Then
+ SelStart = m_StartList(nSelStartIndex)
+ ElseIf m_StartList.Count > 0 Then
+ SelStart = m_StartList(m_StartList.Count - 1)
+ Else
+ SelStart = Nothing
+ End If
+ NotifyPropertyChanged(NameOf(SelStart))
+ End If
+ End Sub
+
+#End Region ' Delete
+
#End Region ' COMMANDS
-End Class
\ No newline at end of file
+End Class
+
+Public Class StartEntity
+ Inherits VMBase
+
+ Private Shared m_nSharedIndex As Integer = 0
+ Private ReadOnly Property nSharedIndex As Integer
+ Get
+ m_nSharedIndex += 1
+ Return m_nSharedIndex
+ End Get
+ End Property
+ Friend Shared Sub ResetSharedIndex()
+ m_nSharedIndex = 0
+ End Sub
+
+ Private m_nId As Integer
+ Public ReadOnly Property nId As Integer
+ Get
+ Return m_nId
+ End Get
+ End Property
+
+ Private m_Type As StartMachPanelVM.StartMachTypes
+ Public ReadOnly Property Type As StartMachPanelVM.StartMachTypes
+ Get
+ Return m_Type
+ End Get
+ End Property
+
+ Private m_nIndex As Integer
+ Public ReadOnly Property nIndex As Integer
+ Get
+ Return m_nIndex
+ End Get
+ End Property
+
+ Public ReadOnly Property ghName As String
+ Get
+ Dim sType As String = ""
+ Select Case m_Type
+ Case StartMachPanelVM.StartMachTypes.POINT
+ sType = "Point"
+ Case StartMachPanelVM.StartMachTypes.COMPO
+ sType = "Path"
+ End Select
+ Return String.Format("[{0}] {1}", {m_nIndex, sType})
+ End Get
+ End Property
+
+ Sub New(nId As Integer, Type As StartMachPanelVM.StartMachTypes)
+ m_nId = nId
+ m_Type = Type
+ m_nIndex = nSharedIndex
+ End Sub
+
+End Class
diff --git a/3dPrintApp/TSFEditor/TFSEditorV.xaml b/3dPrintApp/TSFEditor/TFSEditorV.xaml
index acbaa0b..23ab95b 100644
--- a/3dPrintApp/TSFEditor/TFSEditorV.xaml
+++ b/3dPrintApp/TSFEditor/TFSEditorV.xaml
@@ -22,6 +22,13 @@
Width="50"
Visibility="{Binding MediaHeight_Visibility}"
Style="{StaticResource ControllerInputPanel_TextBox}"/>
+
+
diff --git a/3dPrintApp/TSFEditor/TFSEditorVM.vb b/3dPrintApp/TSFEditor/TFSEditorVM.vb
index 8a731a4..b6c1e9e 100644
--- a/3dPrintApp/TSFEditor/TFSEditorVM.vb
+++ b/3dPrintApp/TSFEditor/TFSEditorVM.vb
@@ -49,12 +49,15 @@ Public Class TFSEditorVM
Case MediaTypes.HEIGHT
SetMediaHeightVisibility(True)
SetFCurrVisibility(False)
+ SetDifference_Visibility(False)
Case MediaTypes.SECTIONCHANGE
SetMediaHeightVisibility(False)
SetFCurrVisibility(False)
+ SetDifference_Visibility(True)
Case MediaTypes.SELECTION
SetMediaHeightVisibility(False)
SetFCurrVisibility(True)
+ SetDifference_Visibility(False)
End Select
End Set
End Property
@@ -85,6 +88,32 @@ Public Class TFSEditorVM
NotifyPropertyChanged(NameOf(MediaHeight_Visibility))
End Sub
+ Private m_nDifference As Integer
+ Public Property sDifference As String
+ Get
+ Return m_nDifference
+ End Get
+ Set(value As String)
+ Dim nNewValue As Integer = 0
+ If Integer.TryParse(value, nNewValue) Then
+ m_nDifference = nNewValue
+ Else
+ NotifyPropertyChanged(NameOf(sDifference))
+ End If
+ End Set
+ End Property
+
+ Private m_Difference_Visibility As Visibility = Visibility.Collapsed
+ Public ReadOnly Property Difference_Visibility As Visibility
+ Get
+ Return m_Difference_Visibility
+ End Get
+ End Property
+ Private Sub SetDifference_Visibility(bValue As Boolean)
+ m_Difference_Visibility = If(bValue, Visibility.Visible, Visibility.Collapsed)
+ NotifyPropertyChanged(NameOf(Difference_Visibility))
+ End Sub
+
Private m_dFCurr As Double
Public Property sFCurr As String
Get
@@ -254,7 +283,7 @@ Public Class TFSEditorVM
' recupero punti di rottura
For Index = 1 To m_LayerList.Count() - 1
Dim dCurrLength = m_LayerList(Index)
- If dPrevLength < m_LayerList(Index).dLength * 0.9 OrElse dPrevLength > m_LayerList(Index).dLength * 1.1 Then
+ If dPrevLength < m_LayerList(Index).dLength * (1 - (m_nDifference / 100)) OrElse dPrevLength > m_LayerList(Index).dLength * (1 + (m_nDifference / 100)) Then
ChangeIndexList.Add(Index)
End If
dPrevLength = m_LayerList(Index).dLength
diff --git a/3dPrintApp/TopPanel/TopPanelVM.vb b/3dPrintApp/TopPanel/TopPanelVM.vb
index 53f96ba..8bb8716 100644
--- a/3dPrintApp/TopPanel/TopPanelVM.vb
+++ b/3dPrintApp/TopPanel/TopPanelVM.vb
@@ -65,7 +65,8 @@ Public Class TopPanelVM
End If
End Sub
- Private m_ModifyModeList As New List(Of ModifyModeButton)({New ModifyModeButton("Disposition", ModifyModes.DISPOSITION),
+ Private m_ModifyModeList As New List(Of ModifyModeButton)({New ModifyModeButton("Select Part", ModifyModes.SELECT_),
+ New ModifyModeButton("Disposition", ModifyModes.DISPOSITION),
New ModifyModeButton("Reference", ModifyModes.REFERENCE),
New ModifyModeButton("StartMachining", ModifyModes.STARTMACH),
New ModifyModeButton("Ribs", ModifyModes.RIBS),