From 749fb2d9490792e22dc5403ca01d48eea4dfe417 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Tue, 30 Aug 2022 17:43:34 +0200 Subject: [PATCH 1/6] Gestione creazione di Ponticelli WaterJet --- CAM/CamAuto.vb | 2 +- CadCuts/SplitPageUC.xaml | 15 +- CadCuts/SplitPageUC.xaml.vb | 211 ++++++++++++++++++++++- OmagCUT.vbproj | 6 + OmagCUTDictionary.xaml | 2 + Resources/NewIcons/Ponticelli.png | Bin 0 -> 742 bytes Resources/NewIcons/Ponticelli_delete.png | Bin 0 -> 1466 bytes 7 files changed, 230 insertions(+), 6 deletions(-) create mode 100644 Resources/NewIcons/Ponticelli.png create mode 100644 Resources/NewIcons/Ponticelli_delete.png diff --git a/CAM/CamAuto.vb b/CAM/CamAuto.vb index 8674f31..6b51445 100644 --- a/CAM/CamAuto.vb +++ b/CAM/CamAuto.vb @@ -93,7 +93,7 @@ Friend Module CamAuto If nPrjType = CurrentProjectPageUC.PRJ_TYPE.FLATS Then ' Reinserisco tutte le lavorazioni piane AddMachinings(GDB_ID.NULL, nWarn) - ' Se altrimenti progetto con cornici + ' Se altrimenti progetto con cornici ElseIf nPrjType = CurrentProjectPageUC.PRJ_TYPE.FRAMES Then ' Reinserisco tutte le lavorazioni delle cornici AddFrameMachinings(m_MainWindow.m_FrameCutPageUC.m_FrameMachiningUC.m_dStartTrim, m_MainWindow.m_FrameCutPageUC.m_FrameMachiningUC.m_dEndTrim) diff --git a/CadCuts/SplitPageUC.xaml b/CadCuts/SplitPageUC.xaml index dacf0fd..c7c41ff 100644 --- a/CadCuts/SplitPageUC.xaml +++ b/CadCuts/SplitPageUC.xaml @@ -48,8 +48,8 @@ + + + + + + + + + + + diff --git a/CadCuts/SplitPageUC.xaml.vb b/CadCuts/SplitPageUC.xaml.vb index 15553a8..d83bebb 100644 --- a/CadCuts/SplitPageUC.xaml.vb +++ b/CadCuts/SplitPageUC.xaml.vb @@ -26,6 +26,20 @@ Public Class SplitPageUC ' verifico che le lavorazioni selezionate siano omogenee (con lo stesso utensile) Private m_bAreHomogeneous As Boolean = False + ' Id tagli WJ per generazione ponticelli tra due percorsi + Private m_nIdSelectedPartWJ_Srt As Integer = GDB_ID.NULL + Private m_nIdSelectedSideWJ_Srt As Integer = GDB_ID.NULL + Private m_nIdSelectedWaterJet_Srt As Integer = GDB_ID.NULL + Private m_nIdSelectedPartWJ_End As Integer = GDB_ID.NULL + Private m_nIdSelectedSideWJ_End As Integer = GDB_ID.NULL + Private m_nIdSelectedWaterJet_End As Integer = GDB_ID.NULL + ' Id gruppo Bridges (Nuovo da versione 30/08/2022) + Private m_nIdBridgesGroup As Integer = GDB_ID.NULL + Private m_nIdBridgeLineGroup As Integer = GDB_ID.NULL + Private m_nIdBridge As Integer = GDB_ID.NULL + Private m_ptSrtBridge As New Point3d + Private m_ptEndBridge As New Point3d + Private m_ItemList As New ObservableCollection(Of NameIdLsBxItem) 'Private m_CurrInd As Integer = -1 'Private m_CurrItems As New List(Of NameIdLsBxItem) @@ -70,6 +84,7 @@ Public Class SplitPageUC ModifyBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 17) ' Modifica AutoBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 18) ' Auto RestartBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 19) ' Restart + BridgesWJBtn.ToolTip = "Bridges" End Sub Private Sub SplitPageUC_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded @@ -195,6 +210,128 @@ Public Class SplitPageUC Next End Sub + Private Sub OnMyMouseDownSceneBridges(sender As Object, e As System.Windows.Forms.MouseEventArgs, + ByVal IsFirst As Boolean, + ByRef m_nIdSelectedSideWJ As Integer, + ByRef m_nIdSelectedWaterJet As Integer, + ByRef nIdParentPart As Integer) + + ' Acquisisco punto da disegno + Dim CurrPoint As New Point3d + EgtUnProjectPoint(e.Location, CurrPoint) + + ' Verifico se selezionato indicativo di pezzo + EgtSetObjFilterForSelWin(False, True, False, False, False) + Dim nSelMy As Integer + EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSelMy) + Dim nIdMy As Integer = EgtGetFirstObjInSelWin() + While nIdMy <> GDB_ID.NULL + Dim sLayer As String = String.Empty + ' layer di origine + Dim nIdParent As Integer = EgtGetParent(nIdMy) + ' recupero il nome del Layer + EgtGetName(nIdParent, sLayer) + ' solo se il nome del layer è quello associato ad un lato esterno allora procedo con l'evidenziazione + If sLayer = NAME_OUTLOOP Then + If EgtGetType(nIdMy) = GDB_TY.CRV_ARC OrElse EgtGetType(nIdMy) = GDB_TY.CRV_COMPO OrElse EgtGetType(nIdMy) = GDB_TY.CRV_LINE Then + If m_nIdSelectedSideWJ <> GDB_ID.NULL Or m_nIdSelectedSideWJ = nIdMy Then + EgtDeselectObj(m_nIdSelectedSideWJ) + End If + ' recupero il gruppo della lavorazione associata + nIdParentPart = EgtGetParent(nIdParent) + Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, NAME_PREVIEW) + ' VERIFICA: recupero l'elenco delle Preview di Tipo WaterJet associate a questo Part + Dim ListGroup As List(Of Integer) = m_MainWindow.m_CadCutPageUC.m_NestPage.ResearchGropuWJ(nIdParent, nIdPV) + ' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo + Dim ListGroupSaw As List(Of Integer) = m_MainWindow.m_CadCutPageUC.m_NestPage.ResearchGropuSaw(nIdParent, nIdPV) + ' se non esiste almeno 1 Preview di tipo WaterJet + If ListGroup.Count > 0 Then + m_nIdSelectedSideWJ = nIdMy + ' Ricalcolo tutte le lavorazioni + Dim nWarn As Integer = 0 + ResetAllMachinings(nWarn) + ' recupero l'indice del PreView che deve essere acceso per indicare la selezione + ListGroup = m_MainWindow.m_CadCutPageUC.m_NestPage.ResearchGropuWJ(nIdParent, nIdPV) + Dim nIdWJ As Integer = m_MainWindow.m_CadCutPageUC.m_NestPage.GetPVIdFromIdSide(ListGroup, nIdMy) + m_MainWindow.m_CadCutPageUC.m_NestPage.GetCurrentPVFromIdSide(ListGroup, nIdMy, nIdWJ, nIdParent) + ' recupero il punto più vicino alla curva passata + If IsFirst Then + EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptSrtBridge) + Else + ' prima di confermare verifico che non ci siano interferenze + If VerifyInterference(m_nIdBridge) Then + m_CurrProjPage.ClearMessage() + EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptEndBridge) + EgtModifyCurveEndPoint(m_nIdBridge, m_ptEndBridge, GDB_RT.GLOB) + ' salvo nel Gruppo "BridgeLine" gli dei pezzi che sono collegati + EgtSetInfo(EgtGetParent(m_nIdBridge), "PartStart", m_nIdSelectedPartWJ_Srt) + EgtSetInfo(EgtGetParent(m_nIdBridge), "PartEnd", m_nIdSelectedPartWJ_End) + Else + ' attendo la selezione di un punto valido + m_nIdSelectedSideWJ = GDB_ID.NULL + m_nIdSelectedWaterJet = GDB_ID.NULL + nIdParentPart = GDB_ID.NULL + m_CurrProjPage.ClearMessage() + m_CurrProjPage.SetWarningMessage("Bridge intersects part") + Return + End If + End If + m_nIdSelectedWaterJet = nIdWJ + ' salvo il valore del PreView evidenziato + EgtSetMark(nIdParentPart) + ' EgtSetMark(nIdWJ) + EgtSelectObj(nIdMy) + EgtDraw() + Exit While + End If + + End If + End If + nIdMy = EgtGetNextObjInSelWin() + End While + Return + End Sub + + Private Sub OnMyMouseMoveSceneBridges(ptCurr As Point3d) + ptCurr.z = m_ptSrtBridge.z + ' rappresento il egmento + If m_nIdBridge = GDB_ID.NULL Then + m_nIdBridgeLineGroup = EgtCreateGroup(m_nIdBridgesGroup) + EgtSetName(m_nIdBridgeLineGroup, "BridgeLine") + m_nIdBridge = EgtCreateLine(m_nIdBridgeLineGroup, m_ptSrtBridge, ptCurr, GDB_RT.GLOB) + End If + EgtModifyCurveEndPoint(m_nIdBridge, ptCurr, GDB_RT.GLOB) + EgtDraw() + End Sub + + Private Function VerifyInterference(nIdBridge As Integer) As Boolean + Dim bOk As Boolean = True + EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) + Dim nIdPart As Integer = GDB_ID.NULL + nIdPart = EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId) + While nIdPart <> GDB_ID.NULL + Dim nIdRegion As Integer = EgtGetFirstNameInGroup(nIdPart, "Region") + + nIdPart = EgtGetNextPartInRawPart(m_CurrProjPage.m_nRawId) + End While + Return bOk + End Function + + Private Sub DeselectWJBridgesPart() + m_nIdBridge = GDB_ID.NULL + EgtResetMark(m_nIdSelectedPartWJ_Srt) + m_nIdSelectedPartWJ_Srt = GDB_ID.NULL + EgtDeselectObj(m_nIdSelectedSideWJ_Srt) + m_nIdSelectedSideWJ_Srt = GDB_ID.NULL + m_nIdSelectedWaterJet_Srt = GDB_ID.NULL + EgtResetMark(m_nIdSelectedPartWJ_End) + m_nIdSelectedPartWJ_End = GDB_ID.NULL + EgtDeselectObj(m_nIdSelectedSideWJ_End) + m_nIdSelectedSideWJ_End = GDB_ID.NULL + m_nIdSelectedWaterJet_End = GDB_ID.NULL + EgtDraw() + End Sub + Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene ' Verifico di essere il gestore attivo e non in modalità sola visualizzazione If Not m_bActive OrElse m_bShow Then Return @@ -203,6 +340,21 @@ Public Class SplitPageUC Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then Return End If + + ' definizione dei ponticelli + If BridgesWJBtn.IsChecked Then + If m_nIdSelectedPartWJ_Srt = GDB_ID.NULL Then + OnMyMouseDownSceneBridges(sender, e, True, m_nIdSelectedSideWJ_Srt, m_nIdSelectedWaterJet_Srt, m_nIdSelectedPartWJ_Srt) + Else + OnMyMouseDownSceneBridges(sender, e, False, m_nIdSelectedSideWJ_End, m_nIdSelectedWaterJet_End, m_nIdSelectedPartWJ_End) + End If + ' se entrambi i pezzi sono stati definiti allora procedo alla deselezione + If m_nIdSelectedPartWJ_Srt <> GDB_ID.NULL And m_nIdSelectedPartWJ_End <> GDB_ID.NULL Then + DeselectWJBridgesPart() + End If + Return + End If + ' Reset drag m_nDragInd = -1 m_nDragType = 0 @@ -287,13 +439,23 @@ Public Class SplitPageUC Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseMoveScene ' Verifico di essere il gestore attivo e non in modalità sola visualizzazione If Not m_bActive OrElse m_bShow Then Return + ' Ricavo il punto corrente in coordinate mondo + Dim ptCurr As Point3d + EgtUnProjectPoint(e.Location, ptCurr) + + ' definizione dei ponticelli + If BridgesWJBtn.IsChecked Then + If m_nIdSelectedPartWJ_Srt <> GDB_ID.NULL Then + OnMyMouseMoveSceneBridges(ptCurr) + End If + Return + End If + ' Se drag non abilitato o in corso If m_nDragInd = -1L Or m_bDragging Then Return m_bDragging = True Dim nOperId As Integer = m_MachiningList(m_nDragInd).m_nId - ' Ricavo il punto corrente in coordinate mondo - Dim ptCurr As Point3d - EgtUnProjectPoint(e.Location, ptCurr) + ' Ricavo il vettore di movimento e la variazione di lunghezza Dim vtMove As Vector3d = ptCurr - m_ptDragPrev Dim dDelta = vtMove * m_MachiningList(m_nDragInd).m_vtDir @@ -641,6 +803,27 @@ Public Class SplitPageUC EnableButtons() End Sub + Private Sub BridgeBtn_Click(sender As Object, e As RoutedEventArgs) Handles BridgesWJBtn.Click + ' se deseleziono resetto tutte le variabili + If Not BridgesWJBtn.IsChecked Then + DeselectWJBridgesPart() + Return + End If + ' recuoero il gruppo di lavorazione corrente + Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup() + ' creo il gruppo per i ponticelli + Dim sNameGroup As String = "Bridges" + Dim nId As Integer = EgtGetFirstNameInGroup(nIdCurrMachGroup, sNameGroup) + If nId <> GDB_ID.NULL Then + m_nIdBridgesGroup = nId + End If + ' se non lo trovo allora lo creo + If nId = GDB_ID.NULL Then + m_nIdBridgesGroup = EgtCreateGroup(nIdCurrMachGroup) + EgtSetName(m_nIdBridgesGroup, "Bridges") + End If + End Sub + Private Function AdjustBothCuts(nI As Integer, Optional bAllForced As Boolean = False, Optional bAccForced As Boolean = False) As Boolean @@ -1512,6 +1695,12 @@ Public Class SplitPageUC End Sub Friend Sub ExitSplit(Optional bTrueExit As Boolean = True) + ' se attivo il comando è Bridge + If BridgesWJBtn.IsChecked Then + DeselectWJBridgesPart() + ' disattivo + BridgesWJBtn.IsChecked = False + End If ' Rimuovo evidenziazione e numeri RemoveMarkAndNumbers() ' Ripristino colori lavorazioni @@ -1754,6 +1943,7 @@ Public Class SplitPageUC Private Sub VisibilityButtonFromMachinig(ByVal Type As Integer) If Type <> MCH_OY.SAWING Then + CutBtn.Visibility = Visibility.Hidden CutStartBtn.Visibility = Visibility.Hidden CutEndBtn.Visibility = Visibility.Hidden @@ -1784,6 +1974,21 @@ Public Class SplitPageUC AllExtendBtn.Visibility = Visibility.Visible AllReduceBtn.Visibility = Visibility.Visible End If + + ' gestione bottone per generazione ponticelli + If Type = MCH_OY.WATERJETTING Then + ' siccome la stessa posizione è occupata da due comandi sovrapposti + If CutStartBtn.Visibility = Visibility.Hidden Then + BridgesWJBtn.Visibility = Visibility.Visible + BridgesDeleteWJBtn.Visibility = Visibility.Visible + Else + BridgesWJBtn.Visibility = Visibility.Hidden + BridgesDeleteWJBtn.Visibility = Visibility.Hidden + End If + Else + BridgesWJBtn.Visibility = Visibility.Hidden + BridgesDeleteWJBtn.Visibility = Visibility.Hidden + End If End Sub Private Function ModifyOtherLeadIn(nI As Integer, nLiOthType As Integer) As Boolean diff --git a/OmagCUT.vbproj b/OmagCUT.vbproj index aa1d3ec..520d8c6 100644 --- a/OmagCUT.vbproj +++ b/OmagCUT.vbproj @@ -1262,6 +1262,12 @@ + + + + + + IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagCUT\OmagCUTR32.exe diff --git a/OmagCUTDictionary.xaml b/OmagCUTDictionary.xaml index 1a5c548..ef71614 100644 --- a/OmagCUTDictionary.xaml +++ b/OmagCUTDictionary.xaml @@ -218,6 +218,8 @@ + + diff --git a/Resources/NewIcons/Ponticelli.png b/Resources/NewIcons/Ponticelli.png new file mode 100644 index 0000000000000000000000000000000000000000..7a87e1e2ae1f4269a46527097947f41929bb1d5e GIT binary patch literal 742 zcmVEX>4Tx04R}tkvmAkP!xv$riw)>4t5YJlA$_T@P#-^6^me@v=v%)FuCaqnlvOS zE{=k0!NJF3)xpJCR|i)?5PX0*Iyou2NQvhrg%&YhINXo_-v8&^a{-}IVXE0R4yc-C zq~b9#n_CroUJ<}BRTvWzGxbDzF$2%_bq^ok@1i`*``(|cPsy7M@QK88OgAjz4dR(i zOXs{#9AYI&AwDM_GpIr0N3P2*zi}=)Ebz>bkx9)Hhls^u2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I_y#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FsnuV!JHz^ncx?gPjV+82g1)6o+{yw(t<_X|`2ClTWzuEw1KS{5* zwa5|BzYSbmw>5bWxZD8-pLEHP9LY~56bium8GTa@7`O#`*W9_a&T;wxWN22)H^9Lm zFj}PSb&q!kI_LK9o!0z*0K%Da$KPtl;s5{u24YJ`L;$b=#Q@e3P>>-2000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&PK2q+xOFq#hl0081iL_t(|+U=Ub4T3-rMgJHI zuoOBFDkF4aCtwHIfhEwva)5&&5LXt7j_)O0214NF@6NJ80ssI20001p#pZ<&LLsSe z{LT+EyS|dpNXjMk4h5Vgb!JvR7qgX%?~+=F5*8DFVn#p$5|9uvF-lUkP^%NqZDG&n zxRHc67E8@k_u3-Ee4RiNkZ_EIYGr~t`W_?!35n~3y@v%!KmrnwfCMDaB0v5qO%jms zgTtZzl6#N@BqR<8Hd_A)Hd;vn5|Ds|$QF5-4v(}k-67ZbTZ>nEGwaAd00000003-b Y0GH%2V8iW|LI3~&07*qoM6N<$f?_%@F#rGn literal 0 HcmV?d00001 diff --git a/Resources/NewIcons/Ponticelli_delete.png b/Resources/NewIcons/Ponticelli_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..d035160cf6a46798ba7d9f6b8c8d479a027e2267 GIT binary patch literal 1466 zcmV;r1x5OaP)EX>4Tx04R}tkv&MmKpe$iTct%R9qdpyxs#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwM<*vm7b)?7NufoI2gm(*ckglc4)C^WOfmW<0Yx?S zOfn(l3#)?v6#G-dM-0h93~dZJuLMwtLO@GoH!~gD&>3g z4$GXkI4iXV>)eySFj!PqvRtP*f+UuZLK*@jG*CqiCStUzq!`H1e!|5+Z2QyXlE_sB zBgX>jP$1fV@IUz7tx=kua*~1xp#R0PKE?q5F3@gT*7vbxwNC)wGjOGL{q+_w`$>AU zt3{81&^B;!-PNQ$;Bp6uJZYjX+LDi^w^Rb&&*+;9z|bu)u;%pE*~jSvkfW}aZ-9eC zV7yG(>n`sO^!E1enNEK{(VKG3W23tF00006VoOIv0I&eX0M-#ukRbp7010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<_I1S9yoho`7Qte1Gh;;K~#9!?V3Sr+ej40|I$Ra z&|M6LV9+HHtW$8%ARkvtE{2)~BOmfH@&N*MpdY{=VehdpEI#y-)SKG`iO9}HAyAgY zh(LqsmfQwOd#Dw>#z|a9k{dHW@MUDg=;!xl-WwSZ2m}IwKp+qZ1OkCzUZm-PIF3yK z<_bUaKawQ<`J9AL0LlQquAqQl0eF%m{XRLk_Q;p}0D3DZVP=HOVnq-VvXQ_T+w62Y zlygqfyf5dRbUGc%7~4#H&TDB4Xf~UFtgo+g&N->q>yDx*VOj!?j*jU4{k_s`Hvg(r zDxdR^@P5YF;ZxUwASh^>_RC-}0AsAGs%q6R3=l#N7oA`jhVLE60b>lK(Fohy+X#Z7 z0O0cibNoB=NT}6n=NlUv?_^nq=Xnp~lv1)tL~zcD<2Y!y+weRO<#HK~Mgx@6^Q?=d zPvi04OG4MSZT<4{@=d8!`es>{`=hCm)_rDdk@38B!onzu64vW=2LO@>ux(ohfO#Jv zBLVp=jA@9-TR>(K5)qbVRaI3*tJV54kBC_U_V@SS8ir9Ngs@jxED=Ir7zQlMa!aMs zw?xFOI^wYi81F8b7E5c$7(xi1OO2;efDls6dXAY(7^lX8Wm!;FHQDaoCUu0a>u_Bc zj4|BZ-C=ik7mY?ENr7q}^UFoTWNIXMo`*P&adB}0-}lk)_aEwjJW^mO5~fAOag1KC zhm(^N$g&L6G?yY^DP1HX1iG$6(=$(WTFn0-Sc?&o@J43tOM!(;OX`0Y9?O{!jr0-Sy%B~5M0w$ZGWOtAx z>3>aEo+5IQz&ZagT?bSu6_--#D2ftNO3BU54IK`L`tkAco8fRcSt=jAdI@0|;<;Yn zsb0gftk+#JCMhsaGxV4URaG-j4LQRUAhvCPOq!>8y1_)mWUtX`wZ7Q4{W0w`%giI; zCGBt;=MhVnkj8mH-Xc;xXdRyk9!xhw$u6+S!HlY^)#;{-Qu<+hzn|}*wcG9PoSvRy zFc?fXLksDiw!P>MSZ?qSrV~ z>WJ&>YwG*HvbVQ4T5yi$tS_d1+RPZ+41%CgtJTia%w5ho>2|w2#bR;vf)_6)W}G&s zF5xFP-~PsG1KAP@)y0)apv5C|6IKc8Er U-8^i)iU0rr07*qoM6N<$g1#1^;{X5v literal 0 HcmV?d00001 From 555d2d029f58f118ac84e531bde77039d5721a6f Mon Sep 17 00:00:00 2001 From: NicolaP Date: Wed, 31 Aug 2022 15:13:46 +0200 Subject: [PATCH 2/6] Gestione eliminazione Ponticelli WaterJet (manca verifica interferenza) --- CAM/CamAuto.vb | 8 +++ CadCuts/NestPageUC.xaml.vb | 2 + CadCuts/SplitPageUC.xaml.vb | 107 +++++++++++++++++++++++++++++------ Project/ProjectMgrUC.xaml.vb | 2 + 4 files changed, 103 insertions(+), 16 deletions(-) diff --git a/CAM/CamAuto.vb b/CAM/CamAuto.vb index 6b51445..595b8e6 100644 --- a/CAM/CamAuto.vb +++ b/CAM/CamAuto.vb @@ -155,6 +155,14 @@ Friend Module CamAuto Return bOk End Function + Friend Function ResetAllBRidges() As Boolean + Dim bOk As Boolean = True + Dim nMachGroup As Integer = EgtGetCurrMachGroup() + Dim nBridgesGroup As Integer = EgtGetFirstNameInGroup(nMachGroup, "Bridges") + bOk = EgtErase(nBridgesGroup) + Return bOk + End Function + ' verifico che il contorno passato non sia stato separato Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer) Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop) diff --git a/CadCuts/NestPageUC.xaml.vb b/CadCuts/NestPageUC.xaml.vb index 6c14e25..66ad554 100644 --- a/CadCuts/NestPageUC.xaml.vb +++ b/CadCuts/NestPageUC.xaml.vb @@ -1175,6 +1175,8 @@ Public Class NestPageUC m_ptPrev = ptCurr ' Terminata esecuzione di drag m_bDragging = False + ' se è stato eseguito il Drag allora cancello tutti i ponticelli + ResetAllBRidges() End Sub Private Sub OnMyMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseUpScene diff --git a/CadCuts/SplitPageUC.xaml.vb b/CadCuts/SplitPageUC.xaml.vb index d83bebb..6701bf4 100644 --- a/CadCuts/SplitPageUC.xaml.vb +++ b/CadCuts/SplitPageUC.xaml.vb @@ -210,6 +210,8 @@ Public Class SplitPageUC Next End Sub +#Region "BRIDGE" + Private Sub OnMyMouseDownSceneBridges(sender As Object, e As System.Windows.Forms.MouseEventArgs, ByVal IsFirst As Boolean, ByRef m_nIdSelectedSideWJ As Integer, @@ -259,10 +261,10 @@ Public Class SplitPageUC EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptSrtBridge) Else ' prima di confermare verifico che non ci siano interferenze + EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptEndBridge) + EgtModifyCurveEndPoint(m_nIdBridge, m_ptEndBridge, GDB_RT.GLOB) If VerifyInterference(m_nIdBridge) Then m_CurrProjPage.ClearMessage() - EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptEndBridge) - EgtModifyCurveEndPoint(m_nIdBridge, m_ptEndBridge, GDB_RT.GLOB) ' salvo nel Gruppo "BridgeLine" gli dei pezzi che sono collegati EgtSetInfo(EgtGetParent(m_nIdBridge), "PartStart", m_nIdSelectedPartWJ_Srt) EgtSetInfo(EgtGetParent(m_nIdBridge), "PartEnd", m_nIdSelectedPartWJ_End) @@ -284,12 +286,35 @@ Public Class SplitPageUC EgtDraw() Exit While End If - - End If + End If + End If + nIdMy = EgtGetNextObjInSelWin() + End While + End Sub + + Private Sub OnMyMouseDownSceneBridgesDelete(sender As Object, e As System.Windows.Forms.MouseEventArgs) + ' Acquisisco punto da disegno + Dim CurrPoint As New Point3d + EgtUnProjectPoint(e.Location, CurrPoint) + + ' Verifico se selezionato indicativo di pezzo + EgtSetObjFilterForSelWin(False, True, False, False, False) + Dim nSelMy As Integer + EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSelMy) + Dim nIdMy As Integer = EgtGetFirstObjInSelWin() + While nIdMy <> GDB_ID.NULL + Dim sGroupName As String = String.Empty + ' gruppo di appartenenza + Dim nIdParent As Integer = EgtGetParent(nIdMy) + ' recupero il nome del Layer + EgtGetName(nIdParent, sGroupName) + If sGroupName.Contains("BridgeLine") Then + EgtErase(nIdParent) + EgtDraw() + Return End If nIdMy = EgtGetNextObjInSelWin() End While - Return End Sub Private Sub OnMyMouseMoveSceneBridges(ptCurr As Point3d) @@ -305,19 +330,40 @@ Public Class SplitPageUC End Sub Private Function VerifyInterference(nIdBridge As Integer) As Boolean - Dim bOk As Boolean = True - EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) + ' prima di procedere alla verifica accorco il segmento (solo per sicurezza) 10 * EPS_SMALL + Dim dLen As Double + EgtCurveLength(nIdBridge, dLen) + If dLen > 21 AndAlso Not EgtCurveIsClosed(nIdBridge) Then + EgtTrimCurveEndAtLen(nIdBridge, dLen - 10 * EPS_SMALL) + EgtTrimCurveStartAtLen(nIdBridge, 10 * EPS_SMALL) + End If + ' EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) Dim nIdPart As Integer = GDB_ID.NULL nIdPart = EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId) While nIdPart <> GDB_ID.NULL Dim nIdRegion As Integer = EgtGetFirstNameInGroup(nIdPart, "Region") - - nIdPart = EgtGetNextPartInRawPart(m_CurrProjPage.m_nRawId) + Dim nIdSurf As Integer = EgtGetFirstInGroup(nIdRegion) + While nIdSurf <> GDB_ID.NULL + If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then + EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) + '' se la linea bridge interseca la superficie allora restitusco false + 'If EgtCurveWithRegionClassify(nIdBridge,nIdSurf) then + 'EgtExtendCurveStartByLen(nIdBridge, 10) + 'Return False + 'End if + Exit While + End If + End While + nIdPart = EgtGetNextPartInRawPart(nIdPart) End While - Return bOk + Return True End Function Private Sub DeselectWJBridgesPart() + ' se in fase di definzione di un ponticello lo elimino + If m_nIdSelectedSideWJ_Srt <> GDB_ID.NULL And m_nIdSelectedSideWJ_End = GDB_ID.NULL And m_nIdBridge <> GDB_ID.NULL Then + EgtErase(EgtGetParent(m_nIdBridge)) + End If m_nIdBridge = GDB_ID.NULL EgtResetMark(m_nIdSelectedPartWJ_Srt) m_nIdSelectedPartWJ_Srt = GDB_ID.NULL @@ -332,6 +378,8 @@ Public Class SplitPageUC EgtDraw() End Sub +#End Region ' Bridge + Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene ' Verifico di essere il gestore attivo e non in modalità sola visualizzazione If Not m_bActive OrElse m_bShow Then Return @@ -355,6 +403,12 @@ Public Class SplitPageUC Return End If + ' eliminazione dei ponticelli + If BridgesDeleteWJBtn.IsChecked Then + OnMyMouseDownSceneBridgesDelete(sender, e) + Return + End If + ' Reset drag m_nDragInd = -1 m_nDragType = 0 @@ -803,9 +857,21 @@ Public Class SplitPageUC EnableButtons() End Sub + Private Sub OnKeyDownScene(sender As Object, e As KeyEventArgs) + If e.Key = Key.Escape Then + ' se sono in fase di creazione di un ponticello interrompo + DeselectWJBridgesPart() + End If + End Sub + Private Sub BridgeBtn_Click(sender As Object, e As RoutedEventArgs) Handles BridgesWJBtn.Click + ' eventualmente spengo il comando per eliminare i ponticelli + If BridgesDeleteWJBtn.IsChecked Then + BridgesDeleteWJBtn.IsChecked = False + End If ' se deseleziono resetto tutte le variabili If Not BridgesWJBtn.IsChecked Then + ' se sono in fase di creazione di un ponticello interrompo DeselectWJBridgesPart() Return End If @@ -824,6 +890,17 @@ Public Class SplitPageUC End If End Sub + Private Sub BridgeDeleteBtn_Click(Sender As Object, e As RoutedEventArgs) Handles BridgesDeleteWJBtn.Click + ' eventualmente spengo il comando per inserire i ponticelli + If BridgesWJBtn.IsChecked Then + BridgesWJBtn.IsChecked = False + End If + + If BridgesDeleteWJBtn.IsChecked Then + DeselectWJBridgesPart() + End If + End Sub + Private Function AdjustBothCuts(nI As Integer, Optional bAllForced As Boolean = False, Optional bAccForced As Boolean = False) As Boolean @@ -1695,12 +1772,10 @@ Public Class SplitPageUC End Sub Friend Sub ExitSplit(Optional bTrueExit As Boolean = True) - ' se attivo il comando è Bridge - If BridgesWJBtn.IsChecked Then - DeselectWJBridgesPart() - ' disattivo - BridgesWJBtn.IsChecked = False - End If + DeselectWJBridgesPart() + BridgesWJBtn.IsChecked = False + BridgesDeleteWJBtn.IsChecked = False + ' Rimuovo evidenziazione e numeri RemoveMarkAndNumbers() ' Ripristino colori lavorazioni diff --git a/Project/ProjectMgrUC.xaml.vb b/Project/ProjectMgrUC.xaml.vb index 58f5cf6..e7df82d 100644 --- a/Project/ProjectMgrUC.xaml.vb +++ b/Project/ProjectMgrUC.xaml.vb @@ -256,6 +256,8 @@ Public Class ProjectMgrUC ResetAllSplitCurv() ' cancello tutti i punti di inizio (Waterjet) ResetAllStartCurv() + ' cancello tutti i ponticelli disegnati + ResetAllBRidges() ' Ricalcolo tutte le lavorazioni Dim nWarn As Integer = 0 ResetAllMachinings(nWarn) From aa84b2c8ab769e0a7d51ca02ba9437932dc996f8 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Wed, 31 Aug 2022 17:47:08 +0200 Subject: [PATCH 3/6] Gestione verifica interferenza Bridge-Region --- CadCuts/SplitPageUC.xaml.vb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CadCuts/SplitPageUC.xaml.vb b/CadCuts/SplitPageUC.xaml.vb index 6701bf4..c94b6b9 100644 --- a/CadCuts/SplitPageUC.xaml.vb +++ b/CadCuts/SplitPageUC.xaml.vb @@ -345,12 +345,12 @@ Public Class SplitPageUC Dim nIdSurf As Integer = EgtGetFirstInGroup(nIdRegion) While nIdSurf <> GDB_ID.NULL If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then - EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) - '' se la linea bridge interseca la superficie allora restitusco false - 'If EgtCurveWithRegionClassify(nIdBridge,nIdSurf) then - 'EgtExtendCurveStartByLen(nIdBridge, 10) - 'Return False - 'End if + ' EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) + ' se la linea bridge interseca la superficie allora restitusco false + If EgtCurveWithRegionClassify(nIdBridge, nIdSurf) = CREGC.OUT Then + EgtExtendCurveStartByLen(nIdBridge, 10) + Return False + End If Exit While End If End While @@ -896,7 +896,7 @@ Public Class SplitPageUC BridgesWJBtn.IsChecked = False End If - If BridgesDeleteWJBtn.IsChecked Then + If Not BridgesDeleteWJBtn.IsChecked Then DeselectWJBridgesPart() End If End Sub From 869b459c3b60d7d58755035530cc600090927e68 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Wed, 31 Aug 2022 17:55:20 +0200 Subject: [PATCH 4/6] Introduzione costanti Bridges e BridgeLine --- CadCuts/SplitPageUC.xaml.vb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/CadCuts/SplitPageUC.xaml.vb b/CadCuts/SplitPageUC.xaml.vb index c94b6b9..d196fa8 100644 --- a/CadCuts/SplitPageUC.xaml.vb +++ b/CadCuts/SplitPageUC.xaml.vb @@ -39,6 +39,8 @@ Public Class SplitPageUC Private m_nIdBridge As Integer = GDB_ID.NULL Private m_ptSrtBridge As New Point3d Private m_ptEndBridge As New Point3d + Public Const BRIDGES As String = "Bridges" + Public Const BRIDGELINE As String = "BridgeLine" Private m_ItemList As New ObservableCollection(Of NameIdLsBxItem) 'Private m_CurrInd As Integer = -1 @@ -308,7 +310,7 @@ Public Class SplitPageUC Dim nIdParent As Integer = EgtGetParent(nIdMy) ' recupero il nome del Layer EgtGetName(nIdParent, sGroupName) - If sGroupName.Contains("BridgeLine") Then + If sGroupName.Contains(BRIDGELINE) Then EgtErase(nIdParent) EgtDraw() Return @@ -322,7 +324,7 @@ Public Class SplitPageUC ' rappresento il egmento If m_nIdBridge = GDB_ID.NULL Then m_nIdBridgeLineGroup = EgtCreateGroup(m_nIdBridgesGroup) - EgtSetName(m_nIdBridgeLineGroup, "BridgeLine") + EgtSetName(m_nIdBridgeLineGroup, BRIDGELINE) m_nIdBridge = EgtCreateLine(m_nIdBridgeLineGroup, m_ptSrtBridge, ptCurr, GDB_RT.GLOB) End If EgtModifyCurveEndPoint(m_nIdBridge, ptCurr, GDB_RT.GLOB) @@ -347,8 +349,8 @@ Public Class SplitPageUC If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then ' EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN) ' se la linea bridge interseca la superficie allora restitusco false - If EgtCurveWithRegionClassify(nIdBridge, nIdSurf) = CREGC.OUT Then - EgtExtendCurveStartByLen(nIdBridge, 10) + If EgtCurveWithRegionClassify(nIdBridge, nIdSurf) <> CREGC.OUT Then + EgtExtendCurveStartByLen(nIdBridge, 10 * EPS_SMALL) Return False End If Exit While @@ -878,7 +880,7 @@ Public Class SplitPageUC ' recuoero il gruppo di lavorazione corrente Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup() ' creo il gruppo per i ponticelli - Dim sNameGroup As String = "Bridges" + Dim sNameGroup As String = BRIDGES Dim nId As Integer = EgtGetFirstNameInGroup(nIdCurrMachGroup, sNameGroup) If nId <> GDB_ID.NULL Then m_nIdBridgesGroup = nId @@ -886,7 +888,7 @@ Public Class SplitPageUC ' se non lo trovo allora lo creo If nId = GDB_ID.NULL Then m_nIdBridgesGroup = EgtCreateGroup(nIdCurrMachGroup) - EgtSetName(m_nIdBridgesGroup, "Bridges") + EgtSetName(m_nIdBridgesGroup, BRIDGES) End If End Sub From df47692e8e3e9112621df71c8daf22f7c8e7a885 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Tue, 6 Sep 2022 12:59:11 +0200 Subject: [PATCH 5/6] Salvataggio nel file *.ini del programma dati TRF --- Constants/ConstIni.vb | 8 ++++++++ DrawImport/CompoTrfData.xaml.vb | 24 ++++++++++++++++++++++++ DrawImport/DrawPageUC.xaml.vb | 2 ++ 3 files changed, 34 insertions(+) diff --git a/Constants/ConstIni.vb b/Constants/ConstIni.vb index ae935ea..b7f5285 100644 --- a/Constants/ConstIni.vb +++ b/Constants/ConstIni.vb @@ -170,6 +170,14 @@ Module ConstIni Public Const K_CSVCURRDIR As String = "CurrDir" Public Const K_CSVLASTFILE As String = "LastFile" + Public Const S_TRF As String = "TRF" + Public Const K_ORDCODE As String = "OrdCode" + Public Const K_ORDDESC As String = "OrdDesc" + Public Const K_PARTCODE As String = "PartCode" + Public Const K_MATCODE As String = "MatCode" + Public Const K_SURFCODE As String = "SurfCode" + Public Const K_TRFTHICKNESS As String = "TrfThickness" + Public Const S_SLABDXF As String = "SlabDxf" Public Const K_IMPORTSLABDXF As String = "ImportSlabDxf" Public Const K_SLABLAYER As String = "SlabLayer" diff --git a/DrawImport/CompoTrfData.xaml.vb b/DrawImport/CompoTrfData.xaml.vb index 113158b..a85da58 100644 --- a/DrawImport/CompoTrfData.xaml.vb +++ b/DrawImport/CompoTrfData.xaml.vb @@ -24,6 +24,7 @@ Public Class CompoTrfData Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click DialogResult = True + SaveData() Close() End Sub @@ -32,7 +33,30 @@ Public Class CompoTrfData Close() End Sub + Private Sub SaveData() + WritePrivateProfileString(S_TRF, K_ORDCODE, OrdCodeTxBx.Text, m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_TRF, K_ORDDESC, OrdDescTxBx.Text, m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_TRF, K_PARTCODE, PartCodeTxBx.Text, m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_TRF, K_MATCODE, MatCodeTxBx.Text, m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_TRF, K_SURFCODE, SurfCodeTxBx.Text, m_MainWindow.GetIniFile()) + ' prima di salvare lo spessore converto in mm e poi di nuovo in stringa + Dim dVal As Double = 0 + StringToLen(ThicknessTxBx.Text, dVal) + WritePrivateProfileString(S_TRF, K_TRFTHICKNESS, DoubleToString(dVal, 4), m_MainWindow.GetIniFile()) + End Sub + Friend Sub SetData(sOrdCode As String, sOrdDesc As String, sPartCode As String, sMatCode As String, sSurfCode As String, dTh As Double) + ' se verifico che non sono stati iniziliazzti i campi allora provvedo a leggere il file ini del programma + If sOrdCode = "" And sOrdDesc = "" And sPartCode = "" And sMatCode = "" And sSurfCode = "" Then + GetPrivateProfileString(S_TRF, K_ORDCODE, sOrdCode, sOrdCode, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_TRF, K_ORDDESC, sOrdDesc, sOrdDesc, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_TRF, K_PARTCODE, sPartCode, sPartCode, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_TRF, K_MATCODE, sMatCode, sMatCode, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_TRF, K_SURFCODE, sSurfCode, sSurfCode, m_MainWindow.GetIniFile()) + ' recupero il dato dello spessore che deve essere in mm + dTh = GetPrivateProfileDouble(S_TRF, K_TRFTHICKNESS, dTh, m_MainWindow.GetIniFile()) + End If + ' inizializzo i campi della finestra OrdCodeTxBx.Text = sOrdCode OrdDescTxBx.Text = sOrdDesc PartCodeTxBx.Text = sPartCode diff --git a/DrawImport/DrawPageUC.xaml.vb b/DrawImport/DrawPageUC.xaml.vb index b3bbf90..98928e1 100644 --- a/DrawImport/DrawPageUC.xaml.vb +++ b/DrawImport/DrawPageUC.xaml.vb @@ -1173,8 +1173,10 @@ Public Class DrawPageUC Private Sub TrfDataBtn_Click(sender As Object, e As RoutedEventArgs) Handles TrfDataBtn.Click If m_bTrfData Then Dim DlgTrfData As New CompoTrfData(m_MainWindow) + ' carico i dati appena salvati nella pagina DlgTrfData.SetData(m_TrfOrderCode, m_TrfOrderDesc, m_TrfPartCode, m_TrfMatCode, m_TrfSurfCode, m_TrfThickness) If DlgTrfData.ShowDialog() Then + ' recupero i dati salvati nella pagina DlgTrfData.GetData(m_TrfOrderCode, m_TrfOrderDesc, m_TrfPartCode, m_TrfMatCode, m_TrfSurfCode, m_TrfThickness) End If ElseIf m_bCsvData Then From a2bbcfed95886d7c53e9d80247fb69e1b02a6387 Mon Sep 17 00:00:00 2001 From: NicolaP Date: Fri, 9 Sep 2022 09:44:42 +0200 Subject: [PATCH 6/6] Cambio versione --- My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 8fdc622..7867adf 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -62,5 +62,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + +