Inizio gestione Frame allineato con il grezzo
This commit is contained in:
+15
-14
@@ -92,22 +92,23 @@
|
||||
Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
|
||||
<Image Source="{DynamicResource Sezione-corniceImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
|
||||
</Button>-->
|
||||
|
||||
<Grid>
|
||||
<Button Name="SelGuideBtn" Style="{DynamicResource OmagCut_YellowTextButton}"/>
|
||||
<UniformGrid Name="ArcGrid" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" >
|
||||
<TextBlock Name="ArcRadTxBl" Grid.Row="2" Grid.ColumnSpan="2"
|
||||
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
|
||||
<EgtWPFLib:EgtTextBox Name="ArcRadTxBx" Grid.Column="2" Grid.Row="2" Width="50"
|
||||
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
|
||||
<TextBlock Name="ArcAngTxBl" Grid.Row="3" Grid.ColumnSpan="2"
|
||||
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
|
||||
<EgtWPFLib:EgtTextBox Name="ArcAngTxBx" Grid.Column="2" Grid.Row="3" Width="50"
|
||||
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
|
||||
</UniformGrid>
|
||||
</Grid>
|
||||
<UniformGrid Name="ArcGrid" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" >
|
||||
<TextBlock Name="ArcRadTxBl" Grid.Row="2" Grid.ColumnSpan="2"
|
||||
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
|
||||
<EgtWPFLib:EgtTextBox Name="ArcRadTxBx" Grid.Column="2" Grid.Row="2" Width="50"
|
||||
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
|
||||
<TextBlock Name="ArcAngTxBl" Grid.Row="3" Grid.ColumnSpan="2"
|
||||
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
|
||||
<EgtWPFLib:EgtTextBox Name="ArcAngTxBx" Grid.Column="2" Grid.Row="3" Width="50"
|
||||
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
|
||||
</UniformGrid>
|
||||
</UniformGrid>
|
||||
|
||||
<UniformGrid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" >
|
||||
<Button Name="SelGuideBtn" Style="{DynamicResource OmagCut_YellowTextButton}"/>
|
||||
<ToggleButton Name="SelRawSideBtn" Style="{DynamicResource OmagCut_YellowToggleButton}"/>
|
||||
</UniformGrid>
|
||||
|
||||
<TextBlock Name="OffsZTxBl" Grid.Row="2" Grid.ColumnSpan="2"
|
||||
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
|
||||
<EgtWPFLib:EgtTextBox Name="OffsZTxBx" Grid.Column="2" Grid.Row="2" Width="50"
|
||||
|
||||
+219
-72
@@ -23,6 +23,10 @@ Public Class FrameCutPageUC
|
||||
' Importazione guida in corso
|
||||
Private m_bGuide As Boolean = False
|
||||
|
||||
' Linea selezionata dal contorno del grezzo
|
||||
Private m_LineDir As Integer = -1
|
||||
Private m_ptMidLineDir As New Point3d
|
||||
|
||||
Private Sub FrameCutPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
|
||||
' Creazione delle Page UserControl
|
||||
m_ProjectMgr = New ProjectMgrUC
|
||||
@@ -61,9 +65,10 @@ Public Class FrameCutPageUC
|
||||
m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 1)) 'Lungo X
|
||||
m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 2)) 'Lungo Y
|
||||
If GetPrivateProfileInt(S_FRAME, K_ARC_ENABLE, 0, m_MainWindow.GetIniFile()) <> 0 And
|
||||
m_MainWindow.GetKeyOption( MainWindow.KEY_OPT.CURVED_FRAME) Then
|
||||
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CURVED_FRAME) Then
|
||||
m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 13)) 'Arco
|
||||
m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 14)) 'Guida
|
||||
m_AlongAx.Add("Raw side")
|
||||
End If
|
||||
SelSectionBtn.ToolTip = EgtMsg(MSG_FRAMECUTPAGEUC + 15) 'Sezione
|
||||
SelGuideBtn.Content = EgtMsg(MSG_FRAMECUTPAGEUC + 16) 'Guida
|
||||
@@ -75,6 +80,7 @@ Public Class FrameCutPageUC
|
||||
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 9) 'Distanza inizio
|
||||
OffsYyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 22) 'Distanza Y
|
||||
OffsXInteryTxBl.Text = EgtMsg(90645) 'Interasse
|
||||
SelRawSideBtn.Content = "Sel raw side"
|
||||
Dim sChBxToolTip As String = EgtMsg(90646) 'Applica valore indicato\n altrienti spessore lama
|
||||
sChBxToolTip = sChBxToolTip.Replace("/n", "£")
|
||||
Dim sItems As String() = sChBxToolTip.Split("£")
|
||||
@@ -138,25 +144,26 @@ Public Class FrameCutPageUC
|
||||
AlongAxCmBx.SelectedIndex = m_CurrAx
|
||||
AlongAxCmBx.IsEnabled = False
|
||||
' Se cornice arco o curva, disabilito scelta nuova sezione
|
||||
SelSectionBtn.IsEnabled = ( m_CurrAx = 0 Or m_CurrAx = 1)
|
||||
SelSectionBtn.IsEnabled = (m_CurrAx = 0 Or m_CurrAx = 1)
|
||||
' Se cornice curva, verifico se disabilitare scelta guida
|
||||
If m_CurrAx = 3 Then
|
||||
SelGuideBtn.IsEnabled = ( EgtGetFirstNameInGroup( nPartId, NAME_GUIDE) = GDB_ID.NULL)
|
||||
End If
|
||||
Dim bIsEnable As Boolean = (EgtGetFirstNameInGroup(nPartId, NAME_GUIDE) = GDB_ID.NULL)
|
||||
If m_CurrAx = 3 Then SelGuideBtn.IsEnabled = bIsEnable
|
||||
If m_CurrAx = 4 Then SelRawSideBtn.IsEnabled = bIsEnable
|
||||
' Se cornice su arco ne leggo i dati
|
||||
If m_CurrAx = 2 Then
|
||||
Dim dExtRad As Double
|
||||
if EgtGetInfo(nPartId, INFO_FRAME_ARCRAD, dExtRad) Then ArcRadTxBx.Text = LenToString( dExtRad, 3)
|
||||
If EgtGetInfo(nPartId, INFO_FRAME_ARCRAD, dExtRad) Then ArcRadTxBx.Text = LenToString(dExtRad, 3)
|
||||
Dim dAngCenDeg As Double
|
||||
if EgtGetInfo(nPartId, INFO_FRAME_ARCANG, dAngCenDeg) Then ArcAngTxBx.Text = DoubleToString( dAngCenDeg, 3)
|
||||
If EgtGetInfo(nPartId, INFO_FRAME_ARCANG, dAngCenDeg) Then ArcAngTxBx.Text = DoubleToString(dAngCenDeg, 3)
|
||||
End If
|
||||
' Altrimenti
|
||||
' Altrimenti
|
||||
Else
|
||||
' Abilito cambio direzione e scelta sezione
|
||||
AlongAxCmBx.SelectedIndex = m_CurrAx
|
||||
AlongAxCmBx.IsEnabled = True
|
||||
SelSectionBtn.IsEnabled = True
|
||||
SelGuideBtn.IsEnabled = True
|
||||
If m_CurrAx = 3 Then SelGuideBtn.IsEnabled = True
|
||||
If m_CurrAx = 4 Then SelRawSideBtn.IsEnabled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -168,6 +175,7 @@ Public Class FrameCutPageUC
|
||||
ArcGrid.Visibility = Windows.Visibility.Collapsed
|
||||
OffsYyTxBl.Visibility = Windows.Visibility.Collapsed
|
||||
OffsYyTxBx.Visibility = Windows.Visibility.Collapsed
|
||||
SelRawSideBtn.Visibility = Windows.Visibility.Collapsed
|
||||
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 9) 'Distanza inizio
|
||||
Case 2 'Arco
|
||||
SelSectionBtn.Visibility = Windows.Visibility.Visible
|
||||
@@ -175,6 +183,7 @@ Public Class FrameCutPageUC
|
||||
ArcGrid.Visibility = Windows.Visibility.Visible
|
||||
OffsYyTxBl.Visibility = Windows.Visibility.Visible
|
||||
OffsYyTxBx.Visibility = Windows.Visibility.Visible
|
||||
SelRawSideBtn.Visibility = Windows.Visibility.Collapsed
|
||||
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 21) 'Distanza X
|
||||
Case 3 'Guida
|
||||
SelSectionBtn.Visibility = Windows.Visibility.Visible
|
||||
@@ -183,6 +192,16 @@ Public Class FrameCutPageUC
|
||||
ArcGrid.Visibility = Windows.Visibility.Collapsed
|
||||
OffsYyTxBl.Visibility = Windows.Visibility.Visible
|
||||
OffsYyTxBx.Visibility = Windows.Visibility.Visible
|
||||
SelRawSideBtn.Visibility = Windows.Visibility.Collapsed
|
||||
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 21) 'Distanza X
|
||||
Case 4
|
||||
SelSectionBtn.Visibility = Windows.Visibility.Visible
|
||||
SelGuideBtn.Visibility = Windows.Visibility.Collapsed
|
||||
ArcGrid.Visibility = Windows.Visibility.Collapsed
|
||||
OffsYyTxBl.Visibility = Windows.Visibility.Visible
|
||||
OffsYyTxBx.Visibility = Windows.Visibility.Visible
|
||||
SelRawSideBtn.Visibility = Windows.Visibility.Visible
|
||||
SelRawSideBtn.IsEnabled = False
|
||||
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 21) 'Distanza X
|
||||
End Select
|
||||
End Sub
|
||||
@@ -209,11 +228,61 @@ Public Class FrameCutPageUC
|
||||
Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then
|
||||
Return
|
||||
End If
|
||||
|
||||
' Verifico se selezionato indicativo di pezzo
|
||||
EgtSetObjFilterForSelWin(False, False, True, False, False)
|
||||
Dim nSel As Integer
|
||||
Dim nSel As Integer = GDB_ID.NULL
|
||||
Dim nId As Integer = GDB_ID.NULL
|
||||
|
||||
If SelRawSideBtn.IsChecked Then
|
||||
' Verifico se selezionato indicativo di pezzo
|
||||
EgtSetObjFilterForSelWin(False, True, False, False, False)
|
||||
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
|
||||
nId = EgtGetFirstObjInSelWin()
|
||||
Dim ptPrev As Point3d
|
||||
' Verifico cosa selezionato
|
||||
Dim nSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
|
||||
Dim nKerfId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_KERF)
|
||||
' Acquisisco punto da disegno
|
||||
EgtUnProjectPoint(e.Location, ptPrev)
|
||||
Dim sName As String = String.Empty
|
||||
'Dim m_nDragEnt As Integer
|
||||
While nId <> GDB_ID.NULL
|
||||
sName = String.Empty
|
||||
EgtGetName(nId, sName)
|
||||
If sName = NAME_KERF Then
|
||||
EgtUnProjectPoint(e.Location, ptPrev)
|
||||
Dim dDist, dU As Double
|
||||
EgtPointCurveDist(ptPrev.Loc(nKerfId), nKerfId, nKerfId, dDist, dU)
|
||||
Dim ptStart As New Point3d
|
||||
EgtAtParamPoint(nKerfId, CInt(Math.Floor(dU)), GDB_ID.ROOT, ptStart)
|
||||
Dim ptEnd As New Point3d
|
||||
EgtAtParamPoint(nKerfId, CInt(Math.Ceiling(dU)), GDB_ID.ROOT, ptEnd)
|
||||
Dim nParentLineGuide As Integer = EgtCreateGroup(GDB_ID.ROOT)
|
||||
m_LineDir = EgtCreateLine(EgtCreateGroup(nParentLineGuide), ptStart, ptEnd, GDB_RT.GLOB)
|
||||
m_ptMidLineDir = New Point3d(ptStart)
|
||||
EgtMidPoint(m_LineDir, GDB_RT.GLOB, m_ptMidLineDir)
|
||||
EgtExtendCurveStartByLen(m_LineDir, 3500)
|
||||
EgtSetMark(m_LineDir)
|
||||
EgtDraw()
|
||||
m_bGuide = True
|
||||
If MyCreateFrame(nParentLineGuide) Then
|
||||
AdjustPartInGenericRawPart()
|
||||
SelRawSideBtn.IsChecked = False
|
||||
EgtDraw()
|
||||
End If
|
||||
' Privilegio il kerf, pertanto esco
|
||||
Exit While
|
||||
End If
|
||||
nId = EgtGetNextObjInSelWin()
|
||||
End While
|
||||
Return
|
||||
End If
|
||||
|
||||
' Verifico se selezionato indicativo di pezzo
|
||||
EgtSetObjFilterForSelWin(False, True, True, False, False)
|
||||
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
|
||||
Dim nId As Integer = EgtGetFirstObjInSelWin()
|
||||
nId = EgtGetFirstObjInSelWin()
|
||||
|
||||
While nId <> GDB_ID.NULL
|
||||
' Recupero l'identificativo del layer e del pezzo cui appartiene
|
||||
Dim nLayId As Integer = EgtGetParent(nId)
|
||||
@@ -374,14 +443,14 @@ Public Class FrameCutPageUC
|
||||
' Cerco pezzo in grezzo
|
||||
Dim nPartId As Integer = EgtGetFirstPartInRawPart(m_nRawId)
|
||||
' Se modalità curva e presa solo sezione, cancello unico pezzo in grezzo
|
||||
If m_CurrAx = 3 And EgtGetFirstNameInGroup( nPartId, NAME_GUIDE) = GDB_ID.NULL
|
||||
If m_CurrAx = 3 And EgtGetFirstNameInGroup(nPartId, NAME_GUIDE) = GDB_ID.NULL Then
|
||||
If EgtRemovePartFromRawPart(nPartId) Then
|
||||
' Rimuovo le lavorazioni
|
||||
EraseMachinings(nPartId)
|
||||
' Cancello
|
||||
EgtErase(nPartId)
|
||||
End If
|
||||
' Altrimenti esco subito
|
||||
' Altrimenti esco subito
|
||||
Else
|
||||
Return
|
||||
End If
|
||||
@@ -478,14 +547,14 @@ Public Class FrameCutPageUC
|
||||
End Sub
|
||||
|
||||
Friend Function CreateFrame(nPartId As Integer) As Boolean
|
||||
If Not MyCreateFrame( nPartId) Then
|
||||
EgtErase( nPartId)
|
||||
If Not MyCreateFrame(nPartId) Then
|
||||
EgtErase(nPartId)
|
||||
If m_CurrAx <> 2 Then
|
||||
' Errore : creazione cornice non riuscita
|
||||
m_CurrProjPage.SetErrorMessage( EgtMsg(MSG_FRAMECUTPAGEUC + 20))
|
||||
m_CurrProjPage.SetErrorMessage(EgtMsg(MSG_FRAMECUTPAGEUC + 20))
|
||||
Else
|
||||
' Errore : raggio più piccolo della larghezza della sezione
|
||||
m_CurrProjPage.SetErrorMessage( EgtMsg(MSG_FRAMECUTPAGEUC + 19))
|
||||
m_CurrProjPage.SetErrorMessage(EgtMsg(MSG_FRAMECUTPAGEUC + 19))
|
||||
End If
|
||||
Return False
|
||||
End If
|
||||
@@ -501,12 +570,12 @@ Public Class FrameCutPageUC
|
||||
' Sistemo la sezione o la guida della cornice
|
||||
If Not m_bGuide Then
|
||||
If Not AdjustSection(nPartId) Then
|
||||
EgtOutLog( "Error in CreateFrame : problems with Section")
|
||||
EgtOutLog("Error in CreateFrame : problems with Section")
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If Not AdjustGuide(nPartId) Then
|
||||
EgtOutLog( "Error in CreateFrame : problems with Guide")
|
||||
EgtOutLog("Error in CreateFrame : problems with Guide")
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
@@ -518,48 +587,48 @@ Public Class FrameCutPageUC
|
||||
Dim nSectId As Integer = EgtGetFirstInGroup(nSectLayId)
|
||||
If nSectId = GDB_ID.NULL Then Return False
|
||||
' Creazione cornice
|
||||
nSurfId = CreateLineFrame( nSectId, nSectLayId, nPartId)
|
||||
nSurfId = CreateLineFrame(nSectId, nSectLayId, nPartId)
|
||||
' Se non creata superficie, reset di tutto e segnalazione errore
|
||||
If nSurfId = GDB_ID.NULL Then
|
||||
EgtErase( nPartId)
|
||||
EgtOutLog( "Error in CreateFrame : Surface not constructible")
|
||||
EgtErase(nPartId)
|
||||
EgtOutLog("Error in CreateFrame : Surface not constructible")
|
||||
Return False
|
||||
End If
|
||||
' se cornice su arco
|
||||
' se cornice su arco
|
||||
ElseIf m_CurrAx = 2 Then
|
||||
' Recupero layer e curva della sezione
|
||||
Dim nSectLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_SECT)
|
||||
Dim nSectId As Integer = EgtGetFirstInGroup(nSectLayId)
|
||||
If nSectId = GDB_ID.NULL Then Return False
|
||||
' Porto l'inizio della curva a X0 locale
|
||||
ChangeCurveStartToX0( nSectId)
|
||||
ChangeCurveStartToX0(nSectId)
|
||||
' Creazione cornice
|
||||
nSurfId = CreateArcFrame( nSectId, nSectLayId, nPartId)
|
||||
nSurfId = CreateArcFrame(nSectId, nSectLayId, nPartId)
|
||||
' Se non creata superficie, reset di tutto e segnalazione errore
|
||||
If nSurfId = GDB_ID.NULL Then
|
||||
EgtErase( nPartId)
|
||||
EgtOutLog( "Error in CreateFrame : radius too small for the section")
|
||||
EgtErase(nPartId)
|
||||
EgtOutLog("Error in CreateFrame : radius too small for the section")
|
||||
Return False
|
||||
End If
|
||||
' altrimenti cornice su guida
|
||||
' altrimenti cornice su guida
|
||||
Else
|
||||
If not m_bGuide Then
|
||||
If Not m_bGuide Then
|
||||
' Recupero layer e curva della sezione
|
||||
Dim nSectLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_SECT)
|
||||
Dim nSectId As Integer = EgtGetFirstInGroup(nSectLayId)
|
||||
If nSectId = GDB_ID.NULL Then Return False
|
||||
' Porto l'inizio della curva a X0 locale
|
||||
ChangeCurveStartToX0( nSectId)
|
||||
ChangeCurveStartToX0(nSectId)
|
||||
Else
|
||||
' Porto la guida nel pezzo con la sezione
|
||||
Dim nTruePartId As Integer = EgtGetFirstPartInRawPart( m_nRawId)
|
||||
Dim nTruePartId As Integer = EgtGetFirstPartInRawPart(m_nRawId)
|
||||
If nTruePartId = GDB_ID.NULL Then
|
||||
EgtOutLog( "Error in CreateFrame : Section not found")
|
||||
EgtOutLog("Error in CreateFrame : Section not found")
|
||||
Return False
|
||||
End If
|
||||
' Parcheggio il pezzo trovato
|
||||
m_MainWindow.m_CadCutPageUC.m_NestPage.CalcRawPart()
|
||||
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart( nTruePartId)
|
||||
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nTruePartId)
|
||||
' Recupero layer e curva della sezione
|
||||
Dim nSectLayId As Integer = EgtGetFirstNameInGroup(nTruePartId, NAME_SECT)
|
||||
Dim nSectId As Integer = EgtGetFirstInGroup(nSectLayId)
|
||||
@@ -569,17 +638,17 @@ Public Class FrameCutPageUC
|
||||
Dim nGuideId As Integer = EgtGetFirstInGroup(nGuideLayId)
|
||||
If nGuideId = GDB_ID.NULL Then Return False
|
||||
' Sposto la guida in questo pezzo
|
||||
EgtRelocate( nGuideLayId, nTruePartId)
|
||||
EgtRelocate(nGuideLayId, nTruePartId)
|
||||
' Cancello il pezzo
|
||||
EgtErase( nPartId)
|
||||
EgtErase(nPartId)
|
||||
' Creazione cornice
|
||||
nPartId = nTruePartId
|
||||
nSurfId = CreateCurveFrame( nSectId, nSectLayId, nGuideId, nGuideLayId, nPartId)
|
||||
nPartId = nTruePartId
|
||||
nSurfId = CreateCurveFrame(nSectId, nSectLayId, nGuideId, nGuideLayId, nPartId)
|
||||
m_bGuide = False
|
||||
' Se non creata superficie, reset di tutto e segnalazione errore
|
||||
If nSurfId = GDB_ID.NULL Then
|
||||
EgtErase( nPartId)
|
||||
EgtOutLog( "Error in CreateFrame : Surface not constructible")
|
||||
EgtErase(nPartId)
|
||||
EgtOutLog("Error in CreateFrame : Surface not constructible")
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
@@ -623,17 +692,17 @@ Public Class FrameCutPageUC
|
||||
Dim nSurfId As Integer = GDB_ID.NULL
|
||||
' Se cornice rettilinea
|
||||
If m_CurrAx = 0 Or m_CurrAx = 1 Then
|
||||
nSurfId = CreateLineFrame( nSectId, nSectLayId, nPartId)
|
||||
' se cornice su arco
|
||||
nSurfId = CreateLineFrame(nSectId, nSectLayId, nPartId)
|
||||
' se cornice su arco
|
||||
ElseIf m_CurrAx = 2 Then
|
||||
nSurfId = CreateArcFrame( nSectId, nSectLayId, nPartId)
|
||||
' altrimenti cornice su curva
|
||||
nSurfId = CreateArcFrame(nSectId, nSectLayId, nPartId)
|
||||
' altrimenti cornice su curva
|
||||
Else
|
||||
' Recupero layer e curva della guida
|
||||
Dim nGuideLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_GUIDE)
|
||||
Dim nGuideId As Integer = EgtGetFirstInGroup(nGuideLayId)
|
||||
If nGuideId = GDB_ID.NULL Then Return False
|
||||
nSurfId = CreateCurveFrame( nSectId, nSectLayId, nGuideId, nGuideLayId, nPartId)
|
||||
nSurfId = CreateCurveFrame(nSectId, nSectLayId, nGuideId, nGuideLayId, nPartId)
|
||||
End If
|
||||
' Assegno nome e direzione a pezzo
|
||||
EgtSetName(nPartId, NAME_FRAME)
|
||||
@@ -699,7 +768,7 @@ Public Class FrameCutPageUC
|
||||
ptStart = ptTmp
|
||||
End If
|
||||
' Se cornice rettilinea
|
||||
If m_CurrAx = 0 Or m_CurrAx = 1 Then
|
||||
If m_CurrAx = 0 Or m_CurrAx = 1 Then
|
||||
' Se linea orizzontale, aggiungo tratti verticali
|
||||
If b3Box.DimY() < EPS_SMALL Then
|
||||
ptStart -= 10 * EPS_SMALL * Vector3d.Y_AX()
|
||||
@@ -740,7 +809,7 @@ Public Class FrameCutPageUC
|
||||
EgtAddCurveCompoLine(nCrvId, ptEnd)
|
||||
b3Box.Add(ptEnd)
|
||||
End If
|
||||
' Altrimenti cornice curva
|
||||
' Altrimenti cornice curva
|
||||
Else
|
||||
' Aggiungo linea verticale dall'estremo più alto alla quota del più basso
|
||||
If ptStart.y > ptEnd.y Then
|
||||
@@ -767,7 +836,15 @@ Public Class FrameCutPageUC
|
||||
EgtSelectLayerObjs(nLayerId)
|
||||
Dim nCrvIds(0) As Integer
|
||||
nCrvIds(0) = GDB_ID.SEL
|
||||
Dim nCrvId As Integer = EgtCreateCurveCompoByChain(nLayerId, 1, nCrvIds, New Point3d(), True)
|
||||
' ---- INIZIO ---- NUOVA GESTIONE ---- Verifico che il segmento passato è una linea ricavata dal contorno del grezzo
|
||||
Dim nCrvId As Integer = GDB_ID.NULL
|
||||
If m_CurrAx = 4 And m_LineDir <> GDB_ID.NULL Then
|
||||
nCrvId = m_LineDir
|
||||
Else
|
||||
nCrvId = EgtCreateCurveCompoByChain(nLayerId, 1, nCrvIds, New Point3d(), True)
|
||||
End If
|
||||
' ---- FINE ---- NUOVA GESTIONE ----
|
||||
' Se non è stata creata esco
|
||||
If nCrvId = GDB_ID.NULL Then Return False
|
||||
' Elimino eventuali curve oltre la prima
|
||||
Dim nId As Integer = EgtGetNext(nCrvId)
|
||||
@@ -792,17 +869,17 @@ Public Class FrameCutPageUC
|
||||
' Elimino vecchio layer
|
||||
EgtErase(nLayerId)
|
||||
' Impongo rotazione guida CCW
|
||||
Dim bClosed As Boolean = EgtCurveIsClosed( nCrvId)
|
||||
If Not bClosed Then EgtCloseCurveCompo( nCrvId)
|
||||
Dim bClosed As Boolean = EgtCurveIsClosed(nCrvId)
|
||||
If Not bClosed Then EgtCloseCurveCompo(nCrvId)
|
||||
Dim dArea As Double = 0
|
||||
EgtCurveAreaXY( nCrvId, dArea)
|
||||
If Not bClosed Then EgtRemoveCurveCompoCurve( nCrvId)
|
||||
If dArea < -1 Then EgtInvertCurve( nCrvId)
|
||||
EgtCurveAreaXY(nCrvId, dArea)
|
||||
If Not bClosed Then EgtRemoveCurveCompoCurve(nCrvId)
|
||||
If dArea < -1 Then EgtInvertCurve(nCrvId)
|
||||
' Se curva chiusa, impongo inizio a metà del lato a X max
|
||||
If bClosed Then
|
||||
Dim b3Guide As New BBox3d
|
||||
EgtGetBBox( nCrvId, GDB_BB.STANDARD, b3Guide)
|
||||
Dim ptStart As New Point3d( b3Guide.Max().x, b3Guide.Center().y, b3Guide.Center().z)
|
||||
EgtGetBBox(nCrvId, GDB_BB.STANDARD, b3Guide)
|
||||
Dim ptStart As New Point3d(b3Guide.Max().x, b3Guide.Center().y, b3Guide.Center().z)
|
||||
EgtChangeClosedCurveStartPoint(nCrvId, ptStart)
|
||||
End If
|
||||
Return True
|
||||
@@ -828,7 +905,7 @@ Public Class FrameCutPageUC
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function CreateLineFrame( nSectId As Integer, nSectLayId As Integer, nPartId As Integer) As Integer
|
||||
Private Function CreateLineFrame(nSectId As Integer, nSectLayId As Integer, nPartId As Integer) As Integer
|
||||
' Porto la sezione nel piano opportuno e calcolo il vettore di estrusione
|
||||
Dim vtExtr As Vector3d
|
||||
If m_CurrAx = 0 Then
|
||||
@@ -869,7 +946,7 @@ Public Class FrameCutPageUC
|
||||
Return nSurfId
|
||||
End Function
|
||||
|
||||
Private Function CreateArcFrame( nSectId As Integer, nSectLayId As Integer, nPartId As Integer) As Integer
|
||||
Private Function CreateArcFrame(nSectId As Integer, nSectLayId As Integer, nPartId As Integer) As Integer
|
||||
' Recupero ingombro locale della sezione
|
||||
Dim b3Sect As New BBox3d
|
||||
EgtGetBBox(nSectId, GDB_BB.STANDARD, b3Sect)
|
||||
@@ -912,22 +989,22 @@ Public Class FrameCutPageUC
|
||||
' Creo la superficie swept
|
||||
Dim dSectRotDeg As Double = 90 + dAngIniDeg
|
||||
EgtRotate(nSectLayId, ptStart, Vector3d.Z_AX(), dSectRotDeg, GDB_RT.LOC)
|
||||
Dim nSurfId As Integer = EgtCreateSurfTmSwept( nSurfLayId, nSectId, nGuideId, True, EPS_STM)
|
||||
Dim nSurfId As Integer = EgtCreateSurfTmSwept(nSurfLayId, nSectId, nGuideId, True, EPS_STM)
|
||||
Return nSurfId
|
||||
End Function
|
||||
|
||||
Private Function CreateCurveFrame( nSectId As Integer, nSectLayId As Integer, nGuideId As Integer, nGuideLayId As Integer, nPartId As Integer) As Integer
|
||||
Private Function CreateCurveFrame(nSectId As Integer, nSectLayId As Integer, nGuideId As Integer, nGuideLayId As Integer, nPartId As Integer) As Integer
|
||||
' Recupero flag lavorazione da lato opposto
|
||||
Dim bOthSide As Boolean = False
|
||||
EgtGetInfo( nPartId, INFO_FRAME_OTHSIDE, bOthSide)
|
||||
EgtGetInfo(nPartId, INFO_FRAME_OTHSIDE, bOthSide)
|
||||
' Recupero dati inizio guida
|
||||
Dim ptStart As Point3d
|
||||
EgtStartPoint(nGuideId, nPartId, ptStart)
|
||||
Dim vtStart As Vector3d
|
||||
EgtStartVector(nGuideId, nPartId, vtStart)
|
||||
' Creo riferimento per sezione
|
||||
dim frSect As New Frame3d
|
||||
frSect.Setup( ptStart, -vtStart)
|
||||
Dim frSect As New Frame3d
|
||||
frSect.Setup(ptStart, -vtStart)
|
||||
' Porto la sezione in questo riferimento
|
||||
EgtChangeGroupFrame(nSectLayId, frSect)
|
||||
' Recupero ingombro locale della sezione
|
||||
@@ -935,16 +1012,16 @@ Public Class FrameCutPageUC
|
||||
EgtGetBBox(nSectId, GDB_BB.STANDARD, b3Sect)
|
||||
' Recupero ingombro locale della guida
|
||||
Dim b3Guide As New BBox3d
|
||||
EgtGetBBox( nGuideId, GDB_BB.STANDARD, b3Guide)
|
||||
b3Guide.ToLoc( frSect)
|
||||
EgtGetBBox(nGuideId, GDB_BB.STANDARD, b3Guide)
|
||||
b3Guide.ToLoc(frSect)
|
||||
' Muovo sezione dalla parte interna della curva
|
||||
If ( Not bOthSide And Math.Abs( b3Guide.Min().x) > Math.Abs( b3Guide.Max().x)) OrElse
|
||||
( bOthSide And Math.Abs( b3Guide.Min().x) <= Math.Abs( b3Guide.Max().x)) Then
|
||||
Dim vtMove As New Vector3d( - b3Sect.Max().x, -b3Sect.Min().y, 0)
|
||||
EgtMove( nSectId, vtMove)
|
||||
If (Not bOthSide And Math.Abs(b3Guide.Min().x) > Math.Abs(b3Guide.Max().x)) OrElse
|
||||
(bOthSide And Math.Abs(b3Guide.Min().x) <= Math.Abs(b3Guide.Max().x)) Then
|
||||
Dim vtMove As New Vector3d(-b3Sect.Max().x, -b3Sect.Min().y, 0)
|
||||
EgtMove(nSectId, vtMove)
|
||||
Else
|
||||
Dim vtMove As New Vector3d( - b3Sect.Min().x, -b3Sect.Min().y, 0)
|
||||
EgtMove( nSectId, vtMove)
|
||||
Dim vtMove As New Vector3d(-b3Sect.Min().x, -b3Sect.Min().y, 0)
|
||||
EgtMove(nSectId, vtMove)
|
||||
End If
|
||||
' Recupero o creo layer per la superficie
|
||||
Dim nSurfLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_SURF)
|
||||
@@ -956,7 +1033,7 @@ Public Class FrameCutPageUC
|
||||
End If
|
||||
EgtSetColor(nSurfLayId, COL_FRAME())
|
||||
' Creo la superficie swept
|
||||
Dim nSurfId As Integer = EgtCreateSurfTmSwept( nSurfLayId, nSectId, nGuideId, True, EPS_STM)
|
||||
Dim nSurfId As Integer = EgtCreateSurfTmSwept(nSurfLayId, nSectId, nGuideId, True, EPS_STM)
|
||||
Return nSurfId
|
||||
End Function
|
||||
|
||||
@@ -1027,11 +1104,81 @@ Public Class FrameCutPageUC
|
||||
ptIns.y = m_dKerf
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim dOffsZ As Double = 0
|
||||
StringToLen(OffsZTxBx.Text, dOffsZ)
|
||||
ptIns.z = (m_RawBox.Max().z - m_RawBox.Min().z) - (PartBox.Max().z - PartBox.Min().z) - dOffsZ
|
||||
ptIns.z = Math.Max(ptIns.z, 0)
|
||||
Return EgtAddPartToRawPart(nPartId, ptIns, EgtGetFirstRawPart())
|
||||
|
||||
Dim bRet As Boolean = EgtAddPartToRawPart(nPartId, ptIns, EgtGetFirstRawPart())
|
||||
If m_CurrAx = 4 Then
|
||||
bRet = AdjustPartInGenericRawPart()
|
||||
End If
|
||||
|
||||
Return bRet
|
||||
End Function
|
||||
|
||||
Public Function AdjustPartInGenericRawPart() As Boolean
|
||||
' --- Eseguo una traslazione per portare il FRAME sul punto iniziale della guida (NON NEL PUNTO MINIMO DEL BOX!) ---
|
||||
Dim nTruePartId As Integer = EgtGetFirstPartInRawPart(m_nRawId)
|
||||
|
||||
' Recupero layer e curva della guida
|
||||
Dim nGuideLayId As Integer = EgtGetFirstNameInGroup(nTruePartId, NAME_GUIDE)
|
||||
Dim nGuideId As Integer = EgtGetFirstInGroup(nGuideLayId)
|
||||
' Recupero il layer e il contorno della sezione
|
||||
Dim nSectLayId As Integer = EgtGetFirstNameInGroup(nTruePartId, NAME_SECT)
|
||||
Dim nSectId As Integer = EgtGetFirstInGroup(nSectLayId)
|
||||
|
||||
' Aggiusto la poszione
|
||||
Dim ptMid As Point3d
|
||||
EgtMidPoint(nGuideId, GDB_RT.GLOB, ptMid)
|
||||
Dim vtTrasl As Vector3d = m_ptMidLineDir - ptMid
|
||||
vtTrasl.z = 0
|
||||
EgtMove(nTruePartId, vtTrasl)
|
||||
' Porto il pezzo dentro al grezzo (PERCHE' E' FUORI)
|
||||
Dim vtPerp As New Vector3d
|
||||
EgtStartVector(nGuideId, GDB_RT.GLOB, vtPerp)
|
||||
vtPerp.Rotate(Vector3d.Z_AX, 90)
|
||||
' Da MinArea recupero il valore di offset della sezione rispetto alla guida
|
||||
Dim frSect As New Frame3d
|
||||
Dim Dim_X As Double = 0
|
||||
Dim Dim_Y As Double = 0
|
||||
EgtCurveMinAreaRectangleXY(nSectId, GDB_RT.GLOB, frSect, Dim_X, Dim_Y)
|
||||
Dim dOffsXy As Double = 0
|
||||
StringToLen(OffsXyTxBx.Text, dOffsXy)
|
||||
EgtMove(nTruePartId, vtPerp * Dim_X)
|
||||
|
||||
' recupero il contorno del kerf e lo proietto sulla base del grezzo ì
|
||||
Dim nCopyKerfId As Integer = EgtCopyGlob(EgtGetFirstNameInGroup(m_nRawId, "Kerf"), nGuideLayId)
|
||||
Dim KerfBox As New BBox3d
|
||||
EgtGetBBoxGlob(nGuideLayId, GDB_BB.EXACT + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, KerfBox)
|
||||
Dim vtProjectOnTable As New Vector3d(0, 0, KerfBox.Min.z - m_ptMidLineDir.z)
|
||||
EgtMove(nCopyKerfId, vtProjectOnTable)
|
||||
EgtDraw()
|
||||
' determino l'intersezione tra il kerf e la guida...
|
||||
Dim pt1 As New Point3d
|
||||
EgtStartPoint(nGuideId, GDB_RT.GLOB, pt1)
|
||||
EgtTrimExtendCurveByLen(nGuideId, -500 - 1197.9, pt1)
|
||||
Dim pt2 As New Point3d
|
||||
EgtEndPoint(nGuideId, GDB_RT.GLOB, pt2)
|
||||
EgtTrimExtendCurveByLen(nGuideId, -500 - 1282.2, pt2)
|
||||
' riposizione l'origine della sezione
|
||||
Dim pt3 As New Point3d
|
||||
EgtStartPoint(nGuideId, GDB_RT.GLOB, pt3)
|
||||
EgtMove(nSectId, New Vector3d(pt3 - pt1), GDB_RT.GLOB)
|
||||
|
||||
Dim RawCopy As Integer = -1
|
||||
' Recupero il layer la superficie della sezione
|
||||
Dim nSurfLayId As Integer = EgtGetFirstNameInGroup(nTruePartId, "Surf")
|
||||
Dim nSurfId As Integer = EgtGetFirstInGroup(nSurfLayId)
|
||||
Dim nCopyRawId As Integer = EgtCopyGlob(EgtGetFirstNameInGroup(m_nRawId, "RawSolid"), nSurfLayId)
|
||||
EgtSetName(nCopyRawId, "SurfTrimmed")
|
||||
EgtSurfTmIntersect(nCopyRawId, nSurfId)
|
||||
EgtSetColor(nCopyRawId, COL_FRAME)
|
||||
EgtSetAlpha(nCopyRawId, 100)
|
||||
EgtErase(nSurfId)
|
||||
EgtSaveFile("c:\EgtData\OmagCUT\Temp\BOB.nge", NGE.BIN)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user