OmagCUT 2.1j3 :

- Aumentato il numero di TextBox Numero e Dimensioni nei Tagli Multipli. Da 3x2 si è passati ora a 10x2, con indici e scrollbar.
- Uniformati i metodi CreateMultipleCut, CreateFlatteningCut, CreateGridCut al modello di CreateSingleCut, eliminando Create2PointsMultipleCut, Create2PointsFlatteningCut, Create2PointsGridCut.
- Aggiunta costante MIN_OFFSET al metodo OverlapTxBx_EgtClosed di FlatteningCut
This commit is contained in:
Renzo Lanza
2019-10-11 11:33:48 +00:00
parent d68a61b58d
commit 3b7af73ef2
5 changed files with 291 additions and 205 deletions
+136 -62
View File
@@ -73,6 +73,16 @@ Public Class MultipleCut
SideTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 23)
SimulBtn.Content = EgtMsg(MSG_CADCUTPAGEUC + 1)
OkBtn.Content = EgtMsg(MSG_DIRECTCUTPAGEUC + 30)
Num1TxBl.Text = "1"
Num2TxBl.Text = "2"
Num3TxBl.Text = "3"
Num4TxBl.Text = "4"
Num5TxBl.Text = "5"
Num6TxBl.Text = "6"
Num7TxBl.Text = "7"
Num8TxBl.Text = "8"
Num9TxBl.Text = "9"
Num10TxBl.Text = "10"
End Sub
Private Sub MultipleCut_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -341,7 +351,7 @@ Public Class MultipleCut
LenghtTxBx.Text = LenToString(dLen, 1)
m_dAngO = dAngOrizzDeg
DirectionTxBx.Text = DoubleToString(m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2)
Create2PointsMultipleCut()
CreateMultipleCut()
' Disegno la macchina nella sua posizione reale
SetMachineInCurrPos()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
@@ -500,56 +510,8 @@ Public Class MultipleCut
End Sub
Private Function CreateMultipleCut() As Boolean
' Verifico sia definito il punto iniziale e il grezzo
If Not m_bPointP1Ok Or Not m_bRawOk Then
m_bCutOk = False
Return False
End If
' Spessore grezzo
Dim dRawHeight As Double = m_ptRawMax.z - m_ptRawMin.z
' Rimuovo eventuale vecchio pezzo per taglio diretto
EraseDirectCutPart()
' Disattivo eventuali lavorazioni presenti
DeactivateAllMachinings()
' Creo nuovo pezzo per il taglio diretto
Dim nPartId = EgtCreateGroup(GDB_ID.ROOT)
EgtSetName(nPartId, NAME_DIRECTCUT)
Dim nLayerId = EgtCreateGroup(nPartId)
EgtSetName(nLayerId, NAME_OUTLOOP)
' Creo il taglio
Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV)
' Funzione che crea i tagli successivi al primo
MultiplyCut(nLayerId, nCutId)
' Creo layer per crocetta di riferimento
Dim nCrossLayerId = EgtCreateGroup(nPartId)
' Aggiungo crocetta
CreateCross(nCrossLayerId, ptStart)
' Calcolo punto di inserimento nel grezzo
Dim ptMin, ptMax As Point3d
EgtGetBBoxGlob(nPartId, GDB_BB.STANDARD, ptMin, ptMax)
Dim ptIns As Point3d = ptMin + (m_ptTabOri - m_ptRawMin)
ptIns.z = dRawHeight
' Inserisco il pezzo nel grezzo
EgtAddPartToRawPart(nPartId, ptIns, m_MainWindow.m_CurrentProjectPageUC.m_nRawId)
' Inserisco la lavorazione
m_bCutOk = AddMachinings(nPartId) AndAlso UpdateAllMachiningsToolpaths()
EgtSetCurrPhase(1)
' Eventuale eliminazione Home finale
If Not m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome Then
RemoveFinalHome()
End If
UpdateSimulOkBtn()
Return m_bCutOk
End Function
Private Function Create2PointsMultipleCut() As Boolean
' Verifico siano definiti punto iniziale punto finale e grezzo
If Not m_bPointP1Ok Or Not m_bPointP2Ok Or Not m_bRawOk Then
If Not m_bPointP1Ok Or Not m_bRawOk Then
m_bCutOk = False
Return False
End If
@@ -567,10 +529,8 @@ Public Class MultipleCut
EgtSetName(nLayerId, NAME_OUTLOOP)
' Creo il taglio
Dim ptStart As Point3d = m_ptTipP1
Dim ptEnd As Point3d = m_ptTipP2
ptStart.z = 0
ptEnd.z = 0
Dim nCutId = EgtCreateLine(nLayerId, ptStart, ptEnd)
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV)
@@ -578,9 +538,15 @@ Public Class MultipleCut
MultiplyCut(nLayerId, nCutId)
' Creo layer per crocette di riferimento
Dim nCrossLayerId = EgtCreateGroup(nPartId)
' Aggiungo crocette
CreateCross(nCrossLayerId, ptStart)
CreateCross(nCrossLayerId, ptEnd)
' Aggiungo crocetta/e
If m_bPointP1Ok Then
CreateCross(nCrossLayerId, ptStart)
End If
If m_bPointP2Ok Then
Dim ptEnd As Point3d = m_ptTipP2
ptEnd.z = 0
CreateCross(nCrossLayerId, ptEnd)
End If
' Calcolo punto di inserimento nel grezzo
Dim ptMin, ptMax As Point3d
EgtGetBBoxGlob(nPartId, GDB_BB.STANDARD, ptMin, ptMax)
@@ -659,6 +625,118 @@ Public Class MultipleCut
Next
dTotPerpMove += vtDelta * nNumPz3
End If
' Calcolo quarto vettore di spostamento
Dim dDimPz4 As Double = 0
Dim nNumPz4 As Integer = 0
StringToLen(DimPz4TxBx.Text, dDimPz4)
StringToInt(NumPz4TxBx.Text, nNumPz4)
If dDimPz4 <> 0 And nNumPz4 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz4 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz4
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut5Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut5Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz4
End If
' Calcolo quinto vettore di spostamento
Dim dDimPz5 As Double = 0
Dim nNumPz5 As Integer = 0
StringToLen(DimPz5TxBx.Text, dDimPz5)
StringToInt(NumPz5TxBx.Text, nNumPz5)
If dDimPz5 <> 0 And nNumPz5 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz5 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz5
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut6Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut6Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz5
End If
' Calcolo sesto vettore di spostamento
Dim dDimPz6 As Double = 0
Dim nNumPz6 As Integer = 0
StringToLen(DimPz6TxBx.Text, dDimPz6)
StringToInt(NumPz6TxBx.Text, nNumPz6)
If dDimPz6 <> 0 And nNumPz6 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz6 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz6
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut7Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut7Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz6
End If
' Calcolo settimo vettore di spostamento
Dim dDimPz7 As Double = 0
Dim nNumPz7 As Integer = 0
StringToLen(DimPz7TxBx.Text, dDimPz7)
StringToInt(NumPz7TxBx.Text, nNumPz7)
If dDimPz7 <> 0 And nNumPz7 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz7 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz7
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut8Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut8Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz7
End If
' Calcolo ottavo vettore di spostamento
Dim dDimPz8 As Double = 0
Dim nNumPz8 As Integer = 0
StringToLen(DimPz8TxBx.Text, dDimPz8)
StringToInt(NumPz8TxBx.Text, nNumPz8)
If dDimPz8 <> 0 And nNumPz8 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz8 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz8
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut9Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut9Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz8
End If
' Calcolo nono vettore di spostamento
Dim dDimPz9 As Double = 0
Dim nNumPz9 As Integer = 0
StringToLen(DimPz9TxBx.Text, dDimPz9)
StringToInt(NumPz9TxBx.Text, nNumPz9)
If dDimPz9 <> 0 And nNumPz9 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz9 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz9
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut10Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut10Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz9
End If
' Calcolo decimo vettore di spostamento
Dim dDimPz10 As Double = 0
Dim nNumPz10 As Integer = 0
StringToLen(DimPz10TxBx.Text, dDimPz10)
StringToInt(NumPz10TxBx.Text, nNumPz10)
If dDimPz10 <> 0 And nNumPz10 > 0 Then
vtDelta = Vector3d.FromPolar((dDimPz10 + dThick), m_dAngO)
vtDelta.Rotate(Vector3d.Z_AX, dRotAngO)
For Index As Integer = 1 To nNumPz10
Dim vtPerpMove As Vector3d = dTotPerpMove + vtDelta * Index
' Creo copie
Dim nCut11Id = EgtCopyGlob(nCutId, nLayerId)
EgtMove(nCut11Id, vtPerpMove, GDB_RT.GLOB)
Next
dTotPerpMove += vtDelta * nNumPz10
End If
Return True
End Function
@@ -673,13 +751,9 @@ Public Class MultipleCut
Return True
End Function
Private Sub NumPz1TxBx_EgtClosed(sender As Object, e As EventArgs) Handles NumPz1TxBx.EgtClosed, NumPz2TxBx.EgtClosed, NumPz3TxBx.EgtClosed, DimPz1TxBx.EgtClosed, DimPz2TxBx.EgtClosed, DimPz3TxBx.EgtClosed, SideChBx.Click
Private Sub NumPz1TxBx_EgtClosed(sender As Object, e As EventArgs) Handles NumPz1TxBx.EgtClosed, NumPz2TxBx.EgtClosed, NumPz3TxBx.EgtClosed, NumPz4TxBx.EgtClosed, NumPz5TxBx.EgtClosed, NumPz6TxBx.EgtClosed, NumPz7TxBx.EgtClosed, NumPz8TxBx.EgtClosed, NumPz9TxBx.EgtClosed, NumPz10TxBx.EgtClosed, DimPz1TxBx.EgtClosed, DimPz2TxBx.EgtClosed, DimPz3TxBx.EgtClosed, DimPz4TxBx.EgtClosed, DimPz5TxBx.EgtClosed, DimPz6TxBx.EgtClosed, DimPz7TxBx.EgtClosed, DimPz8TxBx.EgtClosed, DimPz9TxBx.EgtClosed, DimPz10TxBx.EgtClosed, SideChBx.Click
' Disegno il taglio
If m_bPointP2Ok Then
Create2PointsMultipleCut()
Else
CreateMultipleCut()
End If
CreateMultipleCut()
SetMachineInCurrPos()
EgtDraw()
End Sub