Compare commits

...

233 Commits

Author SHA1 Message Date
Nicola Pievani d6a9cac6b4 Gestione modo Auto in caso per DripFeed 2023-03-13 10:34:23 +01:00
Nicola Pievani 4ce898c25c Attivazione modalità auto prima di DripFeed 2023-03-10 16:27:48 +01:00
Nicola Pievani 6f59cddd80 Migliorata gestione messaggi durante DripFeed 2023-03-10 14:56:24 +01:00
Nicola Pievani c8b018f6df Comunicazione DripFeed funzionante 2023-03-10 12:13:22 +01:00
Nicola Pievani e287e827c4 Aggiunti messaggi (MsgBox per Debug) e corretti valori di controllo 2023-03-09 12:50:42 +01:00
Nicola Pievani 68e9a9201d Comunicazione con PPFile2 2 modifica delle costanti 2023-03-08 13:08:53 +01:00
Nicola Pievani 8946bf3a00 Sostituita funzione HSL con funzione Asyn 2023-03-01 14:40:39 +01:00
Nicola Pievani a15acb6528 Inizio scrittura funzione per DripFeed 2023-02-28 17:26:37 +01:00
Nicola Pievani e7e9d26b75 Aggiunte funzioni per gestione CN Axium DripFeed 2023-02-27 19:28:46 +01:00
NicolaP d9de23daca Correzione gestione pezzi in parcheggio 2023-02-10 13:19:42 +01:00
NicolaP ad5c9331ba Merge branch 'master' into develop 2023-02-10 11:54:26 +01:00
DarioS b67330b509 OmagCUT :
- in VerifyOutOfStrokes prima di controllare il valore dell'asse C si cerca di riportarlo nel range ammesso (modulo 360 gradi).
2023-02-10 11:30:20 +01:00
DarioS ca66108145 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2023-02-09 19:04:42 +01:00
NicolaP 379ccc7519 Merge branch 'develop' 2023-02-08 19:03:19 +01:00
NicolaP b751c27773 Merge branch 'Features/Manage_Offset_Saw_On_SingleCut' into develop 2023-02-08 19:03:04 +01:00
NicolaP 14e1c254f0 Nuova gestione OffsetLama per tagli diretti 2023-02-08 19:02:46 +01:00
NicolaP 6f08e5f520 Merge branch 'master' into develop 2023-02-08 18:18:35 +01:00
NicolaP 7d8933cc39 Merge remote-tracking branch 'origin/HEAD' 2023-02-08 12:16:42 +01:00
NicolaP 2179996bff Merge branch 'develop' 2023-02-08 12:16:09 +01:00
NicolaP 316bcc89ea Merge branch 'Features/Fix_Front_Unloading' into develop 2023-02-08 12:15:53 +01:00
NicolaP 17f41f1563 Correzione angolo previlegiato di deposito 2023-02-08 12:15:04 +01:00
NicolaP 6a17b88283 Inizio correzione gestione scarico frointale 2023-02-07 12:51:48 +01:00
DarioS ce151e5db7 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/OmagCUT 2023-02-06 18:36:57 +01:00
DarioS b303fe2615 OmagCUT :
- aggiornamento logo a 2.5.
2023-02-06 18:32:32 +01:00
NicolaP 6f248ec645 Merge branch 'Features/Manage_Quality_WJ' into develop 2023-02-06 17:26:38 +01:00
NicolaP 3e0d43c1d8 Aggiornamento versione 2.5b1 2023-02-03 16:24:09 +01:00
NicolaP 70b1822446 Merge branch 'develop' 2023-02-03 16:04:31 +01:00
NicolaP 17d6ced974 Merge branch 'Features/Manage_New_Param_WaterJet_DB' into develop 2023-02-03 16:00:44 +01:00
NicolaP db145af965 Gestione spessore materiali inch 2023-02-03 16:00:26 +01:00
NicolaP 037fdb41b6 Gestione dati frazionati nella pagina Waterjet 2023-02-02 15:52:56 +01:00
NicolaP f89fe7fefd Aggiunta colonna AngCompensazione in DB WaterJet 2023-02-01 17:44:34 +01:00
NicolaP 6ecbd7f545 Cambio versione 2023-01-30 15:52:30 +01:00
NicolaP 734f480f67 Migliorata reset posizione pezzi in park 2023-01-30 15:07:23 +01:00
NicolaP 87fa5cc6dd Correzione gestione altezza AlzFront in Inch 2023-01-30 14:08:54 +01:00
NicolaP 5b00409abe Merge branch 'Features/Manage_Inches_Fractions' into develop 2023-01-27 17:16:10 +01:00
NicolaP 0f3b91e847 Inserite TextBox IsLen in altre pagine 2023-01-26 18:43:12 +01:00
NicolaP 3befbecd3c Gestione TextBox IsLength=False 2023-01-24 15:33:56 +01:00
NicolaP b6d2cc434c Nova Gestione Text Len 2023-01-23 16:47:02 +01:00
NicolaP 800a589285 Merge branch 'master' into develop 2023-01-23 09:17:19 +01:00
NicolaP 2618d3f14c Migliorata gestione visualizzazione ScrapWindow 2023-01-23 09:17:02 +01:00
NicolaP bb32a4e500 Aggiunto messaggio & cleanup 2023-01-20 12:33:02 +01:00
NicolaP 6d266819db Migliorato passaggio da 0° a 360° 2023-01-20 12:16:56 +01:00
NicolaP 3ce8965206 Migliorata gestione rotazione pezzi 2023-01-20 10:07:06 +01:00
NicolaP d924f4c107 Gestione rotazione pezzi con Drag 2023-01-19 18:06:21 +01:00
NicolaP b141bda34d Merge branch 'develop' 2023-01-18 18:05:09 +01:00
NicolaP ecb599c5c1 Correzione gestione allungamento tagli curvi 2023-01-18 16:51:22 +01:00
NicolaP 957a012de5 Merge branch 'master' into develop 2023-01-18 14:37:47 +01:00
NicolaP 12277387b6 Merge remote-tracking branch 'origin/HEAD' 2023-01-18 11:34:47 +01:00
DarioS ac92d1b4df OmagCUT :
- aggiornamento info programma.
2023-01-18 09:17:01 +01:00
NicolaP 5fe84aa6fd Inizio lettura Text in Inch 2023-01-17 19:09:19 +01:00
NicolaP b3ec57fb79 Gesteione textbox con frazioni 2023-01-12 18:36:41 +01:00
NicolaP c5f8e1f3fd Creata funzione che converte Double in frazione 2023-01-12 11:47:16 +01:00
NicolaP 202a63329b Merge branch 'develop' 2023-01-05 18:08:12 +01:00
NicolaP 8cdc527943 Spostato in macchina file ini macchina StartEndModifyOnIntCorner 2023-01-05 18:07:35 +01:00
NicolaP 61bb35fda2 Merge branch 'develop' 2023-01-03 17:36:41 +01:00
NicolaP ee70e8f4c2 Cambio versione 2.5a1 2023-01-03 17:36:22 +01:00
NicolaP 4d0e700d50 Gestione stato cncMode nella pagina Macchina 2023-01-03 17:34:25 +01:00
NicolaP 4432893794 Gestione definizione qualità nella pagina split 2022-12-28 19:25:59 +01:00
NicolaP 9fa98d78a5 Merge branch 'develop' 2022-12-28 17:34:43 +01:00
NicolaP e1d166375a Merge branch 'Features/Pre_Drill_WJ' into develop 2022-12-28 17:34:13 +01:00
NicolaP 4e669bc577 Caricamento dati per preforo Wj 2022-12-28 17:33:46 +01:00
NicolaP 73a1caf1d0 Stampa configurazione in fil eini macchina 2022-12-19 11:01:15 +01:00
NicolaP 322497121d Merge branch 'master' into develop 2022-12-16 19:12:19 +01:00
NicolaP 468270cbab Aggiunto parametro Tolerance per preforo 2022-12-16 19:11:57 +01:00
NicolaP 71ce283bad Salvataggio nel file ini dei parametri di squadratura 2022-12-16 17:59:46 +01:00
NicolaP 576d547a85 Aggiunti nuovi campi per la gestione dei fori nei lavelli 2022-12-16 17:50:39 +01:00
NicolaP a79316f290 Merge branch 'develop' 2022-12-15 19:17:00 +01:00
NicolaP 51ee7a0c92 Gestione messaggi 2022-12-15 19:16:44 +01:00
NicolaP 237eeb8871 Merge branch 'develop' 2022-12-15 19:15:00 +01:00
NicolaP abe1b3a430 Gestione messaggi pagina Squaring 2022-12-15 19:14:30 +01:00
NicolaP 7e205a6424 Merge branch 'Features/Squaring' into develop 2022-12-15 18:23:24 +01:00
NicolaP a7d7c66e2b Migliorata gestione uscita dalla pagina DirecCUT 2022-12-15 18:23:02 +01:00
NicolaP 7bb35e4694 Nascondo la visualizzazione macchina in Squaring 2022-12-15 18:07:21 +01:00
NicolaP 65e72391d8 Gestione di due oagine per tagli diretti 2022-12-15 16:27:35 +01:00
NicolaP 32e4d6d76b Inizio gestione nuova UC per tagli diretti 2022-12-14 20:30:49 +01:00
NicolaP 59b9354551 Gestione rientra da simulazione 2022-12-14 16:55:50 +01:00
NicolaP 7315166ca7 Merge branch 'develop' 2022-12-14 12:48:37 +01:00
NicolaP b9875ba243 "Barro" i nomi delle lavorazioni non attive. 2022-12-14 12:34:27 +01:00
NicolaP f7bcdff766 Correzione fresatura in SPIANATURA 2022-12-14 12:04:24 +01:00
NicolaP 47b98c6392 Merge branch 'develop' 2022-12-07 19:46:45 +01:00
NicolaP a0f5585391 Correzione gestioen ventose per prelievo 2022-12-07 19:46:19 +01:00
NicolaP a6457ece76 Iniziato creazione UserControl per bottoni TAGLI DIRETTI 2022-12-07 16:39:41 +01:00
NicolaP e93c4e41a3 Merge remote-tracking branch 'origin/HEAD' into develop 2022-11-24 20:30:05 +01:00
NicolaP abaf1ac3a8 Costruzione pagina per detensionamento 2022-11-24 20:29:37 +01:00
DarioS ed4fc25c5d OmagCUT :
- modifiche per lancio script di macchina opzionale.
2022-11-23 13:14:03 +01:00
NicolaP d1d48bf8a4 Merge branch 'develop' 2022-11-21 10:58:08 +01:00
NicolaP 4e0d362b36 Gestione comunicazione errori nel programma. 2022-11-21 10:57:50 +01:00
NicolaP 1afdc8551f Merge commit 'd17cd8d2d81400a42720871a91979d9d2f43cda0' into develop 2022-11-21 10:34:56 +01:00
NicolaP d17cd8d2d8 Cambio versione 2.4k2 2022-11-21 10:34:22 +01:00
NicolaP cc11ab463f Merge branch 'develop' 2022-11-21 10:32:54 +01:00
NicolaP d322dc192d Merge branch 'Features/Btn_Exec_Lua' into develop 2022-11-21 10:32:40 +01:00
NicolaP 24ab2e0ba8 Aggiunto comando per gestione ExecLua 2022-11-21 10:32:12 +01:00
NicolaP 8aec6c87b0 Merge commit '24fa5e089a30ddf6238c5996001fbc42c9359ef8' into develop 2022-11-18 17:51:36 +01:00
NicolaP 24fa5e089a Inserito comando Parking nella pagina TagliDiretti 2022-11-17 20:03:45 +01:00
NicolaP 29eae5517a Merge branch 'develop' 2022-11-03 19:33:27 +01:00
NicolaP 1ce036a0f6 Cambio versione 2.4k1 2022-11-03 19:33:02 +01:00
NicolaP dd5dd7c93c Merge branch 'Features/Engrave_Angle' into develop 2022-11-03 19:30:34 +01:00
NicolaP 393559d41a Merge branch 'develop' into Features/Engrave_Angle 2022-11-03 19:30:10 +01:00
NicolaP 45f6639dcd Migliorata gestione deposito su tavola ausiliaria 2022-11-02 16:20:09 +01:00
NicolaP de989f5762 Correzione definizione funzioni 2022-10-27 19:12:51 +02:00
NicolaP c33d6c1e77 Correzione nome funzioni in VacuumCups 2022-10-26 11:15:50 +02:00
NicolaP a1b2158404 Merge branch 'master' into develop 2022-10-26 10:57:07 +02:00
DarioS 05e94943e0 OmagCUT :
- migliorati controlli per chiave di rete.
2022-10-25 20:11:02 +02:00
DarioS 6bba5143f9 OmagCUT 2.4j1 :
- aggiunta gestione chiave di rete.
2022-10-25 15:20:28 +02:00
NicolaP 3957f66ec1 Merge branch 'develop' 2022-10-25 15:06:02 +02:00
NicolaP 46f7e78efc Correzione inserimento pausa in movimenti finali 2022-10-25 15:05:41 +02:00
NicolaP 02a8e3a274 Migliorata gestione/visualizzazione giunzione dei tagli inclinati 2022-10-24 18:03:25 +02:00
NicolaP 00bbe3ad70 Migliorata visualizzazione e invertito segno degli angoli 2022-10-20 10:28:19 +02:00
NicolaP f81970accc Merge branch 'develop' 2022-10-19 13:13:39 +02:00
NicolaP 165ed71234 Correzione pezzi parcheggio macchina 2 Tab 2022-10-19 13:13:26 +02:00
NicolaP 01b04e6a9d Merge branch 'develop' 2022-10-12 12:41:13 +02:00
NicolaP 8a8ff33110 Correzione gestione visibilità comando Scrap 2022-10-12 12:40:54 +02:00
NicolaP 4ca3b4ee47 Gestione primo taglio inclinato 2022-10-11 18:34:32 +02:00
NicolaP 6b6031379b Merge branch 'master' into develop 2022-10-06 13:02:48 +02:00
NicolaP 7e96fb2385 Cambio versione: 2.4i4 2022-10-06 13:02:11 +02:00
NicolaP 7ee4a2e552 Merge branch 'develop' 2022-10-06 12:59:49 +02:00
NicolaP 105a12c497 Merge branch 'Features/Manage_Pause_Unloading' into develop 2022-10-06 11:09:59 +02:00
NicolaP e0f380ed1d Merge branch 'Features/StartEnd_Modify_On_Internal_Corner' into develop 2022-10-06 10:48:08 +02:00
NicolaP a568c614fb Migliorata gestione deposito su tavola ausiliaria 2022-10-03 19:14:22 +02:00
NicolaP 6dc5fe5a12 Gestione modifica per scarico su tavola 2 2022-10-03 18:23:20 +02:00
NicolaP a1db5945df Gestione allungamenti tagli sugli angoli interni 2022-10-03 13:11:23 +02:00
NicolaP fba8b377f9 Correzione Merge 2022-10-03 11:53:55 +02:00
NicolaP 401b171c4e Merge branch 'Features/Manage_General_Cut_Param' into develop 2022-09-30 19:55:41 +02:00
NicolaP 3285d72817 Merge branch 'Features/Scraps_From_Cut' into develop 2022-09-30 19:55:15 +02:00
NicolaP 17229ab9bc Migliorata gestione scene e eliminazione Slab 2022-09-28 11:59:11 +02:00
NicolaP c3abca3cee Inizio gestione modifica per spostamenti 2022-09-22 20:16:19 +02:00
NicolaP 2e0f2eab1b Gestione riconoscimento sfridi da progetto 2022-09-22 17:33:17 +02:00
NicolaP 9c60ef020f Sacrico tutti i pezzi da tavola ausiliaria 2022-09-21 18:56:49 +02:00
NicolaP 58c62ebd5c Carico coordinate punti del grezzo (Da verificare) 2022-09-21 18:23:05 +02:00
NicolaP ab525c7431 Aggiunta modifica 2022-09-21 17:55:33 +02:00
NicolaP 613b9fa725 Correzione gestione salvataggio fase 2022-09-21 17:52:51 +02:00
NicolaP e4e20b9f91 Salvataggio nell'utensile delle info di taglio 2022-09-19 20:22:22 +02:00
NicolaP ca6a468cda Merge branch 'develop' 2022-09-19 15:09:11 +02:00
NicolaP 24ddd7d245 Migliorata gestione ponticelli 2022-09-19 14:59:48 +02:00
NicolaP f9fd0f0168 Miglioramento gestione comado AddSpar/RemoveScrap 2022-09-19 12:19:40 +02:00
NicolaP eac7b0999a Merge branch 'develop' 2022-09-15 12:15:52 +02:00
NicolaP a464e0dc3b Milgiorato Reset ponticelli da movimento pezzo 2022-09-15 12:15:25 +02:00
NicolaP 401af44bb5 Merge branch 'develop' 2022-09-15 12:00:00 +02:00
NicolaP 1599515d58 Gestione eliminazione Pezzi/Ponticelli 2022-09-15 11:59:45 +02:00
NicolaP 0be1695246 Merge branch 'develop' 2022-09-15 11:20:19 +02:00
NicolaP a79725783f Migliorata selezione lati per ponticelli 2022-09-15 11:19:39 +02:00
NicolaP f13a51e8a1 Merge remote-tracking branch 'origin/master' into develop 2022-09-15 11:06:00 +02:00
NicolaP b77ed406ae Inizio gestione salvataggio parametri lavorazione 2022-09-15 11:05:37 +02:00
DarioS bb650afe9c OmagCUT :
- aggiunte altre info per Bridges.
2022-09-14 10:11:37 +02:00
NicolaP 1d87ac5c47 Merge branch 'develop' 2022-09-13 15:28:30 +02:00
NicolaP fc3053df66 Eliminazione Bridges se muovo grezzo 2022-09-13 15:28:06 +02:00
NicolaP 588ef08b17 Merge branch 'develop' 2022-09-13 12:27:27 +02:00
NicolaP ebdaeece85 Merge branch 'Features/Research_DXF' into develop 2022-09-13 12:27:10 +02:00
NicolaP 1605f81090 Merge branch 'develop' 2022-09-13 11:28:05 +02:00
NicolaP a10703fe94 Aggiorno lavorazioni dopo Ins/Del di ogni Bridge 2022-09-13 11:27:31 +02:00
NicolaP a0575cbbac Migliorata gestione dei pontocelli 2022-09-13 11:21:42 +02:00
NicolaP 8180ffaeaa Merge remote-tracking branch 'origin/HEAD' into develop 2022-09-13 10:14:08 +02:00
DarioS 848783078c Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2022-09-13 09:01:49 +02:00
DarioS 45f0245f9f OmagCUT 2.4i2 :
- ricompilazione con cambio di versione.
2022-09-13 09:01:10 +02:00
NicolaP a81a7f8d9e Correzione gestione importazione di più pezzi DXF 2022-09-12 14:54:54 +02:00
NicolaP ca0210cf09 Aggiunta gestine notifica di lastra in letttura 2022-09-12 10:22:40 +02:00
NicolaP 622912dec3 Gestione Add/Save/Delete lastra da DB 2022-09-09 17:24:16 +02:00
NicolaP 8ed35a5c46 Merge branch 'develop' 2022-09-09 09:46:05 +02:00
NicolaP a2bbcfed95 Cambio versione 2022-09-09 09:44:42 +02:00
NicolaP 0667da3692 Merge branch 'Features/Save_TRF_Data' into develop 2022-09-09 09:42:35 +02:00
NicolaP 5ff39c9d1c Gestione personalizzata OmagPHOTO 2022-09-08 19:27:24 +02:00
NicolaP 60a666c1c1 Creazione pagina per gestione campi DB 2022-09-07 18:10:03 +02:00
NicolaP df47692e8e Salvataggio nel file *.ini del programma dati TRF 2022-09-06 12:59:11 +02:00
NicolaP 5f2d03cbcb Gestione ricerca progetti 2022-09-05 16:56:04 +02:00
NicolaP 5255fad7fc Gestione ricerca file DXF 2022-09-05 16:30:04 +02:00
NicolaP 41903872b1 Definita funzione per il salvataggio TabAux (ERRORE simulazione) 2022-09-05 12:13:26 +02:00
NicolaP beb3ce841b Inizio gestione creazione grezzi per scarico (ERRORI simulazione) 2022-09-01 20:29:46 +02:00
NicolaP 4a2da4ac41 Merge branch 'Features/Waterjet_Bridges' into develop 2022-09-01 11:23:20 +02:00
NicolaP 869b459c3b Introduzione costanti Bridges e BridgeLine 2022-08-31 17:55:20 +02:00
NicolaP aa84b2c8ab Gestione verifica interferenza Bridge-Region 2022-08-31 17:47:08 +02:00
NicolaP 555d2d029f Gestione eliminazione Ponticelli WaterJet (manca verifica interferenza) 2022-08-31 15:13:46 +02:00
NicolaP 749fb2d949 Gestione creazione di Ponticelli WaterJet 2022-08-30 17:43:34 +02:00
NicolaP 5b3e73290c Salvataggio in DB dell'iimagine ritagliata 2022-08-29 20:09:46 +02:00
NicolaP 854519b706 Aggiunti riferimenti alla libreria EgtPHOTOLib 2022-08-25 19:28:07 +02:00
NicolaP d8179b47ee Inizio gestione sfridi 2022-08-24 18:58:33 +02:00
NicolaP f68e141449 Merge commit '011c94cc6b6b792e734851ae695fbbf637b1de93' into develop 2022-08-24 12:44:26 +02:00
DarioS 011c94cc6b OmagCUT 2.4g1 :
- cambio di versione
2022-08-11 10:45:23 +02:00
NicolaP 64da46c0a4 Merge branch 'master' into develop 2022-08-08 09:35:15 +02:00
DarioS aab81c6af7 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2022-08-02 10:01:28 +02:00
Emmanuele Sassi 46be644285 Merge remote-tracking branch 'origin/develop' 2022-08-02 09:54:53 +02:00
DarioS 5fe75b78e5 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/OmagCUT 2022-08-02 08:25:41 +02:00
Emmanuele Sassi eafe6184eb Merge branch 'Test' 2022-08-01 19:46:31 +02:00
Emmanuele Sassi 1bf42ebbc1 - Aggiornata versione a 2.4f1
- Allungato tempo attesa risposta modifica stato macchina su num flexium
- Aggiunta verifica diametro utensile su tastatura tagli inclinati
2022-08-01 19:46:07 +02:00
NicolaP 0e35e41c4a Merge branch 'Features/Raw_Definition_By_Saw' into develop 2022-07-05 17:42:26 +02:00
NicolaP 64e3fd83de Aggiunto commento nuova libreria 2022-07-05 17:41:07 +02:00
NicolaP e5e74a6afd Merge branch 'develop' into Features/Raw_Definition_By_Saw 2022-07-05 17:15:50 +02:00
NicolaP 28deac8501 Merge branch 'Features/Refactory_WaterJet_Lib' into develop 2022-07-05 17:14:14 +02:00
NicolaP 367a8c9fc3 Nuova gestione libreria EgtWPFLib5 2022-07-05 17:13:42 +02:00
NicolaP 0717546ad0 Gestione macchine WaterJet 2022-07-04 17:56:33 +02:00
NicolaP 3bf1a87688 Correzione gestione uscita Area Danneggiata e Elimina Area con Laser e Lama 2022-07-04 15:18:49 +02:00
NicolaP 6d82b6efee Definizione grezzo e aree rovinate tramite posizione Lama 2022-07-04 12:39:19 +02:00
NicolaP 94102172dd Merge branch 'Features/Manage_Filo_Top_Corner' into develop 2022-07-04 10:43:47 +02:00
NicolaP 82426db72a Correzione scrittura codice 2022-06-30 18:59:59 +02:00
NicolaP 20fd722dee Migliorata gestione filotop associata 2022-06-30 15:14:30 +02:00
NicolaP c83b3e6bea Merge branch 'develop' 2022-06-29 16:01:32 +02:00
NicolaP a45613ff39 Correzione spianatura con fresa 2022-06-29 15:36:52 +02:00
NicolaP 84690ddf32 Inizio gestione arrotondamento FiloTop 2022-06-29 15:08:28 +02:00
NicolaP 844cb3cfe6 Aggiunto commanto per uso Fresa nella lavorazione SPIANATURA 2022-06-28 19:15:59 +02:00
NicolaP ee84a57194 Merge branch 'master' into develop 2022-06-27 12:20:13 +02:00
NicolaP efa1cb1272 Cambio versione 2.4f1 2022-06-27 12:19:34 +02:00
NicolaP 1437d20353 Correzione inserimento in parcheggio pezzo rovinato (ProdLine) 2022-06-27 12:13:33 +02:00
NicolaP 3d4a921719 Correzione stampa numero settimana 2022-06-23 19:07:11 +02:00
NicolaP e26d68b0f3 Merge branch 'master' into develop 2022-06-23 12:37:23 +02:00
NicolaP 7815b7ec89 Cambio versione 2.4e5 2022-06-23 12:29:11 +02:00
NicolaP 66051943c7 Correzione deselezione lato TestTaglio 2022-06-23 12:25:43 +02:00
NicolaP 2e9071569a Merge branch 'master' into develop 2022-06-23 11:31:51 +02:00
NicolaP 813d224f50 Correzioen messaggi 2022-06-23 11:31:08 +02:00
NicolaP 5f03a36df2 Merge branch 'Features/Manage_Engrave' into develop 2022-06-20 17:21:40 +02:00
NicolaP ac9c347bc0 Merge branch 'Features/SHOTT_Over_Table' into develop 2022-06-20 17:21:29 +02:00
NicolaP 9784c75766 Merge branch 'Features/Manage_REDO' into develop 2022-06-20 17:21:10 +02:00
NicolaP 8af69e553d Eliminato file temporaneo di salvataggio per test 2022-06-13 12:50:40 +02:00
NicolaP 3128f89f63 Gestione affondamento incisioni successive alla prima 2022-06-09 18:24:27 +02:00
NicolaP 56884c34f2 Migliorata lettura dato Sovratavola 2022-06-01 12:35:06 +02:00
NicolaP 332b17e55e Lettura/Scrittura dimensione sovratavola nel progetto 2022-06-01 11:50:03 +02:00
NicolaP 4aaf1d084e Merge branch 'develop' into Features/Manage_REDO 2022-06-01 10:19:56 +02:00
NicolaP 4bcbe8d290 Merge branch 'master' into develop 2022-06-01 10:18:53 +02:00
NicolaP 8484087c69 Corretto versione KeyOption 2022-05-30 15:10:58 +02:00
NicolaP 116289cac5 Merge branch 'develop' 2022-05-30 15:03:00 +02:00
NicolaP 30ee1bcf99 Merge remote-tracking branch 'origin/master' 2022-05-30 14:58:08 +02:00
NicolaP a1d7983704 Cambio versione 2022-05-30 14:52:25 +02:00
NicolaP 636d3a9eca Inseriti messaggi, costanti e immagini per comandi WJ 2022-05-30 14:32:46 +02:00
NicolaP bd70bf1ec9 Gestione StartPoint per tagli WJ InLoop 2022-05-26 17:51:22 +02:00
NicolaP d66b331478 Aggiunta visualizzazione tgli WJ separati 2022-05-26 16:36:35 +02:00
NicolaP aecb8ed442 Migliorato controllo contorno WaterJet per StartPoint 2022-05-25 18:08:08 +02:00
NicolaP 3e72b216a6 Migliorata evidenziazione PreView in SplitCurv 2022-05-25 15:28:43 +02:00
NicolaP 5baa701681 Merge branch 'Features/Statistic_4.0' into develop 2022-05-23 18:41:05 +02:00
NicolaP e3a1330889 Merge branch 'Feature/WaterJet_Punto_Inizio' into develop 2022-05-23 18:40:07 +02:00
NicolaP aa237fd744 Gestione scrittura info per definizioen StartPoint 2022-05-23 18:39:33 +02:00
NicolaP ccfc8f89e4 Gestione separazione tagli waterjet in pagina Nest 2022-05-23 15:54:01 +02:00
DarioS d8c16a34f0 OmagCUT 2.4e3 :
- ricompilazione per nuova versione (nelle dll corretto problema rallentamenti iniziali e finali non più eseguiti).
2022-05-17 08:49:27 +02:00
DarioS 1847154a29 OmagCUT 2.4e1 :
- ricompilazione con cambio versione.
2022-05-02 17:30:50 +02:00
NicolaP 54127e61ec Correzione veriosne 2.4d1 (non è mai stata rilasciata una versione d1) 2022-04-28 18:26:37 +02:00
NicolaP 0107fc022b Miglioramento comando Modifica in pagina Split 2022-04-21 11:50:57 +02:00
98 changed files with 8647 additions and 2766 deletions
+77 -1
View File
@@ -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)
@@ -101,6 +101,82 @@ Friend Module CamAuto
Return True
End Function
Friend Function ResetAllSplitCurv() As Boolean
Dim bOk As Boolean = True
Dim nIdPart As Integer = EgtGetFirstPart()
While nIdPart <> GDB_ID.NULL
' elimino il layer dei flag di separazione "AUX_SPLIT_WJ"
Dim IdAuxLayer As Integer = EgtGetFirstNameInGroup(nIdPart, INFO_AUX_SPLIT_WJ)
EgtErase(IdAuxLayer)
' accedo al Layer OutLoop
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
While nIdMy <> GDB_ID.NULL
EgtRemoveInfo(nIdMy, INFO_JOINENTITY)
nIdMy = EgtGetNext(nIdMy)
End While
nIdPart = EgtGetNextPart(nIdPart)
End While
Dim nRawId As Integer = CamAuto.GetCurrentRaw()
nIdPart = EgtGetFirstPartInRawPart(nRawId)
While nIdPart <> GDB_ID.NULL
' elimino il layer dei flag di separazione "AUX_SPLIT_WJ"
Dim IdAuxLayer As Integer = EgtGetFirstNameInGroup(nIdPart, INFO_AUX_SPLIT_WJ)
EgtErase(IdAuxLayer)
' accedo al Layer OutLoop
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
While nIdMy <> GDB_ID.NULL
EgtRemoveInfo(nIdMy, INFO_JOINENTITY)
nIdMy = EgtGetNext(nIdMy)
End While
nIdPart = EgtGetNextPartInRawPart(nIdPart)
End While
Return bOk
End Function
Friend Function ResetAllStartCurv() As Boolean
Dim bOk As Boolean = True
Dim nIdPart As Integer = EgtGetFirstPart()
While nIdPart <> GDB_ID.NULL
' accedo al Layer OutLoop
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
EgtRemoveInfo(nIdLayerOutLoop, INFO_START)
nIdPart = EgtGetNextPart(nIdPart)
End While
Dim nRawId As Integer = CamAuto.GetCurrentRaw()
nIdPart = EgtGetFirstPartInRawPart(nRawId)
While nIdPart <> GDB_ID.NULL
' accedo al Layer OutLoop
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
EgtRemoveInfo(nIdLayerOutLoop, INFO_START)
nIdPart = EgtGetNextPartInRawPart(nIdPart)
End While
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)
While nIdMy <> GDB_ID.NULL
Dim nValInfo As Integer = 1
If EgtGetInfo(nIdMy, INFO_JOINENTITY, nValInfo) Then
If nValInfo = 0 Then Return False
End If
EgtRemoveInfo(nIdMy, INFO_JOINENTITY)
nIdMy = EgtGetNext(nIdMy)
End While
Return True
End Function
Friend Function RemoveFinalEmptyPhases() As Boolean
Dim nOpeId As Integer = EgtGetLastOperation()
While nOpeId <> GDB_ID.NULL
+10
View File
@@ -108,6 +108,8 @@ Public Class CadCutPageUC
Private Sub PhotoBtn_Click(sender As Object, e As RoutedEventArgs) Handles PhotoBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' Se macchina fotografica collegata, faccio una foto
@@ -142,6 +144,8 @@ Public Class CadCutPageUC
Private Sub RawPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles RawPartBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_RawPartPage)
@@ -168,6 +172,8 @@ Public Class CadCutPageUC
Private Sub DrawBtn_Click(sender As Object, e As RoutedEventArgs) Handles DrawBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_DrawPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Draw
@@ -176,6 +182,8 @@ Public Class CadCutPageUC
Private Sub ImportBtn_Click(sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_ImportPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Import
@@ -198,6 +206,8 @@ Public Class CadCutPageUC
Private Sub SplitBtn_Click(sender As Object, e As RoutedEventArgs) Handles SplitBtn.Click
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
EgtDeselectObj(m_NestPage.m_CurrSelectedCurv)
m_ProjectMgr.TestBtn.IsChecked = False
+8
View File
@@ -27,6 +27,14 @@
<EgtWPFLib:EgtTextBox Name="ValueTxBx" Grid.Column="1" Grid.Row="1"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<ComboBox Name="ValueCmBx" Grid.Column="1" Grid.Row="1">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="20" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Grid Name="ButtonsGrid" Grid.Column="1" Grid.Row="3" Grid.RowSpan="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
+54 -5
View File
@@ -1,6 +1,7 @@
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib
Imports System.Collections.ObjectModel
Public Class EditValueWD
@@ -8,29 +9,77 @@ Public Class EditValueWD
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_sMsg As String = "Value"
Private m_sValue As String = ""
Private m_sList As ObservableCollection(Of String)
Private m_IsText As Boolean = True
' avvia la visualizzazione della textbox
Sub New(Owner As Window, Optional sMsg As String = "")
Me.Owner = Owner
m_sMsg = sMsg
m_IsText = True
InitializeComponent()
End Sub
Friend Function SetVal( dVal As Double) As Boolean
m_sValue = DoubleToString( dVal, 3)
Friend Function SetVal(dVal As Double, Optional ByVal bLen As Boolean = False) As Boolean
If bLen Then
m_sValue = LenToString(dVal, 3)
Else
m_sValue = DoubleToString(dVal, 3)
End If
ValueTxBx.Text = m_sValue
Return true
Return True
End Function
Friend Function GetVal() As Double
' avvia la visualizzazione della combobox
Sub New(Owner As Window, sList As ObservableCollection(Of String), Optional sMsg As String = "")
Me.Owner = Owner
m_sMsg = sMsg
m_IsText = False
InitializeComponent()
m_sList = sList
SetComboBox(m_sList)
End Sub
Friend Function GetVal(Optional ByVal bLen As Boolean = False) As Double
Dim dVal As Double = 0
StringToDouble( m_sValue, dVal)
If bLen Then
StringToLen(m_sValue, dVal)
Else
StringToDouble(m_sValue, dVal)
End If
Return dVal
End Function
Friend Function SetComboBox(sList As ObservableCollection(Of String)) As Boolean
ValueCmBx.ItemsSource = sList
Return True
End Function
Friend Function SetItemComboBox(sItem As String) As Boolean
For Each MyItem As String In ValueCmBx.ItemsSource
If MyItem = sItem Then
ValueCmBx.SelectedItem = MyItem
End If
Next
Return True
End Function
Friend Function GetItemComboBox() As String
Dim sVal As String = ValueCmBx.SelectedItem
Return sVal
End Function
Private Sub EditValueWD_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
ValueTxbl.Text = m_sMsg
If m_IsText Then
ValueCmBx.Visibility = Visibility.Collapsed
ValueTxBx.Visibility = Visibility.Visible
Else
ValueCmBx.Visibility = Visibility.Visible
ValueTxBx.Visibility = Visibility.Collapsed
End If
End Sub
Private Sub EditValueWD_Rendered(sender As Object, e As EventArgs) Handles Me.ContentRendered
+13 -7
View File
@@ -120,7 +120,7 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<EgtWPFLib:EgtTextBox Name="RotationAngleTxBx" Width="50"
<EgtWPFLib:EgtTextBox Name="RotationAngleTxBx" Width="50" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<TextBlock Grid.Column="1" FontSize="30" Margin="2,-5,0,0"
Text="°"/>
@@ -133,10 +133,14 @@
</Button>
<Button Name="RemovePartBtn" Grid.ColumnSpan="3" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Button Name="RemovePartBtn" Grid.ColumnSpan="2" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Grid Grid.Row="7" Grid.ColumnSpan="3">
<Button Name="ScrapsBtn" Grid.Column="3" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Grid Grid.Row="7" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
@@ -155,9 +159,11 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
</Grid>
<!-- Inserimento della pausa durante il movimento sulla tavola di scarico-->
<Button Name="PauseBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Pausa-ON_OFFImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
</Grid>
+303 -49
View File
@@ -11,8 +11,12 @@ Public Class MoveRawPartPage
Private m_nAuxTabId As Integer = GDB_ID.NULL
' Fase corrente
Private m_nCurrPhase As Integer = 0
' Disposizione corrente
Private m_nCurrDisposition As Integer = GDB_ID.NULL
' Premuto Prev
Private m_bPrev As Boolean = False
' Pemuto Next
Private m_bToNext As Boolean = False
' Dati movimento
Private m_dStep As Double = 0
Private m_dRotation As Double = 0
@@ -27,7 +31,8 @@ Public Class MoveRawPartPage
Private m_bRemovedRaw As Boolean = False ' flag per rimozione manuale pezzi
Private m_RawMoveDataList As New List(Of RawMoveData) ' dati di movimento
Private m_bRawWithCups As Boolean = False ' flag per pezzo corrente con ventose
' Visibilità comando Scrap
Private m_ScrapsVisibility As Visibility = Visibility.Visible
Private m_CurrRawOnVacuum As Integer = GDB_ID.NULL
Private Sub MoveRawPartPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
@@ -35,12 +40,15 @@ Public Class MoveRawPartPage
RemovePartBtn.Content = EgtMsg(MSG_MOVERAWPAGEUC + 1) 'Rimuovi
ModifyBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 17) 'Modifica
ResetBtn.Content = EgtMsg(MSG_NESTPAGEUC + 6) 'Reset
ScrapsBtn.Content = "Add Scraps"
End Sub
Private Sub MoveRawPartPage_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_SplitPage = m_MainWindow.m_CadCutPageUC.m_SplitPage
m_bActive = True
' resetto l'inidice del pezzo da mnovimentare
m_CurrRawOnVacuum = GDB_ID.NULL
' Leggo tipo movimento grezzi
m_bByHand = (GetVacuumType() = 0 Or
Not m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.AUTO_MANIP) Or
@@ -57,40 +65,47 @@ Public Class MoveRawPartPage
m_SplitPage.GetEnabledCuts(Cuts)
' Fase precedente
Dim nPrevPhase As Integer = EgtGetCurrPhase()
' Creo nuova fase, eseguo spezzatura grezzi e vi sposto le lavorazioni
Dim vNewRaws As New List(Of Integer)
If Not m_SplitPage.m_bShow Then
' Creo nuova fase, eseguo spezzatura grezzi e vi sposto le lavorazioni
Dim vNewRaws As New List(Of Integer)
SplitRawParts(nPrevPhase, Cuts, vNewRaws)
Else
EgtSetCurrPhase(nPrevPhase + 1)
HideAllMachinings()
End If
m_nCurrPhase = EgtGetCurrPhase()
'---------------------------- SCRAPS ----------------------------
' gestione visualizzazione del comando "Scraps"
Dim ScrapsVisibility As Visibility = Visibility.Collapsed
' verifico se licenza abilitat: m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.SCRAPS)
If GetPrivateProfileInt(S_SCRAPS, K_ENABLESCRAPS, 0, m_MainWindow.GetIniFile()) <> 0 Then
' leggo il direttorio in cui cercare il database delle lastre
Dim PhotDir As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_PHOTODIR, "", PhotDir, m_MainWindow.GetIniFile())
' verifico che esista il file "OmagPHOTOVb.sqlite" nel direttorio inidicato
If System.IO.File.Exists(PhotDir.Trim & "\OmagPHOTODb.sqlite") Then
ScrapsVisibility = Visibility.Visible
End If
End If
' verifico che siano stati generati dei nuovi grezzi
If vNewRaws.Count = 0 Then
ScrapsVisibility = Visibility.Collapsed
End If
' aggiorno la grafica
m_ScrapsVisibility = ScrapsVisibility
If m_ScrapsVisibility <> Visibility.Visible Then
Grid.SetColumnSpan(RemovePartBtn, 3)
Else
Grid.SetColumnSpan(RemovePartBtn, 2)
End If
'---------------------------- SCRAPS ----------------------------
' Se movimento pezzi finale, sistemazioni per tavolo ausiliario
If m_SplitPage.m_bOnAuxTab Then
m_nAuxTabId = EgtGetTableId(AUX_TAB)
' Visualizzo tavolo ausiliario
Dim bOldEnMod As Boolean = EgtGetEnableModified()
If bOldEnMod Then EgtDisableModified()
EgtSetStatus(m_nAuxTabId, GDB_ST.ON_)
If bOldEnMod Then EgtEnableModified()
' Se definizione movimenti
If Not m_SplitPage.m_bShow Then
' Area tavolo ausiliario
Dim b3AuxTab As New BBox3d
EgtGetBBoxGlob(EgtGetFirstNameInGroup(m_nAuxTabId, "A1"), GDB_BB.STANDARD, b3AuxTab)
' Area tavolo principale
Dim b3Tab As New BBox3d
EgtGetTableArea(1, b3Tab)
' Imposto offset su tavolo principale per includere anche il secondario
Dim dOffsXP As Double = Math.Max(b3AuxTab.Max().x - b3Tab.Max().x, 0)
Dim dOffsYP As Double = Math.Max(b3AuxTab.Max().y - b3Tab.Max().y, 0)
Dim dOffsXM As Double = Math.Max(b3Tab.Min().x - b3AuxTab.Min().x, 0)
Dim dOffsYM As Double = Math.Max(b3Tab.Min().y - b3AuxTab.Min().y, 0)
EgtSetTableAreaOffset(dOffsXP, dOffsYP, dOffsXM, dOffsYM)
End If
EgtZoom(ZM.ALL)
' altrimenti, aggiorno visualizzazione
' assegnazione delle info tavola ausiliaria alla dispozione corrente
SetAuxTabInCurrDisposition()
' altrimenti, aggiorno visualizzazione
Else
EgtDraw()
End If
@@ -128,14 +143,14 @@ Public Class MoveRawPartPage
' Distanza iniziale
m_dCurrDist = 0
End If
' Non dovrebbe mai accadere, ma inizializzo con default
' Non dovrebbe mai accadere, ma inizializzo con default
Else
m_vtDir = Vector3d.Y_AX()
m_ptMid = Point3d.ORIG()
m_dOrigDist = 0
m_dCurrDist = 0
End If
' Altrimenti movimento con ventose
' Altrimenti movimento con ventose
Else
m_bRemovedRaw = False
m_bRawWithCups = False
@@ -149,6 +164,9 @@ Public Class MoveRawPartPage
GetMoveInfoInDisposition(nDispId, m_RawMoveDataList)
End If
End If
' aggiorno il messaggio del comando per gestire gli sfridi
VerifyIsNewScrap(m_CurrRawOnVacuum)
' Aggiorno interfaccia per taglio perpendicolare
If m_bByHand Then
UpBtn.Visibility = Windows.Visibility.Visible
@@ -164,8 +182,10 @@ Public Class MoveRawPartPage
TopRBtn.Visibility = Windows.Visibility.Hidden
BottomLBtn.Visibility = Windows.Visibility.Hidden
BottomRBtn.Visibility = Windows.Visibility.Hidden
PauseBtn.Visibility = Windows.Visibility.Hidden
ResetBtn.Visibility = Windows.Visibility.Hidden
' altrimenti per movimento con ventose
ScrapsBtn.Visibility = m_ScrapsVisibility
' altrimenti per movimento con ventose
ElseIf Not m_SplitPage.m_bOnAuxTab Then
UpBtn.Visibility = Windows.Visibility.Visible
LeftBtn.Visibility = Windows.Visibility.Visible
@@ -180,8 +200,10 @@ Public Class MoveRawPartPage
TopRBtn.Visibility = Windows.Visibility.Hidden
BottomLBtn.Visibility = Windows.Visibility.Hidden
BottomRBtn.Visibility = Windows.Visibility.Hidden
PauseBtn.Visibility = Windows.Visibility.Hidden
ResetBtn.Visibility = Windows.Visibility.Hidden
' altrimenti per movimento finale dei pezzi
ScrapsBtn.Visibility = m_ScrapsVisibility
' altrimenti per movimento finale dei pezzi
Else
UpBtn.Visibility = Windows.Visibility.Hidden
LeftBtn.Visibility = Windows.Visibility.Hidden
@@ -196,14 +218,45 @@ Public Class MoveRawPartPage
TopRBtn.Visibility = Windows.Visibility.Visible
BottomLBtn.Visibility = Windows.Visibility.Visible
BottomRBtn.Visibility = Windows.Visibility.Visible
PauseBtn.Visibility = Windows.Visibility.Visible
ResetBtn.Visibility = Windows.Visibility.Visible
ScrapsBtn.Visibility = Windows.Visibility.Hidden
End If
' salvo l'idice della fase corrente
m_nCurrDisposition = EgtGetPhaseDisposition(m_nCurrPhase)
' Abilitazione bottone modifica
ModifyBtn.IsEnabled = m_SplitPage.m_bShow
' gestione abilitazione altri bottoni
EnableButtons()
End Sub
Private Sub SetAuxTabInCurrDisposition()
' Se movimento pezzi finale, sistemazioni per tavolo ausiliario
m_nAuxTabId = EgtGetTableId(AUX_TAB)
' Visualizzo tavolo ausiliario
Dim bOldEnMod As Boolean = EgtGetEnableModified()
If bOldEnMod Then EgtDisableModified()
EgtSetStatus(m_nAuxTabId, GDB_ST.ON_)
If bOldEnMod Then EgtEnableModified()
' Se definizione movimenti
If Not m_SplitPage.m_bShow Then
' Area tavolo ausiliario
Dim b3AuxTab As New BBox3d
EgtGetBBoxGlob(EgtGetFirstNameInGroup(m_nAuxTabId, "A1"), GDB_BB.STANDARD, b3AuxTab)
' Area tavolo principale
Dim b3Tab As New BBox3d
EgtGetTableArea(1, b3Tab)
' Imposto offset su tavolo principale per includere anche il secondario
Dim dOffsXP As Double = Math.Max(b3AuxTab.Max().x - b3Tab.Max().x, 0)
Dim dOffsYP As Double = Math.Max(b3AuxTab.Max().y - b3Tab.Max().y, 0)
Dim dOffsXM As Double = Math.Max(b3Tab.Min().x - b3AuxTab.Min().x, 0)
Dim dOffsYM As Double = Math.Max(b3Tab.Min().y - b3AuxTab.Min().y, 0)
EgtSetTableAreaOffset(dOffsXP, dOffsYP, dOffsXM, dOffsYM)
End If
EgtZoom(ZM.ALL)
End Sub
Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene
' Verifico di essere il gestore attivo
If Not m_bActive Then Return
@@ -232,17 +285,19 @@ Public Class MoveRawPartPage
If nParentId = nRawGroupId Then
Dim nStat As Integer = GDB_ST.ON_
EgtGetStatus(nId, nStat)
' aggiorno il messaggio del bottone "Scrap" a seconda che il grezzo sia già uno scrap
VerifyIsNewScrap(nId)
' Se il pezzo corrente è selezionato allora lo disattivo -> deposito del pezzo
If nStat = GDB_ST.SEL Then
EgtSetStatus(nId, GDB_ST.ON_)
' prima di rilasciare il pezzo verifico che non vada in collisione con altri pezzi sulla tavola
' prima di rilasciare il pezzo verifico che non vada in collisione con altri pezzi sulla tavola (evito il controllo se ultima fase)
If VerifyCollisionWithOtherRawPart(nId) Then
' mantengo la selezione del pezzo
EgtSetStatus(nId, GDB_ST.SEL)
m_CurrProjPage.SetErrorMessage("Collisione pezzi")
Else
' Se con ventose, le nascondo
If Not m_bByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
' mantengo la selezione del pezzo
EgtSetStatus(nId, GDB_ST.SEL)
m_CurrProjPage.SetErrorMessage("Collisione pezzi")
Else
' Se con ventose, le nascondo
If Not m_bByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
End If
Else
@@ -271,9 +326,9 @@ Public Class MoveRawPartPage
MaxDoublePlugger = GetPrivateProfileDouble(S_MACH_RAWMOVE, K_MACH_WEIGHT_DOUBLEPLUGGER, MaxDoublePlugger, m_MainWindow.GetMachIniFile())
Dim AverageDensity As Double = 2700
AverageDensity = GetPrivateProfileDouble(S_MATERIALS, K_AVERAGEDENSITY, AverageDensity, m_MainWindow.GetMachIniFile())
VacuumCups.GetWeightInformation(AverageDensity, MaxSinglePlugger, MaxDoublePlugger)
VacuumCups.GetRotationForExtraStrokeY(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEY, 0, m_MainWindow.GetMachIniFile()) <> 0)
VacuumCups.GetRotationForExtraStrokeX(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEX, 0, m_MainWindow.GetMachIniFile()) <> 0)
VacuumCups.SetWeightInformation(AverageDensity, MaxSinglePlugger, MaxDoublePlugger)
VacuumCups.SetRotationForExtraStrokeY(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEY, 0, m_MainWindow.GetMachIniFile()) <> 0)
VacuumCups.SetRotationForExtraStrokeX(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEX, 0, m_MainWindow.GetMachIniFile()) <> 0)
If PutVacuumCupsOnRaw(nId, rmData) Then
' Visualizzo le ventose
EgtSetStatus(GetVacuumId(), GDB_ST.ON_)
@@ -316,6 +371,8 @@ Public Class MoveRawPartPage
' Veririfica che il grezzo non entri in colliosione con altri pezzi
Private Function VerifyCollisionWithOtherRawPart(nIdOnVacumm As Integer) As Boolean
' se movimento su tavola di scarico non eseguo il controllo (evito di segnalre errori per pezzi ricavati interni al grezzo...)
If m_SplitPage.m_bOnAuxTab Then Return False
If nIdOnVacumm = GDB_ID.NULL Then Return False
' Creo gruppo temporaneo in cui generare le superfici per la veririfica di collisione
Dim m_nTempId As Integer = EgtCreateGroup(GDB_ID.ROOT)
@@ -347,6 +404,27 @@ Public Class MoveRawPartPage
Return False
End Function
Private Function VerifyIsNewScrap(nMyId As Integer) As Boolean
Dim nVal As Integer = 0
If EgtGetInfo(nMyId, K_ISNEWSCRAPS, nVal) Then
If nVal = 1 Or nVal = 2 Then
' 1 → è stato definito come nuovo grezzo oppure, 2 → è stato definito come nuovo grezzo ed è stato inserito nel DB delle lastre
ScrapsBtn.Content = "Remove Scrap"
ScrapsBtn.IsEnabled = True And Not m_SplitPage.m_bShow
Return True
ElseIf nVal = 3 Then
' non è possibile rimuovere il grezzo in questa fase
ScrapsBtn.Content = "Defined as Scrap"
ScrapsBtn.IsEnabled = False
Return True
End If
End If
' non è un nuovo grezzo
ScrapsBtn.Content = "Add Scrap"
ScrapsBtn.IsEnabled = True And Not m_SplitPage.m_bShow
Return False
End Function
#Region "Move Up/Down/Left/Right"
Private Sub UpBtn_Click(sender As Object, e As RoutedEventArgs) Handles UpBtn.Click
@@ -679,6 +757,29 @@ Public Class MoveRawPartPage
EgtDraw()
End Sub
Private Sub ScrapsBtn_Click(Sender As Object, e As RoutedEventArgs) Handles ScrapsBtn.Click
Dim nRawId As Integer = EgtGetFirstSelectedObj()
While nRawId <> GDB_ID.NULL
' verifico che il grezzo non contenga dei pezzi (altrimenti non risulta selezionabile)
Dim nPartInRaw As Integer = EgtGetFirstPartInRawPart(nRawId)
If nPartInRaw = GDB_ID.NULL Then
If Not VerifyIsNewScrap(nRawId) Then
EgtSetInfo(nRawId, K_ISNEWSCRAPS, "1")
Else
EgtRemoveInfo(nRawId, K_ISNEWSCRAPS)
End If
' aggiorno il contenuto del bottone
VerifyIsNewScrap(nRawId)
Else
' coumico che il grezzo contiene un pezzo e quindi non può essere definito come grezzo
m_CurrProjPage.ClearMessage()
m_CurrProjPage.SetErrorMessage("Part inside raw!")
End If
' passo al grezzo succesivo (NON dovrebbero esserci altri grezzi selezionabili contemporaneamente!)
nRawId = EgtGetNextSelectedObj()
End While
End Sub
Private Sub StepMoveTxBx_EgtClosed(sender As Object, e As EventArgs) Handles StepMoveTxBx.EgtClosed
Dim dStep As Double
If StringToLen(StepMoveTxBx.Text, dStep) Then
@@ -736,14 +837,18 @@ Public Class MoveRawPartPage
EgtGetRawPartCenter(nRawId, ptRawCen)
' Sposto il grezzo in battuta sul corner
Dim dAngRaw As Double = 0
Dim dNewAngRot As Double = 0
Dim AngRotList As New List(Of Double)
' ricavo l'angolo di posizionamento del grezzo/pezzo sulla tavola
If Not DispositionRawOnTable(nRawId, dAngRaw, AngRotList) Then Return
Dim bb3dRaw As New BBox3d
EgtGetRawPartBBox(nRawId, bb3dRaw)
Dim ForceToRotate As Boolean = bb3dRaw.DimX < bb3dRaw.DimY
' provo a verificare di poter depositare il pezzo (senza applicare delle rotazioni)
If Not EgtMoveToCornerRawPart(nRawId, ptRef, nCorn) Then
If Not EgtMoveToCornerRawPart(nRawId, ptRef, nCorn) Or ForceToRotate Then
' se sono impostati degli step di rotazione
If AngRotList.Count > 0 Then
Dim bOkRotate As Boolean = False
@@ -763,12 +868,26 @@ Public Class MoveRawPartPage
Next
If Not bOkRotate Then Return
Else
If EgtRotateRawPart(nRawId, Vector3d.Z_AX(), -dAngRaw) Then
' sposto il pezzo in centro tavola → perchè tutti i movimenti sono fatti ruotando il pezzo in centro tavola!
Dim b3Area As New BBox3d
EgtGetTableArea(1, b3Area)
Dim b3RawTemp As New BBox3d
EgtGetRawPartBBox(nRawId, b3RawTemp)
' ricavo il riferimento dell'angolo in basso a sinstra del grezzo rispetto alla tavola
Dim ptCorner As Point3d = New Point3d(b3Area.DimX / 2, b3Area.DimY / 2, 0) - New Vector3d(b3RawTemp.DimX / 2, b3RawTemp.DimY / 2, 0)
' sposto il pezzo in questa posizione
EgtMoveToCornerRawPart(nRawId, ptCorner, MCH_CR.BL)
' riprovo il movimento
dNewAngRot = GetPrefRotAng(dAngRaw)
'dNewAngRot = DeltaAngC
If EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dNewAngRot) Then
If Not EgtMoveToCornerRawPart(nRawId, ptRef, nCorn) Then
' riposiziono il pezzo come era prima
EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAngRaw)
EgtRotateRawPart(nRawId, Vector3d.Z_AX(), -dAngRaw)
EgtDraw()
Return
End If
dAngRaw = dNewAngRot
Else
Return
End If
@@ -794,17 +913,18 @@ Public Class MoveRawPartPage
End If
nOtherRaw = EgtGetNextRawPart(nOtherRaw)
End While
' Determino il movimento effettuato
Dim ptNewRawCen As Point3d
EgtGetRawPartCenter(nRawId, ptNewRawCen)
' Se tutto bene, aggiorno lista movimenti
If bRawOk Then
AddRawMoveData(nRawId, ptNewRawCen - ptRawCen, m_RawMoveDataList)
If dAngRaw <> 0 Then AddRawMoveData(nRawId, -dAngRaw, m_RawMoveDataList)
If dAngRaw <> 0 Then AddRawMoveData(nRawId, dAngRaw, m_RawMoveDataList)
' altrimenti annullo il movimento
Else
EgtMoveRawPart(nRawId, ptRawCen - ptNewRawCen)
EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAngRaw)
EgtRotateRawPart(nRawId, Vector3d.Z_AX(), -dAngRaw)
m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_MOVERAWPAGEUC + 3)) ' Posizione scelta già occupata
End If
' Disabilito pezzo e nascondo le ventose
@@ -877,6 +997,73 @@ Public Class MoveRawPartPage
Return True
End Function
' determino la migliore rotazione per portare il pezzo in orizzontale
Private Function GetPrefRotAng(ByVal dAngDeg As Double) As Double
Dim dNewAngDeg As Double = -dAngDeg
If dAngDeg > 90 And dAngDeg < 270 Then
dNewAngDeg = 180 - dAngDeg
End If
Return dNewAngDeg
End Function
Private Sub PauseBtn_Click(sender As Object, e As RoutedEventArgs) Handles PauseBtn.Click
' verifico che ci sia almeno un elemto selezionato (dati di aggancio pezzo)
If m_RawMoveDataList.Count = 0 Then Return
' verifico che sia stato inseito almeno uno spostamento, altrimenti lo rimuovo
Dim Index As Integer = 0
For Index = m_RawMoveDataList.Count - 1 To 0 Step -1
If Math.Abs(m_RawMoveDataList(Index).m_vtRawMove.x) < EPS_SMALL AndAlso Math.Abs(m_RawMoveDataList(Index).m_vtRawMove.y) < EPS_SMALL Then
m_RawMoveDataList.RemoveAt(Index)
End If
Next
' verifico che la lista non sia vuota
If m_RawMoveDataList.Count = 0 Then Return
' recupero disposizione fase corrente
Dim nDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
' imposto la pausa nella disposizione corrente
SetPause(nDispId)
' aggiungo al gruppo disposizione dei sottogruppi con i dati di movimento dei grezzi spostati
SaveMoveInfoInDisposition(nDispId, m_RawMoveDataList)
' imposto eventuale movimento pezzi su tavola ausiliaria
SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab)
'' Eseguo calcolo speciale dei movimenti: per tavola multicut
'SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab)
' Creo nuova fase
Dim nNewPhase As Integer = EgtAddPhase()
' Eseguo eventuali spezzature dei grezzi e vi sposto i pezzi (i grezzi devono essere sempre copiati per Registrazione con rotazione)
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
' se il grezzo è presente nella fase precedente e non è quello selezionato allora procedo a creare una copia nella nuova fase
If EgtVerifyRawPartPhase(nRawId, nNewPhase - 1) Then
Dim bKeepRawPart As Boolean = True
For Each RawOnAuxTabData As RawMoveData In m_RawMoveDataList
If nRawId = RawOnAuxTabData.m_nId Then
bKeepRawPart = False
Exit For
End If
Next
If bKeepRawPart Then EgtKeepRawPart(nRawId, nNewPhase - 1)
End If
' passo al successivo grezzo
nRawId = EgtGetNextRawPart(nRawId)
End While
Dim nCurrDisposition As Integer = EgtGetPhaseDisposition(nNewPhase)
'SetPause(nCurrDisposition)
m_nCurrDisposition = nCurrDisposition
' EgtSetStatus(nRawIdSlected, GDB_ST.OFF)
EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
EgtSetCurrPhase(nNewPhase)
SetAuxTabInCurrDisposition()
' ripulisco la lista degli spostamenti
m_RawMoveDataList.Clear()
' aggiorno la fase corrente
m_nCurrPhase = EgtGetCurrPhase()
End Sub
Private Sub ResetBtn_Click(sender As Object, e As RoutedEventArgs) Handles ResetBtn.Click
' Recupero il primo grezzo selezionato
Dim nRawId As Integer = EgtGetFirstSelectedObj()
@@ -912,7 +1099,30 @@ Public Class MoveRawPartPage
EgtDeselectAll()
' Torno alla fase precedente
m_bPrev = True
' Passo alla pagina delle spezzature
' Passo alla pagina delle spezzature solo se non esiste prima una fased di deposito sulla tavola di scarico
Dim nPrevDispId As Integer = EgtGetPrevOperation(m_nCurrDisposition)
' verifico se la fasa precedente è di tipo scarico
If IsDispUnloadOnAuxTab(nPrevDispId) <> 0 Then
EgtSetCurrPhase(m_nCurrPhase - 1)
m_nCurrDisposition = nPrevDispId
m_nCurrPhase -= 1
m_bPrev = False
m_SplitPage.m_bShow = True
EgtDraw()
Return
End If
'If EgtGetOperationType(EgtGetPrevOperation(m_nCurrDisposition)) = MCH_OY.DISP AndAlso m_SplitPage.m_bOnAuxTab Then
' EgtSetCurrPhase(m_nCurrPhase - 1)
' m_nCurrDisposition = EgtGetPrevOperation(m_nCurrDisposition)
' m_nCurrPhase -= 1
' m_bPrev = False
' m_SplitPage.m_bShow = True
' EgtDraw()
' Return
'End If
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Remove(Me)
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Add(m_SplitPage)
m_MainWindow.m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.Split
@@ -928,6 +1138,19 @@ Public Class MoveRawPartPage
' non cambio pagina
Return
End If
' se la disposizione corrente è sulla tavola ausiliaria allora lo sarà anche quella successiva
If IsDispUnloadOnAuxTab(m_nCurrDisposition) <> 0 Then
EgtSetCurrPhase(m_nCurrPhase + 1)
m_nCurrDisposition = EgtGetNextOperation(m_nCurrDisposition)
m_nCurrPhase += 1
m_bToNext = False
m_SplitPage.m_bShow = True
EgtDraw()
EnableButtons()
Return
End If
' resetto l'inidice del pezzo da mnovimentare
m_CurrRawOnVacuum = GDB_ID.NULL
' Deseleziono tutto
@@ -973,6 +1196,26 @@ Public Class MoveRawPartPage
EnableButtons()
End Sub
' verifica se la disposizione indicata è uno scarico sulla tavola ausiliaria
Public Function IsDispUnloadOnAuxTab(nCurrDispId As Integer) As Integer
' verifico se la fase precedente è uno scarico su tavola ausiliaria
Dim bVal As Integer = 0
EgtGetInfo(nCurrDispId, "Pat", bVal)
Return bVal
End Function
' recupero la prima disposizione disponibile tra l'elenco delle operazioni presenti
Public Function GetNextDisposition(nCurrDisposId As Integer) As Integer
Dim nDispId As Integer = nCurrDisposId
While nDispId <> GDB_ID.NULL
If EgtGetOperationType(nDispId) = MCH_OY.DISP Then
Return nDispId
End If
nDispId = EgtGetNextOperation(nDispId)
End While
Return GDB_ID.NULL
End Function
Private Sub EnableButtons()
UpBtn.IsEnabled = Not m_SplitPage.m_bShow
LeftBtn.IsEnabled = Not m_SplitPage.m_bShow
@@ -987,11 +1230,22 @@ Public Class MoveRawPartPage
TopRBtn.IsEnabled = Not m_SplitPage.m_bShow
BottomLBtn.IsEnabled = Not m_SplitPage.m_bShow
BottomRBtn.IsEnabled = Not m_SplitPage.m_bShow
PauseBtn.IsEnabled = Not m_SplitPage.m_bShow
ResetBtn.IsEnabled = Not m_SplitPage.m_bShow
NextBtn.IsEnabled = Not m_SplitPage.m_bOnAuxTab
If m_SplitPage.m_bShow Then
NextBtn.IsEnabled = (m_nCurrPhase < EgtGetPhaseCount())
Else
NextBtn.IsEnabled = Not m_SplitPage.m_bOnAuxTab
End If
End Sub
Private Sub MoveRawPartPage_Unloaded(sender As Object, e As EventArgs) Handles Me.Unloaded
' verifico che la fase corrente non sia vuota
Dim nLastDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
If EgtIsOperationEmpty(nLastDispId) And m_SplitPage.m_bOnAuxTab And m_RawMoveDataList.Count = 0 Then
EgtErase(nLastDispId)
End If
' Se movimento con ventose
If Not m_bByHand Then
' nascondo le ventose
@@ -1007,11 +1261,11 @@ Public Class MoveRawPartPage
' imposto eventuale presenza rimozioni manuali
SaveRemoveByHandInDisposition(nDispId, m_bRemovedRaw)
' imposto eventuale movimento pezzi su tavola ausiliaria
SaveMovePartsOnAuxTable( nDispId, m_SplitPage.m_bOnAuxTab)
SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab)
' Eseguo calcolo speciale dei movimenti
SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab)
End If
' se altrimenti movimento senza ventose perchè lama troppo grande
' se altrimenti movimento senza ventose perchè lama troppo grande
ElseIf GetVacuumType() > 0 Then
' se non solo visualizzazione
If Not m_SplitPage.m_bShow Then
+12 -6
View File
@@ -8,7 +8,7 @@
d:DesignHeight="853.3" d:DesignWidth="1280" Initialized="NestPage_Initialized" Loaded="NestPage_Loaded" Unloaded="NestPage_Unloaded">
<!-- Definizione della NestPage -->
<Grid Name="NestPageGrid" >
<Grid Name="NestPageGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="12*"/>
@@ -78,7 +78,7 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<EgtWPFLib:EgtTextBox Name="RotationAngleTxBx" Width="50"
<EgtWPFLib:EgtTextBox Name="RotationAngleTxBx" Width="50" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<TextBlock Grid.Column="1" FontSize="30" Margin="2,-5,0,0"
Text="°"/>
@@ -99,23 +99,29 @@
<Image Source="{DynamicResource ClockwiseRotateImg}" Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
<UniformGrid Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="2" >
<UniformGrid Name ="UG0" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="3" >
<Button Name="InsertPartBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inserisci-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="StorePartBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Parcheggia-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<ToggleButton Name="StartCurveWJBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource StartWJImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid>
<UniformGrid Name ="UG1" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="3" Columns="2" >
<UniformGrid Name ="UG1" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="3" Columns="3" >
<Button Name="RemovePartBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Elimina-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<ToggleButton Name="DragRettanleBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Drag_RettangleImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
<ToggleButton Name="SplitCurveWJBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource SplitWJImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid>
<UniformGrid Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Columns="2" >
+719 -108
View File
@@ -16,12 +16,18 @@ Public Class NestPageUC
' dati per DragRettangoli (estensio/accorciamento dei rettangoli trascinando un lato)
Private m_bIsVisibleDragRettangle As Boolean = False
Friend m_bIsCheckedDragRettangle As Boolean = False
' dati per attivare disattivare le lavorazioni WaterJet
Private m_bIsVisibleSliptCurveWJ As Boolean = False
Friend m_bIsCheckedSplitCurveWJ As Boolean = False
' dati per attivare disattivare la selezione del pubnto di inizio
Private m_bIsVisibleStarCurvetWJ As Boolean = False
Friend m_bIsCheckedStartCurveWJ As Boolean = False
' Id della curva e del taglio selezionati per eseguire il test
Friend m_CurrSelectedCurv As Integer = GDB_ID.NULL
Friend m_CurrSelectedSawCurv As Integer = GDB_ID.NULL
' Id del rettangolo, del traglio e della curva da modificare tramite Drag
' Id del rettangolo, del taglio e della curva da modificare tramite Drag
Private m_nIdSelectedOutLoopRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedRegionRettangle As Integer = GDB_ID.NULL
Private m_nIdSelectedSawRettangle As Integer = GDB_ID.NULL
@@ -33,6 +39,10 @@ Public Class NestPageUC
Private m_sTextContent As String = String.Empty
Private m_dRettangleIsModified As Boolean = False
' Id dei lato WJ da separare tramite comando ON_OFF
Private m_nIdSelectedSideWJ As Integer = GDB_ID.NULL
Private m_nIdSelectedWaterJet As Integer = GDB_ID.NULL
Enum PART_POS As Integer
IN_TABLE = -1
NONE_TABLE = 0
@@ -52,6 +62,14 @@ Public Class NestPageUC
Private m_bMaximizeMove As Boolean = False
Private m_dAngStep As Double = 0
Private m_bReducedCut As Boolean = False
Private m_bKeyCtrlPressed As Boolean = False
Private m_bKeyLeftShiftPressed As Boolean = False
Private m_dAngTotal As Double = 0
Private m_dStartAng As Double = 0
Private m_bStartRot As Boolean = False
Private m_bStartMove As Boolean = False
' Dati per tolleranza spessore Trf
Private m_dTrfThickTolerance As Double = 0
' Dati movimento registrazione grezzo
@@ -84,14 +102,38 @@ Public Class NestPageUC
RemovePartBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 3) 'Remove part - Elimina pezzo
SelectAllBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 4) 'Select All - Seleziona Tutto
DeselectAllBtn.ToolTip = EgtMsg(MSG_NESTPAGEUC + 5) 'Deselect All - Deseleziona Tutto
DragRettanleBtn.ToolTip = "Strech"
Dim nColumsIn_UG1 As Integer = 2
' gestisco la visualizzazione del comando PAN (per il drag dei rettangoli)
m_bIsVisibleDragRettangle = (GetPrivateProfileInt(S_NEST, K_DRAG_RETTANGLE, 0, m_MainWindow.GetIniFile()) <> 0)
If Not m_bIsVisibleDragRettangle Then
UG1.Columns = 1
nColumsIn_UG1 = 1
DragRettanleBtn.Visibility = Visibility.Collapsed
End If
' gestisco la visualizzazione del comando Splt (per i tagli waterjet)
If m_MainWindow.m_CurrentMachine.WaterJettingActive Then
nColumsIn_UG1 += 1
SplitCurveWJBtn.Visibility = Visibility.Visible
'91133=Separa
SplitCurveWJBtn.ToolTip = EgtMsg(91133)
Else
SplitCurveWJBtn.Visibility = Visibility.Collapsed
End If
UG1.Columns = nColumsIn_UG1
Dim nColumnIn_UG0 As Integer = 2
' gestisco la visualizzazione del comando Punto_Inizio (per i tagli waterjet)
If m_MainWindow.m_CurrentMachine.WaterJettingActive Then
nColumnIn_UG0 += 1
StartCurveWJBtn.Visibility = Visibility.Visible
' 91132=Start
StartCurveWJBtn.ToolTip = EgtMsg(91132)
Else
StartCurveWJBtn.Visibility = Visibility.Collapsed
End If
UG0.Columns = nColumnIn_UG0
End Sub
Private Sub NestPage_Loaded(sender As Object, e As RoutedEventArgs)
@@ -191,7 +233,7 @@ Public Class NestPageUC
End If
' recupero il gruppo della lavorazione associata
Dim nIdParentPart As Integer = EgtGetParent(nIdParent)
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, "PV")
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, NAME_PREVIEW)
Dim nIdSaw As Integer = EgtGetFirstNameInGroup(nIdPV, "Saw" & nIdMy.ToString)
If Not EgtGetGroupObjs(nIdSaw) Then
m_CurrSelectedSawCurv = nIdSaw
@@ -209,6 +251,161 @@ Public Class NestPageUC
Return
End Sub
' funzione per la selezione dei lati su cui operare la separazione del tagli waterjet
Private Sub OnMyMouseDownSceneSplitCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo
If e.Button <> Windows.Forms.MouseButtons.Left Or
Not m_bIsCheckedSplitCurveWJ Then
Return
End If
' Se esiste un elemento selezionato
EgtResetMark(m_nIdSelectedWaterJet)
' 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
Dim nIdParentPart As Integer = 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) = ResearchGropuWJ(nIdParent, nIdPV)
' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo
Dim ListGroupSaw As List(Of Integer) = ResearchGropuSaw(nIdParent, nIdPV)
' se non esiste almeno 1 Preview di tipo WaterJet
If ListGroup.Count > 0 Then
m_nIdSelectedSideWJ = nIdMy
Dim nValInfo As String = 1
Dim nNewValInfo As Integer = nValInfo
If EgtGetInfo(nIdMy, INFO_JOINENTITY, nValInfo) Then
If nValInfo = 1 Then
nNewValInfo = 0
Else
nNewValInfo = 1
End If
Else
' se manca l'info allora il taglio sValInfo = "1" quindi separo il taglio
nNewValInfo = 0
End If
EgtSetInfo(nIdMy, INFO_JOINENTITY, nNewValInfo)
' 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 = ResearchGropuWJ(nIdParent, nIdPV)
Dim nIdWJ As Integer = GetPVIdFromIdSide(ListGroup, nIdMy)
GetCurrentPVFromIdSide(ListGroup, nIdMy, nIdWJ, nIdParent)
' assegno un identificativo grafico per inidcare che è un taglio separato
If nNewValInfo = 0 Then
AssignFlagOnGraphic(nIdMy, nIdParentPart)
Else
EraseFlagOnGraphic(nIdMy, nIdParentPart)
End If
m_nIdSelectedWaterJet = nIdWJ
' salvo il valore del PreView evidenziato
EgtSetMark(nIdWJ)
EgtSelectObj(nIdMy)
EgtDraw()
Exit While
End If
End If
End If
nIdMy = EgtGetNextObjInSelWin()
End While
Return
End Sub
' funzione per la selezione del punto di inizio tagli waterjet (percorso chiuso)
Private Sub OnMyMouseDownSceneStartCurv(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo
If e.Button <> Windows.Forms.MouseButtons.Left Or
Not m_bIsCheckedStartCurveWJ Then
Return
End If
' Acquisisco punto da disegno
Dim ptStartCurv As New Point3d
EgtUnProjectPoint(e.Location, ptStartCurv)
' Aggiusto Z punto acquisito (è in globale)
Dim ptRawMax As New Point3d
Dim ptRawMin As New Point3d
If GetRawBox(ptRawMin, ptRawMax) Then
ptStartCurv.z = ptRawMax.z
End If
' Se esiste un elemento selezionato
EgtResetMark(m_nIdSelectedWaterJet)
' 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 Or sLayer = NAME_INLOOP Then
If EgtGetType(nIdMy) = GDB_TY.CRV_ARC OrElse EgtGetType(nIdMy) = GDB_TY.CRV_COMPO OrElse EgtGetType(nIdMy) = GDB_TY.CRV_LINE Then
' verifico che il contorno sia chiuso, altrimenti esco
If Not VerifyOutLoopIsClosed(nIdParent) Then
' 91131=Il contorno non è chiuso
m_CurrProjPage.SetWarningMessage(EgtMsg(91131))
Exit While
End If
' recupero il gruppo della lavorazione associata
Dim nIdParentPart As Integer = EgtGetParent(nIdParent)
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, NAME_PREVIEW)
' VERIFICA: recupero l'elenco delle Preview di Tipo WaterJet_n_S associate a questo Part
Dim ListGroup As List(Of Integer) = ResearchGropuWJ(nIdParent, nIdPV)
' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo
Dim ListGroupSaw As List(Of Integer) = ResearchGropuSaw(nIdParent, nIdPV)
' se non esiste almeno 1 Preview di tipo WaterJet
If ListGroup.Count = 1 And ListGroupSaw.Count = 0 Then
EgtSetInfo(nIdParent, INFO_START, ptStartCurv)
' 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 = ResearchGropuWJ(nIdParent, nIdPV)
Dim nIdWJ As Integer = GetPVIdFromIdSide(ListGroup, nIdMy)
GetCurrentPVFromIdSide(ListGroup, nIdMy, nIdWJ, nIdParent)
m_nIdSelectedWaterJet = nIdWJ
EgtSetMark(nIdWJ)
EgtDraw()
Exit While
Else
' 91131=Il contorno non è chiuso
m_CurrProjPage.SetWarningMessage(EgtMsg(91131))
Exit While
End If
End If
End If
nIdMy = EgtGetNextObjInSelWin()
End While
Return
End Sub
#Region "DRAG RETTANGLE"
' funzione chiamata da OnMyMouseMoveScene: verifica che la selezione sia corretta (deve essere il lato di una figura rettangolare)
@@ -216,7 +413,7 @@ Public Class NestPageUC
' Verifico di essere il gestore attivo e non in modalità registrazione
If Not m_bActive Or m_bRegister Then Return
' Si può selezionare solo con il tasto sinistro e se il bottone TEST Attivo
If e.Button <> Windows.Forms.MouseButtons.Left then
If e.Button <> Windows.Forms.MouseButtons.Left Then
Return
End If
' Verifico se selezionato indicativo di pezzo
@@ -511,6 +708,186 @@ Public Class NestPageUC
#End Region ' Drag Rettangolo
#Region "SPLIT/START CURVE"
' restituisce l'elenco dei Gruppi Waterjet associati al contorno indicato
Public Function ResearchGropuWJ(nIdOutLoop As Integer, nIdPV As Integer) As List(Of Integer)
Dim ListOfGroupPV As New List(Of Integer)
Dim nIdGroup As Integer = GDB_ID.NULL
Dim nIdMy As Integer = GDB_ID.NULL
' recupero il primo lato dall'elenco dei lati della figura
nIdMy = EgtGetFirstInGroup(nIdOutLoop)
' altrimenti cerco all'interno del layer OutLoop per ogni lato la lavorazione associata
While nIdMy <> GDB_ID.NULL
' verifico se esiste una Preview associata al lato
nIdGroup = EgtGetFirstNameInGroup(nIdPV, "Waterjet" & nIdMy.ToString & "S")
If nIdGroup <> GDB_ID.NULL Then
ListOfGroupPV.Add(nIdGroup)
End If
nIdMy = EgtGetNext(nIdMy)
End While
Return ListOfGroupPV
End Function
' restituisce l'elenco dei Gruppi Saw associati al contorno indicato
Public Function ResearchGropuSaw(nIdOutLoop As Integer, nIdPV As Integer) As List(Of Integer)
Dim ListOfGroupPV As New List(Of Integer)
Dim nIdGroup As Integer = GDB_ID.NULL
Dim nIdMy As Integer = GDB_ID.NULL
' recupero il primo lato dall'elenco dei lati della figura
nIdMy = EgtGetFirstInGroup(nIdOutLoop)
' altrimenti cerco all'interno del layer OutLoop per ogni lato la lavorazione associata
While nIdMy <> GDB_ID.NULL
' verifico se esiste una Preview associata al lato
nIdGroup = EgtGetFirstNameInGroup(nIdPV, "Saw" & nIdMy.ToString)
If nIdGroup <> GDB_ID.NULL Then
ListOfGroupPV.Add(nIdGroup)
End If
nIdMy = EgtGetNext(nIdMy)
End While
Return ListOfGroupPV
End Function
Public Function GetPVIdFromIdSide(ListGroup As List(Of Integer), nIdMy As Integer) As Integer
Dim IdWaterjetPV As Integer = GDB_ID.NULL
For Each nIdItem As Integer In ListGroup
Dim sName As String = String.Empty
If EgtGetName(nIdItem, sName) Then
If sName.Contains(nIdMy.ToString) Then
IdWaterjetPV = nIdItem
Exit For
End If
End If
Next
Return IdWaterjetPV
End Function
Public Sub GetCurrentPVFromIdSide(ListGroup As List(Of Integer), nIdMy As Integer, ByRef nIdWj As Integer, nIdParent As Integer)
Dim nObjInGroup As Integer = EgtGetGroupObjs(nIdParent)
Dim nCount As Integer = 0
GetNextSideJoint(ListGroup, nIdMy, nIdWj, nCount, nObjInGroup)
If nIdWj <> GDB_ID.NULL Then Return
GetPrevSideJoint(ListGroup, nIdMy, nIdWj, nCount, nObjInGroup)
End Sub
' funzione ricorsiva per la ricerca del lato al quale è associata la PreView
Private Sub GetNextSideJoint(ListGroup As List(Of Integer), nIdMy As Integer, ByRef nIdWj As Integer, ByRef nCount As Integer, nObjInGroup As Integer)
Dim nValInfo As Integer = 1
' espressione di controllo per evitare di generare Loop infinito
If nCount > nObjInGroup Then Return
If nIdWj = GDB_ID.NULL Then
Dim nIdWJNext As Integer = EgtGetNext(nIdMy)
If nIdWJNext = GDB_ID.NULL Then nIdWJNext = EgtGetFirstInGroup(EgtGetParent(nIdMy))
nCount += 1
EgtGetInfo(nIdWJNext, INFO_JOINENTITY, nValInfo)
If nValInfo = 1 Then
nIdWj = GetPVIdFromIdSide(ListGroup, nIdWJNext)
If nIdWj <> GDB_ID.NULL Then Return
Else
Return
End If
'nIdWJNext = EgtGetNext(nIdWJNext)
GetNextSideJoint(ListGroup, nIdWJNext, nIdWj, nCount, nObjInGroup)
If nIdWj <> GDB_ID.NULL Then Return
End If
End Sub
' funzione ricorsiva per la ricerca del lato al quale è associata la PreView
Private Sub GetPrevSideJoint(ListGroup As List(Of Integer), nIdMy As Integer, ByRef nIdWj As Integer, ByRef nCount As Integer, nObjInGroup As Integer)
Dim nValInfo As Integer = 1
' espressione di controllo per evitare di generare Loop infinito
If nCount > nObjInGroup Then Return
If nIdWj = GDB_ID.NULL Then
Dim nIdWJPrev As Integer = EgtGetPrev(nIdMy)
' se arrivato al primo valore allora continuo la ricerca dall'ultimo
If nIdWJPrev = GDB_ID.NULL Then nIdWJPrev = EgtGetLastInGroup(EgtGetParent(nIdMy))
nCount += 1
EgtGetInfo(nIdWJPrev, INFO_JOINENTITY, nValInfo)
If nValInfo = 1 Then
nIdWj = GetPVIdFromIdSide(ListGroup, nIdWJPrev)
If nIdWj <> GDB_ID.NULL Then Return
Else
Return
End If
'nIdWJPrev = EgtGetPrev(nIdWJPrev)
GetPrevSideJoint(ListGroup, nIdWJPrev, nIdWj, nCount, nObjInGroup)
If nIdWj <> GDB_ID.NULL Then Return
End If
End Sub
Public Sub ResetSplitCurvWJParam()
EgtDeselectObj(m_nIdSelectedSideWJ)
EgtResetMark(m_nIdSelectedWaterJet)
m_nIdSelectedSideWJ = GDB_ID.NULL
m_nIdSelectedWaterJet = GDB_ID.NULL
EgtDraw()
End Sub
' ricevo l'ID del percorso di lavorazione WJ al quale associo una etichetta grafica con scritto "S"
Private Sub AssignFlagOnGraphic(nIdMy As Integer, IdParentPart As Integer)
' cerco se esiste già un layer nominato "AUX_SPLIT_WJ", altrimenti lo creo
Dim IdAuxLayer As Integer = EgtGetFirstNameInGroup(IdParentPart, INFO_AUX_SPLIT_WJ)
If IdAuxLayer = GDB_ID.NULL Then
IdAuxLayer = EgtCreateGroup(IdParentPart)
EgtSetName(IdAuxLayer, INFO_AUX_SPLIT_WJ)
End If
' recupero il punto medio del segmento selezionato
Dim MidPoint As Point3d
EgtMidPoint(nIdMy, GDB_RT.GLOB, MidPoint)
'Dim nIdTextFlag As Integer = EgtCreateText(IdAuxLayer, MidPoint, "*", 20, GDB_RT.GLOB)
Dim nIdTextFlag As Integer = GetCreateFlagText(nIdMy, IdAuxLayer)
EgtSetColor(nIdTextFlag, New Color3d(255, 0, 0))
EgtSetName(nIdTextFlag, "RefSide_" & nIdMy.ToString)
End Sub
Private Function GetCreateFlagText(nId As Integer, nIdLayer As Integer, Optional sText As String = "*") As Integer
' recupero il punto medio
Dim MidPoint As Point3d
EgtMidPoint(nId, GDB_RT.GLOB, MidPoint)
' recupero la direzione del vettore nel punto medio
Dim vVers As Vector3d
EgtMidVector(nId, GDB_RT.GLOB, vVers)
vVers.Normalize()
vVers.Rotate(Vector3d.Z_AX, 90)
' Ingombro complessivo della lavorazione
Dim ptMin, ptMax As Point3d
EgtStartPoint(nId, GDB_RT.GLOB, ptMin)
EgtEndPoint(nId, GDB_RT.GLOB, ptMax)
' Metto il numero nel centro
Dim dRadXY = Point3d.DistXY(ptMin, ptMax)
Dim dHtxt As Double = 50
Dim dRat As Double = 0.75
If dRadXY < 200 Then
dHtxt = 40
dRat = 0.6
ElseIf dRadXY < 25 Then
dHtxt = 25
dRat = 0.5
End If
' determino la posizione del flag
MidPoint.x += vVers.x * dHtxt / 2
MidPoint.y += vVers.y * dHtxt / 2
Return EgtCreateTextAdv(nIdLayer, MidPoint, 0, sText, "", 300, False, dHtxt, dRat, 0, INS_POS.MC, GDB_RT.GLOB)
End Function
Private Sub EraseFlagOnGraphic(nIdMy As Integer, IdParentPart As Integer)
' cerco se esiste già un layer nominato "AUX_SPLIT_WJ", altrimenti lo creo
Dim IdAuxLayer As Integer = EgtGetFirstNameInGroup(IdParentPart, INFO_AUX_SPLIT_WJ)
If IdAuxLayer = GDB_ID.NULL Then Return
Dim nIdTextFlag As Integer = EgtGetFirstNameInGroup(IdAuxLayer, "RefSide_" & nIdMy.ToString)
EgtErase(nIdTextFlag)
End Sub
Public Sub ResetStartCurvWJParam()
EgtResetMark(m_nIdSelectedWaterJet)
m_nIdSelectedWaterJet = GDB_ID.NULL
EgtDraw()
End Sub
#End Region ' Split/Start Curve
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à registrazione
If Not m_bActive Or m_bRegister Then Return
@@ -539,6 +916,18 @@ Public Class NestPageUC
Return
End If
' se in modalità SplitCurveWJ (separazione dei tagli WaterJet)
If m_bIsCheckedSplitCurveWJ Then
OnMyMouseDownSceneSplitCurv(sender, e)
Return
End If
' se in modalità StartCurveWJ (punto di inzio taglio waterjet)
If m_bIsCheckedStartCurveWJ Then
OnMyMouseDownSceneStartCurv(sender, e)
Return
End If
' Per default no drag
m_bDrag = False
' Verifico se selezionato indicativo di pezzo
@@ -588,10 +977,10 @@ Public Class NestPageUC
' Drag possibile
m_bDrag = True
Exit While
Else
' verifico se l'elemento selezionato è il nome della tavola
If EgtGetType(nId) = GDB_TY.EXT_TEXT AndAlso (sNamePartId = MAIN_TAB Or sNamePartId = SECOND_TAB) Then
Exit While
Else
' verifico se l'elemento selezionato è il nome della tavola
If EgtGetType(nId) = GDB_TY.EXT_TEXT AndAlso (sNamePartId = MAIN_TAB Or sNamePartId = SECOND_TAB) Then
Dim nRes As Integer = m_MainWindow.m_CadCutPageUC.m_ProjectMgr.ChangeTable()
' se non è stata eseguita nessuna scelta esco dal ciclo
If nRes = 0 Then Exit While
@@ -673,7 +1062,9 @@ Public Class NestPageUC
m_locPrev = e.Location
m_bDrag = m_bDrag AndAlso EgtUnProjectPoint(e.Location, m_ptPrev)
m_bDragToStart = m_bDrag
' attivo la modalità di traslazione e rotazione senza cltrollo collisioni (solo in fase di Drag)
m_bVerify = m_bDrag AndAlso (Keyboard.Modifiers And ModifierKeys.Shift) > 0
m_bKeyLeftShiftPressed = m_bVerify
m_vtTotMove = Vector3d.NULL()
End Sub
@@ -736,51 +1127,114 @@ Public Class NestPageUC
m_bVerify = True
m_bFromParking = True
End If
' Inizio esecuzione di drag
m_bDragging = True
' Ricavo il punto corrente in coordinate mondo
Dim ptCurr As Point3d
EgtUnProjectPoint(e.Location, ptCurr)
' Ricavo il vettore di movimento
Dim vtMove As Vector3d = ptCurr - m_ptPrev
' Muovo i pezzi selezionati di quanto possibile
If vtMove.SqLen() > EPS_SMALL * EPS_SMALL Then
' Se movimento con sola verifica finale
If m_bVerify Then
EgtMove(nMoveId, vtMove)
m_vtTotMove += vtMove
' altrimenti caso con verifica durante il movimento
Else
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' muovo il pezzo
EgtMovePart(nMoveId, m_bReducedCut, vtMove)
EgtSaveCollInfo()
' se movimento risultante nullo, provo con movimento tangente
Dim bTgMoved As Boolean = False
If vtMove.IsSmall() Then
' riprovo con movimento tangente
Dim vtTgMove As Vector3d = ptCurr - m_ptPrev
EgtTgMovePartOnCollision(nMoveId, m_bReducedCut, vtTgMove)
bTgMoved = (Not vtTgMove.IsSmall())
End If
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
If Not GetLockOnRotation(nMoveId) Then
EgtAlignPartOnCollision(nMoveId, m_bReducedCut, bAlignMoved)
End If
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
EgtMovePartToSnapPointOnCollision(nMoveId, m_bReducedCut, m_dSnapDist, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
' la rotazione è attivabile solo se premuto il tasto Ctrl (e non sono in parheggio)
m_bKeyCtrlPressed = m_bDrag AndAlso (Keyboard.Modifiers And ModifierKeys.Control) > 0
'-------------Inizio ROTAZIONE ----------------
If m_bKeyCtrlPressed AndAlso (Not m_bFromParking OrElse m_bKeyLeftShiftPressed) Then
' Calcolo il centro di rotazione come centro del cluster
Dim ptCen As Point3d
If Not EgtGetPartPartClusterCenterGlob(nMoveId, ptCen) Then Return
' definisco il vettore dal centro del pezzo alla posizione del cursore
Dim vtCurr As Vector3d = ptCurr - ptCen
Dim dLen, dHAng, dVAng As Double
' recupero l'angolo orizzontale del vettore
vtCurr.ToSpherical(dLen, dHAng, dVAng)
If Not m_bStartRot Then
m_dAngTotal = 0
' notifico una rotazione
m_bStartRot = True
m_dStartAng = dVAng
End If
EgtDraw()
' Eventuale notifica al VeinMatching
Dim dDeltaAng As Double = dVAng - m_dStartAng
' gestione del passaggio da 0° → 360° evitando mantenendo la visualizzazione fluida
If Math.Abs(dDeltaAng) > 90 Then
If m_dStartAng < 180 And dVAng > 180 Then
dDeltaAng = dVAng - 360 - m_dStartAng
ElseIf m_dStartAng > 180 And dVAng < 180 Then
dDeltaAng = dVAng - m_dStartAng + 360
End If
End If
' Rotazione del pezzo attorno al suo centro
If Math.Abs(dDeltaAng) > EPS_ANG_SMALL Then
' se il tasto Shift è premuto (disabilitato il controllo collisioni durante il Drag)
If m_bKeyLeftShiftPressed Then
EgtRotate(nMoveId, ptCen, Vector3d.Z_AX(), dDeltaAng, GDB_RT.GLOB)
m_dAngTotal += dDeltaAng
Else
' esegue la rotazione fino ad incontrare un altro pezzo
RotatePartInsideBond(dDeltaAng, nMoveId)
m_CurrProjPage.ResetOrderMachiningFlag()
' Eventuale notifica al VeinMatching
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
VeinMatching.OnMovePartInRaw(nId)
nId = EgtGetNextSelectedObj()
End While
End If
m_dStartAng = dVAng
End If
'-------------Fine ROTAZIONE ----------------
Else
' -------------Inizio TRASLAZIONE ---------------
' Ricavo il vettore di movimento
Dim vtMove As Vector3d = ptCurr - m_ptPrev
' Muovo i pezzi selezionati di quanto possibile
If vtMove.SqLen() > EPS_SMALL * EPS_SMALL Then
' notifico una traslazione
If Not m_bStartMove Then
m_bStartMove = True
End If
' Se movimento con sola verifica finale (disabilitato il controllo collisioni durante il Drag)
If m_bVerify Then
EgtMove(nMoveId, vtMove)
m_vtTotMove += vtMove
' altrimenti caso con verifica durante il movimento
Else
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' muovo il pezzo
EgtMovePart(nMoveId, m_bReducedCut, vtMove)
EgtSaveCollInfo()
' se movimento risultante nullo, provo con movimento tangente
Dim bTgMoved As Boolean = False
If vtMove.IsSmall() Then
' riprovo con movimento tangente
Dim vtTgMove As Vector3d = ptCurr - m_ptPrev
EgtTgMovePartOnCollision(nMoveId, m_bReducedCut, vtTgMove)
bTgMoved = (Not vtTgMove.IsSmall())
End If
' se abilitato magnetico (allineamento + snap), lo provo
Dim bAlignMoved As Boolean = False
Dim bSnapMoved As Boolean = False
If m_bMagnetic Then
If Not GetLockOnRotation(nMoveId) Then
EgtAlignPartOnCollision(nMoveId, m_bReducedCut, bAlignMoved)
End If
If m_dSnapDist > EPS_SMALL Then
EgtRestoreCollInfo()
EgtMovePartToSnapPointOnCollision(nMoveId, m_bReducedCut, m_dSnapDist, bSnapMoved)
End If
End If
m_CurrProjPage.ResetOrderMachiningFlag()
End If
' -------------Fine TRASLAZIONE ---------------
End If
End If
EgtDraw()
' Eventuale notifica al VeinMatching
If m_bStartMove OrElse m_bStartRot Then
If nMoveId = GDB_ID.SEL Then
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
@@ -791,10 +1245,15 @@ Public Class NestPageUC
VeinMatching.OnMovePartInRaw(nMoveId)
End If
End If
' Aggiorno il punto precedente
m_ptPrev = ptCurr
' Terminata esecuzione di drag
m_bDragging = False
'' elimino il ponticello associato: nella vilualizzazione il percorso di lavorazioni non si muove! in attesa di gestione
'DeleteBridgeAssociated(nMoveId)
' Resetto i ponticelli (per ora non sono in grado di muoverli assieme ai pezzi)
ResetAllBRidges()
End Sub
Private Sub OnMyMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseUpScene
@@ -802,56 +1261,47 @@ Public Class NestPageUC
If Not m_bActive Then Return
' verifico che non sia attivo il comando Test
If m_bSelectCurv Then Return
' verifico che non sia attivo il comando di Drag dei rettangoli
' verifico che sia attivo il comando di Drag dei rettangoli
If m_bIsCheckedDragRettangle Then
' deseleziono gli oggeti, resetto le variabili usate, aggiorno il disegno
ResetDragRettangleParam()
Return
End If
' verifico che sia attivo il comando di modifica tagli waterjet
If m_bIsCheckedSplitCurveWJ Then
Return
End If
If m_bIsCheckedStartCurveWJ Then
Return
End If
' Se eseguito drag
If Not m_bDragToStart Then
' Se movimento con sola verifica finale
If m_bVerify Then
' Determino cosa verificare
Dim nMoveId = If(m_nIdToSel <> GDB_ID.NULL, m_nIdToSel, GDB_ID.SEL)
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' Eseguo verifica
If VerifyTrfData(nMoveId) And EgtVerifyPart(nMoveId, m_bReducedCut) Then
m_CurrProjPage.ResetOrderMachiningFlag()
' Non superata riporto alla posizione iniziale
' Se movimento con sola verifica finale ----- TRASLAZIONE
If Not m_bStartRot And m_bStartMove Then
VerifyMove()
' Se movimento con sola verifica finale ----- TRASLAZIONE + ROTAZIONE
ElseIf m_bStartRot And m_bStartMove Then
If Not m_bFromParking Then
VerifyRot()
Else
If m_bFromParking Then
m_CurrProjPage.ClearMessage()
PreRemoveOnePart(nMoveId)
VeinMatching.OnRemovePartFromRaw(nMoveId)
Else
EgtMove(nMoveId, -m_vtTotMove)
' Eventuale notifica al VeinMatching
If nMoveId = GDB_ID.SEL Then
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
VeinMatching.OnMovePartInRaw(nId)
nId = EgtGetNextSelectedObj()
End While
Else
VeinMatching.OnMovePartInRaw(nMoveId)
End If
End If
'---------------------- COUNTER PART ----------------------
Dim sRefGroup As String = String.Empty
If EgtGetInfo(nMoveId, INFO_REFGROUP, sRefGroup) Then
' accendo il layer che contiene il contatore (spento in fase di Drag)
Dim nCounterLayer As Integer = EgtGetFirstNameInGroup(nMoveId, INFO_COUNTERLY)
EgtSetStatus(nCounterLayer, GDB_ST.ON_)
' aggiorno il layer che indica il numero di pezzi in parcheggio
CountPartInFamily(sRefGroup)
End If
'---------------------- COUNTER PART ----------------------
' forzo il reset delle info di rotazione
m_dStartAng = 0
m_dAngTotal = 0
m_bStartRot = False
End If
VerifyMove()
' verifico se la posizione finale della rotazione è corretta ----- ROTAZIONE
ElseIf m_bStartRot And Not m_bStartMove Then
If m_bFromParking Then
VerifyMove()
' forzo il reset delle info di rotazione
m_dStartAng = 0
m_dAngTotal = 0
m_bStartRot = False
Else
VerifyRot()
End If
m_bFromParking = False
' altrimenti caso con verifica durante il movimento
Else
' Basta reset alla fine
@@ -903,8 +1353,8 @@ Public Class NestPageUC
VeinMatching.OnDeselectPart(m_nIdToDesel)
End If
' Reset
GetFamilyGroupInPark()
m_bDrag = False
m_nIdToSel = GDB_ID.NULL
m_nIdToDesel = GDB_ID.NULL
@@ -915,6 +1365,70 @@ Public Class NestPageUC
EgtDraw()
End Sub
Private Sub VerifyMove()
If m_bVerify Then
' Determino cosa verificare
Dim nMoveId = If(m_nIdToSel <> GDB_ID.NULL, m_nIdToSel, GDB_ID.SEL)
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' Eseguo verifica
If VerifyTrfData(nMoveId) And EgtVerifyPart(nMoveId, m_bReducedCut) Then
m_CurrProjPage.ResetOrderMachiningFlag()
' Non superata riporto alla posizione iniziale
Else
If m_bFromParking Then
m_CurrProjPage.ClearMessage()
PreRemoveOnePart(nMoveId)
VeinMatching.OnRemovePartFromRaw(nMoveId)
Else
EgtMove(nMoveId, -m_vtTotMove)
' Eventuale notifica al VeinMatching
If nMoveId = GDB_ID.SEL Then
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
VeinMatching.OnMovePartInRaw(nId)
nId = EgtGetNextSelectedObj()
End While
Else
VeinMatching.OnMovePartInRaw(nMoveId)
End If
End If
'---------------------- COUNTER PART ----------------------
' solo se pezzo disposto in tavola
If m_bFromParking Then
Dim sRefGroup As String = String.Empty
If EgtGetInfo(nMoveId, INFO_REFGROUP, sRefGroup) Then
' accendo il layer che contiene il contatore (spento in fase di Drag)
Dim nCounterLayer As Integer = EgtGetFirstNameInGroup(nMoveId, INFO_COUNTERLY)
EgtSetStatus(nCounterLayer, GDB_ST.ON_)
' aggiorno il layer che indica il numero di pezzi in parcheggio
CountPartInFamily(sRefGroup)
End If
End If
'---------------------- COUNTER PART ----------------------
End If
m_bFromParking = False
End If
End Sub
Private Sub VerifyRot()
' se comando Shift è stato attivato
If m_bKeyLeftShiftPressed Then
' Determino cosa verificare
Dim nMoveId = If(m_nIdToSel <> GDB_ID.NULL, m_nIdToSel, GDB_ID.SEL)
If Not EgtVerifyPart(nMoveId, m_bReducedCut) Then
Dim ptCen As Point3d
If Not EgtGetPartPartClusterCenterGlob(nMoveId, ptCen) Then Return
EgtRotate(nMoveId, ptCen, Vector3d.Z_AX(), -m_dAngTotal, GDB_RT.GLOB)
End If
End If
' resetto i valori
m_dStartAng = 0
m_dAngTotal = 0
m_bStartRot = False
End Sub
Friend Function SelectPart(nPartId As Integer, bNotifyVM As Boolean) As Boolean
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Determino se pezzo in tavola o in parcheggio
@@ -1186,7 +1700,7 @@ Public Class NestPageUC
If m_nPartPos <> PART_POS.IN_TABLE Then
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
' Se pezzo con rotazione libera
' Se pezzo con rotazione libera (in parcheggio)
If Not EgtExistsInfo(nId, INFO_PARTROT) Then
' Calcolo il centro di rotazione come centro del pezzo
Dim ptCen As Point3d
@@ -1222,25 +1736,30 @@ Public Class NestPageUC
Return True
' Altrimenti li ruoto tenendo conto delle collisioni
Else
' Verifico se ci sono dei pezzi bloccati in rotazione
Dim bLockedRot As Boolean = GetLockOnRotation(GDB_ID.SEL)
' Se tutti i pezzi possono ruotare
If Not bLockedRot Then
' Calcolo il centro di rotazione come centro del cluster
Dim ptCen As Point3d
If Not EgtGetPartPartClusterCenterGlob(GDB_ID.SEL, ptCen) Then Return False
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' Verifico rotazione complessiva
EgtRotate(GDB_ID.SEL, ptCen, Vector3d.Z_AX(), dAngRotDeg, GDB_RT.GLOB)
If EgtVerifyPart(GDB_ID.SEL, m_bReducedCut) Then Return True
' Provo rotazione parziale (dopo aver annullato la complessiva)
EgtRotate(GDB_ID.SEL, ptCen, Vector3d.Z_AX(), -dAngRotDeg, GDB_RT.GLOB)
Return EgtRotatePart(GDB_ID.SEL, m_bReducedCut, ptCen, dAngRotDeg)
Else
Return False
End If
Return RotatePartInsideBond(dAngRotDeg, GDB_ID.SEL)
End If
End Function
' verifica che la rotazione sia ammessa
Private Function RotatePartInsideBond(dAngRotDeg As Double, nIdMove As Integer) As Boolean
' Verifico se ci sono dei pezzi bloccati in rotazione
Dim bLockedRot As Boolean = GetLockOnRotation(nIdMove)
' Se tutti i pezzi possono ruotare
If Not bLockedRot Then
' Calcolo il centro di rotazione come centro del cluster
Dim ptCen As Point3d
If Not EgtGetPartPartClusterCenterGlob(nIdMove, ptCen) Then Return False
' Aggiorno regioni per nesting
UpdateNestRegions()
EnableReferenceRegion(False)
' Verifico rotazione complessiva
EgtRotate(nIdMove, ptCen, Vector3d.Z_AX(), dAngRotDeg, GDB_RT.GLOB)
If EgtVerifyPart(nIdMove, m_bReducedCut) Then Return True
' Provo rotazione parziale (dopo aver annullato la complessiva)
EgtRotate(nIdMove, ptCen, Vector3d.Z_AX(), -dAngRotDeg, GDB_RT.GLOB)
Return EgtRotatePart(nIdMove, m_bReducedCut, ptCen, dAngRotDeg)
Else
Return False
End If
End Function
@@ -1850,6 +2369,12 @@ Public Class NestPageUC
Private Sub DragRettangle_Click() Handles DragRettanleBtn.Click
If DragRettanleBtn.IsChecked Then
m_bIsCheckedDragRettangle = True
SplitCurveWJBtn.IsChecked = False
ResetSplitCurvWJParam()
m_bIsCheckedSplitCurveWJ = False
StartCurveWJBtn.IsChecked = False
ResetStartCurvWJParam()
m_bIsCheckedStartCurveWJ = False
Else
m_bIsCheckedDragRettangle = False
ResetDragRettangleParam()
@@ -1859,6 +2384,42 @@ Public Class NestPageUC
EgtDraw()
End Sub
Private Sub SplitCurveWJBtn_Click() Handles SplitCurveWJBtn.Click
If SplitCurveWJBtn.IsChecked Then
m_bIsCheckedSplitCurveWJ = True
DragRettanleBtn.IsChecked = False
m_bIsCheckedDragRettangle = False
StartCurveWJBtn.IsChecked = False
ResetStartCurvWJParam()
m_bIsCheckedStartCurveWJ = False
Else
m_bIsCheckedSplitCurveWJ = False
' resetto i parametri di selezione dei lati
ResetSplitCurvWJParam()
m_CurrProjPage.ClearMessage()
ShowParkedParts()
End If
EgtDraw()
End Sub
Private Sub StartCurveWJBtn_Click() Handles StartCurveWJBtn.Click
If StartCurveWJBtn.IsChecked Then
m_bIsCheckedStartCurveWJ = True
DragRettanleBtn.IsChecked = False
m_bIsCheckedDragRettangle = False
ResetSplitCurvWJParam()
SplitCurveWJBtn.IsChecked = False
m_bIsCheckedSplitCurveWJ = False
Else
m_bIsCheckedStartCurveWJ = False
' resetto i parametri di selezione dei lati
ResetStartCurvWJParam()
m_CurrProjPage.ClearMessage()
ShowParkedParts()
End If
EgtDraw()
End Sub
Private Sub StorePartBtn_Click(sender As Object, e As RoutedEventArgs) Handles StorePartBtn.Click
' creo la lista delle famiglie di pezzi presenti in parcheggio
GetFamilyGroupInPark()
@@ -1881,6 +2442,11 @@ Public Class NestPageUC
EgtZoom(ZM.ALL)
End Sub
' ripulisco la lista dei pezzi in parcheggio
Friend Sub ResetListOfGruopInPark()
m_ListOfGroupInPark.Clear()
End Sub
Friend Function StoreOnePart(nId As Integer, Optional ByVal bForced As Boolean = False) As Boolean
' Se pezzo in grezzo, metto in parcheggio (sempre possibile)
If bForced OrElse
@@ -1958,6 +2524,10 @@ Public Class NestPageUC
Dim dEraseArea As Double = 0
nId = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
'' elimino eventuali ponticelli associati al pezzo: nella vilualizzazione il percorso di lavorazioni non si muove! in attesa di gestione
'DeleteBridgeAssociated(nId)
' Resetto i ponticelli (per ora non sono in grado di muoverli assieme ai pezzi)
ResetAllBRidges()
' Recupero indice del successivo
Dim nNextId = EgtGetNextSelectedObj()
' Se abilitata cancellazione in ogni caso o pezzo non da Csv
@@ -2003,6 +2573,47 @@ Public Class NestPageUC
EgtZoom(ZM.ALL)
End Sub
Private Sub DeleteBridgeAssociated(nMyId As Integer)
' verifico se esistono dei ponticelli associati al pezzo indicato
' recuoero il gruppo di lavorazione corrente
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
' creo il gruppo per i ponticelli
Dim sNameGroup As String = BRIDGES
Dim nIdBridgesGroup As Integer = EgtGetFirstNameInGroup(nIdCurrMachGroup, sNameGroup)
If nIdBridgesGroup <> GDB_ID.NULL Then
' carico la prima entità del gruppo BRIDGES
Dim nIdBridgeLine As Integer = GDB_ID.NULL
nIdBridgeLine = EgtGetFirstNameInGroup(nIdBridgesGroup, BRIDGELINE)
' ciclo su tutte le entità
While nIdBridgeLine <> GDB_ID.NULL
Dim nNextBridgeLine As Integer = GDB_ID.NULL
Dim nIdPart As Integer = GDB_ID.NULL
If EgtGetInfo(nIdBridgeLine, "PartStart", nIdPart) Then
If nIdPart = nMyId Then
nNextBridgeLine = EgtGetNext(nIdBridgeLine)
' il ponticello deve essere eliminato
EgtErase(nIdBridgeLine)
nIdBridgeLine = nNextBridgeLine
' riparto dall'inizio del ciclo
Continue While
End If
End If
If EgtGetInfo(nIdBridgeLine, "PartEnd", nIdPart) Then
If nIdPart = nMyId Then
nNextBridgeLine = EgtGetNext(nIdBridgeLine)
' il ponticello deve essere eliminato
EgtErase(nIdBridgeLine)
nIdBridgeLine = nNextBridgeLine
' riparto dall'inizio del ciclo
Continue While
End If
End If
' il BridgeLine corrente non contiene riferimeti al pezzo da eliminare
nIdBridgeLine = EgtGetNext(nIdBridgeLine)
End While
End If
End Sub
Private Sub SelectAllBtn_Click(sender As Object, e As RoutedEventArgs) Handles SelectAllBtn.Click
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Numero dei pezzi in tavola
+16 -8
View File
@@ -98,14 +98,15 @@ Public Module SplitAuto
Mach.m_dStartFreeLen = FREELEN_INF + 1
Mach.m_dEndFreeLen = FREELEN_INF + 1
Dim nEntId, nSub As Integer
If EgtGetMachiningGeometry( 0, nEntId, nSub) Then
If EgtGetType( nEntId) = GDB_TY.CRV_ARC OrElse EgtGetType( nEntId) = GDB_TY.CRV_COMPO Then Mach.m_bIsLine = False
EgtGetInfo( nEntId, If( Not Mach.m_bInvert, INFO_PREVANG, INFO_NEXTANG), Mach.m_dPrevAng)
EgtGetInfo( nEntId, If( Not Mach.m_bInvert, INFO_NEXTANG, INFO_PREVANG), Mach.m_dNextAng)
EgtGetInfo( nEntId, If( Not Mach.m_bInvert, INFO_START_FREELEN, INFO_END_FREELEN), Mach.m_dStartFreeLen)
EgtGetInfo( nEntId, If( Not Mach.m_bInvert, INFO_END_FREELEN, INFO_START_FREELEN), Mach.m_dEndFreeLen)
Mach.m_bEnableInvert = GetEnableInvert( nEntId)
EgtMidVector( nEntId, GDB_ID.ROOT, Mach.m_vtDir)
If EgtGetMachiningGeometry(0, nEntId, nSub) Then
' EgtGetType( nEntId) = GDB_TY.CRV_ARC OrElse
If EgtGetType(nEntId) = GDB_TY.CRV_COMPO Then Mach.m_bIsLine = False
EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_PREVANG, INFO_NEXTANG), Mach.m_dPrevAng)
EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_NEXTANG, INFO_PREVANG), Mach.m_dNextAng)
EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_START_FREELEN, INFO_END_FREELEN), Mach.m_dStartFreeLen)
EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_END_FREELEN, INFO_START_FREELEN), Mach.m_dEndFreeLen)
Mach.m_bEnableInvert = GetEnableInvert(nEntId)
EgtMidVector(nEntId, GDB_ID.ROOT, Mach.m_vtDir)
If Mach.m_bInvert Then Mach.m_vtDir = -Mach.m_vtDir
Mach.m_nEntId = nEntId
End If
@@ -363,6 +364,13 @@ Public Module SplitAuto
vNewRaws.Add(nNewRawId)
nNewRawId = EgtGetNextRawPart(nNewRawId)
End While
Else
' verifico che nella fase precedente è stato definito come sfrido, allora lo riassegno
Dim nVal As Integer = 0
EgtGetInfo(nRawId, K_ISNEWSCRAPS, nVal)
If nVal = 1 Or nVal = 2 Or nVal = 3 Then
EgtSetInfo(nRaw1Id, K_ISNEWSCRAPS, "3")
End If
End If
' Assegno ai nuovi grezzi eventuale texture del grezzo originale
Dim nSolidId = EgtGetFirstNameInGroup(nRawId, NAME_RAW_SOLID)
+87 -58
View File
@@ -38,7 +38,7 @@
<Image Source="{DynamicResource NumericKeyboardArrowImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="NextBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource NumericKeyboardArrowImg}" Style="{StaticResource OmagCut_ButtonIcon}" RenderTransformOrigin="0.5,0.5">
<Image Source="{DynamicResource NumericKeyboardArrowImg}" Style="{StaticResource OmagCut_ButtonIcon}" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<RotateTransform Angle="180"/>
@@ -63,17 +63,27 @@
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ListBox Name="MachiningLsBx" Grid.Row="1" ItemTemplate="{DynamicResource NameIdLsBxItem}"
<ListBox Name="MachiningLsBx" Grid.Row="1"
SelectionMode="Extended">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_CurrProjSummeryTextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="TextDecorations" Value="Strikethrough"/>
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding bIsActive}" Value="True">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="2">
@@ -101,13 +111,13 @@
</Grid.ColumnDefinitions>
<Button Name="OnOffBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource ON_OFF-singolo-taglioImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
<Image Source="{DynamicResource ON_OFF-singolo-taglioImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOnBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-ONImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
<Image Source="{DynamicResource Tutti-ONImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOffBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-OFFImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
<Image Source="{DynamicResource Tutti-OFFImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
@@ -119,17 +129,36 @@
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="CutBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="CutStartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="CutEndBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="CutBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="CutStartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
<Button Name="CutEndBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-Allunga-AccorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<!-- solo per macchine con lavorazioni Waterjet -->
<ToggleButton Name="BridgesWJBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource PonticelliWJImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
<!--solo per macchine con lavorazioni Waterjet-->
<Button Name="QualityWJBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource QualityWJImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<!-- solo per macchine con lavorazioni Waterjet -->
<ToggleButton Name="BridgesDeleteWJBtn" Grid.Column="3" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource PonticelliDeleteWJImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</Grid>
</Grid>
@@ -152,41 +181,41 @@
<Button Name="OutCenStartBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-Centro-FuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
<Image Source="{DynamicResource Inizio-Centro-FuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="OutCenEndBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-Centro-FuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="ModifStartBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Modifica-InizioImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="ModifEndBtn" Grid.Column="3" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Modifica-FineImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="InvertBtn" Grid.Column="4" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource InvertiImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="PauseBtn" Grid.Column="5" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Pausa-ON_OFFImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOutStartBtn" Grid.Column="6" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-tutti-fuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllCenStartBtn" Grid.Column="7" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-tutti-centroImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOutEndBtn" Grid.Column="8" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-tutti-fuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllCenEndBtn" Grid.Column="9" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-tutti-centroImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllExtendBtn" Grid.Column="10" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-allungaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllReduceBtn" Grid.Column="11" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-accorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="OutCenEndBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-Centro-FuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="ModifStartBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Modifica-InizioImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="ModifEndBtn" Grid.Column="3" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Modifica-FineImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="InvertBtn" Grid.Column="4" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource InvertiImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="PauseBtn" Grid.Column="5" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Pausa-ON_OFFImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOutStartBtn" Grid.Column="6" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-tutti-fuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllCenStartBtn" Grid.Column="7" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inizio-tutti-centroImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllOutEndBtn" Grid.Column="8" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-tutti-fuoriImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllCenEndBtn" Grid.Column="9" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Fine-tutti-centroImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllExtendBtn" Grid.Column="10" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-allungaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<Button Name="AllReduceBtn" Grid.Column="11" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Tutti-accorciaImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
+602 -105
View File
@@ -7,6 +7,7 @@ Public Class SplitPageUC
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Tipo movimento dei grezzi (manuale o con testa ventosa)
@@ -26,6 +27,19 @@ 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_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)
@@ -43,6 +57,8 @@ Public Class SplitPageUC
Private m_bDragging As Boolean = False
' Selected cut
Private m_nSelected As Integer = GDB_ID.NULL
' Abilita la mofica Inizio fine per i tagli interni sugli angoli
Private m_StartEndModifyOnIntCorner As Boolean = False
Private Sub SplitPageUC_Initialized(sender As Object, e As EventArgs)
PrevBtn.IsEnabled = False
@@ -70,6 +86,8 @@ 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"
BridgesDeleteWJBtn.ToolTip = "Remove bridges"
End Sub
Private Sub SplitPageUC_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded
@@ -90,6 +108,8 @@ Public Class SplitPageUC
m_bEnableOnAuxTab = Not m_bByHand AndAlso
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.MOVE_PARTS) AndAlso
EgtGetTableId(AUX_TAB) <> GDB_ID.NULL
' verifico se è abilitata la possibiltà di allungare i lati interni
m_StartEndModifyOnIntCorner = (GetPrivateProfileInt(S_NEST, K_STARTENDMODIFYONINTCORNER, 0, m_MainWindow.GetMachIniFile()) <> 0)
' Nascondo eventuali pezzi in parcheggio
HideParkedParts()
' Nascondo eventuale contorno da foto
@@ -195,6 +215,243 @@ 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,
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) AndAlso VerifySideIsAcceptable(nIdMy) 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)
' se non esiste almeno 1 Preview di tipo WaterJet
If IsWaterJetting(nIdMy) Then
' NON RECUPERO LA PREVIEW DELLA LAVORAZIONE m_nIdSelectedWaterJet
m_nIdSelectedSideWJ = nIdMy
' 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
EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptEndBridge)
EgtModifyCurveEndPoint(m_nIdBridge, m_ptEndBridge, GDB_RT.GLOB)
If VerifyInterference(m_nIdBridge) Then
m_CurrProjPage.ClearMessage()
EgtSetInfo(m_nIdBridge, "PartStart", m_nIdSelectedPartWJ_Srt)
EgtSetInfo(m_nIdBridge, "EntStart", m_nIdSelectedSideWJ_Srt)
EgtSetInfo(m_nIdBridge, "PartEnd", m_nIdSelectedPartWJ_End)
EgtSetInfo(m_nIdBridge, "EntEnd", m_nIdSelectedSideWJ_End)
EgtSetInfo(m_nIdBridge, "Ph", EgtGetCurrPhase())
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
Else
' attendo la selezione di un punto valido
m_nIdSelectedSideWJ = GDB_ID.NULL
nIdParentPart = GDB_ID.NULL
m_CurrProjPage.ClearMessage()
m_CurrProjPage.SetWarningMessage("Bridge intersects part")
Return
End If
End If
' 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
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
Dim sSelName As String = String.Empty
' gruppo di appartenenza
Dim nIdParent As Integer = EgtGetParent(nIdMy)
' recupero il nome del gruppo di appartenenza
EgtGetName(nIdParent, sGroupName)
' recupero il nome dell'oggetto selezionato
EgtGetName(nIdMy, sSelName)
If sGroupName.Contains(BRIDGES) AndAlso sSelName.Contains(BRIDGELINE) Then
EgtErase(nIdMy)
EgtDraw()
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
Return
End If
nIdMy = EgtGetNextObjInSelWin()
End While
End Sub
Private Sub OnMyMouseMoveSceneBridges(ptCurr As Point3d)
ptCurr.z = m_ptSrtBridge.z
' rappresento il egmento
If m_nIdBridge = GDB_ID.NULL Then
m_nIdBridge = EgtCreateLine(m_nIdBridgesGroup, m_ptSrtBridge, ptCurr, GDB_RT.GLOB)
' assegno un nome alla linea
EgtSetName(m_nIdBridge, BRIDGELINE)
End If
EgtModifyCurveEndPoint(m_nIdBridge, ptCurr, GDB_RT.GLOB)
EgtDraw()
End Sub
Private Function VerifyInterference(nIdBridge As Integer) As Boolean
' 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")
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) <> CREGC.OUT Then
EgtExtendCurveStartByLen(nIdBridge, 10 * EPS_SMALL)
Return False
End If
Exit While
End If
End While
nIdPart = EgtGetNextPartInRawPart(nIdPart)
End While
Return True
End Function
Private Function VerifySideIsAcceptable(nMyId As Integer) As Boolean
Dim dVal As Double = 0
' verifico che l'entità selezionata non contenga questi parametri
If EgtGetInfo(nMyId, INFO_SIDE_ANGLE2, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
If EgtGetInfo(nMyId, INFO_SIDE_ANGLE, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
If EgtGetInfo(nMyId, INFO_ORIG_SIDE_ANGLE, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
' altrimenti l'entità è accettabile
Return True
End Function
' verifico che il lato selezionato appartenga ad una lavorazione di tipo Waterjet
Private Function IsWaterJetting(nMyId As Integer) As Boolean
' verifico che sul lato indicato sia impostato un taglio di tipo WaterJet
Dim nMchId As Integer = GDB_ID.NULL
For nInd As Integer = 0 To m_MachiningList.Count() - 1
nMchId = m_MachiningList(nInd).m_nId
Dim nMachiningType As Integer = EgtGetOperationType(m_MachiningList(nInd).m_nId)
If nMachiningType = MCH_MY.WATERJETTING Then
EgtSetCurrMachining(nMchId)
Dim nIndex As Integer = 0
Dim nIdSide As Integer = GDB_ID.NULL
Dim nSub As Integer = GDB_ID.NULL
While EgtGetMachiningGeometry(nIndex, nIdSide, nSub)
If nIdSide = nMyId Then
Return True
End If
nIndex += 1
End While
End If
Next
Return False
End Function
Private Sub RefreshMachList()
For nI As Integer = 0 To m_MachiningList.Count() - 1
' cancello tutti gli indici di lavorazione presenti nel disegno
Dim nNbrId As Integer = GDB_ID.NULL
EgtErase(m_MachiningList(nI).m_nNbrId)
EgtRemoveInfo(m_MachiningList(nI).m_nId, "NbrId")
Next
' Preparo la lista delle lavorazioni
CalculateSplitMachList(m_nCurrPhase, m_MachiningList)
' Aggiorno visualizzazione delle lavorazioni
For nI As Integer = 0 To m_MachiningList.Count() - 1
' sistemo colore
ColorMachining(m_MachiningList(nI))
' assegno nuova numerazione
NumberDirectionMachining(nI)
' conto il numero di tipi di lavorazioni
CountMachiningType(m_MachiningList(nI), m_nCountSawing, m_nCountWaterjetting, m_nCountOtherMachining)
Next
' aggiorno grafica
ShowMachiningList()
' aggiorno la visualizzazione
EgtDraw()
End Sub
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
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
#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
@@ -203,6 +460,31 @@ 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)
' aggiorno la visualizzazione delle lavorazioni e la lista
RefreshMachList()
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
' eliminazione dei ponticelli
If BridgesDeleteWJBtn.IsChecked Then
OnMyMouseDownSceneBridgesDelete(sender, e)
' aggiorno la visualizzazione delle lavorazioni e la lista
RefreshMachList()
Return
End If
' Reset drag
m_nDragInd = -1
m_nDragType = 0
@@ -287,13 +569,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 +933,99 @@ Public Class SplitPageUC
EnableButtons()
End Sub
' ERRORE: questo evento non è eseguito!
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
' 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 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 Not BridgesDeleteWJBtn.IsChecked Then
DeselectWJBridgesPart()
End If
End Sub
Private Sub QualityWJBtn_Click(Sender As Object, e As RoutedEventArgs) Handles QualityWJBtn.Click
Dim bFirstWJ As Boolean = True
Dim sQuality As String = String.Empty
' Recupero la lavorazione corrente
If m_CurrFirstInd = -1 Then Return
Dim bGenModif As Boolean = False
For Index As Integer = m_CurrFirstInd To m_CurrLastInd
If Not m_ItemList(Index).IsSelected Then
Continue For
End If
Dim nI As Integer = m_ItemList(Index).Ind
Dim nOperId As Integer = m_MachiningList(nI).m_nId
Dim nMachiningType As Integer = EgtGetOperationType(nOperId)
' se altrimenti getto d'acqua
If nMachiningType = MCH_MY.WATERJETTING Then
' ------------------ INIZIO PREPARAZIONE TASTIERINO VIRTUALE ------------------
If bFirstWJ Then
EgtSetCurrMachining(nOperId)
' Dialogo richiesta valore
Dim ValWnd As New EditValueWD(m_MainWindow, m_MainWindow.m_CurrentMachine.Qualities, "Quality")
If EgtGetInfo(nOperId, "Quality", sQuality) Then
ValWnd.SetItemComboBox(sQuality)
Else
ValWnd.SetItemComboBox(m_MainWindow.m_CurrentMachine.sCurrWaterJettingQuality)
End If
If Not ValWnd.ShowDialog() Then Return
sQuality = ValWnd.GetItemComboBox
' comunico che ho letto il primo dato
bFirstWJ = False
End If
' ------------------ INIZIO PREPARAZIONE TASTIERINO VIRTUALE ------------------
' Modifica della lavorazione
EgtSetCurrMachining(nOperId)
EgtSetInfo(nOperId, "Quality", sQuality)
UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
' verifico interferenza
bGenModif = True
End If
Next
' Se modificato qualcosa
If bGenModif Then
EgtDraw()
m_bModified = True
End If
End Sub
Private Function AdjustBothCuts(nI As Integer,
Optional bAllForced As Boolean = False,
Optional bAccForced As Boolean = False) As Boolean
@@ -995,6 +1380,7 @@ Public Class SplitPageUC
End Sub
Private Sub ModifStartBtn_Click(sender As Object, e As RoutedEventArgs) Handles ModifStartBtn.Click
Dim bLen As Boolean = True
' abilito la finestra per inserire i valori solo per il primo elemento della lista (di default tutti gli altri oggetti assumono lo stesso valore)
Dim bFirstInd As Boolean = True
Dim bFirstMill As Boolean = True
@@ -1030,10 +1416,10 @@ Public Class SplitPageUC
If bFirstInd Then
' Dialogo richiesta valore
Dim ValWnd As New EditValueWD(m_MainWindow, "SAW: " & EgtMsg(MSG_SPLITPAGEUC + 35)) ' Allungamento
ValWnd.SetVal(dOrigUsal)
ValWnd.SetVal(dOrigUsal, bLen)
If Not ValWnd.ShowDialog() Then Return
' carico il valore letto dal testierino virtuale
dUsal = ValWnd.GetVal()
dUsal = ValWnd.GetVal(bLen)
' comunico che ho letto il primo dato
bFirstInd = False
End If
@@ -1042,21 +1428,24 @@ Public Class SplitPageUC
Do
' Se c'è limite alla lunghezza libera
If m_MachiningList(nI).m_dStartFreeLen < FREELEN_INF Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, m_MainWindow.GetMachIniFile()), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUsal = Math.Min(dUsal, m_MachiningList(nI).m_dStartFreeLen - dDT - dCornerSafety)
' se abilitati i controlli sugli allungamenti dei lati interni
If Not m_StartEndModifyOnIntCorner Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, m_MainWindow.GetMachIniFile()), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUsal = Math.Min(dUsal, m_MachiningList(nI).m_dStartFreeLen - dDT - dCornerSafety)
End If
End If
' Modifica della lavorazione
EgtSetCurrMachining(nOperId)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.STARTADDLEN, dAddLen)
' verifico che non sia sull'angolo interno (altrimenti vieto la modifica)
If dAddLen - dOrigUsal < -10 * EPS_SMALL Then
If Not m_StartEndModifyOnIntCorner And (dAddLen - dOrigUsal < -10 * EPS_SMALL) Then
Return
End If
EgtSetMachiningParam(MCH_MP.STARTADDLEN, dAddLen + dUsal - dOrigUsal)
@@ -1085,10 +1474,10 @@ Public Class SplitPageUC
' ------------------ INIZIO PREPARAZIONE TASTIERINO VIRTUALE ------------------
' Dialogo richiesta valore
Dim ValWnd As New EditValueWD(m_MainWindow, "MILL: " & EgtMsg(MSG_SPLITPAGEUC + 35)) ' Allungamento
ValWnd.SetVal(dOrigUsal)
ValWnd.SetVal(dOrigUsal, bLen)
If Not ValWnd.ShowDialog() Then Return
' carico il valore letto dal testierino virtuale
dUsal = ValWnd.GetVal()
dUsal = ValWnd.GetVal(bLen)
' comunico che ho letto il primo dato
bFirstMill = False
End If
@@ -1166,6 +1555,7 @@ Public Class SplitPageUC
End Sub
Private Sub ModifEndBtn_Click(sender As Object, e As RoutedEventArgs) Handles ModifEndBtn.Click
Dim bLen As Boolean = True
' abilito la finestra per inserire i valori solo per il primo elemento della lista (di default tutti gli altri oggetti assumono lo stesso valore)
Dim bFirstInd As Boolean = True
Dim bFirstMill As Boolean = True
@@ -1200,9 +1590,9 @@ Public Class SplitPageUC
If bFirstInd Then
' Dialogo richiesta valore
Dim ValWnd As New EditValueWD(m_MainWindow, "SAW: " & EgtMsg(MSG_SPLITPAGEUC + 35)) ' Allungamento
ValWnd.SetVal(dOrigUeal)
ValWnd.SetVal(dOrigUeal, bLen)
If Not ValWnd.ShowDialog() Then Return
dUeal = ValWnd.GetVal()
dUeal = ValWnd.GetVal(bLen)
bFirstInd = False
End If
' ------------------ FINE PREPARAZIONE TASTIERINO VIRTUALE ------------------
@@ -1210,21 +1600,24 @@ Public Class SplitPageUC
Do
' Se c'è limite alla lunghezza libera
If m_MachiningList(nI).m_dEndFreeLen < FREELEN_INF Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, m_MainWindow.GetMachIniFile()), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUeal = Math.Min(dUeal, m_MachiningList(nI).m_dEndFreeLen - dDT - dCornerSafety)
' se abilitati i controlli sugli allungamenti dei lati interni
If Not m_StartEndModifyOnIntCorner Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, m_MainWindow.GetMachIniFile()), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUeal = Math.Min(dUeal, m_MachiningList(nI).m_dEndFreeLen - dDT - dCornerSafety)
End If
End If
' Modifica della lavorazione
EgtSetCurrMachining(nOperId)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.ENDADDLEN, dAddLen)
If dAddLen - dOrigUeal < -10 * EPS_SMALL Then
If Not m_StartEndModifyOnIntCorner And (dAddLen - dOrigUeal < -10 * EPS_SMALL) Then
Return
End If
EgtSetMachiningParam(MCH_MP.ENDADDLEN, dAddLen + dUeal - dOrigUeal)
@@ -1252,9 +1645,9 @@ Public Class SplitPageUC
If bFirstMill Then
' Dialogo richiesta valore
Dim ValWnd As New EditValueWD(m_MainWindow, "MILL: " & EgtMsg(MSG_SPLITPAGEUC + 35)) ' Allungamento
ValWnd.SetVal(dOrigUeal)
ValWnd.SetVal(dOrigUeal, bLen)
If Not ValWnd.ShowDialog() Then Return
dUeal = ValWnd.GetVal()
dUeal = ValWnd.GetVal(bLen)
bFirstMill = False
End If
' ------------------ FINE PREPARAZIONE TASTIERINO VIRTUALE ------------------
@@ -1396,6 +1789,16 @@ Public Class SplitPageUC
End Sub
Private Sub NextBtn_Click(sender As Object, e As RoutedEventArgs) Handles NextBtn.Click
If m_bShow Then
Dim CurrDisposition As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
' recupero l'operazione successiva
Dim NextDisposition As Integer = EgtGetNextOperation(CurrDisposition)
If Not IsNothing(m_MainWindow.m_CadCutPageUC.m_MoveRawPartPage) Then
' verifico che l'operazione sia una disposizione, altrimenti cerco
NextDisposition = m_MainWindow.m_CadCutPageUC.m_MoveRawPartPage.GetNextDisposition(NextDisposition)
m_bOnAuxTab = m_MainWindow.m_CadCutPageUC.m_MoveRawPartPage.IsDispUnloadOnAuxTab(NextDisposition)
End If
End If
m_bToNext = True
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Remove(m_MainWindow.m_CadCutPageUC.m_SplitPage)
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Add(m_MainWindow.m_CadCutPageUC.m_MoveRawPartPage)
@@ -1467,8 +1870,37 @@ Public Class SplitPageUC
' assegno numerazione
NumberDirectionMachining(nI)
Next
' -------------------- Recupero le lavorazioni indicate come attive --------------------
Dim ActiveMachLst As New List(Of Integer)
For Each ItemSplitMach As NameIdLsBxItem In m_ItemList
ActiveMachLst.Add(ItemSplitMach.Ind)
Next
' -------------------- Recupero le lavorazioni indicate come attive --------------------
' Preparo la lista degli Item
ShowMachiningList()
' -------------------- Riattivo le lavorazioni precedenti --------------------
For Each Item As SplitMach In m_MachiningList
EgtSetInfo(Item.m_nId, INFO_MCH_USER_OFF, True)
Next
For nIndex As Integer = 0 To ActiveMachLst.Count - 1
For Each ItemSplitMach As NameIdLsBxItem In m_ItemList
If ItemSplitMach.Ind = ActiveMachLst(nIndex) Then
EgtRemoveInfo(m_MachiningList(ItemSplitMach.Ind).m_nId, INFO_MCH_USER_OFF)
m_MachiningList(ItemSplitMach.Ind).m_bEnabled = True
ItemSplitMach.bIsActive = True
' sistemo colore
ColorMachining(m_MachiningList(ItemSplitMach.Ind))
Exit For
End If
Next
Next
' -------------------- Riattivo le lavorazioni precedenti --------------------
' Aggiorno visualizzazione
EgtDraw()
' Aggiono abilitazione bottoni
@@ -1483,6 +1915,10 @@ Public Class SplitPageUC
End Sub
Friend Sub ExitSplit(Optional bTrueExit As Boolean = True)
DeselectWJBridgesPart()
BridgesWJBtn.IsChecked = False
BridgesDeleteWJBtn.IsChecked = False
' Rimuovo evidenziazione e numeri
RemoveMarkAndNumbers()
' Ripristino colori lavorazioni
@@ -1572,7 +2008,7 @@ Public Class SplitPageUC
Dim MyCuts As New List(Of Integer)
For nI As Integer = 0 To m_MachiningList.Count() - 1
If m_MachiningList(nI).m_bEnabled And
( m_MachiningList(nI).m_sLay = NAME_OUTLOOP Or m_MachiningList(nI).m_sLay = NAME_INLOOP) Then
(m_MachiningList(nI).m_sLay = NAME_OUTLOOP Or m_MachiningList(nI).m_sLay = NAME_INLOOP) Then
MyCuts.Add(m_MachiningList(nI).m_nId)
End If
Next
@@ -1584,7 +2020,7 @@ Public Class SplitPageUC
PrevBtn.IsEnabled = (m_nCurrPhase > 1)
' Per bottone NEXT
' Se abilitato manipolatore e non è con waterjet
If ( m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.MAN_MANIP) Or
If (m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.MAN_MANIP) Or
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.AUTO_MANIP)) And
Not m_MainWindow.m_CurrentMachine.bWaterJetting Then
' Se in modifica
@@ -1594,7 +2030,7 @@ Public Class SplitPageUC
m_bOnAuxTab = False
' Ci deve essere almeno 1 taglio disabilitato e 1 e 1 solo passante
NextBtn.IsEnabled = (GetDisabledCutsCount() > 0 And GetSplitCutsCount() = 1)
' Altrimenti
' Altrimenti
Else
' movimento standard sulla tavola (almeno un taglio disabilitato)
Dim bStdTab As Boolean = (GetDisabledCutsCount() > 0)
@@ -1605,7 +2041,7 @@ Public Class SplitPageUC
' Deve essere permesso almeno un tipo di movimento
NextBtn.IsEnabled = bStdTab Or m_bOnAuxTab Or bFinalMoveTab
End If
' altrimenti sto solo visualizzando
' altrimenti sto solo visualizzando
Else
' movimento su tavola di scarico
m_bOnAuxTab = (m_nCurrPhase = EgtGetPhaseCount() - 1 And m_bEnableOnAuxTab And EgtGetOperationType(EgtGetLastOperation()) = MCH_OY.DISP)
@@ -1644,6 +2080,9 @@ Public Class SplitPageUC
ModifEndBtn.IsEnabled = Not m_bShow
InvertBtn.IsEnabled = Not m_bShow
PauseBtn.IsEnabled = Not m_bShow And m_MainWindow.m_CurrentMachine.bEnablePause
BridgesWJBtn.IsEnabled = Not m_bShow
BridgesDeleteWJBtn.IsEnabled = Not m_bShow
QualityWJBtn.IsEnabled = Not m_bShow
' nascondo i comandi che non devono essere visualizzati in funzione delle lavorazioni attive
If m_nCountSawing = 0 And (m_nCountWaterjetting > 0 Or m_nCountOtherMachining) Then
@@ -1725,6 +2164,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
@@ -1755,6 +2195,24 @@ 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
QualityWJBtn.Visibility = Visibility.Visible
Else
BridgesWJBtn.Visibility = Visibility.Hidden
BridgesDeleteWJBtn.Visibility = Visibility.Hidden
QualityWJBtn.Visibility = Visibility.Hidden
End If
Else
BridgesWJBtn.Visibility = Visibility.Hidden
BridgesDeleteWJBtn.Visibility = Visibility.Hidden
QualityWJBtn.Visibility = Visibility.Hidden
End If
End Sub
Private Function ModifyOtherLeadIn(nI As Integer, nLiOthType As Integer) As Boolean
@@ -1775,7 +2233,7 @@ Public Class SplitPageUC
Return True
End Function
Private Sub NumberDirectionMachining( nI As Integer, Optional bNumber As Boolean = True)
Private Sub NumberDirectionMachining(nI As Integer, Optional bNumber As Boolean = True)
EgtDisableModified()
' Determino se seconda lavorazione
Dim sName As String = String.Empty
@@ -1799,29 +2257,38 @@ Public Class SplitPageUC
vtXY.Normalize()
Dim ptCen As Point3d = Point3d.Media(ptMin, ptMax) + vtXY * If(Not b2ndLav, -0.8, 0.8) * dHtxt
ptCen.z = ptMax.z + 1
' ricavo la posizione del punto (se waterjet separata)
If m_MachiningList(nI).m_nType = MCH_OY.WATERJETTING Or m_MachiningList(nI).m_nType = MCH_OY.MILLING Then
Dim ptMid As Point3d
Dim vVers As Vector3d
MidPointOfCurve(m_MachiningList(nI).m_nId, ptMid, vVers)
ptCen = ptMid ' + vVers * If(Not b2ndLav, -0.8, 0.8) * dHtxt
End If
If bNumber Then
Dim nNbrId As Integer = EgtCreateTextAdv( m_nNbrGrpId, ptCen, 0, (nI + 1).ToString(), "",
Dim nNbrId As Integer = EgtCreateTextAdv(m_nNbrGrpId, ptCen, 0, (nI + 1).ToString(), "",
300, False, dHtxt, dRat, 0, INS_POS.MC)
m_MachiningList(nI).m_nNbrId = nNbrId
' Aggiungo a numero info con identificativo della lavorazione e viceversa
EgtSetInfo( nNbrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo( m_MachiningList(nI).m_nId, "NbrId", nNbrId)
EgtSetInfo(nNbrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo(m_MachiningList(nI).m_nId, "NbrId", nNbrId)
End If
' Se taglio con lama, metto la direzione accanto al numero
If m_MachiningList(nI).m_nType = MCH_OY.SAWING Then
Dim ptStart As New Point3d( ptCen + m_MachiningList(nI).m_vtDir * dHtxt)
Dim vtDir As New Vector3d( m_MachiningList(nI).m_vtDir)
Dim bTwin As Boolean = ( Not m_MachiningList(nI).m_bEnableInvert OrElse Math.Abs( m_MachiningList(nI).m_dSideAng) > 0.1)
Dim nArrId As Integer = AddMachiningDirection( ptStart, vtDir, dHtxt, bTwin)
Dim ptStart As New Point3d(ptCen + m_MachiningList(nI).m_vtDir * dHtxt)
Dim vtDir As New Vector3d(m_MachiningList(nI).m_vtDir)
Dim bTwin As Boolean = (Not m_MachiningList(nI).m_bEnableInvert OrElse Math.Abs(m_MachiningList(nI).m_dSideAng) > 0.1)
Dim nArrId As Integer = AddMachiningDirection(ptStart, vtDir, dHtxt, bTwin)
m_MachiningList(nI).m_nArrId = nArrId
' Aggiungo a freccia info con identificativo della lavorazione e viceversa
EgtSetInfo( nArrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo( m_MachiningList(nI).m_nId, "ArrId", nArrId)
EgtSetInfo(nArrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo(m_MachiningList(nI).m_nId, "ArrId", nArrId)
Else
m_MachiningList(nI).m_nArrId = GDB_ID.NULL
End If
' Assegno colore a numero e freccia
ColorNumberArrow( nI)
ColorNumberArrow(nI)
EgtEnableModified()
End Sub
@@ -1853,18 +2320,48 @@ Public Class SplitPageUC
Return EgtGetBBoxGlob(nPvId, GDB_BB.STANDARD, ptMin, ptMax)
End Function
Private Function AddMachiningDirection( ptStart As Point3d, vtDir As Vector3d, dLen As Double, bTwin As Boolean) As Integer
Dim dArrX As Double = dLen * Math.Cos( 30 * Math.PI / 180)
Dim dArrY As Double = dLen * Math.Sin( 30 * Math.PI / 180)
Dim nTmpId As Integer = EgtCreateLine( m_nNbrGrpId, Point3d.ORIG() + dArrY * Vector3d.Y_AX(), Point3d.ORIG() + dArrX * Vector3d.X_AX())
Dim nCrvId As Integer = EgtCreateCurveCompo( m_nNbrGrpId, nTmpId, True)
EgtAddCurveCompoLine( nCrvId, Point3d.ORIG() - dArrY * Vector3d.Y_AX())
Private Function MidPointOfCurve(nOperId As Integer, ByRef ptMid As Point3d, ByRef vVers As Vector3d) As Boolean
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
' creo un layer ausiliario per creare la curva composita
Dim AuxLayer As Integer = EgtCreateGroup(nPvId)
' imposto la lavorazione corrente
EgtSetCurrMachining(nOperId)
' recupero tutte le entità della lavorazione corrente
Dim nInd As Integer = 0
Dim nIdCurr As Integer
Dim nSub As Integer
Dim CurveCompoList As New List(Of Integer)
While EgtGetMachiningGeometry(nInd, nIdCurr, nSub)
CurveCompoList.Add(nIdCurr)
nInd += 1
End While
Dim PtNearStart As Point3d
Dim nIdCutPath As Integer = EgtCreateCurveCompoByChain(AuxLayer, CurveCompoList.ToArray, PtNearStart, False)
Dim dLength As Double = 0
EgtCurveLength(nIdCutPath, dLength)
Dim dParam As Double = 0
EgtCurveParamAtLength(nIdCutPath, dLength / 2, dParam)
EgtAtParamPoint(nIdCutPath, dParam, GDB_RT.GLOB, ptMid)
EgtAtParamVector(nIdCutPath, dParam, -1, vVers)
vVers.Normalize()
vVers.Rotate(Vector3d.Z_AX, 90)
EgtErase(AuxLayer)
Return True
End Function
Private Function AddMachiningDirection(ptStart As Point3d, vtDir As Vector3d, dLen As Double, bTwin As Boolean) As Integer
Dim dArrX As Double = dLen * Math.Cos(30 * Math.PI / 180)
Dim dArrY As Double = dLen * Math.Sin(30 * Math.PI / 180)
Dim nTmpId As Integer = EgtCreateLine(m_nNbrGrpId, Point3d.ORIG() + dArrY * Vector3d.Y_AX(), Point3d.ORIG() + dArrX * Vector3d.X_AX())
Dim nCrvId As Integer = EgtCreateCurveCompo(m_nNbrGrpId, nTmpId, True)
EgtAddCurveCompoLine(nCrvId, Point3d.ORIG() - dArrY * Vector3d.Y_AX())
If bTwin Then
EgtAddCurveCompoLine( nCrvId, Point3d.ORIG() + 2 * dArrX * Vector3d.X_AX())
EgtCloseCurveCompo( nCrvId)
EgtAddCurveCompoLine(nCrvId, Point3d.ORIG() + 2 * dArrX * Vector3d.X_AX())
EgtCloseCurveCompo(nCrvId)
End If
Dim frLoc As New Frame3d( ptStart, vtDir, Vector3d.Z_AX() ^ vtDir, Vector3d.Z_AX())
EgtTransform( nCrvId, frLoc)
Dim frLoc As New Frame3d(ptStart, vtDir, Vector3d.Z_AX() ^ vtDir, Vector3d.Z_AX())
EgtTransform(nCrvId, frLoc)
Return nCrvId
End Function
@@ -1895,35 +2392,35 @@ Public Class SplitPageUC
Private Sub MarkNumberArrow(nI As Integer, bMark As Boolean)
If nI < 0 Then Return
Dim nNbrId As Integer = m_MachiningList(nI).m_nNbrId
Dim nArrId As Integer = m_MachiningList( nI).m_nArrId
Dim nArrId As Integer = m_MachiningList(nI).m_nArrId
If bMark Then
EgtSetMark( nNbrId)
EgtSetMark( nArrId)
EgtSetMark(nNbrId)
EgtSetMark(nArrId)
Else
EgtResetMark( nNbrId)
EgtResetMark( nArrId)
EgtResetMark(nNbrId)
EgtResetMark(nArrId)
End If
End Sub
Private Sub ColorNumberArrow( nI As Integer)
Private Sub ColorNumberArrow(nI As Integer)
If nI < 0 Then Return
Dim nNbrId As Integer = m_MachiningList( nI).m_nNbrId
Dim nArrId As Integer = m_MachiningList( nI).m_nArrId
If m_MachiningList( nI).m_bEnabled Then
If m_MachiningList( nI).m_nInterf = FMI_TYPE.NONE Then
EgtSetColor( nNbrId, COL_MCH_FREE)
EgtSetColor( nArrId, COL_MCH_FREE)
Dim nNbrId As Integer = m_MachiningList(nI).m_nNbrId
Dim nArrId As Integer = m_MachiningList(nI).m_nArrId
If m_MachiningList(nI).m_bEnabled Then
If m_MachiningList(nI).m_nInterf = FMI_TYPE.NONE Then
EgtSetColor(nNbrId, COL_MCH_FREE)
EgtSetColor(nArrId, COL_MCH_FREE)
Else
EgtSetColor( nNbrId, COL_MCH_INTERF)
EgtSetColor( nArrId, COL_MCH_INTERF)
EgtSetColor(nNbrId, COL_MCH_INTERF)
EgtSetColor(nArrId, COL_MCH_INTERF)
End If
Else
If m_MachiningList( nI).m_nInterf = FMI_TYPE.NONE Then
EgtResetColor( nNbrId)
EgtResetColor( nArrId)
ElseIf Not m_MachiningList( nI).m_bEnabled Then
EgtSetColor( nNbrId, COL_MCH_DIS_INTERF)
EgtSetColor( nArrId, COL_MCH_DIS_INTERF)
If m_MachiningList(nI).m_nInterf = FMI_TYPE.NONE Then
EgtResetColor(nNbrId)
EgtResetColor(nArrId)
ElseIf Not m_MachiningList(nI).m_bEnabled Then
EgtSetColor(nNbrId, COL_MCH_DIS_INTERF)
EgtSetColor(nArrId, COL_MCH_DIS_INTERF)
End If
End If
End Sub
@@ -1949,38 +2446,38 @@ Public Class SplitPageUC
EgtEnableModified()
End Sub
Private Sub SwapStartEndData( nI As Integer)
Private Sub SwapStartEndData(nI As Integer)
' Swap angoli precedente e successivo
Dim dAng As Double = m_MachiningList( nI).m_dPrevAng
m_MachiningList( nI).m_dPrevAng = m_MachiningList( nI).m_dNextAng
m_MachiningList( nI).m_dNextAng = dAng
Dim dAng As Double = m_MachiningList(nI).m_dPrevAng
m_MachiningList(nI).m_dPrevAng = m_MachiningList(nI).m_dNextAng
m_MachiningList(nI).m_dNextAng = dAng
' Swap lunghezze libere
Dim dFreeLen As Double = m_MachiningList( nI).m_dStartFreeLen
m_MachiningList( nI).m_dStartFreeLen = m_MachiningList( nI).m_dEndFreeLen
m_MachiningList( nI).m_dEndFreeLen = dFreeLen
Dim dFreeLen As Double = m_MachiningList(nI).m_dStartFreeLen
m_MachiningList(nI).m_dStartFreeLen = m_MachiningList(nI).m_dEndFreeLen
m_MachiningList(nI).m_dEndFreeLen = dFreeLen
' Swap stato di allungamento
Dim bAll As Boolean = m_MachiningList( nI).m_bStartAll
m_MachiningList( nI).m_bStartAll = m_MachiningList( nI).m_bEndAll
m_MachiningList( nI).m_bEndAll = bAll
Dim bAll As Boolean = m_MachiningList(nI).m_bStartAll
m_MachiningList(nI).m_bStartAll = m_MachiningList(nI).m_bEndAll
m_MachiningList(nI).m_bEndAll = bAll
' Swap possibilità di allungamento
Dim bCanAll As Boolean = m_MachiningList( nI).m_bCanStartAll
m_MachiningList( nI).m_bCanStartAll = m_MachiningList( nI).m_bCanEndAll
m_MachiningList( nI).m_bCanEndAll = bCanAll
Dim bCanAll As Boolean = m_MachiningList(nI).m_bCanStartAll
m_MachiningList(nI).m_bCanStartAll = m_MachiningList(nI).m_bCanEndAll
m_MachiningList(nI).m_bCanEndAll = bCanAll
' Swap stato interferenza
if ( m_MachiningList( nI).m_nInterf And FMI_TYPE.LI) <> 0 And ( m_MachiningList( nI).m_nInterf And FMI_TYPE.LO) = 0 Then
m_MachiningList( nI).m_nInterf -= FMI_TYPE.LI
m_MachiningList( nI).m_nInterf += FMI_TYPE.LO
ElseIf ( m_MachiningList( nI).m_nInterf And FMI_TYPE.LI) = 0 And ( m_MachiningList( nI).m_nInterf And FMI_TYPE.LO) <> 0 Then
m_MachiningList( nI).m_nInterf += FMI_TYPE.LI
m_MachiningList( nI).m_nInterf -= FMI_TYPE.LO
If (m_MachiningList(nI).m_nInterf And FMI_TYPE.LI) <> 0 And (m_MachiningList(nI).m_nInterf And FMI_TYPE.LO) = 0 Then
m_MachiningList(nI).m_nInterf -= FMI_TYPE.LI
m_MachiningList(nI).m_nInterf += FMI_TYPE.LO
ElseIf (m_MachiningList(nI).m_nInterf And FMI_TYPE.LI) = 0 And (m_MachiningList(nI).m_nInterf And FMI_TYPE.LO) <> 0 Then
m_MachiningList(nI).m_nInterf += FMI_TYPE.LI
m_MachiningList(nI).m_nInterf -= FMI_TYPE.LO
End If
' Swap Allungamento Utente
Dim dOrigUsal As Double = 0
EgtGetInfo( m_MachiningList( nI).m_nId, INFO_MCH_USER_SAL, dOrigUsal)
EgtGetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_SAL, dOrigUsal)
Dim dOrigUeal As Double = 0
EgtGetInfo( m_MachiningList( nI).m_nId, INFO_MCH_USER_EAL, dOrigUeal)
EgtSetInfo( m_MachiningList( nI).m_nId, INFO_MCH_USER_SAL, dOrigUeal)
EgtSetInfo( m_MachiningList( nI).m_nId, INFO_MCH_USER_EAL, dOrigUsal)
EgtGetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_EAL, dOrigUeal)
EgtSetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_SAL, dOrigUeal)
EgtSetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_EAL, dOrigUsal)
End Sub
'-----------------------------------------------------------------------------------------------
@@ -2010,10 +2507,10 @@ Public Class SplitPageUC
Return m_sName
End Get
Set(value As String)
If value <> m_sName Then
m_sName = value
NotifyPropertyChanged("Name")
End If
If value <> m_sName Then
m_sName = value
NotifyPropertyChanged("Name")
End If
End Set
End Property
@@ -2022,10 +2519,10 @@ Public Class SplitPageUC
Return m_bIsActive
End Get
Set(value As Boolean)
If value <> m_bIsActive Then
m_bIsActive = value
NotifyPropertyChanged("bIsActive")
End If
If value <> m_bIsActive Then
m_bIsActive = value
NotifyPropertyChanged("bIsActive")
End If
End Set
End Property
+31 -13
View File
@@ -67,17 +67,17 @@ Module VacuumCups
End Function
' carico i dati macchina relativi al peso massimo movimentabile
Friend Sub GetWeightInformation(Density As Double, MaxSingle As Double, MaxDouble As Double)
Friend Sub SetWeightInformation(Density As Double, MaxSingle As Double, MaxDouble As Double)
m_RawDensity = Density
m_MaxWeightSinglePlugger = MaxSingle
m_MaxWeightDoublePlugger = MaxDouble
End Sub
Friend Sub GetRotationForExtraStrokeY(Rotate As Boolean)
Friend Sub SetRotationForExtraStrokeY(Rotate As Boolean)
bRotateVacuumNearExtraStrokeY = Rotate
End Sub
Friend Sub GetRotationForExtraStrokeX(Rotate As Boolean)
Friend Sub SetRotationForExtraStrokeX(Rotate As Boolean)
bRotateVacuumNearExtraStrokeX = Rotate
End Sub
Friend Function GetVacuumId() As Integer
@@ -451,14 +451,14 @@ Module VacuumCups
Dim dPreferredRot As Double = m_dPreferredRot
' -------------------- INIZIO GESTIONE ROTAZIONE ASSE C PER NON ANDARE IN EXTRA-CORSA --------------------
' verifico l'orientamento del pezzo
If bRotateVacuumNearExtraStrokeX And (Math.Abs(dRotAngDeg - 90) < 45 Or Math.Abs(dRotAngDeg - 270) < 45) Then
If bRotateVacuumNearExtraStrokeX And Not IsHorizontal(dAngOrizzDeg) Then
' se l'orientamento è verticale
If frMinRect.Orig().x < b3Tab.Center().x Then
dPreferredRot = m_dPrefVertRotXMinus
Else
dPreferredRot = m_dPrefVertRotXPlus
End If
ElseIf bRotateVacuumNearExtraStrokeY And (Math.Abs(dRotAngDeg - 90) > 45 Or Math.Abs(dRotAngDeg - 270) > 45) Then
ElseIf bRotateVacuumNearExtraStrokeY And IsHorizontal(dAngOrizzDeg) Then
' se l'orientemanto è orizzontale e la macchina è stata abilitata
If frMinRect.Orig().y < b3Tab.Center().y Then
dPreferredRot = m_dPrefVertRotYPlus
@@ -467,8 +467,8 @@ Module VacuumCups
End If
End If
' -------------------- FINE GESTIONE ROTAZIONE ASSE C PER NON ANDARE IN EXTRA-CORSA --------------------
Dim dAngDelta As Double = If( Math.Abs( b3Vac.DimY() - b3Vac.DimX()) < 10 * EPS_SMALL, 90, 180)
While dRotAngDeg - dPreferredRot >= dAngDelta / 2
Dim dAngDelta As Double = If(Math.Abs(b3Vac.DimY() - b3Vac.DimX()) < 10 * EPS_SMALL, 90, 180)
While dRotAngDeg - dPreferredRot >= dAngDelta / 2
dRotAngDeg -= dAngDelta
End While
While dRotAngDeg - dPreferredRot <= -dAngDelta / 2
@@ -539,16 +539,34 @@ Module VacuumCups
Return dDist
End Function
' assegante le posizioni del centro delle ventose e l'angolo di posizionamento orizzontale verifica che la posizione sia raggiungibile
Private Function IsHorizontal(dDegAng As Double) As Boolean
If (Math.Abs(dDegAng) > 45 And Math.Abs(dDegAng) < 135) Or (Math.Abs(dDegAng) > 225 And Math.Abs(dDegAng) < 315) Then
Return False
End If
Return True
End Function
' assegnate le posizioni del centro delle ventose e l'angolo di posizionamento orizzontale verifica che la posizione sia raggiungibile
Public Function VerifyOutOfStrokes(ptRef As Point3d, dRotAngDeg As Double) As Integer
Dim dX, dY, dZ As Double
Dim nStat As Integer
' Posizione Home dell'asse rotante
Dim dCHome As Double
EgtGetAxisHomePos("C", dCHome)
' imposto la l'uscita della ventosa come fosse l'uscita di un utensile
' Corse dell'asse
Dim dCMin As Double
EgtGetAxisMin("C", dCMin)
Dim dCMax As Double
EgtGetAxisMax("C", dCMax)
' Porto l'angolo nel range
Dim dRotAngMachDeg As Double = dRotAngDeg + dCHome
AdjustAngleInRange(dRotAngMachDeg, dCMin, dCMax)
' Imposto la ventosa come fosse un utensile
EgtSetCalcTool("", "H4", 1)
EgtGetCalcPositions(ptRef, dRotAngDeg + dCHome, 0, nStat, dX, dY, dZ)
EgtVerifyOutstroke(dX, dY, dZ, dRotAngDeg + dCHome, 0, nStat)
' Calcolo gli assi macchina
Dim dX, dY, dZ As Double
Dim nStat As Integer
EgtGetCalcPositions(ptRef, dRotAngMachDeg, 0, nStat, dX, dY, dZ)
' Verifico le corse
EgtVerifyOutstroke(dX, dY, dZ, dRotAngMachDeg, 0, nStat)
Return nStat
End Function
+16 -1
View File
@@ -214,7 +214,8 @@ Module ConstGen
Public Const INFO_DEPTH As String = "Depth"
Public Const INFO_WIDTH As String = "Width"
Public Const INFO_DEPTH2 As String = "Depth2"
Public CONST INFO_AGG2 As String = "Agg2"
Public Const INFO_AGG2 As String = "Agg2"
Public Const INFO_ROUNDOFF As String = "RoundOff"
' Info in entità da tagliare per taglio ristretto
Public Const INFO_STRICT As String = "Strict"
' Info in entità da tagliare per angolo di lato e tallone
@@ -304,6 +305,12 @@ Module ConstGen
Public Const INFO_PARTOK As String = "POK"
' Info in pezzo per stato rotazione
Public Const INFO_PARTROT As String = "ROT"
' Info in entità in OutLoop per indicare se è separata WaterJet
Public Const INFO_JOINENTITY As String = "JoinEntity"
' Nome layer per "*" inidcanti un lato separato nel taglio WaterJet
Public Const INFO_AUX_SPLIT_WJ As String = "AUX_SPLIT_WJ"
' Info in OutLoop per punto inzio lavorazione WaterJet
Public Const INFO_START As String = "Start"
' Nome di pezzo che è una cornice
Public Const NAME_FRAME As String = "Frame"
@@ -336,6 +343,11 @@ Module ConstGen
' Info in pezzo per facet di ultima superficie selezionata
Public Const INFO_FRAME_FACET As String = "Facet"
' Nome del groppo dei ponticelli per lavorazioni Water
Public Const BRIDGES As String = "Bridges"
' Nome dell'entità ponticello contenuta nel gruppo BRIDGES
Public Const BRIDGELINE As String = "BridgeLine"
' utensile per le lavorazioni manuali
Public Const DUMMY_SAW As String = "DummySAW"
' lavorazione manuale
@@ -379,6 +391,9 @@ Module ConstGen
Public Function COL_MCH_DRIPCUT() As Color3d
Return New Color3d(255, 0, 165)
End Function
Public Function COL_MCH_ONENGRAVE_ANG() As Color3d
Return New Color3d(255, 255, 100)
End Function
Public Function COL_MCH_DRIPFREE() As Color3d
Return New Color3d(192, 0, 128)
End Function
+26
View File
@@ -18,6 +18,7 @@ Module ConstIni
Public Const S_GENERAL As String = "General"
Public Const K_DEBUG As String = "Debug"
Public Const K_LICENCE As String = "Licence"
Public Const K_NETKEY As String = "NetKey"
Public Const K_MESSAGESDIR As String = "MessagesDir"
Public Const K_MESSAGES As String = "Messages"
Public Const K_SUPPORT As String = "Support"
@@ -49,6 +50,8 @@ Module ConstIni
Public Const K_SMARTMACHININGPAGE As String = "SmartMachiningPage"
Public Const K_STARTPROGRAM As String = "StartProgram"
Public Const K_GENERATECN As String = "GenerateCN"
Public Const K_FRACTIONPATTERN As String = "FractionPattern"
Public Const K_PRECISION As String = "Precision"
Public Const S_LANGUAGES As String = "Languages"
@@ -133,7 +136,9 @@ Module ConstIni
Public Const K_ENGRAVENUMBER2 As String = "EngraveNumber2"
Public Const K_ENGRAVEOFFSET2 As String = "EngraveOffset2"
Public Const K_ENGRAVEDEPTH As String = "EngraveDepth"
Public Const K_ENGRAVEDEPTH2 As String = "EngraveDepth2"
Public Const K_ENGRAVESHORT As String = "EngraveShort"
Public Const K_ENGRAVEANGLE As String = "EngraveAngle"
Public Const K_DRIPOFFSET As String = "DripOffset"
Public Const K_DRIPOFFSET2 As String = "DripOffset2"
Public Const K_DRIPDEPTH As String = "DripDepth"
@@ -141,6 +146,7 @@ Module ConstIni
Public Const K_UNDERDRILLDEPTH As String = "UnderDrillDepth"
Public Const K_FILOTOPOFFSET As String = "FiloTopOffset"
Public Const K_FILOTOPDEPTH As String = "FiloTopDepth"
Public Const K_ROUNDOFF As String = "RoundOff"
Public Const S_NEST As String = "Nest"
Public Const K_DIRECT As String = "Direct"
@@ -153,6 +159,7 @@ Module ConstIni
Public Const K_AUTOMATICOPTIMIZE As String = "AutomaticOptimize"
Public Const K_AUTOMATICMAXTIME As String = "AutomaticMaxTime"
Public Const K_DRAG_RETTANGLE As String = "DragRectangle"
Public Const K_STARTENDMODIFYONINTCORNER As String = "StartEndModifyOnIntCorner"
Public Const S_SPLIT As String = "Split"
Public Const K_MOVE_LEV As String = "MoveLevel"
@@ -168,6 +175,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"
@@ -214,6 +229,15 @@ Module ConstIni
Public Const K_RAWROTATION As String = "Rotation"
Public Const K_PERPENDICULAR As String = "Perpendicular"
Public Const S_SCRAPS As String = "Scraps"
Public Const K_ENABLESCRAPS As String = "EnableScraps"
Public Const K_PHOTODIR As String = "PhotoDir"
Public Const K_LASTBLOCK As String = "LastBlock"
Public Const K_TEMPLATE As String = "Template"
Public Const K_DAT As String = "Dat"
Public Const K_ZEBRAUTILITIES As String = "ZebraUtilities"
Public Const K_ENABLE_PRINTER As String = "EnablePrinter"
Public Const S_REG As String = "Reg"
Public Const K_REGSTEP As String = "Step"
Public Const K_REGANGSTEP As String = "AngStep"
@@ -306,6 +330,8 @@ Module ConstIni
Public Const K_DC_TEST_LENGTH As String = "TestLength"
Public Const K_DC_TEST_ANGH As String = "TestAngH"
Public Const K_DC_TEST_OFFSET As String = "TestOffset"
Public Const K_DC_OFFSET_SQUARING As String = "OffsetSquaring"
Public Const K_DC_EXTRA_LEN_SQUARING As String = "ExtraLenSquaring"
Public Const S_STATDATA As String = "StatData"
Public Const K_SD_DAY As String = "Day"
+10
View File
@@ -46,6 +46,9 @@
Public Const K_THREADSLEEP As String = "ThreadSleep"
Public Const K_PHOTODELEY As String = "PhotoDeley"
Public Const S_EXECLUA As String = "ExecLua"
Public Const K_FILESCRIPT_LUA As String = "FileScript"
Public Const S_NCDATA As String = "NcData"
Public Const K_NEWVARIABLE As String = "NewVariable"
Public Const K_NEWCONSOLE As String = "NewConsole"
@@ -216,6 +219,10 @@
Public Const K_MACH_CUTFSEVLEN As String = "CutFsevLen"
Public Const K_MACH_CUTFSEVPERC As String = "CutFsevPerc"
Public Const K_USELASERORIGIN As String = "UseLaserOrigin"
Public Const K_HOLES_DIAMITERWJ As String = "HolesDiameterWJ"
Public Const K_HOLES_OFFSETWJ As String = "HolesOffsetWJ"
Public Const K_MIN_RADIUSWJ As String = "MinRadiusWJ"
Public Const K_MACH_DRILLINGWJ_ON_CORNERS As String = "DrillingWJOnCorners"
' DrillMillC90
' CutLongDxSx
' AngRotMultiCut
@@ -233,6 +240,9 @@
Public Const K_MACH_ROTATEVACUUMFOREXTRASTROKEY As String = "RotateVacuumForExtraStrokeY"
Public Const K_MACH_ROTATEVACUUMFOREXTRASTROKEX As String = "RotateVacuumForExtraStrokeX"
Public Const K_ISNEWSCRAPS As String = "IsNewScraps"
Public Const K_DATABASEID As String = "DatabaseID"
Public Const S_MACH_REG As String = "Reg"
Public Const K_MACH_MAX_ROT_ANG As String = "MaxRotAng"
+177
View File
@@ -0,0 +1,177 @@
<UserControl x:Class="ControlsDirectCutUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="Self"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:OmagCUT="clr-namespace:OmagCUT"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="597.3" d:DesignWidth="256">
<Grid Name="LeftButtonGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<!--<RowDefinition Height="1*"/>
<RowDefinition Height="7*"/>-->
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<!-- Definizione della Grid laterale -->
<Grid Name="CutTypeGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<!--<RowDefinition Height="1*"/>-->
</Grid.RowDefinitions>
<Button Name="ManualBtn" Grid.Column="2" Grid.Row="0"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Movimento-manualeImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="ManualTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="SingleCutBtn" Grid.Row="1"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Taglio-singoloImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SingleCutTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="MultipleCutBtn" Grid.Row="2"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Taglio-multiploImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="MultipleCutTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="GridCutBtn" Grid.Row="3"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Taglio-grigliaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="GridCutTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="SingleDrillBtn" Grid.Row="4"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Foro-singoloImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SingleDrillTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="FlatteningCutBtn" Grid.Row="5"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource SpianaturaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="FlatteningCutTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<!--<Button Name="PolishingBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource LucidaturaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="PolishingTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>-->
<!--<Button Name="CopyTemplateBtn" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>-->
<Button Name="SquaringBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SquaringTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<!--<Button Name="SawTestBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SawTestTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>-->
<Grid Name="ChangeUCGrid" Grid.Row="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="ChangeUCBtn" Grid.ColumnSpan="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<!--<Image Name="ImageCompo9" Source="{DynamicResource NumericKeyboardArrowImg}" />-->
<TextBlock Name="ChangeUCTxBl" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
</Grid>
</Grid>
</Grid>
</UserControl>
+262
View File
@@ -0,0 +1,262 @@
Imports EgtUILib
Public Class ControlsDirectCutUC
' Dichiarazione delle Page UserControl
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
' ---- MAI USATA ---- nuova finestra per i comandi per il taglio manuale nuovo
Friend m_SingleCutAuto As SingleCutAuto
' ---- MAI USATA ----
Friend m_MachineButtons As MachineButtonsUC
Friend m_ManualAxesMove As ManualAxesMoveUC
Friend m_SingleCut As SingleCutUC
Friend m_SingleDrill As SingleDrillUC
Friend m_MultipleCut As MultipleCut
Friend m_GridCut As GridCut
Friend m_FlatteningCut As FlatteningCut
Friend m_Squaring As SquaringUC
Friend m_ControlsMachineButton As ControlsMachineButtonUC
Friend m_VacuumMachineButton As VacuumMachineButtonUC
Friend m_ControlDirectCutPage1 As ControlsDirectCutUC1
' Stato di visualizzazione della macchina
Friend m_bShowMachine As Boolean = False
Friend m_nMachLook As Integer = MCH_LOOK.ALL
' Dati generali CN
Friend m_CN As CN_generico
Private m_bFirst As Boolean = True
' Riferimento alla pagina correntemente attiva
Friend m_ActiveDirectCutPage As DirectCutPages = DirectCutPages.DirectCut
' Variabili che indicano attivazione paginette con bottoni macchina
Private m_ControlsBtn_IsActive As Boolean
Public Shared m_dZSafe As Double = 52
' Variabile che indica se sono attivi i bottoni macchina nuovi o vecchi
Friend m_NewMachineButtonsType As Boolean
' Indica che la finestra del talio Singolo deve essere di tipo manuale
Friend m_bManulaCut As Boolean = False
' elenco dei nuovi bottoni
Private m_ButtonJogList As New List(Of MachineButton)
Enum DirectCutPages
' pagina principale di tagli diretti
DirectCut
' nuova pagina di tagli diretti
DirectCut1
' elenco dei comandi associati
ManualAxesMove
SingleCut
MultipleCut
GridCut
FlatteningCut
Polishing
CopyTemplate
SawTest
SingleCutAuto
SingleDrill
Squaring
End Enum
Private Sub ControlsDirectCutUC_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' leggo la configurazione del programma per i nuovi tagli manuali
m_bManulaCut = GetPrivateProfileInt(S_GENERAL, K_MANUAL_CUT, 0, m_MainWindow.GetIniFile()) <> 0
'Creazione delle Page UserControl
m_MachineButtons = New MachineButtonsUC
m_ManualAxesMove = New ManualAxesMoveUC
m_SingleCut = New SingleCutUC
m_SingleDrill = New SingleDrillUC
m_MultipleCut = New MultipleCut
m_GridCut = New GridCut
m_FlatteningCut = New FlatteningCut
m_Squaring = New SquaringUC
m_ControlsMachineButton = New ControlsMachineButtonUC
m_VacuumMachineButton = New VacuumMachineButtonUC
' reiferimento alla pagina succesiva
m_ControlDirectCutPage1 = New ControlsDirectCutUC1
' Costruisco la finestra per il nuovo tipo di taglio manuale
m_SingleCutAuto = New SingleCutAuto
'Posizionemento nella griglia delle Page UserControl DirectCutPageUC
m_MachineButtons.SetValue(Grid.RowProperty, 2)
m_MachineButtons.SetValue(Grid.ColumnSpanProperty, 7)
m_ManualAxesMove.SetValue(Grid.RowProperty, 1)
If m_bManulaCut Then
m_SingleCutAuto.SetValue(Grid.RowProperty, 1)
Else
m_SingleCut.SetValue(Grid.RowProperty, 1)
End If
m_SingleDrill.SetValue(Grid.RowProperty, 1)
m_MultipleCut.SetValue(Grid.RowProperty, 1)
m_GridCut.SetValue(Grid.RowProperty, 1)
m_FlatteningCut.SetValue(Grid.RowProperty, 1)
m_Squaring.SetValue(Grid.RowProperty, 1)
m_ControlsMachineButton.SetValue(Grid.RowProperty, 1)
m_VacuumMachineButton.SetValue(Grid.RowProperty, 1)
' ManualBtn.Content = EgtMsg(90201)
ManualTxt.Text = EgtMsg(90201)
'SingleCutBtn.Content = EgtMsg(90202)
SingleCutTxt.Text = EgtMsg(90202)
'SingleDrillBtn.Content = "Foro singolo"
SingleDrillTxt.Text = EgtMsg(90258)
'MultipleCutBtn.Content = EgtMsg(90203)
MultipleCutTxt.Text = EgtMsg(90203)
'GridCutBtn.Content = EgtMsg(90204)
GridCutTxt.Text = EgtMsg(90204)
'FlatteningCutBtn.Content = EgtMsg(90206)
FlatteningCutTxt.Text = EgtMsg(90206)
' 90261=Squaring
SquaringTxt.Text = EgtMsg(90261)
' 90409=Others
ChangeUCTxBl.Text = EgtMsg(90409)
End Sub
Private Sub ControlsDirectCutUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Se rientro da simulazione
If m_ActiveDirectCutPage = DirectCutPages.SingleCut Then
LeftButtonGrid.Children.Add(m_SingleCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SingleCutAuto Then
LeftButtonGrid.Children.Add(m_SingleCutAuto)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.MultipleCut Then
LeftButtonGrid.Children.Add(m_MultipleCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.GridCut Then
LeftButtonGrid.Children.Add(m_GridCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.FlatteningCut Then
LeftButtonGrid.Children.Add(m_FlatteningCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SingleDrill Then
LeftButtonGrid.Children.Add(m_SingleDrill)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.Squaring Then
LeftButtonGrid.Children.Add(m_Squaring)
Return
End If
' Caso standard
m_ActiveDirectCutPage = DirectCutPages.DirectCut
' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1
Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL)
Dim bH1Exists As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
ManualBtn.IsEnabled = bH1Exists
' sviluppo rimasto in sospeso
If m_bManulaCut Then
' anche se non è presente un grezzo mantengo abilitato il bottone
SingleCutBtn.IsEnabled = True
Else
SingleCutBtn.IsEnabled = bRawOk
End If
MultipleCutBtn.IsEnabled = bRawOk
GridCutBtn.IsEnabled = bRawOk
SingleDrillBtn.IsEnabled = (bRawOk And bH1Exists)
FlatteningCutBtn.IsEnabled = (bRawOk And bH1Exists)
SquaringBtn.IsEnabled = bRawOk
' aggiorno la visualizzazione dei parametri
ReloadParam()
' Nascondo i pezzi in parcheggio
HideParkedParts()
EgtZoom(ZM.ALL)
End Sub
' ricarico i parametri utensili per definizione
Public Sub ReloadParam()
Dim sCurrSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
Dim sCurrSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
Dim bSaw As Boolean = False
' se esiste una lavorazione di lama corrente vuol dire che deve essere preferita
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If
m_SingleCut.SetEnableParam(bSaw)
m_MultipleCut.SetEnableParam(bSaw)
m_GridCut.SetEnableParam(bSaw)
End Sub
#Region "COMMAND CLICK BTN"
Private Sub ManualBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualBtn.Click
LeftButtonGrid.Children.Add(m_ManualAxesMove)
m_ActiveDirectCutPage = DirectCutPages.ManualAxesMove
End Sub
Private Sub SingleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleCutBtn.Click
If m_bManulaCut Then
LeftButtonGrid.Children.Add(m_SingleCutAuto)
m_ActiveDirectCutPage = DirectCutPages.SingleCutAuto
Else
LeftButtonGrid.Children.Add(m_SingleCut)
m_ActiveDirectCutPage = DirectCutPages.SingleCut
End If
End Sub
Private Sub MultipleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles MultipleCutBtn.Click
LeftButtonGrid.Children.Add(m_MultipleCut)
m_ActiveDirectCutPage = DirectCutPages.MultipleCut
End Sub
Private Sub GridCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles GridCutBtn.Click
LeftButtonGrid.Children.Add(m_GridCut)
m_ActiveDirectCutPage = DirectCutPages.GridCut
End Sub
Private Sub FlatteningCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles FlatteningCutBtn.Click
LeftButtonGrid.Children.Add(m_FlatteningCut)
m_ActiveDirectCutPage = DirectCutPages.FlatteningCut
End Sub
Private Sub SquaringBtn_Click(sender As Object, e As RoutedEventArgs) Handles SquaringBtn.Click
LeftButtonGrid.Children.Add(m_Squaring)
m_ActiveDirectCutPage = DirectCutPages.Squaring
End Sub
Private Sub SingleDrillBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleDrillBtn.Click
LeftButtonGrid.Children.Add(m_SingleDrill)
m_ActiveDirectCutPage = DirectCutPages.SingleDrill
End Sub
' cambio pagina
Private Sub ChangeUCBtn_Click(sender As Object, e As RoutedEventArgs) Handles ChangeUCBtn.Click
DirectCutPage_Unloaded(Nothing, Nothing)
m_ActiveDirectCutPage = DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.LoadDirectCutUC1()
End Sub
#End Region ' Command Click Btn
Friend Sub DirectCutPage_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
Select Case m_ActiveDirectCutPage
Case DirectCutPages.DirectCut Or DirectCutPages.ManualAxesMove
' Non è necessario fare alcunché
Case DirectCutPages.SingleCut
LeftButtonGrid.Children.Remove(m_SingleCut)
Case DirectCutPages.SingleCutAuto
LeftButtonGrid.Children.Remove(m_SingleCutAuto)
Case DirectCutPages.MultipleCut
LeftButtonGrid.Children.Remove(m_MultipleCut)
Case DirectCutPages.GridCut
LeftButtonGrid.Children.Remove(m_GridCut)
Case DirectCutPages.FlatteningCut
LeftButtonGrid.Children.Remove(m_FlatteningCut)
Case DirectCutPages.SingleDrill
LeftButtonGrid.Children.Remove(m_SingleDrill)
Case DirectCutPages.Squaring
LeftButtonGrid.Children.Remove(m_Squaring)
End Select
End Sub
End Class
+86
View File
@@ -0,0 +1,86 @@
<UserControl x:Class="ControlsDirectCutUC1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="Self"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:OmagCUT="clr-namespace:OmagCUT"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="597.3" d:DesignWidth="256">
<Grid Name="LeftButtonGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<!--<RowDefinition Height="1*"/>
<RowDefinition Height="7*"/>-->
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<!-- Definizione della Grid laterale -->
<Grid Name="CutTypeGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<!--<RowDefinition Height="1*"/>-->
</Grid.RowDefinitions>
<Button Name="SawTestBtn" Grid.Row="0"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SawTestTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="PolishingBtn" Grid.Row="1"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource LucidaturaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="PolishingTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="CopyTemplateBtn" Grid.Row="2"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Grid Name="ChangeUC1Grid" Grid.Row="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="ChangeUC1Btn" Grid.ColumnSpan="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Image Name="ImageCompo9" Source="{DynamicResource NumericKeyboardArrowImg}" />
<!--<TextBlock Name="LabelCompo9" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>-->
</Grid>
</Button>
</Grid>
</Grid>
</Grid>
</UserControl>
+142
View File
@@ -0,0 +1,142 @@
Imports EgtUILib
Public Class ControlsDirectCutUC1
' Dichiarazione delle Page UserControl
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Friend m_Polishing As Polishing
Friend m_CopyTemplate As CopyTemplateUC
Friend m_SawTest As SawTestUC
' Stato di visualizzazione della macchina
Friend m_bShowMachine As Boolean = False
Friend m_nMachLook As Integer = MCH_LOOK.ALL
' Dati generali CN
Friend m_CN As CN_generico
Private m_bFirst As Boolean = True
' Riferimento alla pagina correntemente attiva
Friend m_ActiveDirectCutPage As DirectCutPages = DirectCutPages.DirectCut
' Variabili che indicano attivazione paginette con bottoni macchina
Private m_ControlsBtn_IsActive As Boolean
Public Shared m_dZSafe As Double = 52
' Variabile che indica se sono attivi i bottoni macchina nuovi o vecchi
Friend m_NewMachineButtonsType As Boolean
' Indica che la finestra del talio Singolo deve essere di tipo manuale
Friend m_bManulaCut As Boolean = False
Enum DirectCutPages
DirectCut
DirectCut1
Polishing
CopyTemplate
SawTest
End Enum
Private Sub ControlsDirectCutUC_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' leggo la configurazione del programma per i nuovi tagli manuali
m_bManulaCut = GetPrivateProfileInt(S_GENERAL, K_MANUAL_CUT, 0, m_MainWindow.GetIniFile()) <> 0
'Creazione delle Page UserControl
m_SawTest = New SawTestUC
m_Polishing = New Polishing
m_CopyTemplate = New CopyTemplateUC
'Posizionemento nella griglia delle Page UserControl
m_SawTest.SetValue(Grid.RowProperty, 1)
m_Polishing.SetValue(Grid.RowProperty, 1)
m_CopyTemplate.SetValue(Grid.RowProperty, 1)
' assegno i nomi ai pulsanti
SawTestTxt.Text = EgtMsg(90207)
PolishingTxt.Text = EgtMsg(90231)
'CopyTemplateBtn.Content = EgtMsg(90209)
CopyTemplateTxt.Text = EgtMsg(90209)
'SquaringTxt.Text = "Squaring"
End Sub
Private Sub ControlsDirectCutUC1_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Se rientro da simulazione
If m_ActiveDirectCutPage = DirectCutPages.SawTest Then
LeftButtonGrid.Children.Add(m_SawTest)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.CopyTemplate Then
Me.LeftButtonGrid.Children.Add(m_CopyTemplate)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.Polishing Then
Me.LeftButtonGrid.Children.Add(m_Polishing)
Return
End If
' Caso standard
m_ActiveDirectCutPage = DirectCutPages.DirectCut1
' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1
Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL)
Dim bH1Exists As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
PolishingBtn.IsEnabled = (bRawOk And m_MainWindow.m_CurrentMachine.bPolishing)
SawTestBtn.IsEnabled = (bRawOk And bH1Exists)
CopyTemplateBtn.IsEnabled = bH1Exists
' aggiorno la visualizzazione dei parametri
ReloadParam()
' Nascondo i pezzi in parcheggio
HideParkedParts()
EgtZoom(ZM.ALL)
End Sub
' ricarica i dati utensili
Public Sub ReloadParam()
Dim sCurrSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
Dim sCurrSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
Dim bSaw As Boolean = False
' se esiste una lavorazione di lama corrente vuol dire che deve essere preferita
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If
'm_SingleCut.SetEnableParam(bSaw)
'm_MultipleCut.SetEnableParam(bSaw)
'm_GridCut.SetEnableParam(bSaw)
End Sub
#Region "COMMAND CLICK BTN"
Private Sub SawTestBtn_Click(sender As Object, e As RoutedEventArgs) Handles SawTestBtn.Click
LeftButtonGrid.Children.Add(m_SawTest)
m_ActiveDirectCutPage = DirectCutPages.SawTest
End Sub
Private Sub PolishingBtn_Click(sender As Object, e As RoutedEventArgs) Handles PolishingBtn.Click
LeftButtonGrid.Children.Add(m_Polishing)
m_ActiveDirectCutPage = DirectCutPages.Polishing
End Sub
Private Sub CopyTemplateBtn_Click(sender As Object, e As RoutedEventArgs) Handles CopyTemplateBtn.Click
LeftButtonGrid.Children.Add(m_CopyTemplate)
m_ActiveDirectCutPage = DirectCutPages.CopyTemplate
End Sub
Private Sub ChangeUC1Btn_Click(sender As Object, e As RoutedEventArgs) Handles ChangeUC1Btn.Click
DirectCutPage_Unloaded(Nothing, Nothing)
m_ActiveDirectCutPage = DirectCutPages.DirectCut1
m_MainWindow.m_DirectCutPageUC.LoadDirectCutUC()
End Sub
#End Region ' Command Click Btn
Friend Sub DirectCutPage_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
Select Case m_ActiveDirectCutPage
Case DirectCutPages.SawTest
LeftButtonGrid.Children.Remove(m_SawTest)
Case DirectCutPages.Polishing
LeftButtonGrid.Children.Remove(m_Polishing)
Case DirectCutPages.CopyTemplate
LeftButtonGrid.Children.Remove(m_CopyTemplate)
End Select
End Sub
End Class
+4 -2
View File
@@ -5,6 +5,8 @@ Public Class CopyTemplateUC
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
Private m_refControlDirectCutUC As ControlsDirectCutUC1
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Array stringhe modalità di acquisizione dei punti
@@ -59,6 +61,7 @@ Public Class CopyTemplateUC
Private Sub CopyTemplate_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_refControlDirectCutUC = m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC1
m_bActive = True
SaveBtn.IsEnabled = False
LineBtn.IsChecked = True
@@ -254,8 +257,7 @@ Public Class CopyTemplateUC
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function EraseCopyTemplatePart() As Boolean
+87 -63
View File
@@ -28,10 +28,10 @@
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<Button Name="PhotoBtn" Grid.Column="0" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Button Name="PhotoBtn" Grid.Column="0" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource PhotoImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
@@ -42,25 +42,27 @@
</Grid>
<!-- Definizione della Grid laterale -->
<Grid Name="LeftButtonGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="7*"/>
</Grid.RowDefinitions>
<!-- Definizione della Grid laterale -->
<Grid Name="CutTypeGrid" Grid.Row="1" >
<!-- Definizione della Grid laterale -->
<!--
<Grid Name="LeftButtonGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="7*"/>
</Grid.RowDefinitions>
-->
<!-- Definizione della Grid laterale -->
<!--<Grid Name="CutTypeGrid" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button Name="ManualBtn" Grid.Column="2" Grid.Row="0"
Style="{DynamicResource OmagCut_YellowIconButton}">
@@ -140,7 +142,7 @@
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="PolishingBtn" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
@@ -154,36 +156,51 @@
</Grid>
</Button>
<Button Name="CopyTemplateBtn" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="SawTestBtn" Grid.Row="8"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SawTestTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
-->
<!--<Button Name="CopyTemplateBtn" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="CopyTemplateTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>-->
<!--
<Button Name="SquaringBtn" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Copia-dimaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SquaringTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
<Button Name="SawTestBtn" Grid.Row="8"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="140"/>
</Grid.ColumnDefinitions>
<Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}" Grid.Column="0" />
<TextBlock Name="SawTestTxt" Grid.Column="1"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Grid>
</Button>
</Grid>-->
<!--
</Grid>-->
</Grid>
</Grid>
<!-- Definizione della Grid laterale per bottoni macchina -->
<Grid Name="MachineButtonGrid" Grid.Row="1">
<Grid.RowDefinitions>
@@ -201,7 +218,8 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
<!--<ColumnDefinition Width="1*"/>-->
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
@@ -215,23 +233,23 @@
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<!--Comando asse X-Y-->
<ToggleButton Name="XYBtn" Grid.Column="2"
<!--Comando asse X-Y-->
<ToggleButton Name="XYBtn" Grid.Column="2"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<Image Source="{DynamicResource XYJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
<Image Source="{DynamicResource XYJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<!--Comando asse Z-C-->
<ToggleButton Name="ZCBtn" Grid.Column="3"
<!--Comando asse Z-C-->
<ToggleButton Name="ZCBtn" Grid.Column="3"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<Image Source="{DynamicResource ZCJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<Image Source="{DynamicResource ZCJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<!--Comando asse Z-B-->
<ToggleButton Name="ZBBtn" Grid.Column="4"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<Image Source="{DynamicResource ZBJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
<Image Source="{DynamicResource ZBJogImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<!--Comando Remote-->
@@ -240,10 +258,16 @@
<!--<Image Source="{DynamicResource VacuumImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>-->
</ToggleButton>
<!--Parking-->
<ToggleButton Name="ParkingBtn" Grid.Column="6"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}">
<Image Source="{DynamicResource ParkingImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton>
<!--Comando Manula/MDI-->
<Button Name="ManualModeBtn" Grid.Column="7"
<Button Name="ManualModeBtn" Grid.Column="8"
Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
<Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</Button>
</Grid>
+109 -210
View File
@@ -7,18 +7,20 @@ Public Class DirectCutPageUC
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Friend m_MachineButtons As MachineButtonsUC
Friend m_ManualAxesMove As ManualAxesMoveUC
Friend m_SingleCut As SingleCutUC
Friend m_SingleDrill As SingleDrillUC
' nuova finestra per i comandi per il taglio manuale nuovo
Friend m_SingleCutAuto As SingleCutAuto
Friend m_MultipleCut As MultipleCut
Friend m_GridCut As GridCut
Friend m_FlatteningCut As FlatteningCut
Friend m_Polishing As Polishing
Friend m_CopyTemplate As CopyTemplateUC
Friend m_SawTest As SawTestUC
Friend m_ControlsMachineButton As ControlsMachineButtonUC
Friend m_VacuumMachineButton As VacuumMachineButtonUC
Friend m_ControlsDirectCutUC As ControlsDirectCutUC
Friend m_ControlsDirectCutUC1 As ControlsDirectCutUC1
Friend m_ActiveControl As Controls
Enum Controls
DirectCutUC
DirectCutUC1
MachineButtonUC
VacuumButtonUC
End Enum
' Stato di visualizzazione della macchina
Friend m_bShowMachine As Boolean = False
@@ -26,8 +28,6 @@ Public Class DirectCutPageUC
' Dati generali CN
Friend m_CN As CN_generico
Private m_bFirst As Boolean = True
' Riferimento alla pagina correntemente attiva
Friend m_ActiveDirectCutPage As DirectCutPages = DirectCutPages.DirectCut
' Variabili che indicano attivazione paginette con bottoni macchina
Private m_ControlsBtn_IsActive As Boolean
@@ -41,56 +41,23 @@ Public Class DirectCutPageUC
' elenco dei nuovi bottoni
Private m_ButtonJogList As New List(Of MachineButton)
Enum DirectCutPages
DirectCut
ManualAxesMove
SingleCut
MultipleCut
GridCut
FlatteningCut
Polishing
CopyTemplate
SawTest
SingleCutAuto
SingleDrill
End Enum
Private Sub DirectCutPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' leggo la configurazione del programma per i nuovi tagli manuali
m_bManulaCut = GetPrivateProfileInt(S_GENERAL, K_MANUAL_CUT, 0, m_MainWindow.GetIniFile()) <> 0
'Creazione delle Page UserControl
m_MachineButtons = New MachineButtonsUC
m_ManualAxesMove = New ManualAxesMoveUC
m_SingleCut = New SingleCutUC
m_SingleDrill = New SingleDrillUC
m_MultipleCut = New MultipleCut
m_GridCut = New GridCut
m_FlatteningCut = New FlatteningCut
m_Polishing = New Polishing
m_CopyTemplate = New CopyTemplateUC
m_SawTest = New SawTestUC
m_ControlsMachineButton = New ControlsMachineButtonUC
m_VacuumMachineButton = New VacuumMachineButtonUC
' Costruisco la finestra per il nuovo tipo di taglio manuale
m_SingleCutAuto = New SingleCutAuto
m_ControlsDirectCutUC = New ControlsDirectCutUC
m_ControlsDirectCutUC1 = New ControlsDirectCutUC1
'Posizionemento nella griglia delle Page UserControl
m_MachineButtons.SetValue(Grid.RowProperty, 2)
m_MachineButtons.SetValue(Grid.ColumnSpanProperty, 7)
m_ManualAxesMove.SetValue(Grid.RowProperty, 1)
If m_bManulaCut Then
m_SingleCutAuto.SetValue(Grid.RowProperty, 1)
Else
m_SingleCut.SetValue(Grid.RowProperty, 1)
End If
m_SingleDrill.SetValue(Grid.RowProperty, 1)
m_MultipleCut.SetValue(Grid.RowProperty, 1)
m_GridCut.SetValue(Grid.RowProperty, 1)
m_FlatteningCut.SetValue(Grid.RowProperty, 1)
m_Polishing.SetValue(Grid.RowProperty, 1)
m_CopyTemplate.SetValue(Grid.RowProperty, 1)
m_SawTest.SetValue(Grid.RowProperty, 1)
m_ControlsDirectCutUC.SetValue(Grid.RowProperty, 1)
m_ControlsDirectCutUC1.SetValue(Grid.RowProperty, 1)
m_ControlsMachineButton.SetValue(Grid.RowProperty, 1)
m_VacuumMachineButton.SetValue(Grid.RowProperty, 1)
@@ -104,31 +71,6 @@ Public Class DirectCutPageUC
VacuumMachineBtn.Visibility = Windows.Visibility.Collapsed
End If
If GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, m_MainWindow.GetMachIniFile()) = 0 Then
ManualBtn.IsEnabled = False
ManualModeBtn.Visibility = Windows.Visibility.Hidden
End If
' ManualBtn.Content = EgtMsg(90201)
ManualTxt.Text = EgtMsg(90201)
'SingleCutBtn.Content = EgtMsg(90202)
SingleCutTxt.Text = EgtMsg(90202)
'SingleDrillBtn.Content = "Foro singolo"
SingleDrillTxt.Text = EgtMsg(90258)
'MultipleCutBtn.Content = EgtMsg(90203)
MultipleCutTxt.Text = EgtMsg(90203)
'GridCutBtn.Content = EgtMsg(90204)
GridCutTxt.Text = EgtMsg(90204)
'FlatteningCutBtn.Content = EgtMsg(90206)
FlatteningCutTxt.Text = EgtMsg(90206)
'PolishingBtn.Content = EgtMsg(90231)
PolishingTxt.Text = EgtMsg(90231)
'CopyTemplateBtn.Content = EgtMsg(90209)
CopyTemplateTxt.Text = EgtMsg(90209)
'SawTestBtn.Content = EgtMsg(90207)
SawTestTxt.text = EgtMsg(90207)
' nuovi bottoni 20/05/2021 - modifica specifiche 04/08/2021
' leggo il numero di assi attivi nella macchina
Dim AxesNumber = GetPrivateProfileInt(S_AXES, K_AXESNUM, 5, m_MainWindow.GetMachIniFile())
@@ -176,59 +118,10 @@ Public Class DirectCutPageUC
' lo stato di questi comandi vieni carico dalla lettura del PLC (refresh)
'----------- FINE NUOVI BOTTONI------------
' Se rientro da simulazione
If m_ActiveDirectCutPage = DirectCutPages.SingleCut Then
LeftButtonGrid.Children.Add(m_SingleCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SingleCutAuto Then
LeftButtonGrid.Children.Add(m_SingleCutAuto)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.MultipleCut Then
LeftButtonGrid.Children.Add(m_MultipleCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.GridCut Then
LeftButtonGrid.Children.Add(m_GridCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.FlatteningCut Then
LeftButtonGrid.Children.Add(m_FlatteningCut)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.Polishing Then
LeftButtonGrid.Children.Add(m_Polishing)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SawTest Then
LeftButtonGrid.Children.Add(m_SawTest)
Return
ElseIf m_ActiveDirectCutPage = DirectCutPages.SingleDrill Then
LeftButtonGrid.Children.Add(m_SingleDrill)
Return
End If
' Caso standard
m_ActiveDirectCutPage = DirectCutPages.DirectCut
LoadLastDirectCutControls()
' Se macchina fotografica abilitata
PhotoBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.MAN_PHOTO)
' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1
Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL)
Dim bH1Exists As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
ManualBtn.IsEnabled = bH1Exists
' sviluppo rimasto in sospeso
If m_bManulaCut Then
' anche se non è presente un grezzo mantengo abilitato il bottone
SingleCutBtn.IsEnabled = True
Else
SingleCutBtn.IsEnabled = bRawOk
End If
MultipleCutBtn.IsEnabled = bRawOk
GridCutBtn.IsEnabled = bRawOk
SingleDrillBtn.IsEnabled = (bRawOk And bH1Exists)
FlatteningCutBtn.IsEnabled = (bRawOk And bH1Exists)
PolishingBtn.IsEnabled = (bRawOk And m_MainWindow.m_CurrentMachine.bPolishing)
SawTestBtn.IsEnabled = (bRawOk And bH1Exists)
CopyTemplateBtn.IsEnabled = bH1Exists
' aggiorno la visualizzazione dei parametri
ReloadParam()
@@ -247,9 +140,9 @@ Public Class DirectCutPageUC
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If
m_SingleCut.SetEnableParam(bSaw)
m_MultipleCut.SetEnableParam(bSaw)
m_GridCut.SetEnableParam(bSaw)
m_ControlsDirectCutUC.m_SingleCut.SetEnableParam(bSaw)
m_ControlsDirectCutUC.m_MultipleCut.SetEnableParam(bSaw)
m_ControlsDirectCutUC.m_GridCut.SetEnableParam(bSaw)
End Sub
Private Sub SetVisibilityJogButtuns()
@@ -257,6 +150,7 @@ Public Class DirectCutPageUC
ZCBtn.Visibility = Visibility.Collapsed
ZBBtn.Visibility = Visibility.Collapsed
RemoteBtn.Visibility = Visibility.Collapsed
ParkingBtn.Visibility = Visibility.Collapsed
Dim Item As MachineButton = Nothing
For Each Item In m_ButtonJogList
@@ -277,6 +171,10 @@ Public Class DirectCutPageUC
RemoteBtn.Visibility = Visibility.Visible
RemoteBtn.Foreground = Brushes.White
RemoteBtn.Content = "Remote"
Case K_PARKING
ParkingBtn.Visibility = Visibility.Visible
ParkingBtn.Foreground = Brushes.White
ParkingBtn.ToolTip = "Parking"
End Select
Next
End Sub
@@ -305,57 +203,6 @@ Public Class DirectCutPageUC
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
End Sub
Private Sub ManualBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualBtn.Click
LeftButtonGrid.Children.Add(m_ManualAxesMove)
m_ActiveDirectCutPage = DirectCutPages.ManualAxesMove
End Sub
Private Sub SingleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleCutBtn.Click
If m_bManulaCut Then
LeftButtonGrid.Children.Add(m_SingleCutAuto)
m_ActiveDirectCutPage = DirectCutPages.SingleCutAuto
Else
LeftButtonGrid.Children.Add(m_SingleCut)
m_ActiveDirectCutPage = DirectCutPages.SingleCut
End If
End Sub
Private Sub MultipleCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles MultipleCutBtn.Click
LeftButtonGrid.Children.Add(m_MultipleCut)
m_ActiveDirectCutPage = DirectCutPages.MultipleCut
End Sub
Private Sub GridCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles GridCutBtn.Click
LeftButtonGrid.Children.Add(m_GridCut)
m_ActiveDirectCutPage = DirectCutPages.GridCut
End Sub
Private Sub FlatteningCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles FlatteningCutBtn.Click
LeftButtonGrid.Children.Add(m_FlatteningCut)
m_ActiveDirectCutPage = DirectCutPages.FlatteningCut
End Sub
Private Sub PolishingBtn_Click(sender As Object, e As RoutedEventArgs) Handles PolishingBtn.Click
LeftButtonGrid.Children.Add(m_Polishing)
m_ActiveDirectCutPage = DirectCutPages.Polishing
End Sub
Private Sub CopyTemplateBtn_Click(sender As Object, e As RoutedEventArgs) Handles CopyTemplateBtn.Click
LeftButtonGrid.Children.Add(m_CopyTemplate)
m_ActiveDirectCutPage = DirectCutPages.CopyTemplate
End Sub
Private Sub SawTestBtn_Click(sender As Object, e As RoutedEventArgs) Handles SawTestBtn.Click
LeftButtonGrid.Children.Add(m_SawTest)
m_ActiveDirectCutPage = DirectCutPages.SawTest
End Sub
Private Sub SingleDrillBtn_Click(sender As Object, e As RoutedEventArgs) Handles SingleDrillBtn.Click
LeftButtonGrid.Children.Add(m_SingleDrill)
m_ActiveDirectCutPage = DirectCutPages.SingleDrill
End Sub
Private Sub ControlsMachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles ControlsMachineBtn.Click
If ControlsMachineBtn.IsChecked Then
m_ControlsMachineButton = New ControlsMachineButtonUC
@@ -383,7 +230,21 @@ Public Class DirectCutPageUC
End If
End Sub
'------------------NUOVI BOTTONI PER GESTIONE JOYSTICK-------------------------------------------------
Friend Sub LoadDirectCutUC()
ManageControls()
m_ActiveControl = Controls.DirectCutUC
MachineButtonGrid.Children.Add(m_ControlsDirectCutUC)
End Sub
Friend Sub LoadDirectCutUC1()
ManageControls()
m_ActiveControl = Controls.DirectCutUC1
MachineButtonGrid.Children.Add(m_ControlsDirectCutUC1)
End Sub
#Region "[JogButtons]"
Private Sub XYBtn_Click(sender As Object, e As RoutedEventArgs) Handles XYBtn.Click
' riverco in elenco il bottone XYJog
Dim XYJogButton As MachineButton = Nothing
@@ -513,7 +374,45 @@ Public Class DirectCutPageUC
End If
End Sub
'------------------NUOVI BOTTONI PER GESTIONE JOYSTICK-------------------------------------------------
Private Sub ParkingBtn_Click(sender As Object, e As RoutedEventArgs) Handles ParkingBtn.Click
Dim ParkingButton As MachineButton = Nothing
Dim ItemButton As MachineButton = Nothing
For Each ItemButton In m_ButtonJogList
If ItemButton.StateFlag = K_PARKING Then
ParkingButton = ItemButton
Exit For
End If
Next
If IsNothing(ParkingButton) Then Return
' eseguo lo script lua associato
Dim CurrentBtn As Primitives.ToggleButton = e.Source
Dim sLuaFileName As String = String.Empty
' verifico lo stato del bottone per avviare il giusto script
If CurrentBtn.IsChecked() Then
sLuaFileName = ParkingButton.TLuaScriptName
Else
sLuaFileName = ParkingButton.FLuaScriptName
End If
ParkingButton.ExecuteMDICommand(sLuaFileName)
End Sub
Friend Sub ParkingStateChanged(bParkingState As Boolean)
' devo decodificare il tipo di pulsante, quindi eseguire la conversione...
Dim ParkingButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonJogList
If MachineButton.StateFlag.Trim = K_PARKING Then
ParkingButton = MachineButton
Exit For
End If
Next
If Not IsNothing(ParkingButton) Then
ParkingButton.SetIsChecked(bParkingState)
ParkingButton.IsChecked = bParkingState
End If
End Sub
#End Region '[JogButtons]
Private Sub MachViewModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles MachViewModeBtn.Click
If m_bShowMachine Then
' aggiorno lo stato
@@ -532,36 +431,36 @@ Public Class DirectCutPageUC
End Sub
Friend Sub DirectCutPage_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
Select Case m_ActiveDirectCutPage
Case DirectCutPages.DirectCut Or DirectCutPages.ManualAxesMove
' Non è necessario fare alcunché
Case DirectCutPages.SingleCut
LeftButtonGrid.Children.Remove(m_SingleCut)
Case DirectCutPages.SingleCutAuto
LeftButtonGrid.Children.Remove(m_SingleCutAuto)
Case DirectCutPages.MultipleCut
LeftButtonGrid.Children.Remove(m_MultipleCut)
Case DirectCutPages.GridCut
LeftButtonGrid.Children.Remove(m_GridCut)
Case DirectCutPages.FlatteningCut
LeftButtonGrid.Children.Remove(m_FlatteningCut)
Case DirectCutPages.Polishing
LeftButtonGrid.Children.Remove(m_Polishing)
Case DirectCutPages.CopyTemplate
LeftButtonGrid.Children.Remove(m_CopyTemplate)
Case DirectCutPages.SawTest
LeftButtonGrid.Children.Remove(m_SawTest)
Case DirectCutPages.SingleDrill
LeftButtonGrid.Children.Remove(m_SingleDrill)
ManageControls()
End Sub
Friend Sub ManageControls()
Select Case m_ActiveControl
Case Controls.DirectCutUC
MachineButtonGrid.Children.Remove(m_ControlsDirectCutUC)
m_ControlsDirectCutUC.DirectCutPage_Unloaded(Nothing, Nothing)
Case Controls.DirectCutUC1
MachineButtonGrid.Children.Remove(m_ControlsDirectCutUC1)
m_ControlsDirectCutUC1.DirectCutPage_Unloaded(Nothing, Nothing)
Case Controls.MachineButtonUC
MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
ControlsMachineBtn.IsChecked = False
Case Controls.VacuumButtonUC
MachineButtonGrid.Children.Remove(m_VacuumMachineButton)
VacuumMachineBtn.IsChecked = False
End Select
End Sub
Friend Sub LoadLastDirectCutControls()
Select Case m_ActiveControl
Case Controls.DirectCutUC
MachineButtonGrid.Children.Add(m_ControlsDirectCutUC)
Case Controls.DirectCutUC1
MachineButtonGrid.Children.Add(m_ControlsDirectCutUC1)
Case Else
m_ActiveControl = Controls.DirectCutUC
MachineButtonGrid.Children.Add(m_ControlsDirectCutUC)
End Select
If ControlsMachineBtn.IsChecked Then
MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
ControlsMachineBtn.IsChecked = False
End If
If VacuumMachineBtn.IsChecked Then
MachineButtonGrid.Children.Remove(m_VacuumMachineButton)
VacuumMachineBtn.IsChecked = False
End If
End Sub
Private Sub ManualModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualModeBtn.Click
+1 -1
View File
@@ -65,7 +65,7 @@
<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="LenghtTxBl" Grid.Column="0" Grid.Row="4"
+12 -4
View File
@@ -66,6 +66,7 @@ Public Class FlatteningCut
Right
End Enum
' Per abilitare la spianatura con la FRESA deve essere imposatato a TRUE il flag "Usa Fresa" nella pagina MACCHINA (campo INCISIONI)
Private Sub FlatteningCut_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Creo lista modalità di acquisizione punto
m_PointsModeArray(PT_MODE.SAW) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24)
@@ -189,7 +190,7 @@ Public Class FlatteningCut
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -567,6 +568,7 @@ Public Class FlatteningCut
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -609,18 +611,21 @@ Public Class FlatteningCut
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
EgtMdbSave()
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
' ricavo l'ingombro di lavorazione in funzione dell'utensile selezionato
Private Function GetFootPrintTool() As Double
' vedere nella pagina Allarm il capito "Incisioni"
Dim bForceUseMill As Boolean = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, 1, m_MainWindow.GetMachIniFile()) <> 0)
Dim dFootPrint As Double = 0
' verifico quale lavorazione è attiva
If Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrSawing) Then
If Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrSawing) AndAlso Not bForceUseMill Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dFootPrint)
ElseIf Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrMilling) Then
Dim sCurrMill = m_MainWindow.m_CurrentMachine.sCurrMill
GetDrillFromDrilling(sCurrMill, m_MainWindow.m_CurrentMachine.sCurrMilling)
'GetDrillFromDrilling(sCurrMill, m_MainWindow.m_CurrentMachine.sCurrMilling)
GetMillFromMilling(sCurrMill, m_MainWindow.m_CurrentMachine.sCurrMilling)
' recupero informazioni della fresa in uso
EgtTdbSetCurrTool(sCurrMill)
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dFootPrint)
@@ -652,6 +657,9 @@ Public Class FlatteningCut
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
If (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, 1, m_MainWindow.GetMachIniFile()) <> 0) Then
EgtSetInfo(nCutId, INFO_WIDTH, GetFootPrintTool)
End If
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, 0)
' Imposto prima direzione
EgtSetInfo(nCutId, INFO_DIR, 1)
+4 -4
View File
@@ -61,12 +61,12 @@
<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="SideAngleTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Grid Grid.Row="5" Grid.ColumnSpan="2">
@@ -89,7 +89,7 @@
<TextBlock Name="DimPzXTxBl" Grid.Column="2" Grid.Row="0"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="NumPzXTxBx" Grid.Column="0" Grid.Row="1" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPzXTxBx" Grid.Column="0" Grid.Row="1" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPzXTxBx" Grid.Column="2" Grid.Row="1" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}" />
@@ -99,7 +99,7 @@
<TextBlock Name="DimPzYTxBl" Grid.Column="2" Grid.Row="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="NumPzYTxBx" Grid.Column="0" Grid.Row="3" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPzYTxBx" Grid.Column="0" Grid.Row="3" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPzYTxBx" Grid.Column="2" Grid.Row="3" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}" />
+3 -2
View File
@@ -168,7 +168,7 @@ Public Class GridCut
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -494,6 +494,7 @@ Public Class GridCut
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -534,7 +535,7 @@ Public Class GridCut
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateGridCut() As Boolean
+2 -2
View File
@@ -69,10 +69,10 @@
<EgtWPFLib:EgtTextBox x:Name="L3TxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Button x:Name="R1Btn" Grid.Row="4" Height="60" Width="60" Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<EgtWPFLib:EgtTextBox x:Name="R1TxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox x:Name="R1TxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Button x:Name="R2Btn" Grid.Row="5" Height="60" Width="60" Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<EgtWPFLib:EgtTextBox x:Name="R2TxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox x:Name="R2TxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Grid Grid.Row="7" Grid.ColumnSpan="2">
+3 -1
View File
@@ -21,10 +21,12 @@ Public Class ManualAxesMoveUC
' Messaggi
L1SawThChBx.Content = EgtMsg(90232) ' Spessore lama
L2SawThChBx.Content = EgtMsg(90232) ' Spessore lama
AddHandler m_Timer.Tick, AddressOf Timer_tick
End Sub
Private Sub ManualAxesMove_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
m_CN = m_MainWindow.m_DirectCutPageUC.m_CN
' Valori feed e speed da lama corrente
Dim dTemp As Double = 0
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
@@ -338,7 +340,7 @@ Public Class ManualAxesMoveUC
End Function
Private Sub BackBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Sub G0Btn_Checked(sender As Object, e As RoutedEventArgs) Handles G0Btn.Checked
+12 -12
View File
@@ -68,12 +68,12 @@
<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="SideAngleTxBl" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Grid Grid.Row="6" Grid.ColumnSpan="2" Visibility="Visible">
@@ -124,70 +124,70 @@
<TextBlock Name="Num1TxBl" Grid.Column="0" Grid.Row="0"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz1TxBx" Grid.Column="1" Grid.Row="0" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz1TxBx" Grid.Column="1" Grid.Row="0" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz1TxBx" Grid.Column="3" Grid.Row="0" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num2TxBl" Grid.Column="0" Grid.Row="1"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz2TxBx" Grid.Column="1" Grid.Row="1" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz2TxBx" Grid.Column="1" Grid.Row="1" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz2TxBx" Grid.Column="3" Grid.Row="1" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num3TxBl" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz3TxBx" Grid.Column="1" Grid.Row="2" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz3TxBx" Grid.Column="1" Grid.Row="2" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz3TxBx" Grid.Column="3" Grid.Row="2" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num4TxBl" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz4TxBx" Grid.Column="1" Grid.Row="3" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz4TxBx" Grid.Column="1" Grid.Row="3" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz4TxBx" Grid.Column="3" Grid.Row="3" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num5TxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz5TxBx" Grid.Column="1" Grid.Row="4" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz5TxBx" Grid.Column="1" Grid.Row="4" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz5TxBx" Grid.Column="3" Grid.Row="4" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num6TxBl" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz6TxBx" Grid.Column="1" Grid.Row="5" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz6TxBx" Grid.Column="1" Grid.Row="5" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz6TxBx" Grid.Column="3" Grid.Row="5" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num7TxBl" Grid.Column="0" Grid.Row="6"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz7TxBx" Grid.Column="1" Grid.Row="6" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz7TxBx" Grid.Column="1" Grid.Row="6" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz7TxBx" Grid.Column="3" Grid.Row="6" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num8TxBl" Grid.Column="0" Grid.Row="7"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz8TxBx" Grid.Column="1" Grid.Row="7" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz8TxBx" Grid.Column="1" Grid.Row="7" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz8TxBx" Grid.Column="3" Grid.Row="7" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num9TxBl" Grid.Column="0" Grid.Row="8"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz9TxBx" Grid.Column="1" Grid.Row="8" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz9TxBx" Grid.Column="1" Grid.Row="8" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz9TxBx" Grid.Column="3" Grid.Row="8" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Num10TxBl" Grid.Column="0" Grid.Row="9"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="NumPz10TxBx" Grid.Column="1" Grid.Row="9" Width="75"
<EgtWPFLib:EgtTextBox Name="NumPz10TxBx" Grid.Column="1" Grid.Row="9" Width="75" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPz10TxBx" Grid.Column="3" Grid.Row="9" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
+3 -2
View File
@@ -195,7 +195,7 @@ Public Class MultipleCut
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -540,6 +540,7 @@ Public Class MultipleCut
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -580,7 +581,7 @@ Public Class MultipleCut
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateMultipleCut() As Boolean
+7 -3
View File
@@ -6,6 +6,8 @@ Public Class Polishing
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
Private m_refControlDirectCutUC As ControlsDirectCutUC1
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Flag di simulazione in corso
@@ -30,6 +32,7 @@ Public Class Polishing
Private Sub Polishing_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Attivo la pagina
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_refControlDirectCutUC = m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC1
m_bActive = True
' Se rientro da simulazione
If m_bSimul Then
@@ -60,7 +63,7 @@ Public Class Polishing
If PolishingCmBx.SelectedIndex < 0 Then
m_bPoliOk = False
UpdateSimulOkBtn()
End If
End If
' Rendo semitrasparente il grezzo
Dim nRawSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
EgtSetAlpha( nRawSolidId, 60)
@@ -72,7 +75,7 @@ Public Class Polishing
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_refControlDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC1.DirectCutPages.DirectCut
' Cancello eventuali lucidature
RemovePolishings()
' Riattivo eventuali lavorazioni presenti
@@ -148,6 +151,7 @@ Public Class Polishing
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -188,7 +192,7 @@ Public Class Polishing
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreatePolishing( sKitName As String) As Boolean
+1 -1
View File
@@ -70,7 +70,7 @@
<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="OffsetTxBl" Grid.Column="0" Grid.Row="5"
+5 -2
View File
@@ -5,6 +5,7 @@ Public Class SawTestUC
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
Private m_refControlDirectCutUC As ControlsDirectCutUC1
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Flag di simulazione in corso
@@ -76,6 +77,7 @@ Public Class SawTestUC
Private Sub SawTest_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Attivo la pagina
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_refControlDirectCutUC = m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC1
m_bActive = True
' Se rientro da simulazione
If m_bSimul Then
@@ -139,7 +141,7 @@ Public Class SawTestUC
WritePrivateProfileString( S_DIRECTCUTS, K_DC_TEST_OFFSET, DoubleToString( m_dOffset, 2), m_MainWindow.GetIniFile())
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_refControlDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC1.DirectCutPages.DirectCut1
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -419,6 +421,7 @@ Public Class SawTestUC
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -459,7 +462,7 @@ Public Class SawTestUC
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_refControlDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateSingleCut() As Boolean
+3 -2
View File
@@ -363,7 +363,7 @@ Public Class SingleCutAuto
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -715,6 +715,7 @@ Public Class SingleCutAuto
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -758,7 +759,7 @@ Public Class SingleCutAuto
' reimposto il precedetne utensile e lavorazione
m_MainWindow.m_CurrentMachine.sCurrSaw = m_PrecSaw
m_MainWindow.m_CurrentMachine.sCurrSawing = m_PrecSawing
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateSingleCut() As Boolean
+2 -2
View File
@@ -69,12 +69,12 @@
<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="SideAngleTxBl" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0"
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="5" Margin="0,0,6,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="OffsetTxBl" Grid.Column="0" Grid.Row="6"
+10 -6
View File
@@ -157,7 +157,7 @@ Public Class SingleCutUC
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -524,6 +524,7 @@ Public Class SingleCutUC
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -564,7 +565,7 @@ Public Class SingleCutUC
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateSingleCut() As Boolean
@@ -582,7 +583,7 @@ Public Class SingleCutUC
Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0
' se è impostata una lavorazione di lama
' Se è impostata una lavorazione di lama
If Not String.IsNullOrEmpty(sSawing) Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
End If
@@ -598,9 +599,12 @@ Public Class SingleCutUC
Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
If Math.Abs(m_dOffset) > 10 * EPS_SMALL Then
Dim dTotOffset = m_dOffset
If m_bSawTh Then dTotOffset += If( m_dOffset > 0, dThick, -dThick)
' Applico la correzione di spessore lama -> anche se Offset=0! ver_2.5b1
Dim dTotOffset = m_dOffset
If m_bSawTh Then
dTotOffset += If(m_dOffset > 0, dThick, -dThick)
EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
Else
EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
End If
' Imposto affondamento e angolo di fianco sul taglio
+3 -2
View File
@@ -136,7 +136,7 @@ Public Class SingleDrillUC
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ActiveDirectCutPage = DirectCutPageUC.DirectCutPages.DirectCut
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
@@ -342,6 +342,7 @@ Public Class SingleDrillUC
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
@@ -382,7 +383,7 @@ Public Class SingleDrillUC
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.LeftButtonGrid.Children.Remove(Me)
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateSingleDrill() As Boolean
+162
View File
@@ -0,0 +1,162 @@
<UserControl x:Class="SquaringUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="597.3" d:DesignWidth="256">
<!--<Border CornerRadius="{StaticResource Page_CornerRadius}" Background="{StaticResource OmagCut_LightGray}">-->
<Border Style="{DynamicResource OmagCut_DirectCutPageBorder}">
<!-- Definizione della Grid MultipleCut -->
<Grid Name="SingleCutGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--<Grid Grid.Row="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ToggleButton Name="Point1Btn" Grid.Column="0"
Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Acquisisci-P1Img}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</ToggleButton>
<ToggleButton Name="Point2Btn" Grid.Column="1"
Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Acquisisci-P2Img}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</ToggleButton>
</Grid>-->
<!--<ComboBox Name="PointModeCmBx" Grid.Row="1" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}"
Margin="6,0,6,0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>-->
<!--<TextBlock Name="DepthTxBl" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DepthTxBx" Grid.Column="1" Grid.Row="2" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>-->
<TextBlock Name="OffsetTxBl" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="OffsetTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="ExtraLenTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="ExtraLenTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<!--<TextBlock Name="DirectionTxBl" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="DirectionTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="SideAngleTxBl" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="1" Grid.Row="4" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>-->
<!--<Grid Grid.Row="5" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2"/>
<ColumnDefinition Width="1.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Border Grid.Column="1" Grid.Row="0" Grid.RowSpan="4" Background="Black" />
<TextBlock Name="NumPzXTxBl" Grid.Column="0" Grid.Row="0"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<TextBlock Name="DimPzXTxBl" Grid.Column="2" Grid.Row="0"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="NumPzXTxBx" Grid.Column="0" Grid.Row="1" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPzXTxBx" Grid.Column="2" Grid.Row="1" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="NumPzYTxBl" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<TextBlock Name="DimPzYTxBl" Grid.Column="2" Grid.Row="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="NumPzYTxBx" Grid.Column="0" Grid.Row="3" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="DimPzYTxBx" Grid.Column="2" Grid.Row="3" Width="75"
Style="{StaticResource OmagCut_CalculatorTextBox}" />
</Grid>
<TextBlock Name="SideTxBl" Grid.Row="6" Grid.ColumnSpan="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<CheckBox Name="SideChBx" Grid.Row="6" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_CheckBox_Single}"
HorizontalAlignment="Right" Margin="0,0,6,0"/>-->
<Grid Grid.Row="7" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Name="XcoordTxBl" Grid.Column="0" Text="X"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="XcoordTxBx" Grid.Column="1" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="YcoordTxBl" Grid.Column="2" Text="Y"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}" HorizontalAlignment="Center"/>
<EgtWPFLib:EgtTextBox Name="YcoordTxBx" Grid.Column="3" Margin="0,0,6,0"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
</Grid>
<Grid Grid.Row="11" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="SimulBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource SimulaImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource EseguiImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</UserControl>
+442
View File
@@ -0,0 +1,442 @@
Imports EgtUILib
Public Class SquaringUC
' Riferimenti a pagine
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Flag di simulazione in corso
Private m_bSimul As Boolean = False
' Origine tavola e dati grezzo
Private m_bRawOk As Boolean = False
Private m_ptTabOri As Point3d
Private m_ptRawMin As Point3d
Private m_ptRawMax As Point3d
' Parametri P1 acquisito
Private m_ptTipP1 As Point3d
Private m_vtToolP1 As Vector3d
' Parametri P2 acquisito
Private m_ptTipP2 As Point3d
Private m_vtToolP2 As Vector3d
' Parametri della lavorazione
Private m_bCutOk As Boolean = False
Private m_dDepth As Double = 0
Private m_dOffsetSquaring As Double = 150
Private m_dExtraLength As Double = 0
Private m_dAngO As Double = 180
Private m_dAngV As Double = 0
Private m_nNumX As Integer = 0
Private m_dDimX As Double = 0
Private m_nNumY As Integer = 0
Private m_dDimY As Double = 0
Private m_bHeadSide As Boolean = False
' Punto selezionato nel disegno
Private m_ptPrev As Point3d
' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL
' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0
Private Const MIN_CUT_LEN As Double = 10.0
Private Const MAX_SIDE_ANG As Double = 60.0
'Costante che indica il lato in cui posizionare i tagli
Private Enum CutSide As Integer
Left
Right
End Enum
Private Sub GridCut_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
OffsetTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 28)
' 90260=Extra length
ExtraLenTxBl.Text = EgtMsg(90260)
SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1)
OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30)
' Carico i dati dell'ultimo taglio
m_dOffsetSquaring = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_OFFSET_SQUARING, m_dOffsetSquaring, m_MainWindow.GetIniFile())
m_dExtraLength = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_EXTRA_LEN_SQUARING, m_dExtraLength, m_MainWindow.GetIniFile())
m_dDepth = 0
m_dAngO = 90
m_dAngV = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_GRID_ANGV, m_dAngV, m_MainWindow.GetIniFile())
m_nNumX = 1
m_dDimX = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_GRID_DIMX, m_dDimX, m_MainWindow.GetIniFile())
m_nNumY = 1
m_dDimY = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_GRID_DIMY, m_dDimY, m_MainWindow.GetIniFile())
m_bHeadSide = False
End Sub
Private Sub Squaring_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Attivo la pagina
m_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_bActive = True
' Se rientro da simulazione
If m_bSimul Then
m_bSimul = False
' Disabilito registrazione progetto modificato
EgtDisableModified()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw()
Return
End If
' Disabilito registrazione progetto modificato
EgtDisableModified()
' Creo layer temporaneo per crocette
m_nTempLay = EgtCreateGroup(GDB_ID.ROOT)
EgtSetLevel(m_nTempLay, GDB_LV.TEMP)
' Origine tavola
m_bRawOk = True
If Not EgtGetTableRef(1, m_ptTabOri) Then
m_bRawOk = False
EgtOutLog("Error on TableRef1")
End If
' Dati del grezzo
If Not GetRawBox(m_ptRawMin, m_ptRawMax) Then
m_bRawOk = False
EgtOutLog("Error on RawBox")
End If
' calcolo lalavorazione di squadratura
RefreshSquaring()
End Sub
Private Sub RefreshSquaring()
If Not m_bRawOk Then Return
Dim m_ThickSaw As Double
EgtTdbGetCurrToolParam(MCH_TP.THICK, m_ThickSaw)
m_dDepth = CamAuto.GetRawHeight()
m_dDimX = Math.Abs(m_ptRawMax.x - m_ptRawMin.x) - 2 * (m_dOffsetSquaring)
m_dDimY = Math.Abs(m_ptRawMax.y - m_ptRawMin.y) - 2 * (m_dOffsetSquaring)
Dim ptStart As New Point3d(m_ptRawMin.x + m_dOffsetSquaring - m_ThickSaw, m_ptRawMin.y + m_dOffsetSquaring, m_ptRawMin.z)
Dim ptEnd As New Point3d(ptStart.x + m_dDimX, ptStart.y, m_ptRawMin.z)
SetCoordVisibility(True)
ShowCoord()
OffsetTxBx.Text = LenToString(m_dOffsetSquaring, 1)
ExtraLenTxBx.Text = LenToString(m_dExtraLength, 1)
m_bCutOk = False
UpdateSimulOkBtn()
SquaringPoint(ptStart, ptEnd)
m_ptPrev = ptStart
End Sub
Friend Sub Squaring_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
' Salvo i dati correnti
' Salvo i dati correnti
WritePrivateProfileString(S_DIRECTCUTS, K_DC_OFFSET_SQUARING, DoubleToString(m_dOffsetSquaring, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_DIRECTCUTS, K_DC_EXTRA_LEN_SQUARING, DoubleToString(m_dExtraLength, 2), m_MainWindow.GetIniFile())
' Se non vado in simulazione
If Not m_bSimul Then
' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette
EgtErase(m_nTempLay)
' Rimuovo eventuale pezzo per taglio diretto
EraseDirectCutPart()
' Riattivo eventuali lavorazioni presenti
ActivateAllMachinings()
' Abilito registrazione progetto modificato
EgtEnableModified()
' Nascondo la macchina
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw()
End If
' Dichiaro pagina non attiva
m_bActive = False
End Sub
Private Sub UpdateSimulOkBtn()
If m_bCutOk Then
SimulBtn.IsEnabled = True
SimulBtn.Foreground = Brushes.Black
OkBtn.IsEnabled = True
OkBtn.Foreground = Brushes.Black
Else
SimulBtn.IsEnabled = False
SimulBtn.Foreground = Brushes.DarkGray
OkBtn.IsEnabled = False
OkBtn.Foreground = Brushes.DarkGray
End If
End Sub
Private Sub SquaringPoint(ptMin As Point3d, ptMax As Point3d)
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
'------------- BOTTOM LEFT -------------------
' Assegno punto selezionato nel disegno a m_ptTipP1
m_ptTipP1 = ptMin
' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
'------------- TOP RIGHT -------------------
' Assegno punto selezionato nel disegno a m_ptTipP2
m_ptTipP2 = ptMax
' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit)
' Se il secondo punto non coincide con il primo, disegno il taglio
Dim vtDiff As Vector3d = m_ptTipP2 - m_ptTipP1
vtDiff.z = 0
Dim dLen As Double
Dim dAngVertDeg As Double
Dim dAngOrizzDeg As Double
vtDiff.ToSpherical(dLen, dAngVertDeg, dAngOrizzDeg)
If dLen > EPS_SMALL Then
m_dAngO = dAngOrizzDeg
CreateGridCut()
' visuliazzo tavola
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw()
End If
End Sub
Private Sub OffsetTxBx_EgtClosed(sender As Object, e As EventArgs) Handles OffsetTxBx.EgtClosed
' Verifico che l'offset impostato non sia superiore a quello massimo
Dim dMaxOffset As Double = Math.Min(m_dDimX, m_dDimY) / 2 - 15
Dim dOffset As Double = 0
StringToLen(OffsetTxBx.Text, dOffset)
If dOffset < 0 Then
dOffset = 0
ElseIf dOffset > dMaxOffset Then
dOffset = dMaxOffset
End If
m_dOffsetSquaring = dOffset
OffsetTxBx.Text = LenToString(m_dOffsetSquaring, 2)
' Disegno il taglio
RefreshSquaring()
EgtDraw()
End Sub
Private Sub ExtraLength_EgtClosed(sender As Object, e As EventArgs) Handles ExtraLenTxBx.EgtClosed
' Verifico che il valore indicato sia almeno maggiore dell'offset indicato
Dim dOffset As Double = 0
StringToLen(OffsetTxBx.Text, dOffset)
Dim MadExtraLeng As Double = Math.Abs(dOffset)
Dim dExtraLen As Double
StringToLen(ExtraLenTxBx.Text, dExtraLen)
If dExtraLen < 0 AndAlso dExtraLen < -MadExtraLeng Then
dExtraLen = 0
End If
m_dExtraLength = dExtraLen
ExtraLenTxBx.Text = LenToString(m_dExtraLength, 2)
' Disegno il taglio
RefreshSquaring()
EgtDraw()
End Sub
Private Sub SimulBtn_Click(sender As Object, e As RoutedEventArgs) Handles SimulBtn.Click
' Verifico ci sia un taglio valido
If Not m_bCutOk Then Return
' Salvo il progetto con le lavorazioni
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Predispongo passaggio a simulazione
m_bSimul = True
m_CurrProjPage.m_SceneButtons.MeasureBtn.IsChecked = False
m_CurrProjPage.CurrProjGrid.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
m_CurrProjPage.CurrentProjectPageGrid.Children.Remove(m_MainWindow.m_DirectCutPageUC)
m_MainWindow.m_PrevActivePage = MainWindow.Pages.DirectCut
m_CurrProjPage.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_SimulationPage)
m_MainWindow.m_ActivePage = MainWindow.Pages.Simulation
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
#If TRIAL Then
m_CurrProjPage.SetWarningMessage("Trial Version")
#Else
' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage("Office Version")
Return
End If
' Verifico ci sia un taglio valido
If Not m_bCutOk Then Return
' Salvo il progetto con le lavorazioni
Dim sMchPath As String = m_MainWindow.GetTempDir() & "\" & "DirectProj.nge"
m_MainWindow.m_CurrentProjectPageUC.SaveFile(sMchPath, False)
' Genero file CNC (lancio anche se errore in precedenza)
Dim sCncPath As String = m_MainWindow.GetCncDir() & "\DirectCut" & m_MainWindow.m_CurrentMachine.sIsoFileExt
Dim bOk As Boolean = EgtGenerate(sCncPath, "OmagCut ver." & m_MainWindow.GetVersion())
' Se errore in generazione, segnalo l'errore ed esco
If Not bOk Then
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return
End If
' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then
' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript(True)
End If
#End If
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.LeftButtonGrid.Children.Remove(Me)
End Sub
Private Function CreateGridCut() As Boolean
' Verifico sia definito il punto iniziale e il grezzo
If 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 parallelo alla lama
Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0
' Funzione che crea i tagli successivi al primo
MultiplyCut(nLayerId)
' 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 MultiplyCut(nLayerId As Integer) As Boolean
' Recupero lo spessore del taglio della lama o del waterjet correntemente attiva
Dim nType As Integer = 0
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType)
Dim dThick As Double = 0
EgtTdbGetCurrToolParam(If(nType = MCH_TY.SAW_STD, MCH_TP.THICK, MCH_TP.DIAM), dThick)
' Ricalcolo lo spessore in base all'inclinazione
dThick = dThick / Math.Cos(m_dAngV * Math.PI / 180)
' Imposto angolo di rotazione a seconda del lato dei tagli paralleli
Dim dRotAngOX As Double = 90
' Recupero dati da interfaccia
Dim dDimPzX As Double = m_dDimX
Dim nNumPzX As Integer = m_nNumX
Dim dDimPzY As Double = m_dDimY
Dim nNumPzY As Integer = m_nNumY
' Definisco vettore di spostamento
Dim vtDelta As Vector3d
' Calcolo primo taglio parallelo
Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0
If dDimPzY <> 0 And nNumPzY > 0 And dDimPzX <> 0 And nNumPzX > 0 Then
Dim dLenX As Double = dThick + (dDimPzX + dThick) * nNumPzX
Dim nCutParaId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, dLenX + 0.1)
' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutParaId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutParaId, INFO_SIDE_ANGLE, m_dAngV)
' Allungo la geometria
EgtExtendCurveStartByLen(nCutParaId, m_dOffsetSquaring + m_dExtraLength)
EgtExtendCurveEndByLen(nCutParaId, m_dOffsetSquaring + +m_dExtraLength)
' Calcolo vettore di spostamento
vtDelta = Vector3d.FromPolar((dDimPzY + dThick), m_dAngO)
' Ruoto il vettore di traslazione
vtDelta.Rotate(Vector3d.Z_AX, dRotAngOX)
For Index As Integer = 1 To nNumPzY
Dim vtPerpMove As Vector3d = Index * vtDelta
' Creo copie
Dim nCut2Id = EgtCopyGlob(nCutParaId, nLayerId)
EgtMove(nCut2Id, vtPerpMove, GDB_RT.GLOB)
Next
' Calcolo primo taglio perpendicolare
Dim dLenY As Double = dThick + (dDimPzY + dThick) * nNumPzY
' Arretro il punto di partenza di uno spessore lama
Dim vtDeltaPos As Vector3d = Vector3d.FromPolar(dThick + 0.1, m_dAngO - 90)
Dim nCutPerpId = EgtCreateLinePDL(nLayerId, ptStart + vtDeltaPos, m_dAngO + 90, dLenY + 0.2)
' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutPerpId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutPerpId, INFO_SIDE_ANGLE, m_dAngV)
' Allungo la geometria
EgtExtendCurveStartByLen(nCutPerpId, m_dOffsetSquaring + m_dExtraLength)
EgtExtendCurveEndByLen(nCutPerpId, m_dOffsetSquaring + +m_dExtraLength)
' Calcolo secondo vettore di spostamento
vtDelta = Vector3d.FromPolar((dDimPzX + dThick), m_dAngO)
For Index As Integer = 1 To nNumPzX
Dim vtPerpMove As Vector3d = vtDelta * Index
' Creo copie
Dim nCut3Id = EgtCopyGlob(nCutPerpId, nLayerId)
EgtMove(nCut3Id, vtPerpMove, GDB_RT.GLOB)
Next
End If
Return True
End Function
Private Sub SetCoordVisibility(bShow As Boolean)
XcoordTxBl.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
XcoordTxBx.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
YcoordTxBl.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
YcoordTxBx.Visibility = If(bShow, Windows.Visibility.Visible, Windows.Visibility.Hidden)
End Sub
Private Sub ShowCoord()
Dim ptText As Point3d = m_ptPrev
ptText.ToLoc(New Frame3d(m_ptTabOri))
XcoordTxBx.Text = LenToString(ptText.x, 2)
YcoordTxBx.Text = LenToString(ptText.y, 2)
End Sub
Private Function SetMachineInCurrPos() As Boolean
' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return False
' Recupero il nome degli assi macchina
Dim sL1 As String = String.Empty
Dim sL2 As String = String.Empty
Dim sL3 As String = String.Empty
Dim sR1 As String = String.Empty
Dim sR2 As String = String.Empty
If Not m_MainWindow.m_CNCommunication.GetAxesNames(sL1, sL2, sL3, sR1, sR2) Then Return False
' Visualizzo macchina in posizione
EgtSetAxisPos(sL1, dL1)
EgtSetAxisPos(sL2, dL2)
EgtSetAxisPos(sL3, dL3)
EgtSetAxisPos(sR1, dR1)
EgtSetAxisPos(sR2, dR2)
Return True
End Function
End Class
+2 -2
View File
@@ -199,12 +199,12 @@
Visibility="Collapsed"
Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Right"
Width="60" Height="30" Margin="0,0,0,0"
Width="60" Height="30" Margin="0,0,0,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="Parameter2FTxBx"
Grid.Column="3" Grid.Row="1"
HorizontalAlignment="Right"
Width="60" Height="30" Margin="0,0,0,0"
Width="60" Height="30" Margin="0,0,0,0" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<!-- Spessore aletta -->
+15 -9
View File
@@ -76,9 +76,9 @@ Public Class AlzFrontUC
m_MainWindow.m_DrawPageUC.DripCutBtn.IsEnabled = False
' nome dei parametri condivisi
Parameter1TxBl.Text = "Altezza"
Parameter2TxBl.Text = "Delta angolo"
Parameter5TxBl.Text = "Spessore"
Parameter1TxBl.Text = EgtMsg(91134)
Parameter2TxBl.Text = EgtMsg(91135)
Parameter5TxBl.Text = EgtMsg(91136)
EgtZoom(ZM.ALL)
End Sub
@@ -96,8 +96,14 @@ Public Class AlzFrontUC
Dim LabelId As Integer = GDB_ID.NULL
' definisco i valori delle altezza e degli angoli di spoglia per le alzatine e i frontalini (letti da file ini del programma)
GetPrivateProfileString(S_ALZFRONT, K_ALZ_HEIGHT, "0", Parameter1ATxBx.Text, m_MainWindow.GetIniFile)
GetPrivateProfileString(S_ALZFRONT, K_FRONT_HEIGHT, "0", Parameter1FTxBx.Text, m_MainWindow.GetIniFile)
Dim sVal As String = String.Empty
Dim dVal As Double = 0
GetPrivateProfileString(S_ALZFRONT, K_ALZ_HEIGHT, "0", sVal, m_MainWindow.GetIniFile)
Utility.StringToDouble(sVal, dVal)
Parameter1ATxBx.Text = Utility.LenToString(dVal, 4)
GetPrivateProfileString(S_ALZFRONT, K_FRONT_HEIGHT, "0", sVal, m_MainWindow.GetIniFile)
Utility.StringToDouble(sVal, dVal)
Parameter1FTxBx.Text = Utility.LenToString(dVal, 4)
GetPrivateProfileString(S_ALZFRONT, K_ALZ_DELTA_ANG, "0", Parameter2ATxBx.Text, m_MainWindow.GetIniFile)
GetPrivateProfileString(S_ALZFRONT, K_FRONT_DELTA_ANG, "0", Parameter2FTxBx.Text, m_MainWindow.GetIniFile)
Parameter5TxBx.Text = Utility.LenToString(m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight, 2)
@@ -607,9 +613,9 @@ Public Class AlzFrontUC
Private Sub ParameterA1TxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter1ATxBx.EgtClosed
' Nuovo angolo di inclinazione
Dim dValue As Double
StringToDouble(Parameter1ATxBx.Text, dValue)
StringToLen(Parameter1ATxBx.Text, dValue)
' salvo il valore nel file ini e inserisco il valore nel file lua
WritePrivateProfileString("Alz&Front", "A_Height", Parameter1ATxBx.Text, m_MainWindow.GetIniFile())
WritePrivateProfileString("Alz&Front", "A_Height", DoubleToString(dValue, 3), m_MainWindow.GetIniFile())
' aggiorno il disegno
LoadCurrentCompo()
End Sub
@@ -618,9 +624,9 @@ Public Class AlzFrontUC
Private Sub Parameter1FTxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter1FTxBx.EgtClosed
' Nuovo angolo di inclinazione
Dim dValue As Double
StringToDouble(Parameter1FTxBx.Text, dValue)
StringToLen(Parameter1FTxBx.Text, dValue)
' salvo il valore nel file ini e inserisco il valore nel file lua
WritePrivateProfileString("Alz&Front", "F_Height", Parameter1FTxBx.Text, m_MainWindow.GetIniFile())
WritePrivateProfileString("Alz&Front", "F_Height", DoubleToString(dValue, 3), m_MainWindow.GetIniFile())
' aggiorno il disegno
LoadCurrentCompo()
End Sub
+39
View File
@@ -75,6 +75,7 @@ Public Class CompoDimensionUC
m_DrawPage.sCompoName.StartsWith("PBagno") Then
ShowInternalBtn(True)
ShowAlzFrontBtn(bEnableAlzFront)
m_DrawPage.MessageGrid.Visibility = Visibility.Hidden
Else
ShowInternalBtn(False)
ShowAlzFrontBtn(False)
@@ -336,6 +337,7 @@ Public Class CompoDimensionUC
Dim nCmpInfo As Integer = 0
If EgtGetInfo(nId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
EgtSetStatus(nId, GDB_ST.OFF)
UpdateInLoopReference(nCmp)
Exit While
End If
nId = EgtGetNextName(nId, "HoleLabels")
@@ -379,5 +381,42 @@ Public Class CompoDimensionUC
EgtDraw()
End Sub
Private Sub UpdateInLoopReference(nCmp As Integer)
' aggiorno il layer "FiloTop"
Dim nIdInLoop As Integer = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "InLoop")
While nIdInLoop <> GDB_ID.NULL
Dim nCmpInfoIL As Integer = 0
If EgtGetInfo(nIdInLoop, "ID", nCmpInfoIL) AndAlso nCmp = nCmpInfoIL Then
Dim nLayFiloTop As Integer = GDB_ID.NULL
EgtGetInfo(nIdInLoop, "FiloTopRef", nLayFiloTop)
If nLayFiloTop <> GDB_ID.NULL Then
Dim LocalList As New List(Of Integer) From {nIdInLoop}
m_DrawPage.m_FiloTopUC.CreateFiloTopPreView(LocalList)
EgtSetStatus(nLayFiloTop, GDB_ST.ON_)
Exit While
End If
End If
nIdInLoop = EgtGetNextName(nIdInLoop, "InLoop")
End While
End Sub
' riceve la info "ID" della componente
Public Sub SetStatusVisibilityInLoopReference(nCmp As Integer, Status As GDB_ST)
' aggiorno il layer "FiloTop"
Dim nIdInLoop As Integer = EgtGetFirstNameInGroup(EgtGetFirstGroupInGroup(GDB_ID.ROOT), "InLoop")
While nIdInLoop <> GDB_ID.NULL
Dim nCmpInfoIL As Integer = 0
If EgtGetInfo(nIdInLoop, "ID", nCmpInfoIL) AndAlso nCmp = nCmpInfoIL Then
Dim nLayFiloTop As Integer = GDB_ID.NULL
EgtGetInfo(nIdInLoop, "FiloTopRef", nLayFiloTop)
If nLayFiloTop <> GDB_ID.NULL Then
EgtSetStatus(nLayFiloTop, Status)
Exit While
End If
End If
nIdInLoop = EgtGetNextName(nIdInLoop, "InLoop")
End While
End Sub
#End Region ' METHODS for InternalCompo
End Class
+24
View File
@@ -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
+2 -2
View File
@@ -64,7 +64,7 @@
<ToggleButton Name="DimensionBtn" Grid.Column="0" Style="{DynamicResource OmagCut_YellowToggleButton}" Visibility="Collapsed"/>
</Grid>
<Grid Name="VariablesGrd" Grid.Row="1" Grid.ColumnSpan="2"/>
<Grid Name="VariablesGrd" Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="2"/>
<Grid Name="MessageGrid" Grid.Row="2" Grid.ColumnSpan="2">
<TextBlock Name="MessageTxBl" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
@@ -124,7 +124,7 @@
<TextBlock Name="PartNumTxBl" Grid.Column="0" Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"
TextAlignment="Right"/>
<EgtWPFLib:EgtTextBox Name="PartNumTxBx" Grid.Column="1" Width="60"
<EgtWPFLib:EgtTextBox Name="PartNumTxBx" Grid.Column="1" Width="60" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
</Grid>
+57 -28
View File
@@ -41,6 +41,9 @@ Public Class DrawPageUC
Friend m_bDrawOk As Boolean = False
Private m_bFirst As Boolean = True
Private m_SelListHole As New List(Of Integer)
Private m_DeselectListHole As New List(Of Integer)
' questa variabile serve per risalire al nome della componente che ospita i componenti interni att
Friend m_sMainCompo As String = String.Empty
@@ -360,6 +363,8 @@ Public Class DrawPageUC
Dim nCmpInfo As Integer = 0
If EgtGetInfo(nHLId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
EgtSetStatus(nHLId, GDB_ST.ON_)
' nascondo eventuali FiloTop
m_CompoDimension.SetStatusVisibilityInLoopReference(nCmp, GDB_ST.OFF)
Exit While
End If
nHLId = EgtGetNextName(nHLId, "HoleLabels")
@@ -462,21 +467,25 @@ Public Class DrawPageUC
EgtDeselectObj(nId)
EgtDeselectObj(nLayId)
Dim sLayName As String = ""
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo( nLayId, INFO_FILOTOP) Then
EgtRemoveInfo( nLayId, INFO_FILOTOP)
EgtRemoveInfo( nLayId, INFO_OFFSET)
EgtRemoveInfo( nLayId, INFO_DEPTH)
EgtResetColor( nLayId)
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
EgtRemoveInfo(nLayId, INFO_FILOTOP)
EgtRemoveInfo(nLayId, INFO_OFFSET)
EgtRemoveInfo(nLayId, INFO_DEPTH)
EgtResetColor(nLayId)
End If
m_DeselectListHole.Add(nLayId)
m_SelListHole.Remove(nLayId)
Else
Dim sLayName As String = ""
If EgtGetName( nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then
EgtSelectObj( nId)
EgtSelectObj( nLayId)
EgtSetInfo( nLayId, INFO_FILOTOP, 1)
EgtSetInfo( nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset)
EgtSetInfo( nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth)
EgtSetColor( nLayId, New Color3d(255, 255, 255))
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then
EgtSelectObj(nId)
EgtSelectObj(nLayId)
EgtSetInfo(nLayId, INFO_FILOTOP, 1)
EgtSetInfo(nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset)
EgtSetInfo(nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth)
EgtSetColor(nLayId, New Color3d(255, 255, 255))
m_SelListHole.Add(nLayId)
m_DeselectListHole.Remove(nLayId)
End If
End If
EgtDraw()
@@ -484,6 +493,8 @@ Public Class DrawPageUC
End If
nId = EgtGetNextObjInSelWin()
End While
m_FiloTopUC.CreateFiloTopPreView(m_SelListHole)
m_FiloTopUC.EraseFiloTopPreview(m_DeselectListHole)
End Sub
Private Sub OnShowDistanceVector(sender As Object, vtDist As Vector3d) Handles DrawScene.OnShowDistanceVector
@@ -633,10 +644,17 @@ Public Class DrawPageUC
m_CompoDimension.GetNameEdit(j).Text = m_CVars(i - 1).m_sName
m_CompoDimension.GetNameEdit(j).Visibility = Windows.Visibility.Visible
m_CompoDimension.GetValueEdit(j).Text = m_CVars(i - 1).ToString()
'Dim dVal As Double
'StringToLen(m_CVars(i - 1).ToString(), dVal)
'm_CompoDimension.GetValueEdit(j).Text = LenToString(dVal, 3)
m_CompoDimension.GetValueEdit(j).Visibility = Windows.Visibility.Visible
If m_CVars(i - 1).m_nType = 5 Then
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).Keyboard = EgtTextBox.KeyboardType.Alphanumeric
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).KeyboardDimension = 600
ElseIf m_CVars(i - 1).m_nType = 4 Then
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).Keyboard = EgtTextBox.KeyboardType.Calculator
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).IsLength = False
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).KeyboardDimension = 300
Else
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).Keyboard = EgtTextBox.KeyboardType.Calculator
TryCast(m_CompoDimension.GetValueEdit(j), EgtTextBox).KeyboardDimension = 300
@@ -1162,8 +1180,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
@@ -1242,6 +1262,8 @@ Public Class DrawPageUC
Private Sub EngraveBtn_Click(sender As Object, e As RoutedEventArgs) Handles EngraveBtn.Click
m_SceneButtons.MeasureBtn.IsChecked = False
If EngraveBtn.IsChecked Then
' Aumento lo spazio disponibile per inserirei i parametri (tolgo spazio ad eventuali messaggi)
Grid.SetRowSpan(VariablesGrd, 2)
' Imposto modalità
m_SideAngleUC.m_Mode = SideAngleUC.ModeOpt.ENGRAVE
If m_ActiveComponentPage = Pages.CompoDimension Then
@@ -1273,6 +1295,7 @@ Public Class DrawPageUC
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
Else
Grid.SetRowSpan(VariablesGrd, 2)
VariablesGrd.Children.Remove(m_SideAngleUC)
If m_PrevSideAnglePage = Pages.CompoDimension Then
VariablesGrd.Children.Add(m_CompoDimension)
@@ -1362,6 +1385,8 @@ Public Class DrawPageUC
End Sub
Private Sub FiloTopBtn_Click(sender As Object, e As RoutedEventArgs) Handles FiloTopBtn.Click
m_SelListHole.Clear()
m_DeselectListHole.Clear()
m_SceneButtons.MeasureBtn.IsChecked = False
If FiloTopBtn.IsChecked Then
' Imposto modalità
@@ -1375,25 +1400,25 @@ Public Class DrawPageUC
m_PrevSideAnglePage = Pages.AlzFront
LeftButtonGrd.Children.Remove(m_CompoDimension.m_AlzFrontPage)
End If
VariablesGrd.Children.Add( m_FiloTopUC)
VariablesGrd.Children.Add(m_FiloTopUC)
SideAngleBtn.IsEnabled = False
EngraveBtn.IsEnabled = False
DripCutBtn.IsEnabled = False
MessageGrid.Visibility = Windows.Visibility.Hidden
BackBtn.Visibility = Windows.Visibility.Hidden
MessageTxBx.Text = EgtMsg( MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
' In ogni caso, nascondo layer delle misure
Dim PartId As Integer = EgtGetFirstInGroup( GDB_ID.ROOT)
EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup( PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
Dim PartId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
Else
VariablesGrd.Children.Remove( m_FiloTopUC)
VariablesGrd.Children.Remove(m_FiloTopUC)
If m_PrevSideAnglePage = Pages.CompoDimension Then
VariablesGrd.Children.Add( m_CompoDimension)
VariablesGrd.Children.Add(m_CompoDimension)
ElseIf m_PrevSideAnglePage = Pages.InternalComponent Then
LeftButtonGrd.Children.Add( m_CompoDimension.m_InternalCompoPage)
LeftButtonGrd.Children.Add(m_CompoDimension.m_InternalCompoPage)
End If
SideAngleBtn.IsEnabled = m_bEnableSideAngle
EngraveBtn.IsEnabled = True
@@ -1467,7 +1492,10 @@ Public Class DrawPageUC
Case 2 ' intero
Return m_nVal.ToString()
Case 3 ' lunghezza
Return DoubleToString(EgtToUiUnits(m_dVal), 4)
'Dim dVal As Double
'StringToLen(m_sVal, dVal)
Return LenToString(m_dVal, 4)
'Return DoubleToString(EgtToUiUnits(m_dVal), 4)
Case 4 ' double
Return DoubleToString(m_dVal, 4)
Case 5 ' stringa
@@ -1492,12 +1520,13 @@ Public Class DrawPageUC
End If
Case 3 ' lunghezza
Dim dVal As Double
If StringToDouble(sVal, dVal) Then
If bConvertUnits Then
m_dVal = EgtFromUiUnits(dVal)
Else
m_dVal = dVal
End If
If bConvertUnits Then
StringToLen(sVal, dVal)
m_dVal = dVal
Return True
Else
StringToDouble(sVal, dVal)
m_dVal = dVal
Return True
End If
Case 4 ' double
+6 -2
View File
@@ -41,7 +41,11 @@
FontSize="{DynamicResource FontSize_LowerCaseCharacter}"/>
<EgtWPFLib:EgtTextBox Name="Parameter2TxBx" Grid.Column="1" Grid.Row="11" Width="90"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
</Grid>
<TextBlock Name="Parameter3TxBl" Grid.Row="12" Text="Arrotonda"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_LowerCaseCharacter}"/>
<CheckBox Name="Parameter3ChBx" Grid.Row="12" Grid.Column="1" Style="{StaticResource OmagCut_CheckBox_Single}"
HorizontalAlignment="Center" Margin="0,0,6,0"/>
</Grid>
</UserControl>
+174 -2
View File
@@ -7,6 +7,8 @@ Public Class FiloTopUC
' Riferimento alla pagina che ha aperto SideAngleUC
Private m_CallingPage As MainWindow.Pages
Private m_SelList As New List(Of Integer)
' Offset della sfilettatura
Private m_dFiloTopOffset As Double = 0
Friend ReadOnly Property FiloTopOffset As Double
@@ -23,6 +25,13 @@ Public Class FiloTopUC
End Get
End Property
' esegue l'arrotindamento sugli angoli del percorso utensile
Private m_bCornerradius As Boolean = False
Friend ReadOnly Property bCornerRadius As Boolean
Get
Return m_bCornerradius
End Get
End Property
Private Sub FiloTopUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Imposto riferimenti ad altre pagine
@@ -43,14 +52,18 @@ Public Class FiloTopUC
End If
' Gestisco visualizzazione dei parametri
Parameter2TxBl.Visibility = Windows.Visibility.Visible
ParameterTxBl.Visibility = Windows.Visibility.Visible
Parameter2TxBx.Visibility = Windows.Visibility.Visible
Parameter3TxBl.Visibility = Windows.Visibility.Visible
' Aggiorno valori
m_dFiloTopOffset = GetPrivateProfileDouble( S_SIDES, K_FILOTOPOFFSET, 5, m_MainWindow.GetIniFile())
ParameterTxBx.Text = LenToString( m_dFiloTopOffset, 3)
m_dFiloTopDepth = GetPrivateProfileDouble( S_SIDES, K_FILOTOPDEPTH, 5, m_MainWindow.GetIniFile())
Parameter2TxBx.Text = LenToString( m_dFiloTopDepth, 3)
Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3)
m_bCornerradius = GetPrivateProfileInt(S_SIDES, K_ROUNDOFF, 0, m_MainWindow.GetIniFile()) <> 0
Parameter3ChBx.IsChecked = m_bCornerradius
m_SelList.Clear()
End Sub
Private Sub FiloTopUC_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
@@ -74,6 +87,8 @@ Public Class FiloTopUC
End While
nPartId = EgtGetNextPart(nPartId)
End While
' aggiorno la preview
CreateFiloTopPreView(m_SelList, False)
End Sub
Private Sub Parameter2TxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter2TxBx.EgtClosed
@@ -95,4 +110,161 @@ Public Class FiloTopUC
End While
End Sub
Private Sub Parameter3ChBx_Checked() Handles Parameter3ChBx.Click
' Assegno il valore
m_bCornerradius = Parameter3ChBx.IsChecked
WritePrivateProfileString(S_SIDES, K_ROUNDOFF, If(m_bCornerradius, "1", "0"), m_MainWindow.GetIniFile())
' Aggiorno le info del profilo
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
While nLayId <> GDB_ID.NULL
Dim sLayName As String = ""
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
EgtSetInfo(nLayId, INFO_ROUNDOFF, If(m_bCornerradius, 1, 0))
End If
nLayId = EgtGetNextLayer(nLayId)
End While
nPartId = EgtGetNextPart(nPartId)
End While
' aggiorno la preview (False = blocco la lettura dei dati della componente)
CreateFiloTopPreView(m_SelList, False)
End Sub
Public Sub CreateFiloTopPreView(SelList As List(Of Integer), Optional bReadInfo As Boolean = True)
m_SelList = SelList
If m_SelList.Count < 1 Then Return
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
While nLayId <> GDB_ID.NULL
Dim sLayName As String = ""
' verifico che lemento corrente appartenga all'elenco degli elementi selezionati
Dim bIsSelected As Boolean = m_SelList.Find(Function(value As Integer)
Return value = nLayId
End Function) <> 0
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) AndAlso bIsSelected Then
' ---------------------- Inizio GESTIONE PREVIEW percorso -------------------------------
Dim nLayFiloTop As Integer = GDB_ID.NULL
Dim nInLoopRef As Integer = GDB_ID.NULL
nLayFiloTop = EgtGetFirstNameInGroup(nPartId, "FiloTop")
EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
' verifico il Layer "FiloTop" sia associato all'InLoop corrente
While (nLayFiloTop <> GDB_ID.NULL AndAlso nInLoopRef <> nLayId)
nLayFiloTop = EgtGetNextName(nLayFiloTop, "FiloTop")
EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
End While
' se non esiste il Layer "FiloTop"
If nLayFiloTop = GDB_ID.NULL Then
' lo creo
nLayFiloTop = EgtCreateGroup(nPartId)
EgtSetName(nLayFiloTop, "FiloTop")
EgtSetInfo(nLayFiloTop, "InLoopRef", nLayId)
EgtSetInfo(nLayId, "FiloTopRef", nLayFiloTop)
End If
' carico i dati del filo top selezionato
If bReadInfo Then
EgtGetInfo(nLayFiloTop, INFO_OFFSET, m_dFiloTopOffset)
ParameterTxBx.Text = LenToString(m_dFiloTopOffset, 3)
EgtGetInfo(nLayFiloTop, INFO_DEPTH, m_dFiloTopDepth)
Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3)
Dim nVal As Integer = If(m_bCornerradius, 1, 0)
EgtGetInfo(nLayFiloTop, INFO_ROUNDOFF, nVal)
Parameter3ChBx.IsChecked = If(nVal = 1, True, False)
m_bCornerradius = Parameter3ChBx.IsChecked
End If
' procedo alla creazione della curva
Dim nIdCompoCurve As Integer = GDB_ID.NULL
' cancello un eventuale curva composita creata in precedenza
nIdCompoCurve = EgtGetFirstNameInGroup(nLayFiloTop, "OffsetPreView")
If nIdCompoCurve <> GDB_ID.NULL Then
EgtErase(nIdCompoCurve)
End If
Dim nCompoCurve As New List(Of Integer)
' costruisco il percorso chiuso dati i lati di contorno
Dim nLine As Integer = EgtGetFirstInGroup(nLayId)
While nLine <> GDB_ID.NULL
nCompoCurve.Add(nLine)
nLine = EgtGetNext(nLine)
End While
Dim PtNearStart As Point3d
Dim nInfoRoundOff As Integer = If(m_bCornerradius, 1, 0)
nIdCompoCurve = EgtCreateCurveCompoByChain(nLayFiloTop, nCompoCurve.ToArray, PtNearStart, False)
EgtSetName(nIdCompoCurve, "OffsetPreView")
' salvo i dati nel layer FiloTop
EgtSetInfo(nLayFiloTop, INFO_OFFSET, m_dFiloTopOffset)
EgtSetInfo(nLayFiloTop, INFO_DEPTH, m_dFiloTopDepth)
EgtSetInfo(nLayFiloTop, INFO_ROUNDOFF, nInfoRoundOff)
Dim bOk As Boolean = False
' leggo che tipo di offset applicare (Round, Extend)
If nInfoRoundOff <> 1 Then
bOk = EgtOffsetCurve(nIdCompoCurve, -m_dFiloTopOffset, OFF_TYPE.EXTEND)
Else
bOk = EgtOffsetCurve(nIdCompoCurve, -m_dFiloTopOffset, OFF_TYPE.FILLET)
End If
' se la generazione della curva non va a buon fine
If Not bOk Then
EgtErase(nLayFiloTop)
EgtRemoveInfo(nLayId, "FiloTopRef")
EgtOutLog("Error in generation OffsetPreView in TopEgde ")
End If
' ---------------------- Fine GESTIONE PREVIEW percorso -------------------------------
End If
nLayId = EgtGetNextLayer(nLayId)
End While
nPartId = EgtGetNextPart(nPartId)
End While
EgtDraw()
End Sub
' riceve la lista dei LayerFiloTop che devono essere eliminati
Public Sub EraseFiloTopPreview(EraseList As List(Of Integer))
Dim m_EraseList As List(Of Integer) = EraseList
If m_EraseList.Count < 1 Then Return
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
While nLayId <> GDB_ID.NULL
Dim sLayName As String = ""
Dim bIsSelected As Boolean = m_EraseList.Find(Function(value As Integer)
Return value = nLayId
End Function) <> 0
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso bIsSelected Then
' ---------------------- Inizio GESTIONE PREVIEW percorso -------------------------------
Dim nLayFiloTop As Integer = GDB_ID.NULL
Dim nInLoopRef As Integer = GDB_ID.NULL
nLayFiloTop = EgtGetFirstNameInGroup(nPartId, "FiloTop")
EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
' cerco il Layer associato all'InLoop corrente
While (nLayFiloTop <> GDB_ID.NULL AndAlso nInLoopRef <> nLayId)
nLayFiloTop = EgtGetNextName(nLayFiloTop, "FiloTop")
EgtGetInfo(nLayFiloTop, "InLoopRef", nInLoopRef)
End While
' se non esiste il Layer
If nLayFiloTop = GDB_ID.NULL Then
' esco
Return
Else
' lo elimino
EgtErase(nLayFiloTop)
EraseList.Remove(nLayId)
End If
' ---------------------- Fine GESTIONE PREVIEW percorso -------------------------------
End If
nLayId = EgtGetNextLayer(nLayId)
End While
nPartId = EgtGetNextPart(nPartId)
End While
EgtDraw()
End Sub
End Class
+17 -4
View File
@@ -49,15 +49,28 @@
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="8*"/>
<RowDefinition Height="7.25*"/>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Name="FilePathTxBl" Foreground="White" Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
<ListBox Name="FileListBox" Grid.Row="1" Grid.RowSpan="2" ItemTemplate="{DynamicResource DataTemplateItem}"
ItemsSource="{Binding ItemList}"/>
ItemsSource="{Binding ItemList}"/>
<Border Name="MessageBrd" Grid.Row="4" BorderThickness="0,1,0,0" BorderBrush="Gray">
<Grid Grid.Row="3" Margin="0,0,8,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<EgtWPFLib:EgtTextBox Name="FindTxBx" Grid.Column="0"
Style="{DynamicResource OmagCut_LeftKeyboardTextBoxNoBorder}"/>
<Button Name="ClearFindBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" Margin="0,6,2,6">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}" Width="30" />
</Button>
</Grid>
<Border Name="MessageBrd" Grid.Row="5" BorderThickness="0,1,0,0" BorderBrush="Gray">
<TextBlock Name="MessageTxBx" TextAlignment="Center"
Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
</Border>
@@ -101,7 +114,7 @@
<TextBlock Name="PartNumTxBl" Grid.Column="0" Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"
TextAlignment="Right"/>
<EgtWPFLib:EgtTextBox Name="PartNumTxBx" Grid.Column="1" Width="60"
<EgtWPFLib:EgtTextBox Name="PartNumTxBx" Grid.Column="1" Width="60" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
</Grid>
+33 -1
View File
@@ -297,6 +297,36 @@ Public Class ImportPageUC
End Select
End Sub
Private Sub FindTxBx_EgtClosed(sender As Object, e As EventArgs) Handles FindTxBx.EgtClosed
' Elimino spazi iniziali e finali
FindTxBx.Text = FindTxBx.Text.Trim()
' ricarico la lista dei file
LoadCurrDir()
Dim UpdateListFile As New List(Of IconListBoxItem)
' Se esiste un nome
If Not String.IsNullOrWhiteSpace(FindTxBx.Text) Then
For Each Item As IconListBoxItem In FileListBox.ItemsSource
If Item.Name.ToLower.Contains(FindTxBx.Text.ToLower) Then
UpdateListFile.Add(Item)
End If
Next
End If
If UpdateListFile.Count > 0 Then
FileListBox.ItemsSource = UpdateListFile
Else
FileListBox.ItemsSource = m_MainWindow.m_ImportItemList
End If
End Sub
Private Sub ClearFindBtn_Click() Handles ClearFindBtn.Click
' svuoto la text
FindTxBx.Text = ""
' ricarico la lista dei file
LoadCurrDir()
' e aggiorno la lista dei file
FileListBox.ItemsSource = m_MainWindow.m_ImportItemList
End Sub
Private Function ClearView() As Boolean
' Pulisco il DB geometrico locale
EgtNewFile()
@@ -809,7 +839,7 @@ Public Class ImportPageUC
PartId = EgtGetNextPart(PartId)
End While
' identificativo univoico del gruppo di pezzi, se più di un pezzo
' identificativo univoico del gruppo di pezzi, se più di un "Repeat"
Dim sGUICode As New List(Of String)
' Scrivo testi per nesting
@@ -851,6 +881,7 @@ Public Class ImportPageUC
EgtInsertFile(sTmpFile)
Dim FirstOfImport As Integer = EgtGetNextPart(nFirst2Id)
If FirstOfImport = GDB_ID.NULL Then FirstOfImport = EgtGetFirstPart()
Dim Index As Integer = 1
While FirstOfImport <> GDB_ID.NULL And Index <= sGUICode.Count
If Not String.IsNullOrEmpty(sGUICode(Index - 1)) Then
@@ -887,6 +918,7 @@ Public Class ImportPageUC
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
' Ciclo sui pezzi inseriti
nId = nFirstId
While nId <> GDB_ID.NULL
+29 -18
View File
@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="597.1" d:DesignWidth="255.9">
d:DesignHeight="636.9" d:DesignWidth="255.9">
<!-- Definizione della Grid Laterale -->
<Grid Name="VariablesCompoGrid" Grid.RowSpan="2">
@@ -28,7 +28,7 @@
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="4*"/>
<RowDefinition Height="5*"/>
<!--<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>-->
@@ -56,7 +56,7 @@
<TextBlock Name="Entity1" Grid.Row="1" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A1" Grid.Column="1" Grid.Row="1" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A1TxBx" Grid.Column="2" Grid.Row="1" Width="60"
<EgtWPFLib:EgtTextBox Name="A1TxBx" Grid.Column="2" Grid.Row="1" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H1TxBx" Grid.Column="3" Grid.Row="1" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -64,7 +64,7 @@
<TextBlock Name="Entity2" Grid.Row="2" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A2" Grid.Column="1" Grid.Row="2" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A2TxBx" Grid.Column="2" Grid.Row="2" Width="60"
<EgtWPFLib:EgtTextBox Name="A2TxBx" Grid.Column="2" Grid.Row="2" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H2TxBx" Grid.Column="3" Grid.Row="2" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -72,7 +72,7 @@
<TextBlock Name="Entity3" Grid.Row="3" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A3" Grid.Column="1" Grid.Row="3" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A3TxBx" Grid.Column="2" Grid.Row="3" Width="60"
<EgtWPFLib:EgtTextBox Name="A3TxBx" Grid.Column="2" Grid.Row="3" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H3TxBx" Grid.Column="3" Grid.Row="3" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -80,7 +80,7 @@
<TextBlock Name="Entity4" Grid.Row="4" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A4" Grid.Column="1" Grid.Row="4" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A4TxBx" Grid.Column="2" Grid.Row="4" Width="60"
<EgtWPFLib:EgtTextBox Name="A4TxBx" Grid.Column="2" Grid.Row="4" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H4TxBx" Grid.Column="3" Grid.Row="4" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -88,7 +88,7 @@
<TextBlock Name="Entity5" Grid.Row="5" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A5" Grid.Column="1" Grid.Row="5" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A5TxBx" Grid.Column="2" Grid.Row="5" Width="60"
<EgtWPFLib:EgtTextBox Name="A5TxBx" Grid.Column="2" Grid.Row="5" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H5TxBx" Grid.Column="3" Grid.Row="5" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -96,7 +96,7 @@
<TextBlock Name="Entity6" Grid.Row="6" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A6" Grid.Column="1" Grid.Row="6" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A6TxBx" Grid.Column="2" Grid.Row="6" Width="60"
<EgtWPFLib:EgtTextBox Name="A6TxBx" Grid.Column="2" Grid.Row="6" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H6TxBx" Grid.Column="3" Grid.Row="6" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -104,7 +104,7 @@
<TextBlock Name="Entity7" Grid.Row="7" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A7" Grid.Column="1" Grid.Row="7" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A7TxBx" Grid.Column="2" Grid.Row="7" Width="60"
<EgtWPFLib:EgtTextBox Name="A7TxBx" Grid.Column="2" Grid.Row="7" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H7TxBx" Grid.Column="3" Grid.Row="7" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -112,7 +112,7 @@
<TextBlock Name="Entity8" Grid.Row="8" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A8" Grid.Column="1" Grid.Row="8" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A8TxBx" Grid.Column="2" Grid.Row="8" Width="60"
<EgtWPFLib:EgtTextBox Name="A8TxBx" Grid.Column="2" Grid.Row="8" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H8TxBx" Grid.Column="3" Grid.Row="8" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -120,7 +120,7 @@
<TextBlock Name="Entity9" Grid.Row="9" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A9" Grid.Column="1" Grid.Row="9" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A9TxBx" Grid.Column="2" Grid.Row="9" Width="60"
<EgtWPFLib:EgtTextBox Name="A9TxBx" Grid.Column="2" Grid.Row="9" Width="60" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H9TxBx" Grid.Column="3" Grid.Row="9" Width="60"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
@@ -128,14 +128,14 @@
<TextBlock Name="Entity10" Grid.Row="10" Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<CheckBox Name="A10" Grid.Column="1" Grid.Row="10" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="A10TxBx" Grid.Column="2" Grid.Row="10" Width="60"
<EgtWPFLib:EgtTextBox Name="A10TxBx" Grid.Column="2" Grid.Row="10" Width="60" IsLength="False"
Margin="0,0,0,-2"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="H10TxBx" Grid.Column="3" Grid.Row="10" Width="60"
Margin="0,0,0,-2"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<Grid Grid.Column="0" Grid.Row="12" Grid.ColumnSpan="4">
<Grid Grid.Column="0" Grid.Row="12" Grid.ColumnSpan="4" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.3*"/>
@@ -143,10 +143,11 @@
<ColumnDefinition Width="0.6*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.9*"/>
</Grid.RowDefinitions>
<TextBlock Name="Parameter1TxBl" Grid.Row="0" Grid.ColumnSpan="2"
@@ -168,7 +169,7 @@
<UniformGrid Rows="1" Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="2" Width="90" >
<EgtWPFLib:EgtTextBox Name="Parameter2aTxBx"
Grid.Column="2" Grid.Row="12"
Width="40" Height="30"
Width="40" Height="30" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<EgtWPFLib:EgtTextBox Name="Parameter2bTxBx"
Grid.Column="3" Grid.Row="12"
@@ -196,6 +197,16 @@
Margin="0,0,0,-2"
Width="85" Height="30"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="Parameter5TxBl" Grid.Row="4" Grid.ColumnSpan="2"
Text="Angolo"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_LowerCaseCharacter}"/>
<EgtWPFLib:EgtTextBox Name="Parameter5TxBx"
Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="4"
Margin="0,0,0,-2"
Width="85" Height="30" IsLength="False"
Style="{StaticResource OmagCut_CalculatorTextBox}"/>
</Grid>
<!--<TextBlock Name="Parameter1TxBl" Grid.Row="11" Text="Offset"
+119 -8
View File
@@ -34,7 +34,9 @@ Public Class SideAngleUC
Friend m_dDripOffset2 As Double = 0
Friend m_nEngrNbr2 As Integer = 1
Friend m_dDripDepth As Double = 10
Friend m_dEngraveDepth2 As Double = 15
Friend m_dDripShort As Double = 0
Friend m_dEngraveAngle As Double = 0
Private CurrEntityDrip As DripEntity
@@ -105,6 +107,9 @@ Public Class SideAngleUC
' Accorciamento
Parameter4TxBl.Visibility = Windows.Visibility.Hidden
Parameter4TxBx.Visibility = Windows.Visibility.Hidden
' Angolo
Parameter5TxBl.Visibility = Windows.Visibility.Hidden
Parameter5TxBx.Visibility = Windows.Visibility.Hidden
Else
' se aggiungo gli ENGRAVE e i DRIP
@@ -116,10 +121,12 @@ Public Class SideAngleUC
GetAngleTxBxFromIndex(Index).Visibility = Windows.Visibility.Visible
GetHeelTxBxFromIndex(Index).Visibility = Windows.Visibility.Visible
Next
' Offset
Parameter1TxBl.Visibility = Windows.Visibility.Visible
Parameter1TxBx.Visibility = Windows.Visibility.Visible
Parameter2TxBl.Visibility = Windows.Visibility.Visible
' Offset2
If m_Mode <> ModeOpt.ENGRAVE Then
Parameter2TxBx.Visibility = Windows.Visibility.Visible
@@ -130,12 +137,33 @@ Public Class SideAngleUC
Parameter2aTxBx.Visibility = Windows.Visibility.Visible
Parameter2bTxBx.Visibility = Windows.Visibility.Visible
End If
' Affondamento
Parameter3TxBl.Visibility = Windows.Visibility.Visible
Parameter3TxBx.Visibility = Windows.Visibility.Visible
' Accorciamento
Parameter4TxBl.Visibility = Windows.Visibility.Hidden
Parameter4TxBx.Visibility = Windows.Visibility.Hidden
If m_Mode = ModeOpt.ENGRAVE Then
' modifico il nome del messaggio
Parameter4TxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 11) & "2" ' Affondamento2
Parameter4TxBl.Visibility = Windows.Visibility.Visible
Parameter4TxBx.Visibility = Windows.Visibility.Visible
Else
Parameter4TxBl.Visibility = Windows.Visibility.Hidden
Parameter4TxBx.Visibility = Windows.Visibility.Hidden
End If
' Angolo
If m_Mode = ModeOpt.ENGRAVE Then
' modifico il nome del messaggio
Parameter5TxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 9) ' Angolo
Parameter5TxBl.Visibility = Windows.Visibility.Visible
Parameter5TxBx.Visibility = Windows.Visibility.Visible
Else
Parameter5TxBl.Visibility = Windows.Visibility.Hidden
Parameter5TxBx.Visibility = Windows.Visibility.Hidden
End If
End If
' Gestisco Checkbox e nomi in base al numero di lati inclinabili
@@ -156,12 +184,14 @@ Public Class SideAngleUC
m_nEngrNbr2 = GetPrivateProfileInt( S_SIDES, K_ENGRAVENUMBER2, 1, m_MainWindow.GetIniFile())
m_dDripOffset2 = GetPrivateProfileDouble( S_SIDES, K_ENGRAVEOFFSET2, 0, m_MainWindow.GetIniFile())
m_dDripDepth = GetPrivateProfileDouble( S_SIDES, K_ENGRAVEDEPTH, 10, m_MainWindow.GetIniFile())
m_dDripShort = GetPrivateProfileDouble( S_SIDES, K_ENGRAVESHORT, 0, m_MainWindow.GetIniFile())
Parameter1TxBx.Text = LenToString( m_dDripOffset, 3)
m_dEngraveDepth2 = GetPrivateProfileDouble(S_SIDES, K_ENGRAVEDEPTH2, 0, m_MainWindow.GetIniFile())
m_dEngraveAngle = GetPrivateProfileDouble(S_SIDES, K_ENGRAVEANGLE, 0, m_MainWindow.GetIniFile())
Parameter1TxBx.Text = LenToString(m_dDripOffset, 3)
Parameter2aTxBx.Text = m_nEngrNbr2.ToString()
Parameter2bTxBx.Text = LenToString( m_dDripOffset2, 3)
Parameter3TxBx.Text = LenToString( m_dDripDepth, 3)
Parameter4TxBx.Text = LenToString( m_dDripShort, 3)
Parameter4TxBx.Text = LenToString(m_dEngraveDepth2, 3)
Parameter5TxBx.Text = DoubleToString(m_dEngraveAngle, 3)
End If
' Aggiorno visualizzazione
@@ -489,7 +519,9 @@ Public Class SideAngleUC
WritePrivateProfileString( S_SIDES, K_ENGRAVENUMBER2, m_nEngrNbr2.ToString(), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_SIDES, K_ENGRAVEOFFSET2, LenToString(m_dDripOffset2, 3), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_SIDES, K_ENGRAVEDEPTH, LenToString(m_dDripDepth, 3), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_SIDES, K_ENGRAVEDEPTH2, LenToString(m_dEngraveDepth2, 3), m_MainWindow.GetIniFile())
'WritePrivateProfileString( S_SIDES, K_ENGRAVESHORT, DoubleToString( m_dDripShort, 3), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_SIDES, K_ENGRAVEANGLE, LenToString(m_dEngraveAngle, 3), m_MainWindow.GetIniFile())
End If
EgtDraw()
@@ -635,7 +667,7 @@ Public Class SideAngleUC
SideAngle.AddTextToLine(sEntityName, TextLayer, CurrLine, 20, dBBoxRad, True)
End Sub
' Funzione che crea le geometrie dei gocciolatoi
' Funzione che crea le geometrie dei gocciolatoi (NON UTILIZZATA)
Friend Sub CreateDripGeomOLD(nPartId As Integer)
' Recupero Id layer di contorno esterno
Dim nOutLoopId = EgtGetFirstNameInGroup(nPartId, NAME_OUTLOOP)
@@ -830,6 +862,9 @@ Public Class SideAngleUC
Dim nCrvId = EgtGetFirstInGroup(DripLayer)
While nCrvId <> GDB_ID.NULL
EgtOffsetCurve(nCrvId, -m_dDripOffset, OFF_TYPE.EXTEND)
If m_Mode = ModeOpt.ENGRAVE Then
EgtSetInfo(nCrvId, INFO_DEPTH, m_dDripDepth)
End If
nCrvId = EgtGetNext(nCrvId)
End While
' Eventuali curve aggiuntive con offset2
@@ -840,10 +875,16 @@ Public Class SideAngleUC
For i As Integer = 1 To m_nEngrNbr2
Dim nNewId As Integer = EgtCopy(nCrvId, nCrvId, GDB_POS.AFTER)
EgtOffsetCurve(nNewId, -i * m_dDripOffset2, OFF_TYPE.EXTEND)
If m_Mode = ModeOpt.ENGRAVE Then
EgtSetInfo(nNewId, INFO_DEPTH, m_dEngraveDepth2)
End If
Next
nCrvId = nNextCrvId
End While
End If
Dim ListEngraveSideAng As New List(Of Integer)
If m_Mode = ModeOpt.DRIP Then
' Esplodo nelle curve componenti
nCrvId = EgtGetFirstInGroup(DripLayer)
@@ -863,14 +904,70 @@ Public Class SideAngleUC
End While
Else
' Assegno colore e attributi
Dim nInd As Integer = 0
nCrvId = EgtGetFirstInGroup(DripLayer)
While nCrvId <> GDB_ID.NULL
EgtSetColor(nCrvId, COL_MCH_DRIPCUT())
EgtSetInfo(nCrvId, INFO_DEPTH, m_dDripDepth)
'EgtSetInfo(nCrvId, INFO_DEPTH, m_dDripDepth)
EgtSetInfo(nCrvId, INFO_STRICT, If(m_dDripShort > EPS_SMALL, "3", "0"))
If nInd = 0 Then
' solo se m_dEngraveAngle > 0
If Math.Abs(m_dEngraveAngle) > EPS_ANG_SMALL Then
' salvo l'Id della curva che deve essere manipolato separatamente
ListEngraveSideAng.Add(nCrvId)
Else
EgtRemoveInfo(nCrvId, INFO_SIDE_ANGLE)
EgtModifyCurveThickness(nCrvId, -m_dEngraveDepth2)
End If
Else
If nInd = m_nEngrNbr2 Then
nInd = -1
End If
EgtModifyCurveThickness(nCrvId, -m_dEngraveDepth2)
End If
nInd = nInd + 1
If nInd > m_nEngrNbr2 Then nInd = 0
nCrvId = EgtGetNext(nCrvId)
End While
End If
SplitJointedSideEngrave(ListEngraveSideAng)
End Sub
Private Sub SplitJointedSideEngrave(ListEngraveSideAngId As List(Of Integer))
For Each nCrvId As Integer In ListEngraveSideAngId
' eventualmente separo il taglio inclinato
Dim dUs, dUe As Double
EgtCurveDomain(nCrvId, dUs, dUe)
Dim dU As Double = dUs
While dU < dUe ' + EPS_ZERO
Dim ptCurr As Point3d
EgtAtParamPoint(nCrvId, dU + 1, nCrvId, ptCurr)
' separa la curva in questo punto
Dim nNewCurvId As Integer = GDB_ID.NULL
If dUe > 1 Then
nNewCurvId = EgtSplitCurveAtPoint(nCrvId, ptCurr, GDB_RT.LOC)
Else
nNewCurvId = nCrvId
End If
EgtSetColor(nCrvId, COL_MCH_ONENGRAVE_ANG())
EgtSetInfo(nCrvId, INFO_SIDE_ANGLE, m_dEngraveAngle)
' recupero il vettore di estrusione della curva e la direzione della curva
Dim vtAux As Vector3d
EgtStartVector(nCrvId, vtAux)
Dim vtExtrusion As Vector3d
EgtCurveExtrusion(nCrvId, vtExtrusion)
' ruoto il vetottore nella nuova direzione
vtExtrusion.Rotate(vtAux, -m_dEngraveAngle)
' assegno il vettore di estrusione nella nuova direzione indicata (segno negativo perchè dentro il pezzo)
EgtModifyCurveExtrusion(nCrvId, vtExtrusion)
Dim ExtendFactor As Double = New Vector3d(0, 0, 1) * vtExtrusion
EgtModifyCurveThickness(nCrvId, -m_dDripDepth / ExtendFactor)
If dUe = 1 Then Exit While
nCrvId = nNewCurvId
' aggiorno i valori del dominio della curva che rimane
EgtCurveDomain(nCrvId, dUs, dUe)
End While
Next
End Sub
Private Sub PrevBtn_Click(sender As Object, e As RoutedEventArgs) Handles PrevBtn.Click
@@ -1304,11 +1401,25 @@ Public Class SideAngleUC
End Sub
Private Sub Parameter4TxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter4TxBx.EgtClosed
If m_Mode = ModeOpt.DRIP Or m_Mode = ModeOpt.ENGRAVE Then
If m_Mode = ModeOpt.DRIP Then
' Recupero il valore
StringToLen(Parameter4TxBx.Text, m_dDripShort)
' Creo le geometrie dei gocciolatoi
RefreshSideAngleText()
ElseIf m_Mode = ModeOpt.ENGRAVE Then
' Recupero il valore
StringToLen(Parameter4TxBx.Text, m_dEngraveDepth2)
' Creo le geometrie dei gocciolatoi
RefreshSideAngleText()
End If
End Sub
Private Sub Parameter5TxBx_EgtClosed(sender As Object, e As EventArgs) Handles Parameter5TxBx.EgtClosed
If m_Mode = ModeOpt.ENGRAVE Then
' Recupero il valore
StringToDouble(Parameter5TxBx.Text, m_dEngraveAngle)
' Creo le geometrie dei gocciolatoi
RefreshSideAngleText()
End If
End Sub
+158 -11
View File
@@ -1,16 +1,48 @@
<ResourceDictionary
x:Class="EgtDictionary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Project="clr-namespace:OmagCUT"
xmlns:ControlExtensions="clr-namespace:OmagCUT.ControlExtensions">
<ResourceDictionary x:Class="EgtDictionary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Project="clr-namespace:OmagCUT"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtPHOTOLib="clr-namespace:EgtPHOTOLib;assembly=EgtPHOTOLib"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
xmlns:ControlExtensions="clr-namespace:OmagCUT.ControlExtensions">
<!--Template che permette di andare a capo-->
<EgtWPFLib5:StatusBarVM x:Key="StatusBarVM"/>
<EgtWPFLib5:ShowPanelVM x:Key="ShowPanelVM"/>
<EgtWPFLib5:ViewPanelVM x:Key="ViewPanelVM"/>
<EgtWPFLib5:InstrumentPanelVM x:Key="InstrumentPanelVM"/>
<EgtPHOTOLib:ProjectSlabVM x:Key="ProjectSlabVM"/>
<EgtPHOTOLib:OptionPanelSlabVM x:Key="OptionPanelSlabVM"/>
<EgtPHOTOLib:ListPageSlabVM x:Key="ListPageSlabVM"/>
<EgtPHOTOLib:DetailPageSlabVM x:Key="DetailPageSlabVM"/>
<EgtPHOTOLib:SearchPanelSlabVM x:Key="SearchPanelSlabVM"/>
<EgtPHOTOLib:MyInstrumentPanelSlabVM x:Key="MyInstrumentPanelSlabVM"/>
<!--Colori predefiniti-->
<SolidColorBrush x:Key="Omag_Blue" Color="#FF095CA8" />
<SolidColorBrush x:Key="Omag_Yellow" Color="#FFFFCE5B" />
<SolidColorBrush x:Key="Omag_Red" Color="Red" />
<SolidColorBrush x:Key="Omag_Green" Color="LawnGreen" />
<SolidColorBrush x:Key="Omag_VeryLightGray" Color="#FFF2F2F2" />
<SolidColorBrush x:Key="Omag_LightGray" Color="LightGray" />
<SolidColorBrush x:Key="Omag_Gray" Color="#FF9E9E9E" />
<SolidColorBrush x:Key="Omag_DarkGray" Color="#FF444444" />
<SolidColorBrush x:Key="Omag_White" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="Omag_Black" Color="#FF000000" />
<SolidColorBrush x:Key="EgaltechBlue1" Color="#FF095CA8" />
<SolidColorBrush x:Key="EgaltechWhite" Color="#FFFFFFFF" />
<!--Template che permette di andare a capo-->
<DataTemplate x:Key="Button_DataTemplate_Wrap">
<TextBlock TextWrapping="Wrap" Text="{Binding}"/>
</DataTemplate>
<!--ButtonBase-->
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- Button Style -->
<Style TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle">
<Setter.Value>
@@ -71,7 +103,44 @@
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
<!--Template che permette di andare a capo-->
<DataTemplate x:Key="WrapButton_DataTemplate">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Binding}"/>
</DataTemplate>
<Style x:Key="ToolBar_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
</Style>
<Style x:Key="ToolBar_TextButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="80"/>
</Style>
<Style x:Key="OptionPanel_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="OptionPanel_TextButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
</Style>
<Style x:Key="OptionPanel_TextWrapButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="ContentTemplate" Value="{StaticResource WrapButton_DataTemplate}" />
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="Height" Value="45"/>
</Style>
<Style x:Key="OptionPanel_NestingButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="CompoWindow_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="40"/>
</Style>
<Style x:Key="EgtWPFLib5_InputButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="60"/>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
<!--Template che permette di andare a capo-->
<DataTemplate x:Key="CheckBox_DataTemplate_Wrap">
@@ -375,7 +444,59 @@
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
<Style x:Key="ToolBar_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
</Style>
<Style x:Key="ToolBar_TextToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="70"/>
</Style>
<Style x:Key="OptionPanel_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
</Style>
<Style x:Key="OptionPanel_NestingToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="CompoWindow_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="40"/>
</Style>
<Style x:Key="CompoWindow_WrapToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="ContentTemplate" Value="{StaticResource WrapButton_DataTemplate}" />
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Setter Property="Height" Value="40"/>
</Style>
<Style x:Key="Option_ColorButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Padding" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FFB8C3CD"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="OpacityMask" Value="#33FF0000"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" Value="#FFADB2B5"/>
<Setter Property="TextElement.Foreground" Value="#FF838383"/>
</Trigger>
</Style.Triggers>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
<!--TreeViewBase-->
<!--Style e colori della freccia di espansione, necessari per modificare il ContainerItemStyle perchè contiene riferimenti ad essi-->
@@ -431,6 +552,32 @@
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- EgtCustomWindow -->
<Style TargetType="{x:Type EgtWPFLib5:EgtCustomWindow}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtCustomWindow}}">
<Setter Property="TitleBarHeight" Value="32"/>
<Setter Property="TitleBarBrush" Value="{StaticResource Omag_LightGray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- EgtFloatingPanel -->
<Style x:Key="ToolBar_EgtFloatingPanel" TargetType="{x:Type EgtFloating:EgtFloatingPanel}" BasedOn="{StaticResource {x:Type EgtFloating:EgtFloatingPanel}}">
<Setter Property="Background" Value="{StaticResource Omag_Gray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<Style x:Key="Option_EgtFloatingPanel" TargetType="{x:Type EgtFloating:EgtFloatingPanel}" BasedOn="{StaticResource {x:Type EgtFloating:EgtFloatingPanel}}">
<Setter Property="IsToolBar" Value="False"/>
<Setter Property="TitleBarOrientation" Value="Vertical"/>
<Setter Property="Background" Value="{StaticResource Omag_Gray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<!-- ______________________________________________________________________________________________________________________ -->
</ResourceDictionary>
+522 -492
View File
File diff suppressed because it is too large Load Diff
+133 -21
View File
@@ -29,7 +29,7 @@ Public Class AlarmsPageUC
Private Sub AlarmsPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
'Assegno liste a combobox
' Assegno liste a combobox
CurrSawCmBx.ItemsSource = m_SawList
CurrDrillCmBx.ItemsSource = m_DrillList
CurrMillCmBx.ItemsSource = m_MillList
@@ -37,14 +37,24 @@ Public Class AlarmsPageUC
CurrWJetCmBx.ItemsSource = m_WaterJetList
AuxiliaryToolCmBx.ItemsSource = m_AuxToolTypeList
' Variabile che accorcia il riferimento alla macchina corrente
m_CurrentMachine = m_MainWindow.m_CurrentMachine
' Assegno lista ad elenco materiali
MaterialsLstBx.ItemsSource = m_MainWindow.m_CurrentMachine.Materials
MaterialsLstBx.ItemsSource = m_CurrentMachine.Materials
' Se non è impostato il controllo numerico, nascondo il bottone di tastatura lama
If GetPrivateProfileInt(S_NUMERICALCONTROL, K_TYPE, 0, m_MainWindow.GetMachIniFile()) = 0 Then
SawProbingBtn.Visibility = Windows.Visibility.Hidden
End If
' Se esiste un file lua valido allora mostro il pulsante per l'esecuzione dello script
If Not String.IsNullOrEmpty(GetExecLuaFile()) And
ExecLuaBtn.Visibility = Visibility.Visible Then
Else
ExecLuaBtn.Visibility = Visibility.Hidden
End If
' Imposto i messaggi letti dal file dei messaggi
CurrSawTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 1)
AuxiliaryToolTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 2)
@@ -81,7 +91,13 @@ Public Class AlarmsPageUC
TmDepthTxBl.Text = EgtMsg( 91063) ' Profondità
TmWidthTxBl.Text = EgtMsg( 91064) ' Larghezza
WJsParamGpBx.Header = EgtMsg( 91058) ' Parametri waterjet
WjIntCutsTxBl.Text = EgtMsg( 90930) ' Sempre sugli interni
WjIntCutsTxBl.Text = EgtMsg(90930) ' Sempre sugli interni
'-- INIZIO -- nuovi parametri per preforo lavello
HolesDiameterWJTxBl.Text = "Diameter"
HolesOffsetWJTxBl.Text = "Offset"
MinRadiusWJTxBl.Text = "Min Radius"
OneHoleInCornerWJTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 26)
'-- FINE -- nuovi parametri per preforo lavello
NestingParamGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 31) ' Nesting
AlignTxBl.Text = EgtMsg(90932) ' Allineato
GhigliottinaTxBl.Text = EgtMsg(91066) ' Ghigliottina
@@ -116,8 +132,6 @@ Public Class AlarmsPageUC
Private Sub AlarmsPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
If m_bFirst Then
' Variabile che accorcia il riferimento alla macchina corrente
m_CurrentMachine = m_MainWindow.m_CurrentMachine
' in assenza dell'uscita H1 nascondo i parametri lama
If EgtGetHeadId("H1") = GDB_ID.NULL Then
@@ -188,8 +202,8 @@ Public Class AlarmsPageUC
m_bFirst = False
End If
' Aggiorno lista delle lame per pagina macchina in cui scegliere quella corrente
CreateToolList(MCH_TF.SAWBLADE, m_SawList)
' Aggiorno lista delle lame per pagina macchina in cui scegliere quella corrente
CreateToolList(MCH_TF.SAWBLADE, m_SawList)
' Seleziono lama corrente
CurrSawCmBx.SelectedItem = m_CurrentMachine.sCurrSaw
@@ -325,12 +339,22 @@ Public Class AlarmsPageUC
EgtMdbSave()
' Leggo lavorazione angoli con fresa
CornerCutsChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_CORNERS, 1, m_MainWindow.GetMachIniFile()) <> 0)
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_CORNERS, 1, m_MainWindow.GetMachIniFile()) <> 0)
' Leggo lavorazione interni con fresa
InternalCutsChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_SINKS, 0, m_MainWindow.GetMachIniFile()) <> 0)
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_SINKS, 0, m_MainWindow.GetMachIniFile()) <> 0)
WjIntCutsChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_SINKS, 0, m_MainWindow.GetMachIniFile()) <> 0)
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_SINKS, 0, m_MainWindow.GetMachIniFile()) <> 0)
' Lavorazione preforo lavello con WaterJet
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_HOLES_DIAMITERWJ, 0, m_MainWindow.GetMachIniFile())
HolesDiameterWJTxBx.Text = LenToString(dVal, 2)
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_HOLES_OFFSETWJ, 0, m_MainWindow.GetMachIniFile())
HolesOffsetWJTxBx.Text = LenToString(dVal, 2)
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MIN_RADIUSWJ, 0, m_MainWindow.GetMachIniFile())
MinRadiusWJTxBx.Text = LenToString(dVal, 2)
OneHoleInCornerWJChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, 1, m_MainWindow.GetMachIniFile()) <> 0)
' Leggo accorciamento angoli con fresa
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, m_MainWindow.GetMachIniFile())
ShortTxBx.Text = LenToString(dVal, 2)
@@ -343,7 +367,7 @@ Public Class AlarmsPageUC
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_ENGRAVING_WIDTH, 0, m_MainWindow.GetMachIniFile())
TmWidthTxBx.Text = LenToString(dVal, 2)
' Flag per movimento in home alla fine dei tagli diretti
FinalHomeChBx.IsChecked = m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome
FinalHomeChBx.IsChecked = m_CurrentMachine.bDirectCutsFinalHome
' Leggo tagli ridotti per interferenza in nesting
CompleteCutsChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_REDUCEDCUT, 0, m_MainWindow.GetMachIniFile()) = 0)
@@ -365,7 +389,7 @@ Public Class AlarmsPageUC
AdditionalTableTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 36) & " " & GetCurrentTable().ToString()
End If
' Leggo altezza sovratavola
dVal = m_MainWindow.m_CurrentMachine.dAdditionalTable
dVal = m_CurrentMachine.dAdditionalTable
AdditionalTableTxBx.Text = LenToString(dVal, 2)
' Leggo soglia e tolleranza per contorno grezzo da foto
ThresholdTxBx.Text = m_MainWindow.m_Camera.Threshold.ToString()
@@ -383,7 +407,7 @@ Public Class AlarmsPageUC
If nWashing = -1 Then
WashingGpBx.Visibility = Visibility.Hidden
Else
WashingChBx.IsChecked = ( nWashing <> 0)
WashingChBx.IsChecked = (nWashing <> 0)
End If
' Leggo parametri per variazione feed in tagli
CfrLenTxBx.Text = LenToString(m_CurrentMachine.dFsevLength, 3)
@@ -439,7 +463,7 @@ Public Class AlarmsPageUC
CurrWaterJettingTxBx.Text = m_CurrentMachine.sCurrWaterJetting
CurrWaterJettingTxBl.Visibility = Windows.Visibility.Visible
CurrWaterJettingTxBx.Visibility = Windows.Visibility.Visible
If m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
If m_CurrentMachine.bFromDBWaterJet Then
CurrWaterJettingTxBx.SetValue(Grid.ColumnSpanProperty, 1)
CurrWaterJettingTxBx.SetValue(MarginProperty, New Thickness(CurrWaterJettingTxBx.Margin.Left,
CurrWaterJettingTxBx.Margin.Top,
@@ -578,6 +602,33 @@ Public Class AlarmsPageUC
String.Compare(sMchTool, m_CurrentMachine.sCurrSaw, True) <> 0 Then
m_CurrentMachine.sCurrSawing = String.Empty
End If
'Dim sVal As String = String.Empty
'Dim dVal As Double = 0
'If m_CurrentMachine.GetUserNote("FsevLength", sVal, m_CurrentMachine.sCurrSawing, false) Then
' StringToDouble(sVal, dVal)
' m_CurrentMachine.SetFsevLength(dVal)
'End If
'If m_CurrentMachine.GetUserNote("FsevPerc", sVal, m_CurrentMachine.sCurrSawing, false) Then
' StringToDouble(sVal, dVal)
' m_CurrentMachine.SetFsevPerc(dVal)
'End If
Dim sVal As String = String.Empty
Dim dVal As Double = 0
If m_CurrentMachine.GetUserNote("FsevLength", sVal, m_CurrentMachine.sCurrSaw) Then
StringToDouble(sVal, dVal)
m_CurrentMachine.SetFsevLength(dVal)
End If
If m_CurrentMachine.GetUserNote("FsevPerc", sVal, m_CurrentMachine.sCurrSaw) Then
StringToDouble(sVal, dVal)
m_CurrentMachine.SetFsevPerc(dVal)
End If
' Leggo parametri per variazione feed in tagli aggiornati in funzione della lama
CfrLenTxBx.Text = LenToString(m_CurrentMachine.dFsevLength, 3)
CfrPercTxBx.Text = DoubleToString(m_CurrentMachine.dFsevPerc, 0)
' Aggiorno utensili per lavoro in corso
m_MainWindow.m_WorkInProgressPageUC.UpdateTools()
' aggiorno la lista delle lavorazioni
@@ -893,6 +944,35 @@ Public Class AlarmsPageUC
End If
End Sub
' -- INIZIO -- nuovi parametri per prefori WaterJet
Private Sub HolesDiameterWJTxBx_Click(sender As Object, e As EventArgs) Handles HolesDiameterWJTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(HolesDiameterWJTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_HOLES_DIAMITERWJ, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
End Sub
Private Sub HolesOffsetWJTxBx_Click(sender As Object, e As EventArgs) Handles HolesOffsetWJTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(HolesOffsetWJTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_HOLES_OFFSETWJ, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
End Sub
Private Sub MinRadiusWJTxBx_Click(sender As Object, e As EventArgs) Handles MinRadiusWJTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(MinRadiusWJTxBx.Text, dVal)
WritePrivateProfileString(S_MACH_NEST, K_MIN_RADIUSWJ, DoubleToString(dVal, 2), m_MainWindow.GetMachIniFile())
End Sub
Private Sub OneHoleInCornerWJChBx_Click(sender As Object, e As EventArgs) Handles OneHoleInCornerWJChBx.Click
If OneHoleInCornerWJChBx.IsChecked() Then
WritePrivateProfileString(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, "1", m_MainWindow.GetMachIniFile())
Else
WritePrivateProfileString(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, "0", m_MainWindow.GetMachIniFile())
End If
End Sub
' -- FINE -- nuovi parametri per prefori WaterJet
Private Sub TmEnableChBx_Click(sender As Object, e As RoutedEventArgs) Handles TmEnableChBx.Click
If TmEnableChBx.IsChecked() Then
WritePrivateProfileString(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, "1", m_MainWindow.GetMachIniFile())
@@ -915,9 +995,9 @@ Public Class AlarmsPageUC
Private Sub FinalHomeChBx_Click(sender As Object, e As RoutedEventArgs) Handles FinalHomeChBx.Click
If FinalHomeChBx.IsChecked() Then
m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome = True
m_CurrentMachine.bDirectCutsFinalHome = True
Else
m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome = False
m_CurrentMachine.bDirectCutsFinalHome = False
End If
End Sub
@@ -959,7 +1039,7 @@ Public Class AlarmsPageUC
Private Sub AdditionalTableTxBx_EgtClosed(sender As Object, e As EventArgs) Handles AdditionalTableTxBx.EgtClosed
Dim dVal As Double = 0
StringToLen(AdditionalTableTxBx.Text, dVal)
m_MainWindow.m_CurrentMachine.dAdditionalTable = dVal
m_CurrentMachine.dAdditionalTable = dVal
End Sub
Private Sub NewMatBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewMatBtn.Click
@@ -1085,7 +1165,7 @@ Public Class AlarmsPageUC
EgtOutLog("Impostata modalità automatica: esito " & nResult.ToString)
End Select
' Recupero file LUA
EgtLuaExecFile(m_MainWindow.m_CurrentMachine.sMachDir() & "\DirectCmd\SawProbing.lua")
EgtLuaExecFile(m_CurrentMachine.sMachDir() & "\DirectCmd\SawProbing.lua")
' Recupero utensile da tastare
Dim ToolForProbing As ToolPos = ChooseToolForProbing()
If IsNothing(ToolForProbing) OrElse String.IsNullOrWhiteSpace(ToolForProbing.m_ToolName) Then Return
@@ -1124,7 +1204,7 @@ Public Class AlarmsPageUC
' Modifico stringa per inserire i newline
CmdString = CmdString.Replace("<br/>", Environment.NewLine)
' Creo file...
Dim FilePath As String = m_MainWindow.GetCncDir() & "\SawProbing" & m_MainWindow.m_CurrentMachine.sIsoFileExt
Dim FilePath As String = m_MainWindow.GetCncDir() & "\SawProbing" & m_CurrentMachine.sIsoFileExt
' ...e ci scrivo
Dim Writer As New IO.StreamWriter(FilePath, False)
Writer.Write(CmdString)
@@ -1252,9 +1332,9 @@ Public Class AlarmsPageUC
End Sub
Private Function ChooseToolForProbing() As ToolPos
Select Case m_MainWindow.m_CurrentMachine.MountedToolConfig
Select Case m_CurrentMachine.MountedToolConfig
Case CurrentMachine.MountedToolConfigs.SAW
Return New ToolPos(m_MainWindow.m_CurrentMachine.sCurrSaw, "T100", True)
Return New ToolPos(m_CurrentMachine.sCurrSaw, "T100", True)
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER
Dim ChooseTool As New ChooseToolWD(m_MainWindow)
If ChooseTool.ShowDialog Then
@@ -1300,4 +1380,36 @@ Public Class AlarmsPageUC
End Sub
Private Sub ExecLuaBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExecLuaBtn.Click
Dim sExecFile As String = GetExecLuaFile()
' Eseguo file LUA e recupero risultato
Dim nErr As Integer = 999
EgtLuaExecFile(sExecFile)
EgtLuaGetGlobIntVar("ELS.ERR", nErr)
' Reset lua
EgtLuaResetGlobVar("ELS")
' Verifico condizioni di errore
If nErr Then
' Errore...
EgtOutLog("Error executing file: " & sExecFile & ", ELS.ERR=" & nErr.ToString)
' Error executing script
Dim MsgBoxError As New EgtMsgBox(m_MainWindow, "", EgtMsg(90259), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL)
Return
End If
End Sub
' Recupero il percorso del file lua da eseguire
Private Function GetExecLuaFile() As String
Dim sFile As String = String.Empty
If GetPrivateProfileString(S_EXECLUA, K_FILESCRIPT_LUA, "", sFile, m_MainWindow.GetMachIniFile()) <> 0 Then
' Sistemo nome file
sFile = sFile.Trim()
If Not sFile.EndsWith(".lua") Then sFile = sFile & ".lua"
' Creo path
Dim sPath As String = m_CurrentMachine.sMachDir() & "\Scripts\" & sFile
If File.Exists(sPath) Then Return sPath
End If
Return String.Empty
End Function
End Class
+190 -4
View File
@@ -609,6 +609,18 @@ Public Class CurrentMachine
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWING, value, sMachIniFile) Then
m_sCurrSawing = value
m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
'' aggiorno il file ini della macchina con i valori correnti della lavorazione
'Dim sVal As String = String.Empty
'Dim dVal As Double = m_dFsevLength
'If GetUserNote("FsevLength", sVal, m_sCurrSawing, False) Then
' StringToDouble(sVal, dVal)
' SetFsevLength(dVal)
'End If
'dVal = m_dFsevPerc
'If GetUserNote("FsevPerc", sVal, m_sCurrSawing, False) Then
' StringToDouble(sVal, m_dFsevPerc)
' SetFsevPerc(dVal)
'End If
End If
End Set
End Property
@@ -752,6 +764,7 @@ Public Class CurrentMachine
End Select
End Get
Set(value As Double)
Dim dValue As Double = 0
Select Case GetCurrentTable()
Case 3
If Math.Abs(value - m_dTab3AdditionalTable) > EPS_SMALL And
@@ -760,14 +773,24 @@ Public Class CurrentMachine
m_dTab3AdditionalTable = value
' Aggiorno il progetto corrente
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
' salvo il valore della sovratavola nel progetto
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, dValue)
If Math.Abs(dValue - value) > EPS_SMALL Then
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, value)
End If
End If
Case 2
Case 2
If Math.Abs(value - m_dTab2AdditionalTable) > EPS_SMALL And
WritePrivateProfileString(S_TABLE, K_TAB2_ADDITIONALTABLE, DoubleToString(value, 3), sMachIniFile) Then
' Aggiorno il valore corrente
m_dTab2AdditionalTable = value
' Aggiorno il progetto corrente
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
' salvo il valore della sovratavola nel progetto
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB2_ADDITIONALTABLE, dValue)
If Math.Abs(dValue - value) > EPS_SMALL Then
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB2_ADDITIONALTABLE, value)
End If
End If
Case Else
If Math.Abs(value - m_dAdditionalTable) > EPS_SMALL And
@@ -776,6 +799,11 @@ Public Class CurrentMachine
m_dAdditionalTable = value
' Aggiorno il progetto corrente
m_MainWindow.m_CurrentProjectPageUC.AdjustAdditionalTable()
' salvo il valore della sovratavola nel progetto
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_ADDITIONALTABLE, dValue)
If Math.Abs(dValue - value) > EPS_SMALL Then
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_ADDITIONALTABLE, value)
End If
End If
End Select
End Set
@@ -845,9 +873,18 @@ Public Class CurrentMachine
Set(value As Double)
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVLEN, DoubleToString(value, 3), sMachIniFile) Then
m_dFsevLength = value
' salvo il dato nelle UserNote della lavorazione
'MdbSetCurrMachiningUserNote("FsevLength", m_dFsevLength.ToString, sCurrSawing, false)
' salvo il dato nelle UserNote dell'utensile
TdbSetCurrToolUserNote("FsevLength", m_dFsevLength.ToString, sCurrSaw)
End If
End Set
End Property
Friend Sub SetFsevLength(value As Double)
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVLEN, DoubleToString(value, 3), sMachIniFile) Then
m_dFsevLength = value
End If
End Sub
Friend Property dFsevPerc As Double
Get
@@ -856,9 +893,18 @@ Public Class CurrentMachine
Set(value As Double)
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVPERC, DoubleToString(value, 3), sMachIniFile) Then
m_dFsevPerc = value
'' salvo il dato nelle UserNote della lavorazione
'MdbSetCurrMachiningUserNote("FsevPerc", m_dFsevPerc.ToString, sCurrSawing)
' salvo il dato nelle UserNote dell'utensile
TdbSetCurrToolUserNote("FsevPerc", m_dFsevPerc.ToString, sCurrSaw)
End If
End Set
End Property
Friend Sub SetFsevPerc(value As Double)
If WritePrivateProfileString(S_NEST, K_MACH_CUTFSEVPERC, DoubleToString(value, 3), sMachIniFile) Then
m_dFsevPerc = value
End If
End Sub
Friend ReadOnly Property ToolChangerNbr As Integer
Get
@@ -1249,6 +1295,7 @@ Public Class CurrentMachine
' Leggo dati per feed ridotta all'inizio/fine dei tagli
m_bFsevEnable = (GetPrivateProfileInt(S_NEST, K_MACH_CUTFSEVENABLE, 0, sMachIniFile) <> 0)
' sposto la lettura nel DB delle lavorazioni della lama corrente!
m_dFsevLength = GetPrivateProfileDouble(S_NEST, K_MACH_CUTFSEVLEN, 0, sMachIniFile)
m_dFsevPerc = GetPrivateProfileDouble(S_NEST, K_MACH_CUTFSEVPERC, 0, sMachIniFile)
@@ -1311,7 +1358,7 @@ Public Class CurrentMachine
' Leggo valori da file Data e li carico nelle proprietà
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
' definisco la lista delle qualità (solo se è vuota)
If m_Qualities.Count < 1 Then
m_Qualities.Add("Q1")
@@ -1342,7 +1389,7 @@ Public Class CurrentMachine
' Leggo valori da file Data e li carico nelle proprietà
Dim sFilePath As String = sMachDir & "\" & MACHININGS_DIR & "\" & WATERJETDB_FILE
Dim Local_MaterialList = New ObservableCollection(Of EgtWPFLib5.WjMaterial)
Local_MaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
Local_MaterialList = WaterjetDbWindowVM_OmagCUT.LoadWjMaterials(sFilePath)
Dim sItems() As String = sCurMat.Split("."c)
If sItems.Count > 1 Then
Dim sMat As String = sItems(0)
@@ -1367,9 +1414,148 @@ Public Class CurrentMachine
If bFound Then Exit For
Next
End If
Return dMaxThick
' il valore resituito è già nell'unità corrente del programma -> converto il dato in mm
Dim dValmm As Double = 0
StringToLen(DoubleToString(dMaxThick, 3), dValmm)
Return dValmm
End Function
#Region "USERNOTE"
' recupero le note UserNote associate alla LAVORAZIONE Machining
Friend Function MdbGetCurrMachiningUserNote(Machining As String) As String
Dim UserNotes As String = String.Empty
' lavorazione corrente
Dim CurrMach As String = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.NAME, CurrMach)
' Imposto utensile lama corrente
If Not String.IsNullOrWhiteSpace(Machining) AndAlso EgtMdbSetCurrMachining(Machining) Then
' leggo nel db corrente della lavorazione questa info
EgtMdbGetCurrMachiningParam(MCH_MP.USERNOTES, UserNotes)
' reimposto lavorazione corrente
EgtMdbSetCurrMachining(CurrMach)
End If
Return UserNotes
End Function
' recupero le note UserNote associate all'UTENSILE Tool
Friend Function TdbGetCurrToolUserNote(Tool As String) As String
Dim UserNotes As String = String.Empty
' lavorazione corrente
Dim CurrTool As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.NAME, CurrTool)
' Imposto utensile lama corrente
If Not String.IsNullOrWhiteSpace(Tool) AndAlso EgtTdbSetCurrTool(Tool) Then
' leggo nel db corrente della lavorazione questa info
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, UserNotes)
' reimposto lavorazione corrente
EgtTdbSetCurrTool(CurrTool)
End If
Return UserNotes
End Function
' imposta il nuovo valore in UserNote della LAVORAZIONE Machining
Friend Sub MdbSetCurrMachiningUserNote(sKeyUserNote As String, sValUserNote As String, Machining As String)
' lavorazione corrente
Dim CurrMach As String = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.NAME, CurrMach)
' Imposto utensile lama corrente
If Not String.IsNullOrWhiteSpace(Machining) AndAlso EgtMdbSetCurrMachining(Machining) Then
Dim UserNotes As String = String.Empty
' salvo nel db corrente della lavorazione questa info devo gestire l'inserimento: sovrascrivo NON ESEGUE un APPEND delle info
EgtMdbSetCurrMachiningParam(MCH_MP.USERNOTES, AssembUserNote(sKeyUserNote, sValUserNote, Machining))
EgtMdbSaveCurrMachining()
EgtMdbSave()
' reimposto lavorazione corrente
EgtMdbSetCurrMachining(CurrMach)
End If
End Sub
' imposta il nuovo valore in UserNote dell'UTENSILE Tool
Friend Sub TdbSetCurrToolUserNote(sKeyUserNote As String, sValUserNote As String, Tool As String)
' lavorazione corrente
Dim CurrTool As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.NAME, CurrTool)
' Imposto utensile lama corrente
If Not String.IsNullOrWhiteSpace(Tool) AndAlso EgtTdbSetCurrTool(Tool) Then
Dim UserNotes As String = String.Empty
' salvo nel db corrente della lavorazione questa info devo gestire l'inserimento: sovrascrivo NON ESEGUE un APPEND delle info
EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, AssembUserNote(sKeyUserNote, sValUserNote, Tool))
EgtTdbSaveCurrTool()
EgtTdbSave()
' reimposto lavorazione corrente
EgtTdbSetCurrTool(Tool)
End If
End Sub
' separa la le note UserNote della LAVORAZIONE
Private Function SplitUserNoteMachinig(Machining As String) As String()
Dim sUserNotes As String = MdbGetCurrMachiningUserNote(Machining)
If String.IsNullOrEmpty(sUserNotes) Then Return Nothing
Dim sItems As String() = sUserNotes.Split(";"c)
Return sItems
End Function
' separa la le note UserNote della LAVORAZIONE
Private Function SplitUserNoteTool(Tool As String) As String()
Dim sUserNotes As String = TdbGetCurrToolUserNote(Tool)
If String.IsNullOrEmpty(sUserNotes) Then Return Nothing
Dim sItems As String() = sUserNotes.Split(";"c)
Return sItems
End Function
' recupera il valore della associato alla chiave per la lavorazione oppure utensile (bIsToolNote)
Friend Function GetUserNote(sKeyUserNote As String, ByRef sValUserNote As String, sName As String, Optional bIsToolNote As Boolean = True) As Boolean
Dim sUserNotesList As String() = Nothing
If bIsToolNote Then
sUserNotesList = SplitUserNoteTool(sName)
Else
sUserNotesList = SplitUserNoteMachinig(sName)
End If
If IsNothing(sUserNotesList) Then Return False
For Index As Integer = 0 To sUserNotesList.Count - 1
Dim sNote As String() = sUserNotesList(Index).Split("="c)
If sNote.Count = 2 AndAlso sNote(0).Trim = sKeyUserNote Then
sValUserNote = sNote(1).Trim
End If
Next
Return True
End Function
' ricostruisce la stringa UserNote da salvare
Friend Function AssembUserNote(sKeyUserNote As String, sValUserNote As String, sName As String, Optional bIsToolNote As Boolean = True) As String
Dim sUserNotes As String = String.Empty
Dim sUserNotesList As String() = Nothing
If bIsToolNote Then
sUserNotesList = SplitUserNoteTool(sName)
Else
sUserNotesList = SplitUserNoteMachinig(sName)
End If
Dim bExists As Boolean = False
If Not IsNothing(sUserNotesList) Then
For Index As Integer = 0 To sUserNotesList.Count - 1
Dim sNote As String() = sUserNotesList(Index).Split("="c)
If sNote.Count = 2 AndAlso sNote(0).Trim = sKeyUserNote Then
sUserNotesList(Index) = sKeyUserNote & "=" & sValUserNote
bExists = True
Exit For
End If
Next
' riassemblo la stringa
For Each Item As String In sUserNotesList
If Not String.IsNullOrWhiteSpace(Item) Then
sUserNotes &= Item & ";"
End If
Next
End If
If Not bExists Then
sUserNotes &= sKeyUserNote & "=" & sValUserNote & ";"
End If
Return sUserNotes
End Function
#End Region ' USERNOTE
Friend Function IsVacuumMovePossible() As Boolean
' Recupero diametro lama corrente
EgtTdbSetCurrTool(sCurrSaw)
+15 -10
View File
@@ -34,16 +34,21 @@
<ColumnDefinition Width="1.5*"/>
</Grid.ColumnDefinitions>
<Button Name="AutoBtn" Grid.Column="0"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<Button Name="ManualBtn" Grid.Column="1"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<Button Name="MDIBtn" Grid.Column="2"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<Button Name="SingleBtn" Grid.Column="3"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<Button Name="HomeBtn" Grid.Column="4"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
<ToggleButton Name="AutoBtn" Grid.Column="0"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
<ToggleButton Name="ManualBtn" Grid.Column="1"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
<ToggleButton Name="MDIBtn" Grid.Column="2"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
<ToggleButton Name="SingleBtn" Grid.Column="3"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
<ToggleButton Name="HomeBtn" Grid.Column="4"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
</Grid>
+57
View File
@@ -8,6 +8,8 @@ Public Class MachineCNPageUC
Private m_bFirst As Boolean = True
Private m_ButtonPower As New List(Of MachineButton)
Private m_nCurrMode As Integer = 0
Private Sub TestingPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
StartBtn.Content = EgtMsg(MSG_MACHINECNPAGEUC + 1)
StopBtn.Content = EgtMsg(MSG_MACHINECNPAGEUC + 2)
@@ -51,6 +53,9 @@ Public Class MachineCNPageUC
PartProgTransferGpBx.Visibility = Windows.Visibility.Hidden
End If
' gestione visuliazzazione ToggleButton Auto/Sinlge/Mdi/Manula/Home
SetCncMode()
'------ NUOVI BOTTONI ----------
' Lettura configurazione bottoni (per impostare l'uso del Joystick) da Ini di macchina
m_ButtonPower.Clear()
@@ -98,6 +103,53 @@ Public Class MachineCNPageUC
End Sub
Private Sub SetCncMode()
Dim Mode As Integer = m_nCurrMode
Select Case Mode
Case 0
' Auoto
MDIConfirmBtn.IsEnabled = False
AutoBtn.IsChecked = True
SingleBtn.IsChecked = False
MDIBtn.IsChecked = False
ManualBtn.IsChecked = False
HomeBtn.IsChecked = False
Case 1
' Single
MDIConfirmBtn.IsEnabled = False
AutoBtn.IsChecked = False
SingleBtn.IsChecked = True
MDIBtn.IsChecked = False
ManualBtn.IsChecked = False
HomeBtn.IsChecked = False
Case 2
' Mdi
MDIConfirmBtn.IsEnabled = True
AutoBtn.IsChecked = False
SingleBtn.IsChecked = False
MDIBtn.IsChecked = True
ManualBtn.IsChecked = False
HomeBtn.IsChecked = False
Case 7
' Manual
MDIConfirmBtn.IsEnabled = False
AutoBtn.IsChecked = False
SingleBtn.IsChecked = False
MDIBtn.IsChecked = False
ManualBtn.IsChecked = True
HomeBtn.IsChecked = False
Case 8
' Home
MDIConfirmBtn.IsEnabled = False
AutoBtn.IsChecked = False
SingleBtn.IsChecked = False
MDIBtn.IsChecked = False
ManualBtn.IsChecked = False
HomeBtn.IsChecked = True
End Select
End Sub
Private Sub StartBtn_Click(sender As Object, e As RoutedEventArgs) Handles StartBtn.Click
If m_MainWindow.m_CNCommunication.m_nNCType = 3 AndAlso m_MainWindow.m_CNCommunication.m_CN.m_IsSiemensOne Then
Dim sDBVarPath As String = ""
@@ -278,4 +330,9 @@ Public Class MachineCNPageUC
End If
End Sub
Friend Sub CncModeChange(nMode As Integer)
m_nCurrMode = nMode
SetCncMode()
End Sub
End Class
+18 -18
View File
@@ -145,12 +145,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.Alarms
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
AlarmsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -215,12 +215,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.ToolsDb
Case MachinePages.WaterJet
'Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
ToolsDBBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -285,12 +285,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.MachiningDb
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
MachiningDBBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -358,12 +358,12 @@ Public Class MachinePageUC
PolishingsBtn.IsChecked = True
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
PolishingsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -513,12 +513,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.MachineCN
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
TestingPageBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
@@ -593,12 +593,12 @@ Public Class MachinePageUC
m_ActiveMachinePage = MachinePages.Statistics
Case MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
StatisticsBtn.IsChecked = False
WaterJetBtn.IsChecked = True
Return
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
' passo alla pagina Dati Macchina
+5 -5
View File
@@ -246,7 +246,7 @@
<TextBlock Name="SideAngleTxBl" Grid.Column="2" Grid.Row="3" Grid.RowSpan="3"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="3" Grid.Row="3" Grid.RowSpan="3" Margin="0,0,15,0"
<EgtWPFLib:EgtTextBox Name="SideAngleTxBx" Grid.Column="3" Grid.Row="3" Grid.RowSpan="3" Margin="0,0,15,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="StepTypeTxBl" Grid.Column="0" Grid.Row="6" Grid.RowSpan="3"
@@ -576,7 +576,7 @@
<TextBlock Name="ForwardAngleTxBl" Grid.Column="0" Grid.Row="6" Grid.RowSpan="3"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="ForwardAngleTxBx" Grid.Column="1" Grid.Row="6" Grid.RowSpan="3"
<EgtWPFLib:EgtTextBox Name="ForwardAngleTxBx" Grid.Column="1" Grid.Row="6" Grid.RowSpan="3" IsLength="False"
Style="{DynamicResource OmagCut_MachLeftCalculatorTextBoxInBorder}" />
<Border Name="LiHoleBrd" Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="4" Grid.RowSpan="6"
@@ -605,12 +605,12 @@
<TextBlock Name="LpTurnsTxBl" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="LpTurnsTxBx" Grid.Column="1" Grid.Row="1"
<EgtWPFLib:EgtTextBox Name="LpTurnsTxBx" Grid.Column="1" Grid.Row="1" IsLength="False"
Style="{DynamicResource OmagCut_MachLeftCalculatorTextBoxInBorder}" />
<TextBlock Name="HpTurnsTxBl" Grid.Column="2" Grid.Row="1"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="HpTurnsTxBx" Grid.Column="3" Grid.Row="1"
<EgtWPFLib:EgtTextBox Name="HpTurnsTxBx" Grid.Column="3" Grid.Row="1" IsLength="False"
Style="{DynamicResource OmagCut_MachLeftCalculatorTextBoxInBorder}" />
</Grid>
@@ -725,7 +725,7 @@
<TextBlock Name="SpeedTxBl" Grid.Column="0"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SpeedTxBx" Grid.Column="1"
<EgtWPFLib:EgtTextBox Name="SpeedTxBx" Grid.Column="1" IsLength="False"
Style="{DynamicResource OmagCut_MachToolCalculatorTextBox}" />
</Grid>
+2 -2
View File
@@ -899,11 +899,11 @@ Public Class MachiningDbPageUC
For Each Material As MachiningMaterial In m_MaterialsList
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
If Material.bIsActive Then
sMaterialString += Material.nId.ToString & "." & Material.nSubId.ToString & "," & DoubleToString(Material.dMinThickness, 0) & "," & DoubleToString(Material.dMaxThickness, 0) & ";"
sMaterialString += Material.nId.ToString & "." & Material.nSubId.ToString & "," & DoubleToString(Material.dMinThickness, 3) & "," & DoubleToString(Material.dMaxThickness, 3) & ";"
End If
Else
If Material.bIsActive Then
sMaterialString += Material.nId.ToString & "," & DoubleToString(Material.dMinThickness, 0) & "," & DoubleToString(Material.dMaxThickness, 0) & ";"
sMaterialString += Material.nId.ToString & "," & DoubleToString(Material.dMinThickness, 3) & "," & DoubleToString(Material.dMaxThickness, 3) & ";"
End If
End If
Next
+1 -1
View File
@@ -36,7 +36,7 @@ Public Class StatisticsPageUC
DayTxBl.Text = sDay
' Leggo il numero della settimana
Dim nWeek As Integer = GetPrivateProfileInt(S_STATDATA, K_SD_WEEK, -1, m_MainWindow.GetIniFile())
WeekTxBl.Text = ( nWeek + 1).ToString()
WeekTxBl.Text = (nWeek).ToString()
' Leggo area pezzi del giorno
Dim dDayParts As Double = GetPrivateProfileDouble(S_STATDATA, K_SD_DAYPARTS, 0, m_MainWindow.GetIniFile())
+3 -3
View File
@@ -281,12 +281,12 @@
</Grid.ColumnDefinitions>
<TextBlock Name="SpeedTxBl" Grid.Column="0" Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="SpeedTxBx" Grid.Column="1"
<EgtWPFLib:EgtTextBox Name="SpeedTxBx" Grid.Column="1" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBoxInGroupBox}" />
<TextBlock Name="MaxSpeedTxBl" Grid.Column="2"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="MaxSpeedTxBx" Grid.Column="3"
<EgtWPFLib:EgtTextBox Name="MaxSpeedTxBx" Grid.Column="3" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBoxInGroupBox}" />
</Grid>
@@ -384,7 +384,7 @@
<TextBlock Name="MaxAbsorptionTxBl" Grid.Column="0"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}" Grid.ColumnSpan="1" ScrollViewer.VerticalScrollBarVisibility="Disabled" TextWrapping="Wrap"/>
<EgtWPFLib:EgtTextBox Name="MaxAbsorptionTxBx" Grid.Column="1"
<EgtWPFLib:EgtTextBox Name="MaxAbsorptionTxBx" Grid.Column="1" IsLength="False"
Style="{DynamicResource OmagCut_LeftCalculatorTextBoxInBorder}" />
<TextBlock Name="MinFeedTxBl" Grid.Column="2" Style="{DynamicResource OmagCut_ToolsDBTextBlock}" />
+163 -153
View File
@@ -8,256 +8,266 @@
mc:Ignorable="d"
d:DesignHeight="768" d:DesignWidth="1280" Initialized="WaterJetPage_Initialized">
<!-- Definizione della PolishingsPage -->
<Border Style="{DynamicResource OmagCut_PageBorder}">
<!-- Definizione della PolishingsPage -->
<Border Style="{DynamicResource OmagCut_PageBorder}">
<Grid Name="WaterJetPageGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="4*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="8*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Name="WaterJetPageGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="4*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="8*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--Lista dei materiali-->
<GroupBox Name="MaterialGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="0"
<!--Lista dei materiali-->
<GroupBox Name="MaterialGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="0"
Header="{Binding Material_Msg}"
Grid.Row="0" BorderThickness="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--Lista dei materiali-->
<ListBox Name="MaterialsLstBx"
<!--Lista dei materiali-->
<ListBox Name="MaterialsLstBx"
ItemsSource="{Binding MaterialList}" SelectedItem="{Binding SelMaterial}"
Grid.RowSpan="2">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--Campo visualizzato solo per aggiungere un nuovo materiale-->
<EgtWPFLib:EgtTextBox Name="NewMaterialNameTxBx" Grid.Row="1"
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--Campo visualizzato solo per aggiungere un nuovo materiale-->
<EgtWPFLib:EgtTextBox Name="NewMaterialNameTxBx" Grid.Row="1"
Width="220"
Text="{Binding sNewMaterial}"
Visibility="{Binding NewMaterial_Visibility}"
Style="{DynamicResource OmagCut_KeyboardTextBox}"
KeyboardPosition="Top"/>
<!--Pulsanti per aggiungere/rimuovere/salvare la lista-->
<UniformGrid Grid.Row="2" Columns="3">
<Button Name="NewMaterialBtn" Grid.Column="0"
<!--Pulsanti per aggiungere/rimuovere/salvare la lista-->
<UniformGrid Grid.Row="2" Columns="3">
<Button Name="NewMaterialBtn" Grid.Column="0"
Content="{Binding New_Msg}"
Command="{Binding NewMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
<Button Name="DeleteMaterialBtn" Grid.Column="1"
<Button Name="DeleteMaterialBtn" Grid.Column="1"
Content="{Binding Delete_Msg}"
Command="{Binding DeleteMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
<Button Name="ModifyMaterialBtn" Grid.Column="1"
<Button Name="ModifyMaterialBtn" Grid.Column="1"
Content="{Binding Modify_Msg}"
Command="{Binding ModifyMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
</UniformGrid>
</UniformGrid>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
<!--Raggruppo all'interno della stessa cornice le sottocatogorie e i parametri-->
<Border Style="{DynamicResource OmagCut_Border}"
<!--Raggruppo all'interno della stessa cornice le sottocatogorie e i parametri-->
<Border Style="{DynamicResource OmagCut_Border}"
Grid.Column="1" Grid.Row="0"
Grid.ColumnSpan="2" Grid.RowSpan="1">
<Grid Name="SubMaterialGrd" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Name="SubMaterialGrd" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--Sottocategoria dei materiali associata alla lista precedente-->
<GroupBox Name="SubMaterialGpBx" Style="{DynamicResource OmagCut_GroupBox}"
<!--Sottocategoria dei materiali associata alla lista precedente-->
<GroupBox Name="SubMaterialGpBx" Style="{DynamicResource OmagCut_GroupBox}"
Header="{Binding SubMaterial_Msg}"
Grid.Column="0" Grid.Row="0"
Grid.ColumnSpan="1" Grid.RowSpan="8" BorderThickness="0">
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!--Lista dei materiali-->
<ListBox Name="SubMaterialsLstBx" ItemsSource="{Binding Path=SelectedItem.SubMaterialList, ElementName=MaterialsLstBx}"
<!--Lista dei materiali-->
<ListBox Name="SubMaterialsLstBx" ItemsSource="{Binding Path=SelectedItem.SubMaterialList, ElementName=MaterialsLstBx}"
SelectedItem="{Binding Path=SelectedItem.SelSubMaterial, ElementName=MaterialsLstBx}"
Grid.RowSpan="2">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--Campo visualizzato solo per aggiungere un nuovo materiale-->
<EgtWPFLib:EgtTextBox Name="NewSubMaterialNameTxBx" Grid.Row="1"
<!--Campo visualizzato solo per aggiungere un nuovo materiale-->
<EgtWPFLib:EgtTextBox Name="NewSubMaterialNameTxBx" Grid.Row="1"
Width="220"
Text="{Binding sNewSubMaterial}"
Visibility="{Binding NewSubMaterial_Visibility}"
Style="{DynamicResource OmagCut_KeyboardTextBox}"
KeyboardPosition="Top"/>
<!--Pulsanti per aggiungere/rimuovere/salvare la lista-->
<UniformGrid Grid.Row="2" Columns="3">
<Button Name="NewSubMaterialBtn" Grid.Column="0"
<!--Pulsanti per aggiungere/rimuovere/salvare la lista-->
<UniformGrid Grid.Row="2" Columns="3">
<Button Name="NewSubMaterialBtn" Grid.Column="0"
Content="{Binding New_Msg}"
Command="{Binding NewSubMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
<Button Name="RemoveSubMaterialBtn" Grid.Column="1"
<Button Name="RemoveSubMaterialBtn" Grid.Column="1"
Content="{Binding Delete_Msg}"
Command="{Binding DeleteSubMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
<Button Name="ModifySubMaterialBtn" Grid.Column="1"
<Button Name="ModifySubMaterialBtn" Grid.Column="1"
Content="{Binding Modify_Msg}"
Command="{Binding ModifySubMaterialCommand}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
</UniformGrid>
</UniformGrid>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
<!--Lista dei parametri associata alla sottovcategoria dei materiali-->
<GroupBox Name="ParamsGpBx"
<!--Lista dei parametri associata alla sottovcategoria dei materiali-->
<GroupBox Name="ParamsGpBx"
Grid.Column="1" Grid.Row="0" Margin="0,0,0,3"
Grid.ColumnSpan="3" Grid.RowSpan="8" BorderThickness="0">
<!--Titolazione delle colonne della tabella-->
<GroupBox.Header >
<Grid Width="700">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Thickness_Msg}" Grid.Column="0" HorizontalAlignment="Center"
<!--Titolazione delle colonne della tabella-->
<GroupBox.Header >
<Grid Width="700">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Thickness_Msg}" Grid.Column="0" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding Q1_Msg}" Grid.Column="1" HorizontalAlignment="Center"
<TextBlock Text="{Binding Q1_Msg}" Grid.Column="1" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding Q2_Msg}" Grid.Column="2" HorizontalAlignment="Center"
<TextBlock Text="{Binding Q2_Msg}" Grid.Column="2" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding Q3_Msg}" Grid.Column="3" HorizontalAlignment="Center"
<TextBlock Text="{Binding Q3_Msg}" Grid.Column="3" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding Q4_Msg}" Grid.Column="4" HorizontalAlignment="Center"
<TextBlock Text="{Binding Q4_Msg}" Grid.Column="4" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding Q5_Msg}" Grid.Column="5" HorizontalAlignment="Center"
<TextBlock Text="{Binding Q5_Msg}" Grid.Column="5" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
<TextBlock Text="{Binding QExtra_Msg}" Grid.Column="6" HorizontalAlignment="Center"
<TextBlock Text="{Binding QExtra_Msg}" Grid.Column="6" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
</Grid>
</GroupBox.Header>
<!--Definizione della Grid dei parametri delle lavorazioni-->
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding AngComp_Msg}" Grid.Column="7" HorizontalAlignment="Center"
Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"
FontSize="{DynamicResource FontSize_GroupBoxHeader}"/>
</Grid>
<ListBox Name="ParamLstBx"
</GroupBox.Header>
<!--Definizione della Grid dei parametri delle lavorazioni-->
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="308*"/>
<ColumnDefinition Width="73*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ListBox Name="ParamLstBx"
ItemsSource="{Binding Path=SelectedItem.ParamList , ElementName=SubMaterialsLstBx}"
SelectedItem="{Binding Path=SelectedItem.SelWjParam , ElementName=SubMaterialsLstBx}"
Margin="0,0,0,0"
Grid.RowSpan="2">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="700">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
Grid.RowSpan="2" Grid.ColumnSpan="2">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="700">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<EgtWPFLib:EgtTextBox Text="{Binding Thickness}" Grid.Column="0"
<EgtWPFLib:EgtTextBox Text="{Binding Thickness}" Grid.Column="0"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding Q1}" Grid.Column="1"
<EgtWPFLib:EgtTextBox Text="{Binding Q1}" Grid.Column="1"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding Q2}" Grid.Column="2"
<EgtWPFLib:EgtTextBox Text="{Binding Q2}" Grid.Column="2"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding Q3}" Grid.Column="3"
<EgtWPFLib:EgtTextBox Text="{Binding Q3}" Grid.Column="3"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding Q4}" Grid.Column="4"
<EgtWPFLib:EgtTextBox Text="{Binding Q4}" Grid.Column="4"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding Q5}" Grid.Column="5"
<EgtWPFLib:EgtTextBox Text="{Binding Q5}" Grid.Column="5"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding QExtra}" Grid.Column="6"
<EgtWPFLib:EgtTextBox Text="{Binding QExtra}" Grid.Column="6"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
<EgtWPFLib:EgtTextBox Text="{Binding dAngComp}" Grid.Column="7" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorParamWjTextBox}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<UniformGrid Grid.Row="2" Columns="9" Grid.ColumnSpan="3">
<Button Name="NewParamBtn" Grid.Column="0"
<UniformGrid Grid.Row="2" Columns="9" Grid.ColumnSpan="2">
<Button Name="NewParamBtn" Grid.Column="0"
Command="{Binding NewWjParamCommand}"
Content="{Binding New_Msg}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
<Button Name="RemoveParamBtn" Grid.Column="1"
<Button Name="RemoveParamBtn" Grid.Column="1"
Command="{Binding DeleteWjParamCommand}"
Content="{Binding Delete_Msg}"
Style="{DynamicResource OmagCut_WjDbRightGrayGradientYellowTextButton}"/>
</UniformGrid>
</UniformGrid>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
</Grid>
</Border>
<Button Name="SaveKitBtn" Grid.Row="2" Grid.Column="2"
</Grid>
</Border>
<Button Name="SaveKitBtn" Grid.Row="2" Grid.Column="2"
Command="{Binding SaveCommand}"
Content="{Binding Save_Msg}"
Style="{DynamicResource OmagCut_RightGrayGradientYellowTextButton}"/>
</Grid>
</Grid>
</Border>
</Border>
</UserControl>
+54 -3
View File
@@ -8,18 +8,26 @@ Public Class WaterJetPageUC
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_refWaterjetDbWindowVM As EgtWPFLib5.WaterjetDbWindowVM
Private m_refWaterjetDbWindowVM As WaterjetDbWindowVM_OmagCUT
Private m_sOrigNewMaterial As String = String.Empty
Private m_sOrigNewSubMaterial As String = String.Empty
Private Sub WaterJetPage_Initialized(sender As Object, e As EventArgs)
m_refWaterjetDbWindowVM = New EgtWPFLib5.WaterjetDbWindowVM(m_MainWindow.m_CurrentMachine.sMachDir)
m_refWaterjetDbWindowVM = New WaterjetDbWindowVM_OmagCUT(m_MainWindow.m_CurrentMachine.sMachDir)
'----------------------------------------------------------------------------------------
' TEMPORANEO - se dati in INCH e richiesta di frazioni eseguo la conversione in frazione!
ConvertParamListValueToFracrion()
'----------------------------------------------------------------------------------------
Me.DataContext = m_refWaterjetDbWindowVM
EgtWPFLib.Utility.MainWindow = m_MainWindow
End Sub
Public Sub WaterJetPage_Reinitialize()
m_refWaterjetDbWindowVM = New EgtWPFLib5.WaterjetDbWindowVM(m_MainWindow.m_CurrentMachine.sMachDir)
m_refWaterjetDbWindowVM = New WaterjetDbWindowVM_OmagCUT(m_MainWindow.m_CurrentMachine.sMachDir)
'----------------------------------------------------------------------------------------
' TEMPORANEO - se dati in INCH e richiesta di frazioni eseguo la conversione in frazione!
ConvertParamListValueToFracrion()
'----------------------------------------------------------------------------------------
Me.DataContext = m_refWaterjetDbWindowVM
End Sub
@@ -51,5 +59,48 @@ Public Class WaterJetPageUC
End If
End Sub
Private Sub ConvertParamListValueToFracrion()
' TEMPORANEO - se dati in INCH e richiesta di frazioni eseguo la conversione in frazione!
Dim Index1 As Integer = 0
For Index1 = 0 To m_refWaterjetDbWindowVM.MaterialList.Count - 1
Dim Index2 As Integer = 0
For Index2 = 0 To m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList.Count - 1
Dim Index3 As Integer = 0
For Index3 = 0 To m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList.Count - 1
Dim dThickness As Double
Dim dQ1 As Double
Dim dQ2 As Double
Dim dQ3 As Double
Dim dQ4 As Double
Dim dQ5 As Double
Dim dQExtra As Double
Dim dAngComp As Double
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Thickness, dThickness)
Dim sVal As String = LenToString(dThickness, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetThickness(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Q1, dQ1)
sVal = LenToString(dQ1, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQ1(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Q2, dQ2)
sVal = LenToString(dQ2, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQ2(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Q3, dQ3)
sVal = LenToString(dQ3, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQ3(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Q4, dQ4)
sVal = LenToString(dQ4, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQ4(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).Q5, dQ5)
sVal = LenToString(dQ5, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQ5(sVal)
StringToLen(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).QExtra, dQExtra)
sVal = LenToString(dQExtra, 3)
m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).SetQExtra(sVal)
StringToDouble(m_refWaterjetDbWindowVM.MaterialList(Index1).SubMaterialList(Index2).ParamList(Index3).dAngComp, dAngComp)
Next
Next
Next
End Sub
End Class
+25 -1
View File
@@ -445,6 +445,12 @@ Public Class WaterjetDbWindowVM
End Get
End Property
Public ReadOnly Property AngComp_Msg As String
Get
Return "Ang"
End Get
End Property
Public ReadOnly Property New_Msg As String
Get
Return "Nuovo"
@@ -516,7 +522,14 @@ Public Class WaterjetDbWindowVM
StringToDouble(sParams(4), dQ4)
StringToDouble(sParams(5), dQ5)
StringToDouble(sParams(6), dQExtra)
QParamList.Add(New WjParam(QInd, dThickness, dQ1, dQ2, dQ3, dQ4, dQ5, dQExtra, m_refWaterPageV))
Dim LocalWjParam As New WjParam(QInd, dThickness, dQ1, dQ2, dQ3, dQ4, dQ5, dQExtra, m_refWaterPageV)
QParamList.Add(LocalWjParam)
' leggo il nuovo parametro di correzione conicità (di default il parametro è 0)
If sParams.Length() >= 8 Then
Dim dAngCompo As Double
StringToDouble(sParams(7), dAngCompo)
LocalWjParam.dAngComp = dAngCompo
End If
End If
QInd += 1
End While
@@ -868,6 +881,17 @@ Public Class WjParam
End Set
End Property
' angolo di compensazione conicità getto: 01/02/2023 ver 2.5b1
Private m_dAngComp As Double = 0
Public Property dAngComp As Double
Get
Return m_dAngComp
End Get
Set(value As Double)
m_dAngComp = value
End Set
End Property
Public ReadOnly Property ParamLstBx_Width As Double
Get
Return m_refWaterPageV.ParamsGpBx.ActualWidth - 20
+61
View File
@@ -0,0 +1,61 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtWPFLib
' nuova libreria EgtWPFLib5 ver 2.4g1
Public Class WaterjetDbWindowVM_OmagCUT
Inherits EgtWPFLib5.WaterjetDbWindowVM
Public Function CloseWaterjetDb_OmagCut(MainWindow As Window) As SaveWndBtnEnum
If bIsModified Then
Dim SaveWjDbWnd As New EgtMsgBox(MainWindow, "", EgtMsg(31759), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
Select Case SaveWjDbWnd.m_nPressedBtn
Case 1 ' Yes
WriteWaterjetDb()
bIsModified = False
Return SaveWndBtnEnum.YES
Case 2 ' No
Return SaveWndBtnEnum.NO
Case Else ' Cancel
Return SaveWndBtnEnum.CANCEL
End Select
Else
Dim bExitFor As Boolean = False
For Each Material As EgtWPFLib5.WjMaterial In MaterialList
If Not IsNothing(Material.SubMaterialList) Then
For Each SubMaterial As EgtWPFLib5.WjSubMaterial In Material.SubMaterialList
If Not IsNothing(SubMaterial.ParamList) Then
For Each QParam As EgtWPFLib5.WjParam In SubMaterial.ParamList
bExitFor = QParam.IsModified()
If bExitFor Then Exit For
Next
End If
If bExitFor Then Exit For
Next
End If
If bExitFor Then Exit For
Next
If bExitFor Then
Dim SaveWjDbWnd As New EgtMsgBox(MainWindow, "", EgtMsg(31759), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
Select Case SaveWjDbWnd.m_nPressedBtn
Case 1 ' Yes
WriteWaterjetDb()
bIsModified = False
Return SaveWndBtnEnum.YES
Case 2 ' No
Return SaveWndBtnEnum.NO
Case Else ' Cancel
Return SaveWndBtnEnum.CANCEL
End Select
End If
End If
Return SaveWndBtnEnum.YES
End Function
Sub New(sMachDir As String)
MyBase.New(sMachDir)
End Sub
End Class
+155 -23
View File
@@ -2,6 +2,7 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib
Imports EgtPHOTOLib
Imports System.ComponentModel
Imports System.Threading
Imports System.Windows.Threading
@@ -37,6 +38,8 @@ Class MainWindow
Friend m_MachinePageUC As MachinePageUC
Friend m_OptionsPageUC As OptionsPageUC
Friend m_IsClosingApplication As Integer = 0
' Dichiarazione variabili direttori
Private m_sExeRoot As String = String.Empty
Private m_sDataRoot As String = String.Empty
@@ -302,7 +305,7 @@ Class MainWindow
GetPrivateProfileString(S_MACH, K_CURRMACH, "", m_sCurrMachine, m_sIniFile)
' Impostazione path MachIni file
m_sMachIniFile = m_sMachinesRoot & "\" & m_sCurrMachine & "\" & m_sCurrMachine & ".ini"
' Impostazione path KitIni file
' Impostazione path Kit file
m_sKitsFile = m_sMachinesRoot & "\" & m_sCurrMachine & "\" & MACHININGS_DIR & "\" & KITS_FILE
' Imposto tipo di chiave
#If TRIAL Then
@@ -320,11 +323,13 @@ Class MainWindow
Dim sNestKey As String = ""
EgtUILib.GetPrivateProfileString(S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
EgtSetNestKey(sNestKey)
Dim bNetHwKey As Boolean = ( GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1)
EgtSetNetHwKey( bNetHwKey)
' Verifico abilitazione nesting automatico
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
' Recupero opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2404, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2404, 1, m_nKeyOptions)
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2502, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2502, 1, m_nKeyOptions)
' Verifico abilitazione prodotto
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
' Inizializzazione generale di EgtInterface
@@ -498,6 +503,64 @@ Class MainWindow
AddHandler m_ProdLineTimer.Tick, AddressOf OnProdLine
' Imposto riferimento a funzione delle textbox che disattiva scene in libreria
EgtWPFLib.EgtTextBox.m_refScenesIsEnabled = AddressOf IsEnabledScenes
' --------------------------------- SLAB DB -------------------------------------------------------
If GetPrivateProfileInt(S_SCRAPS, K_ENABLESCRAPS, 0, GetIniFile()) <> 0 Then
' leggo il direttorio in cui cercare il database delle lastre
Dim PhotDir As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_PHOTODIR, "", PhotDir, GetIniFile())
' verifico che esista il file "OmagPHOTOVb.sqlite" nel direttorio inidicato
If System.IO.File.Exists(PhotDir.Trim & "\" & DB_FILENAME) Then
If Not ManageDb.ConnectToDb(PhotDir.Trim & "\" & DB_FILENAME) Then
EgtOutLog("Error connecting to DB: " & PhotDir.Trim & "\" & DB_FILENAME)
' coumico che il grezzo contiene un pezzo e quindi non può essere definito come grezzo
m_CurrentProjectPageUC.ClearMessage()
m_CurrentProjectPageUC.SetErrorMessage("Denied connection SlabDB")
Else
' Impostazione direttorio per backup
Dim BackUpDir As String = m_sDataRoot & "\BackUp"
Directory.CreateDirectory(BackUpDir)
EgtPHOTOLib.MainData.SetConfigDir(m_sConfigDir)
EgtPHOTOLib.MainData.SetKeyLevel(m_nKeyLevel)
EgtPHOTOLib.MainData.SetKeyOptions(CInt(m_nKeyOptions))
EgtPHOTOLib.MainData.SetPhotoDir(PhotDir)
EgtPHOTOLib.MainData.SetBackUpDir(BackUpDir)
EgtPHOTOLib.MainData.SetIsOMagCUT(True)
Dim sLastBlock As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_LASTBLOCK, "", sLastBlock, GetIniFile())
If Not String.IsNullOrEmpty(sLastBlock) Then
EgtPHOTOLib.MainData.SetLastBlock(sLastBlock)
End If
If GetPrivateProfileInt(S_SCRAPS, K_ENABLE_PRINTER, 0, GetIniFile()) = 1 Then
' leggo nome file prn (per stampante zebra)
Dim m_TemplateFilePrinter As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_TEMPLATE, m_sDataRoot & "\Label\Default.prn", m_TemplateFilePrinter, GetIniFile())
' leggo nome del direttorio in cui scrivere il file ini (per stampante zebra) -- solo se si desidera scrivere il file in un direttorio diverso
Dim m_DatFilePrinter As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_DAT, m_sDataRoot & "\Temp", m_DatFilePrinter, GetIniFile())
' leggo nome file exe (per stampante zebra)
Dim m_ZebraUtilitiesExe As String = String.Empty
GetPrivateProfileString(S_SCRAPS, K_ZEBRAUTILITIES, System.AppDomain.CurrentDomain.BaseDirectory & "ZebraPrinterUtilitiesR32.exe", m_ZebraUtilitiesExe, GetIniFile())
EgtPHOTOLib.MainData.SetTemplateFilePrinter(m_TemplateFilePrinter)
EgtPHOTOLib.MainData.SetDataFilePrinter(m_DatFilePrinter)
EgtPHOTOLib.MainData.SetZebraPrinterExe(m_ZebraUtilitiesExe)
EgtPHOTOLib.MainData.SetPrinterVisibility(True)
Else
EgtPHOTOLib.MainData.SetPrinterVisibility(False)
End If
' è permessa una sola istanza alla volta del programma OmagCUT -> "(1)" : "(" & nIstance.ToString & ")"
EgtPHOTOLib.MainData.SetUser(Environment.MachineName & "\" & Environment.UserName & " (1)")
Dim sIdKey As String = String.Empty
EgtGetKeyInfo(sIdKey)
EgtPHOTOLib.MainData.SetKey(sIdKey)
End If
End If
End If
' --------------------------------- SLAB DB -------------------------------------------------------
End Sub
Private Sub ManageSingleIstance()
@@ -546,6 +609,16 @@ Class MainWindow
m_WorkInProgressPageUC.Prepare()
m_WorkInProgressPageUC.UpdateTools()
Dim sVal As String = String.Empty
If m_CurrentMachine.GetUserNote("FsevLength", sVal, m_CurrentMachine.sCurrSaw) Then
StringToDouble(sVal, m_CurrentMachine.dFsevLength)
m_CurrentMachine.SetFsevLength(m_CurrentMachine.dFsevLength)
End If
If m_CurrentMachine.GetUserNote("FsevPerc", sVal, m_CurrentMachine.sCurrSaw) Then
StringToDouble(sVal, m_CurrentMachine.dFsevPerc)
m_CurrentMachine.SetFsevPerc(m_CurrentMachine.dFsevPerc)
End If
' Se macchina fotografica abilitata, ne inizializzo il gestore
#If Not TRIAL Then
If GetKeyOption(MainWindow.KEY_OPT.MAN_PHOTO) Then
@@ -571,6 +644,10 @@ Class MainWindow
TestOff()
' disabilito DragRettangle
DragRettangleOff()
' disabilito SplitCurv
SplitCurvWJOff()
' disattivo StartCurv
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = True
@@ -619,6 +696,8 @@ Class MainWindow
MainWindowGrid.Children.Remove(m_OptionsPageUC)
MainWindowGrid.Children.Add(m_WorkInProgressPageUC)
m_ActivePage = Pages.WorkInProgress
Case Else
WorkInProgressBtn.IsChecked = False
End Select
End Sub
@@ -628,6 +707,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
SplitCurvWJOff()
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -675,6 +756,8 @@ Class MainWindow
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_DirectCutPageUC)
m_ActivePage = Pages.DirectCut
Case Else
WorkInProgressBtn.IsChecked = False
End Select
End Sub
@@ -682,6 +765,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
SplitCurvWJOff()
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -728,6 +813,8 @@ Class MainWindow
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_CadCutPageUC)
m_ActivePage = Pages.CadCut
Case Else
CadCutBtn.IsChecked = False
End Select
End Sub
@@ -735,6 +822,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
SplitCurvWJOff()
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -782,6 +871,8 @@ Class MainWindow
MainWindowGrid.Children.Add(m_CurrentProjectPageUC)
m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_FrameCutPageUC)
m_ActivePage = Pages.FrameCut
Case Else
If FrameCutBtn.IsEnabled Then FrameCutBtn.IsChecked = False
End Select
End Sub
@@ -789,6 +880,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
SplitCurvWJOff()
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -831,6 +924,8 @@ Class MainWindow
MainWindowGrid.Children.Remove(m_OptionsPageUC)
MainWindowGrid.Children.Add(m_MachinePageUC)
m_ActivePage = Pages.Machine
Case Else
MachineBtn.IsChecked = False
End Select
End Sub
@@ -838,6 +933,8 @@ Class MainWindow
m_CurrentProjectPageUC.m_SceneButtons.MeasureBtn.IsChecked = False
TestOff()
DragRettangleOff()
SplitCurvWJOff()
StartCurvWJOff()
Select Case m_ActivePage
Case Pages.WorkInProgress
WorkInProgressBtn.IsChecked = False
@@ -885,7 +982,7 @@ Class MainWindow
MainWindowGrid.Children.Add(m_OptionsPageUC)
m_ActivePage = Pages.Options
Case Pages.Options
OptionsBtn.IsChecked = True
OptionsBtn.IsChecked = False
End Select
End Sub
@@ -990,6 +1087,19 @@ Class MainWindow
m_CurrentProjectPageUC.SaveNamedProject()
m_CurrentProjectPageUC.SaveProject()
End If
' Inizio la chiusura del programma (verifico di aver terminato il processo DripFeed)
EgtOutLog("Iniziato processo di chiusura programma")
m_IsClosingApplication = 1
Dim nCount As Integer = 0
While m_IsClosingApplication <> 2
If nCount > 5 Then
Exit While
End If
' verifico che il processo DripFeed sia terminato
EgtOutLog("Stato chiusura programma: " & m_IsClosingApplication.ToString)
Thread.Sleep(100)
nCount += 1
End While
' Uscita
MainWindowExit()
End Sub
@@ -1031,19 +1141,21 @@ Class MainWindow
' Se non sono in tagli diretti tutto ok
If m_ActivePage <> Pages.DirectCut Then Return True
' Concludo le attività in corso
Select Case m_DirectCutPageUC.m_ActiveDirectCutPage
Case DirectCutPageUC.DirectCutPages.SingleCut
m_DirectCutPageUC.m_SingleCut.SingleCut_Unloaded(sender, e)
Case DirectCutPageUC.DirectCutPages.MultipleCut
m_DirectCutPageUC.m_MultipleCut.MultipleCut_Unloaded(sender, e)
Case DirectCutPageUC.DirectCutPages.GridCut
m_DirectCutPageUC.m_GridCut.GridCut_Unloaded(sender, e)
Case DirectCutPageUC.DirectCutPages.CopyTemplate
m_DirectCutPageUC.m_CopyTemplate.CopyTemplate_Unloaded(sender, e)
Case DirectCutPageUC.DirectCutPages.FlatteningCut
m_DirectCutPageUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e)
Case DirectCutPageUC.DirectCutPages.SawTest
m_DirectCutPageUC.m_SawTest.SawTest_Unloaded(sender, e)
Select Case m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage
Case ControlsDirectCutUC.DirectCutPages.SingleCut
m_DirectCutPageUC.m_ControlsDirectCutUC.m_SingleCut.SingleCut_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.MultipleCut
m_DirectCutPageUC.m_ControlsDirectCutUC.m_MultipleCut.MultipleCut_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.GridCut
m_DirectCutPageUC.m_ControlsDirectCutUC.m_GridCut.GridCut_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.FlatteningCut
m_DirectCutPageUC.m_ControlsDirectCutUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.CopyTemplate
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_CopyTemplate.CopyTemplate_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.Polishing
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_Polishing.Polishing_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.SawTest
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_SawTest.SawTest_Unloaded(sender, e)
End Select
Return True
End Function
@@ -1078,10 +1190,10 @@ Class MainWindow
Case MachinePageUC.MachinePages.WaterJet
' Verifica ed eventuale salvataggio Db Waterjet
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Dim nPressedBtn As Integer = DirectCast(m_MachinePageUC.m_WaterJetPageUC.DataContext, EgtWPFLib5.WaterjetDbWindowVM).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.CANCEL Then
Dim nPressedBtn As Integer = DirectCast(m_MachinePageUC.m_WaterJetPageUC.DataContext, WaterjetDbWindowVM_OmagCUT).CloseWaterjetDb_OmagCut(m_MainWindow)
If nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.CANCEL Then
Return False
ElseIf nPressedBtn = EgtWPFLib5.WaterjetDbWindowVM.SaveWndBtnEnum.NO Then
ElseIf nPressedBtn = WaterjetDbWindowVM_OmagCUT.SaveWndBtnEnum.NO Then
m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
End Select
@@ -1144,10 +1256,15 @@ Class MainWindow
Private Sub OnIdle()
' Recupero il tipo di progetto
Dim nPrjType As Integer = m_CurrentProjectPageUC.GetCurrentProjectType()
' Verifico presenza testa H1 per lama/fresa (nel contesto principale)
Dim nCurrCtx As Integer = EgtGetCurrentContext()
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
Dim bHeadH1 As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
EgtSetCurrentContext(nCurrCtx)
' Aggiorno interfaccia
CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES)
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso (EgtGetHeadId("H1") <> GDB_ID.NULL)
' DirectCutBtn.IsEnabled = (EgtGetHeadId("H1") <> GDB_ID.NULL)
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso bHeadH1
' DirectCutBtn.IsEnabled = bHeadH1
End Sub
' Nomi dei file per OmagVIEW
@@ -1806,7 +1923,9 @@ Class MainWindow
m_CurrentProjectPageUC.SetInfoMessage(EgtMsg(90327)) 'Inseriti Nuovi Pezzi Rovinati
Dim nPartId As Integer = EgtGetLastPart()
For nI As Integer = 1 To nRuPartsCnt
EgtRemoveInfo( nPartId, INFO_PARTOK)
EgtRemoveInfo(nPartId, INFO_PARTOK)
' ricreo la lista delle famiglie di pezzi presenti in parcheggio
m_CadCutPageUC.m_NestPage.GetFamilyGroupInPark()
m_CadCutPageUC.m_NestPage.StoreOnePart(nPartId, True)
nPartId = EgtGetPrevPart(nPartId)
Next
@@ -1905,4 +2024,17 @@ Class MainWindow
End Sub
Public Sub SplitCurvWJOff()
m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.IsChecked = False
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedSplitCurveWJ = False
m_CadCutPageUC.m_NestPage.ResetSplitCurvWJParam()
End Sub
Public Sub StartCurvWJOff()
m_CadCutPageUC.m_NestPage.StartCurveWJBtn.IsChecked = False
Me.m_CadCutPageUC.m_NestPage.m_bIsCheckedStartCurveWJ = False
m_CadCutPageUC.m_NestPage.ResetStartCurvWJParam()
End Sub
End Class
+4 -4
View File
@@ -20,9 +20,9 @@ Imports System.Windows
<Assembly: AssemblyTitle("OmagCUTR32.exe")>
<Assembly: AssemblyDescription("OmagCUT 32 bit")>
#End If
<Assembly: AssemblyCompany("EgalTech s.r.l.")>
<Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("OmagCUT")>
<Assembly: AssemblyCopyright("Copyright © 2015-2022 by EgalTech s.r.l.")>
<Assembly: AssemblyCopyright("Copyright © 2015-2023 by Egalware s.r.l.")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
@@ -62,5 +62,5 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.4.2")>
<Assembly: AssemblyFileVersion("2.4.4.2")>
<Assembly: AssemblyVersion("2.5.3.2")>
<Assembly: AssemblyFileVersion("2.5.3.2")>
+38 -5
View File
@@ -2,6 +2,7 @@
Imports System.Globalization
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports OmagCUT.Num
Public Class CNCommunication
@@ -354,8 +355,8 @@ Public Class CNCommunication
If Not String.IsNullOrEmpty(sVal) Then m_CN.SetCnDataVar(CN_generico.CnData.Remote, sVal)
End If
' Inizializzo la comunicazione
m_CN.Init()
' Inizializzo la comunicazione
m_CN.Init()
Catch ex As Exception
' set status to statusbar
@@ -496,6 +497,7 @@ Public Class CNCommunication
If m_CN.read_active_mode() <> m_nCurrMode Then
m_nCurrMode = m_CN.read_active_mode()
m_MachineStatus.DisplayActiveMode(m_nCurrMode)
m_CN.nMachineMode = m_nCurrMode
End If
Case 2
If m_CN.nMachineMode <> m_nCurrMode Then
@@ -581,6 +583,7 @@ Public Class CNCommunication
m_MainWindow.m_DirectCutPageUC.ZCJogChanged(m_CN.bZCJog)
m_MainWindow.m_DirectCutPageUC.ZBJogChanged(m_CN.bZBCJog)
m_MainWindow.m_DirectCutPageUC.RemoteChanged(m_CN.bRemote)
m_MainWindow.m_DirectCutPageUC.ParkingStateChanged(m_CN.bParkingState)
End If
Else
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.SpindleStateChanged(m_CN.bSpindleState)
@@ -607,6 +610,7 @@ Public Class CNCommunication
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.ZJogChanged(m_CN.bZCJog)
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.BCJogChanged(m_CN.bZBCJog)
m_MainWindow.m_DirectCutPageUC.m_MachineButtons.RemoteChanged(m_CN.bRemote)
m_MainWindow.m_DirectCutPageUC.ParkingStateChanged(m_CN.bParkingState)
End If
End If
@@ -617,11 +621,17 @@ Public Class CNCommunication
End If
' Nuove bottoni (Power Macchina)
If m_IsNewConsole AndAlso m_MainWindow.m_ActivePage = MainWindow.Pages.Machine Then
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.PowerONChanged(m_CN.bPowerON)
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.PowerOFFChanged(Not m_CN.bPowerON)
If m_MainWindow.m_ActivePage = MainWindow.Pages.Machine Then
If m_IsNewConsole Then
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.PowerONChanged(m_CN.bPowerON)
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.PowerOFFChanged(Not m_CN.bPowerON)
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.CncModeChange(m_CN.nMachineMode)
End If
m_MainWindow.m_MachinePageUC.m_MachineCNPageUC.CncModeChange(m_CN.nMachineMode)
End If
If m_MainWindow.m_ActivePage = MainWindow.Pages.WorkInProgress Then
m_MainWindow.m_WorkInProgressPageUC.m_MachineButtons.SpindleStateChanged(m_CN.bSpindleState)
m_MainWindow.m_WorkInProgressPageUC.m_MachineButtons.CoolantStateChanged(m_CN.bCoolantState OrElse m_CN.bInternalCoolantState OrElse m_CN.bExternCoolantState)
@@ -904,28 +914,51 @@ Public Class CNCommunication
End If
' Se richiesta successiva attivazione, faccio reset
If bActivate Then
EgtOutLog("Call function: DGeneralFunctions_Reset")
TimeSpanInit()
m_CN.DGeneralFunctions_Reset()
EgtOutLog(TimeSpanEnd())
End If
' Attesa opportuna
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nResetSendDelay)
If m_nNCType = 1 Then
' Cancellazione eventuale file già presente con lo stesso nome (ignoro eventuale errore)
EgtOutLog("Delete_NC_prog(sNumProg)")
TimeSpanInit()
m_CN.Delete_NC_prog(sNumProg)
EgtOutLog(TimeSpanEnd())
' Attesa opportuna
System.Threading.Thread.Sleep(100)
End If
EgtOutLog("Download_NC_prog(sCncPath, sNumProg)")
TimeSpanInit()
bOk = bOk AndAlso (m_CN.Download_NC_prog(sCncPath, sNumProg) = 0)
EgtOutLog("Nc Type : " & m_nNCType.ToString)
EgtOutLog("IsDripFeed : " & DirectCast(m_CN, NumNCOld).bIsDripFeed)
If m_nNCType = 1 AndAlso TypeOf m_CN Is NumNCOld AndAlso DirectCast(m_CN, NumNCOld).bIsDripFeed Then
' eventauli cambi di stato sono trattati all'interno della funzione
Return True
End If
EgtOutLog(TimeSpanEnd())
' Attesa opportuna
System.Threading.Thread.Sleep(100)
' Se richiesta attivazione
If bActivate Then
' Attivazione programma
EgtOutLog("ActivateProgram(nNumProg)")
TimeSpanInit()
bOk = bOk AndAlso (m_CN.ActivateProgram(nNumProg) = 0)
EgtOutLog(TimeSpanEnd())
' Attesa opportuna
System.Threading.Thread.Sleep(100)
' Modalità automatica
EgtOutLog("DGeneralFunctions_WriteCncMode(0)")
TimeSpanInit()
bOk = bOk AndAlso (m_CN.DGeneralFunctions_WriteCncMode(0) = 0)
EgtOutLog(TimeSpanEnd())
End If
' Messaggio con risultato
If bOk Then
m_CurrProjPage.SetInfoMessage(EgtMsg(90317)) 'Programma CN trasmesso con successo
+1 -1
View File
@@ -92,7 +92,7 @@ Namespace Num
Private Const TIMEOUT As Short = 99
Private Const SHORTSLEEPTIME As Short = 10
Private Const LONGSLEEPTIME As Short = 40
Private Const SHORTSLEEPCOUNT As Short = 20
Private Const SHORTSLEEPCOUNT As Short = 100
Private Const LONGSLEEPCOUNT As Short = 200
#End Region
+946 -786
View File
File diff suppressed because it is too large Load Diff
+70 -3
View File
@@ -115,13 +115,15 @@
<Reference Include="AxInterop.FXLib">
<HintPath>..\..\EgtProg\OmagCUT\AxInterop.FXLib.dll</HintPath>
</Reference>
<Reference Include="EgtPHOTOLib">
<HintPath>..\..\EgtProg\Dll32\EgtPHOTOLib.dll</HintPath>
</Reference>
<Reference Include="EgtUILib, Version=2.3.4.5, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\DllD32\EgtUILib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib, Version=2.1.7.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\EgtWPFLib.dll</HintPath>
<Reference Include="EgtWPFLib">
<HintPath>..\..\EgtProg\DllD32\EgtWPFLib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib5">
<HintPath>..\..\EgtProg\OmagCUT\EgtWPFLib5.dll</HintPath>
@@ -143,6 +145,10 @@
</Reference>
<Reference Include="PresentationFramework.Aero" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
@@ -170,6 +176,12 @@
<DependentUpon>SelectPartFromFamilyWD.xaml</DependentUpon>
</Compile>
<Compile Include="CAM\CamPolishing.vb" />
<Compile Include="DirectCuts\ControlsDirectCutUC.xaml.vb">
<DependentUpon>ControlsDirectCutUC.xaml</DependentUpon>
</Compile>
<Compile Include="DirectCuts\ControlsDirectCutUC1.xaml.vb">
<DependentUpon>ControlsDirectCutUC1.xaml</DependentUpon>
</Compile>
<Compile Include="DirectCuts\Polishing.xaml.vb">
<DependentUpon>Polishing.xaml</DependentUpon>
</Compile>
@@ -179,6 +191,9 @@
<Compile Include="DirectCuts\SingleDrillUC.xaml.vb">
<DependentUpon>SingleDrillUC.xaml</DependentUpon>
</Compile>
<Compile Include="DirectCuts\SquaringUC.xaml.vb">
<DependentUpon>SquaringUC.xaml</DependentUpon>
</Compile>
<Compile Include="DrawImport\AlzFrontUC.xaml.vb">
<DependentUpon>AlzFrontUC.xaml</DependentUpon>
</Compile>
@@ -205,10 +220,20 @@
<Compile Include="Machine\ImportExportToolWD.xaml.vb">
<DependentUpon>ImportExportToolWD.xaml</DependentUpon>
</Compile>
<Compile Include="Machine\WaterjetDbWindowVM.vb" />
<Compile Include="Machine\WaterJetPageVM.vb" />
<Compile Include="Machine\WaterJetPageUC.xaml.vb">
<DependentUpon>WaterJetPageUC.xaml</DependentUpon>
</Compile>
<Compile Include="Project\AddToDataBaseUC.xaml.vb">
<DependentUpon>AddToDataBaseUC.xaml</DependentUpon>
</Compile>
<Compile Include="Project\OmagPhotoWD.xaml.vb">
<DependentUpon>OmagPhotoWD.xaml</DependentUpon>
</Compile>
<Compile Include="Project\ScrapsWD.xaml.vb">
<DependentUpon>ScrapsWD.xaml</DependentUpon>
</Compile>
<Compile Include="Project\StartLauncheWD.xaml.vb">
<DependentUpon>StartLauncheWD.xaml</DependentUpon>
</Compile>
@@ -412,6 +437,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\ControlsDirectCutUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\ControlsDirectCutUC1.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\Polishing.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -424,6 +457,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\SquaringUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DrawImport\AlzFrontUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -459,6 +496,18 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Project\AddToDataBaseUC.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Project\OmagPhotoWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Project\ScrapsWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Project\StartLauncheWD.xaml">
</Page>
<Page Include="Project\CicloStartWD.xaml">
@@ -1255,6 +1304,24 @@
<ItemGroup>
<Resource Include="Resources\GenerateCN.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\SPLIT-WJ.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\START-WJ.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Ponticelli.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Ponticelli_delete.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Parking.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Quality.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagCUT\OmagCUTR32.exe
+2
View File
@@ -107,6 +107,8 @@
<BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Deseleziona-tuttoImg" UriSource="Resources/NewIcons/Deseleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Drag_RettangleImg" UriSource="Resources/NewIcons/Drag_Rettangle.png"></BitmapImage>
<BitmapImage x:Key="StartWJImg" UriSource="Resources/NewIcons/START-WJ.png"></BitmapImage>
<BitmapImage x:Key="SplitWJImg" UriSource="Resources/NewIcons/SPLIT-WJ.png"></BitmapImage>
<!--Machine-->
<BitmapImage x:Key="DatiMacchinaImg" UriSource="Resources/NewIcons/DatiMacchina.png"></BitmapImage>
+7
View File
@@ -175,6 +175,8 @@
<BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Deseleziona-tuttoImg" UriSource="Resources/NewIcons/Deseleziona-tutto.png"></BitmapImage>
<BitmapImage x:Key="Drag_RettangleImg" UriSource="Resources/NewIcons/Drag_Rettangle.png"></BitmapImage>
<BitmapImage x:Key="StartWJImg" UriSource="Resources/NewIcons/START-WJ.png"></BitmapImage>
<BitmapImage x:Key="SplitWJImg" UriSource="Resources/NewIcons/SPLIT-WJ.png"></BitmapImage>
<!--Machine-->
<BitmapImage x:Key="DatiMacchinaImg" UriSource="Resources/NewIcons/DatiMacchina.png"></BitmapImage>
@@ -206,6 +208,7 @@
<BitmapImage x:Key="XYJogImg" UriSource="Resources/NewIcons/XYJog.png"></BitmapImage>
<BitmapImage x:Key="ZCJogImg" UriSource="Resources/NewIcons/ZCJog.png"></BitmapImage>
<BitmapImage x:Key="ZBJogImg" UriSource="Resources/NewIcons/ZBJog.png"></BitmapImage>
<BitmapImage x:Key="ParkingImg" UriSource="Resources/NewIcons/Parking.png"></BitmapImage>
<!--Frame-->
@@ -216,6 +219,9 @@
<!--Machinig-->
<BitmapImage x:Key="Allunga-AccorciaImg" UriSource="Resources/NewIcons/Allunga-o-accorcia.png"></BitmapImage>
<BitmapImage x:Key="Inizio-Allunga-AccorciaImg" UriSource="Resources/NewIcons/Inizio-allunga-o-accorcia.png"></BitmapImage>
<BitmapImage x:Key="PonticelliWJImg" UriSource="Resources/NewIcons/Ponticelli.png"></BitmapImage>
<BitmapImage x:Key="PonticelliDeleteWJImg" UriSource="Resources/NewIcons/Ponticelli_delete.png"></BitmapImage>
<BitmapImage x:Key="QualityWJImg" UriSource="Resources/NewIcons/Quality.png"></BitmapImage>
<BitmapImage x:Key="Fine-Allunga-AccorciaImg" UriSource="Resources/NewIcons/Fine-allunga-o-accorcia.png"></BitmapImage>
<BitmapImage x:Key="ON_OFF-singolo-taglioImg" UriSource="Resources/NewIcons/ON_OFF-singolo-taglio.png"></BitmapImage>
<BitmapImage x:Key="Tutti-ONImg" UriSource="Resources/NewIcons/Tutti-ON.png"></BitmapImage>
@@ -1204,6 +1210,7 @@
<Style x:Key="OmagCut_CalculatorTextBox" TargetType="{x:Type EgtWPFLib:EgtTextBox}" BasedOn="{StaticResource OmagCut_TextBox}">
<Setter Property="Keyboard" Value="Calculator"/>
<Setter Property="IsLength" Value="True"/>
<Setter Property="KeyboardDimension" Value="300"/>
</Style>
+436 -416
View File
@@ -55,23 +55,43 @@
</GroupBox>
<!--UNITA' DI MISURA-->
<GroupBox Name="UnitsOfMeasureGpBx"
Grid.Column="1"
Grid.RowSpan="3"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid >
<Grid Name ="UnitGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="3.2*"/>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<ComboBox Name="UnitsOfMeasureCmBx" Grid.Column="1" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox Name="UnitsOfMeasureCmBx" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox Name="FractionPatternCmBx" Grid.Column="1" Grid.Row="3" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox Name="PrecisionCmBx" Grid.Column="2" Grid.Row="3" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
@@ -80,32 +100,32 @@
</ComboBox>
</Grid>
</GroupBox>
<GroupBox Name="TextColorGpBx"
Grid.Column="2" Grid.RowSpan="3" Grid.ColumnSpan="1"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Button Name="TextColorBtn"
Grid.Row="1" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
</Grid>
</GroupBox>
<GroupBox Name="TextColorGpBx"
Grid.Column="2" Grid.RowSpan="3" Grid.ColumnSpan="1"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Button Name="TextColorBtn"
Grid.Row="1" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
</Grid>
</GroupBox>
<GroupBox Name="FastGridGpBx"
<GroupBox Name="FastGridGpBx"
Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
@@ -133,458 +153,458 @@
</GroupBox>
<GroupBox Name="SlabGpBx" Grid.RowSpan="1"
<GroupBox Name="SlabGpBx" Grid.RowSpan="1"
Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Name="SlabLayerMsgTxBl" Grid.Column="0" Grid.Row="0"
<TextBlock Name="SlabLayerMsgTxBl" Grid.Column="0" Grid.Row="0"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="PartsLayerMsgTxBl" Grid.Column="0" Grid.Row="1"
<TextBlock Name="PartsLayerMsgTxBl" Grid.Column="0" Grid.Row="1"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="ScrapLayerMsgTxBl" Grid.Column="0" Grid.Row="2"
<TextBlock Name="ScrapLayerMsgTxBl" Grid.Column="0" Grid.Row="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="StdThickMsgTxBl" Grid.Column="0" Grid.Row="3"
<TextBlock Name="StdThickMsgTxBl" Grid.Column="0" Grid.Row="3"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="SlabLayerMsgTxBx" Grid.Column="1" Grid.Row="0" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="SlabLayerMsgTxBx" Grid.Column="1" Grid.Row="0" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_LeftKeyboardTextBoxNoBorder}" />
<EgtWPFLib:EgtTextBox Name="PartsLayerMsgTxBx" Grid.Column="1" Grid.Row="1" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="PartsLayerMsgTxBx" Grid.Column="1" Grid.Row="1" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_LeftKeyboardTextBoxNoBorder}" />
<EgtWPFLib:EgtTextBox Name="ScrapLayerMsgTxBx" Grid.Column="1" Grid.Row="2" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="ScrapLayerMsgTxBx" Grid.Column="1" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_LeftKeyboardTextBoxNoBorder}" />
<EgtWPFLib:EgtTextBox Name="StdThickMsgTxBx" Grid.Column="1" Grid.Row="3" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="StdThickMsgTxBx" Grid.Column="1" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
</Grid>
</GroupBox>
</GroupBox>
<!--Incilinazione da colore-->
<GroupBox Name="ColorToSideAngGpBx" Grid.RowSpan="3"
<!--Incilinazione da colore-->
<GroupBox Name="ColorToSideAngGpBx" Grid.RowSpan="3"
Grid.Column="0" Grid.Row="3"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
</Grid.RowDefinitions>
<CheckBox Name="CTSAboxEnableChBx" Grid.Column="0" Grid.Row="0"
<CheckBox Name="CTSAboxEnableChBx" Grid.Column="0" Grid.Row="0"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<TextBlock Name="CTSAboxEnableMsgTxBl" Grid.Column="1" Grid.Row="0"
<TextBlock Name="CTSAboxEnableMsgTxBl" Grid.Column="1" Grid.Row="0"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" HorizontalAlignment="Left" />
<TextBlock Name="ToleranceMsgTxBl" Grid.Column="3" Grid.Row="0"
<TextBlock Name="ToleranceMsgTxBl" Grid.Column="3" Grid.Row="0"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="ToleranceMsgTxBx" Grid.Column="4" Grid.Row="0" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="ToleranceMsgTxBx" Grid.Column="4" Grid.Row="0" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
<TextBlock Name="TalloneMsgTxBl" Grid.Column="5" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="InclinazioneMsgTxBl" Grid.Column="3" Grid.Row="1"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<CheckBox Name="CTSA1EnableChBx" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA1Btn" Grid.Row="2" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA1TalloneTxBx" Grid.Column="5" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA1InclinazioneTxBx" Grid.Column="3" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA2EnableChBx" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA2Btn" Grid.Row="3" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA2TalloneTxBx" Grid.Column="5" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA2InclinazioneTxBx" Grid.Column="3" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA3EnableChBx" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA3Btn" Grid.Row="4" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA3TalloneTxBx" Grid.Column="5" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA3InclinazioneTxBx" Grid.Column="3" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA4EnableChBx" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA4Btn" Grid.Row="5" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA4TalloneMsgTxBl" Grid.Column="2" Grid.Row="5"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA4TalloneTxBx" Grid.Column="5" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA4InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="5"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA4InclinazioneTxBx" Grid.Column="3" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA5EnableChBx" Grid.Column="0" Grid.Row="6"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA5Btn" Grid.Row="6" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA5TalloneMsgTxBl" Grid.Column="2" Grid.Row="6"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA5TalloneTxBx" Grid.Column="5" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA5InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="6"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA5InclinazioneTxBx" Grid.Column="3" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA6EnableChBx" Grid.Column="0" Grid.Row="7"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA6Btn" Grid.Row="7" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA6TalloneMsgTxBl" Grid.Column="2" Grid.Row="7"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA6TalloneTxBx" Grid.Column="5" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA6InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="7"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA6InclinazioneTxBx" Grid.Column="3" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA7EnableChBx" Grid.Column="0" Grid.Row="8"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA7Btn" Grid.Row="8" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA7TalloneMsgTxBl" Grid.Column="2" Grid.Row="8"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA7TalloneTxBx" Grid.Column="5" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA7InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="8"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA7InclinazioneTxBx" Grid.Column="3" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA8EnableChBx" Grid.Column="0" Grid.Row="9"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA8Btn" Grid.Row="9" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA8TalloneMsgTxBl" Grid.Column="2" Grid.Row="9"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA8TalloneTxBx" Grid.Column="5" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA8InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="9"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA8InclinazioneTxBx" Grid.Column="3" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA9EnableChBx" Grid.Column="0" Grid.Row="10"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA9Btn" Grid.Row="10" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA9TalloneMsgTxBl" Grid.Column="2" Grid.Row="10"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA9TalloneTxBx" Grid.Column="5" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA9InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="10"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA9InclinazioneTxBx" Grid.Column="3" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA10EnableChBx" Grid.Column="0" Grid.Row="11"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA10Btn" Grid.Row="11" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA10TalloneMsgTxBl" Grid.Column="2" Grid.Row="11"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA10TalloneTxBx" Grid.Column="5" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA10InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="11"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA10InclinazioneTxBx" Grid.Column="3" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
</GroupBox>
<TextBlock Name="TalloneMsgTxBl" Grid.Column="5" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="InclinazioneMsgTxBl" Grid.Column="3" Grid.Row="1"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<GroupBox Name="ThemesGpBx"
<CheckBox Name="CTSA1EnableChBx" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA1Btn" Grid.Row="2" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA1TalloneTxBx" Grid.Column="5" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA1InclinazioneTxBx" Grid.Column="3" Grid.Row="2" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA2EnableChBx" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA2Btn" Grid.Row="3" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA2TalloneTxBx" Grid.Column="5" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA2InclinazioneTxBx" Grid.Column="3" Grid.Row="3" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA3EnableChBx" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA3Btn" Grid.Row="4" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTSA3TalloneTxBx" Grid.Column="5" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTSA3InclinazioneTxBx" Grid.Column="3" Grid.Row="4" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA4EnableChBx" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA4Btn" Grid.Row="5" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA4TalloneMsgTxBl" Grid.Column="2" Grid.Row="5"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA4TalloneTxBx" Grid.Column="5" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA4InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="5"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA4InclinazioneTxBx" Grid.Column="3" Grid.Row="5" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA5EnableChBx" Grid.Column="0" Grid.Row="6"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA5Btn" Grid.Row="6" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA5TalloneMsgTxBl" Grid.Column="2" Grid.Row="6"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA5TalloneTxBx" Grid.Column="5" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA5InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="6"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA5InclinazioneTxBx" Grid.Column="3" Grid.Row="6" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA6EnableChBx" Grid.Column="0" Grid.Row="7"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA6Btn" Grid.Row="7" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA6TalloneMsgTxBl" Grid.Column="2" Grid.Row="7"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA6TalloneTxBx" Grid.Column="5" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA6InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="7"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA6InclinazioneTxBx" Grid.Column="3" Grid.Row="7" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA7EnableChBx" Grid.Column="0" Grid.Row="8"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA7Btn" Grid.Row="8" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA7TalloneMsgTxBl" Grid.Column="2" Grid.Row="8"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA7TalloneTxBx" Grid.Column="5" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA7InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="8"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA7InclinazioneTxBx" Grid.Column="3" Grid.Row="8" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA8EnableChBx" Grid.Column="0" Grid.Row="9"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA8Btn" Grid.Row="9" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA8TalloneMsgTxBl" Grid.Column="2" Grid.Row="9"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA8TalloneTxBx" Grid.Column="5" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA8InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="9"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA8InclinazioneTxBx" Grid.Column="3" Grid.Row="9" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA9EnableChBx" Grid.Column="0" Grid.Row="10"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA9Btn" Grid.Row="10" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA9TalloneMsgTxBl" Grid.Column="2" Grid.Row="10"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA9TalloneTxBx" Grid.Column="5" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA9InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="10"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA9InclinazioneTxBx" Grid.Column="3" Grid.Row="10" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTSA10EnableChBx" Grid.Column="0" Grid.Row="11"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTSA10Btn" Grid.Row="11" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<TextBlock Name="CTSA10TalloneMsgTxBl" Grid.Column="2" Grid.Row="11"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA10TalloneTxBx" Grid.Column="5" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<TextBlock Name="CTSA10InclinazioneMsgTxBl" Grid.Column="4" Grid.Row="11"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="CTSA10InclinazioneTxBx" Grid.Column="3" Grid.Row="11" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
</GroupBox>
<GroupBox Name="ThemesGpBx"
Grid.Column="1"
Grid.Row="5"
Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<ComboBox Name="ThemesCmBx" Grid.Column="1" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox Name="ThemesCmBx" Grid.Column="1" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
<!--Affondamneto da Colore-->
<GroupBox Name="ColorToEngraveGpBx" Grid.RowSpan="3"
<!--Affondamneto da Colore-->
<GroupBox Name="ColorToEngraveGpBx" Grid.RowSpan="3"
Grid.Column="3" Grid.ColumnSpan="2" Grid.Row="3"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
</Grid.RowDefinitions>
<CheckBox Name="CTEboxEnableChBx" Grid.Column="0" Grid.Row="0"
<CheckBox Name="CTEboxEnableChBx" Grid.Column="0" Grid.Row="0"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<TextBlock Name="CTEboxEnableMsgTxBl" Grid.Column="1" Grid.Row="0"
<TextBlock Name="CTEboxEnableMsgTxBl" Grid.Column="1" Grid.Row="0"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" HorizontalAlignment="Left" />
<TextBlock Name="ToleranceEMsgTxBl" Grid.Column="3" Grid.Row="0"
<TextBlock Name="ToleranceEMsgTxBl" Grid.Column="3" Grid.Row="0"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<EgtWPFLib:EgtTextBox Name="ToleranceEMsgTxBx" Grid.Column="4" Grid.Row="0" Margin="10,0,10,0"
<EgtWPFLib:EgtTextBox Name="ToleranceEMsgTxBx" Grid.Column="4" Grid.Row="0" Margin="10,0,10,0" IsLength="False"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
<TextBlock Name="AffondamentoMsgTxBl" Grid.Column="3" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Name="LarghezzaMsgTxBl" Grid.Column="5" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<CheckBox Name="CTE1EnableChBx" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE1Btn" Grid.Row="2" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE1AffondamentoTxBx" Grid.Column="3" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE1LarghezzaTxBx" Grid.Column="5" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE2EnableChBx" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE2Btn" Grid.Row="3" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE2AffondamentoTxBx" Grid.Column="3" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE2LarghezzaTxBx" Grid.Column="5" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE3EnableChBx" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE3Btn" Grid.Row="4" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE3AffondamentoTxBx" Grid.Column="3" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE3LarghezzaTxBx" Grid.Column="5" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE4EnableChBx" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE4Btn" Grid.Row="5" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE4AffondamentoTxBx" Grid.Column="3" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE4LarghezzaTxBx" Grid.Column="5" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE5EnableChBx" Grid.Column="0" Grid.Row="6"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE5Btn" Grid.Row="6" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE5AffondamentoTxBx" Grid.Column="3" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE5LarghezzaTxBx" Grid.Column="5" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE6EnableChBx" Grid.Column="0" Grid.Row="7"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE6Btn" Grid.Row="7" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE6AffondamentoTxBx" Grid.Column="3" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE6LarghezzaTxBx" Grid.Column="5" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE7EnableChBx" Grid.Column="0" Grid.Row="8"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE7Btn" Grid.Row="8" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE7AffondamentoTxBx" Grid.Column="3" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE7LarghezzaTxBx" Grid.Column="5" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE8EnableChBx" Grid.Column="0" Grid.Row="9"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE8Btn" Grid.Row="9" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE8AffondamentoTxBx" Grid.Column="3" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE8LarghezzaTxBx" Grid.Column="5" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE9EnableChBx" Grid.Column="0" Grid.Row="10"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE9Btn" Grid.Row="10" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE9AffondamentoTxBx" Grid.Column="3" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE9LarghezzaTxBx" Grid.Column="5" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE10EnableChBx" Grid.Column="0" Grid.Row="11"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE10Btn" Grid.Row="11" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE10AffondamentoTxBx" Grid.Column="3" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE10LarghezzaTxBx" Grid.Column="5" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
</GroupBox>
<TextBlock Name="AffondamentoMsgTxBl" Grid.Column="3" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<!--Selezione il tipo di avvio del programma-->
<GroupBox Name="StartLauncherGpBx"
<TextBlock Name="LarghezzaMsgTxBl" Grid.Column="5" Grid.Row="1" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<CheckBox Name="CTE1EnableChBx" Grid.Column="0" Grid.Row="2"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE1Btn" Grid.Row="2" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE1AffondamentoTxBx" Grid.Column="3" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE1LarghezzaTxBx" Grid.Column="5" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE2EnableChBx" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE2Btn" Grid.Row="3" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE2AffondamentoTxBx" Grid.Column="3" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE2LarghezzaTxBx" Grid.Column="5" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE3EnableChBx" Grid.Column="0" Grid.Row="4"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE3Btn" Grid.Row="4" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE3AffondamentoTxBx" Grid.Column="3" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE3LarghezzaTxBx" Grid.Column="5" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE4EnableChBx" Grid.Column="0" Grid.Row="5"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE4Btn" Grid.Row="5" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE4AffondamentoTxBx" Grid.Column="3" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE4LarghezzaTxBx" Grid.Column="5" Grid.Row="5" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE5EnableChBx" Grid.Column="0" Grid.Row="6"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE5Btn" Grid.Row="6" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE5AffondamentoTxBx" Grid.Column="3" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE5LarghezzaTxBx" Grid.Column="5" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE6EnableChBx" Grid.Column="0" Grid.Row="7"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE6Btn" Grid.Row="7" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE6AffondamentoTxBx" Grid.Column="3" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE6LarghezzaTxBx" Grid.Column="5" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE7EnableChBx" Grid.Column="0" Grid.Row="8"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE7Btn" Grid.Row="8" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE7AffondamentoTxBx" Grid.Column="3" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE7LarghezzaTxBx" Grid.Column="5" Grid.Row="8" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE8EnableChBx" Grid.Column="0" Grid.Row="9"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE8Btn" Grid.Row="9" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE8AffondamentoTxBx" Grid.Column="3" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE8LarghezzaTxBx" Grid.Column="5" Grid.Row="9" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE9EnableChBx" Grid.Column="0" Grid.Row="10"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE9Btn" Grid.Row="10" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE9AffondamentoTxBx" Grid.Column="3" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE9LarghezzaTxBx" Grid.Column="5" Grid.Row="10" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<CheckBox Name="CTE10EnableChBx" Grid.Column="0" Grid.Row="11"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,0,10,0"/>
<Button Name="CTE10Btn" Grid.Row="11" Grid.Column="1"
Style="{StaticResource OmagCut_Button}" />
<EgtWPFLib:EgtTextBox Name="CTE10AffondamentoTxBx" Grid.Column="3" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
<EgtWPFLib:EgtTextBox Name="CTE10LarghezzaTxBx" Grid.Column="5" Grid.Row="11" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}" />
</Grid>
</GroupBox>
<!--Selezione il tipo di avvio del programma-->
<GroupBox Name="StartLauncherGpBx"
Grid.Column="3" Grid.RowSpan="3" Grid.ColumnSpan="1"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<ComboBox Name="StartLauncherCmBx" Grid.Column="1" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox Name="StartLauncherCmBx" Grid.Column="1" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</GroupBox>
<GroupBox Name="FeedbackGpBx"
</Grid>
</GroupBox>
<GroupBox Name="FeedbackGpBx"
Grid.Column="4" Grid.RowSpan="3" Grid.ColumnSpan="1"
Style="{DynamicResource OmagCut_GroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Button Name="FeedbackBtn"
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Button Name="FeedbackBtn"
Grid.Row="1" Grid.Column="1"
Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource SendImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
<Image Source="{DynamicResource SendImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
</Grid>
</GroupBox>
+77 -10
View File
@@ -7,6 +7,8 @@ Public Class OptionsPageUC
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private UnitsList() As String = {"inch", "mm"}
Private FractionPatternList() As String = {"Decimal", "Foot'Inch""", "Only Inch"}
Private PrecisionList() As Double = {2, 4, 8, 16, 32, 64, 128}
Private ThemesList() As String = {"Classic", "Dark"}
' "Last Project", "New Project", "Open Folder", "Show Window"
@@ -18,6 +20,10 @@ Public Class OptionsPageUC
LanguageCmBx.ItemsSource = m_MainWindow.m_LanguagesList
' Associazione della lista unità di misura alla combobox
UnitsOfMeasureCmBx.ItemsSource = UnitsList
' Associazione della lista dei Pattern
FractionPatternCmBx.ItemsSource = FractionPatternList
' Associazione della lista della precisione
PrecisionCmBx.ItemsSource = PrecisionList
' Associazione della lista temi alla combobox
ThemesCmBx.ItemsSource = ThemesList
@@ -27,6 +33,16 @@ Public Class OptionsPageUC
' Imposto l'unità di misura corrente
UnitsOfMeasureCmBx.SelectedIndex = If(EgtUiUnitsAreMM(), 1, 0)
' Imposto il pattern della per la rappresentazione frazionaria
nCurrFractionPattern = GetPrivateProfileInt(S_GENERAL, K_FRACTIONPATTERN, 0, m_MainWindow.GetIniFile())
FractionPatternCmBx.SelectedIndex = nCurrFractionPattern
EgtWPFLib.FractionStringConverter.SetCurrFractionPattern(nCurrFractionPattern)
' Imposto la preciosne della rappresentazione frazionaria
dPrecision = CDbl(GetPrivateProfileInt(S_GENERAL, K_PRECISION, 64, m_MainWindow.GetIniFile()))
Dim Index As Integer = PrecisionCmBx.Items.IndexOf(dPrecision)
PrecisionCmBx.SelectedIndex = Index
' Imposto il tema corrente
ThemesCmBx.SelectedIndex = GetPrivateProfileInt(S_GENERAL, K_THEME, 0, m_MainWindow.GetIniFile())
Themes_StartUp()
@@ -322,9 +338,60 @@ Public Class OptionsPageUC
EgtSetUiUnits(bMM)
m_MainWindow.m_CurrentProjectPageUC.UpdateHeightTxBx()
WritePrivateProfileString(S_GENERAL, K_MMUNITS, If(bMM, "1", "0"), m_MainWindow.GetIniFile())
If bMM Then
' se selezione MILLIMETRI nascondo la combobox che permette di inserie il tipo di pattern per la definizione delle frazioni
FractionPatternCmBx.Visibility = Visibility.Hidden
PrecisionCmBx.Visibility = Visibility.Hidden
Dim RowNum As Integer = UnitGrid.RowDefinitions.Count
If RowNum > 3 Then
UnitsOfMeasureCmBx.SetValue(Grid.RowSpanProperty, 3)
End If
Else
' se selezione POLLICI mostro la combobox che permette di inserie il tipo di pattern per la definizione delle frazioni
FractionPatternCmBx.Visibility = Visibility.Visible
PrecisionCmBx.Visibility = Visibility.Visible
UnitsOfMeasureCmBx.SetValue(Grid.RowSpanProperty, 1)
End If
' Aggiorno dati nella pagina dipendenti da unità di misura
UpdateSlabDxf()
UpdateAllCSTA()
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
m_MainWindow.m_CurrentMachine.LoadWJMaterial()
If Not IsNothing(m_MainWindow.m_MachinePageUC.m_WaterJetPageUC) Then
m_MainWindow.m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
End If
End Sub
Private Sub FractionPatternCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles FractionPatternCmBx.SelectionChanged
nCurrFractionPattern = FractionPatternCmBx.SelectedIndex
EgtWPFLib.FractionStringConverter.SetCurrFractionPattern(nCurrFractionPattern)
WritePrivateProfileString(S_GENERAL, K_FRACTIONPATTERN, nCurrFractionPattern, m_MainWindow.GetIniFile())
' Aggiorno dati nella pagina dipendenti da unità di misura
UpdateSlabDxf()
UpdateAllCSTA()
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
m_MainWindow.m_CurrentMachine.LoadWJMaterial()
If Not IsNothing(m_MainWindow.m_MachinePageUC.m_WaterJetPageUC) Then
m_MainWindow.m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
End If
End Sub
Private Sub PrecisionCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles PrecisionCmBx.SelectionChanged
dPrecision = PrecisionCmBx.SelectedValue
WritePrivateProfileString(S_GENERAL, K_PRECISION, dPrecision, m_MainWindow.GetIniFile())
' Aggiorno dati nella pagina dipendenti da unità di misura
UpdateSlabDxf()
UpdateAllCSTA()
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
m_MainWindow.m_CurrentMachine.LoadWJMaterial()
If Not IsNothing(m_MainWindow.m_MachinePageUC.m_WaterJetPageUC) Then
m_MainWindow.m_MachinePageUC.m_WaterJetPageUC.WaterJetPage_Reinitialize()
End If
End If
End Sub
Private Sub ThemesCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles ThemesCmBx.SelectionChanged
@@ -648,70 +715,70 @@ Public Class OptionsPageUC
Private Sub CTSA1InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA1InclinazioneTxBx.TextChanged
If CTSA1InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA1InclinazioneTxBx.Text, dAng) Then CTSA1InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA1InclinazioneTxBx.Text, dAng) Then CTSA1InclinazioneTxBx.Text = ""
End If
CTSA1EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA2InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA2InclinazioneTxBx.TextChanged
If CTSA2InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA2InclinazioneTxBx.Text, dAng) Then CTSA2InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA2InclinazioneTxBx.Text, dAng) Then CTSA2InclinazioneTxBx.Text = ""
End If
CTSA2EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA3InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA3InclinazioneTxBx.TextChanged
If CTSA3InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA3InclinazioneTxBx.Text, dAng) Then CTSA3InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA3InclinazioneTxBx.Text, dAng) Then CTSA3InclinazioneTxBx.Text = ""
End If
CTSA3EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA4InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA4InclinazioneTxBx.TextChanged
If CTSA4InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA4InclinazioneTxBx.Text, dAng) Then CTSA4InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA4InclinazioneTxBx.Text, dAng) Then CTSA4InclinazioneTxBx.Text = ""
End If
CTSA4EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA5InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA5InclinazioneTxBx.TextChanged
If CTSA5InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA5InclinazioneTxBx.Text, dAng) Then CTSA5InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA5InclinazioneTxBx.Text, dAng) Then CTSA5InclinazioneTxBx.Text = ""
End If
CTSA5EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA6InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA6InclinazioneTxBx.TextChanged
If CTSA6InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA6InclinazioneTxBx.Text, dAng) Then CTSA6InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA6InclinazioneTxBx.Text, dAng) Then CTSA6InclinazioneTxBx.Text = ""
End If
CTSA6EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA7InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA7InclinazioneTxBx.TextChanged
If CTSA7InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA7InclinazioneTxBx.Text, dAng) Then CTSA7InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA7InclinazioneTxBx.Text, dAng) Then CTSA7InclinazioneTxBx.Text = ""
End If
CTSA7EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA8InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA8InclinazioneTxBx.TextChanged
If CTSA8InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA8InclinazioneTxBx.Text, dAng) Then CTSA8InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA8InclinazioneTxBx.Text, dAng) Then CTSA8InclinazioneTxBx.Text = ""
End If
CTSA8EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA9InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA9InclinazioneTxBx.TextChanged
If CTSA9InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA9InclinazioneTxBx.Text, dAng) Then CTSA9InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA9InclinazioneTxBx.Text, dAng) Then CTSA9InclinazioneTxBx.Text = ""
End If
CTSA9EnableChBx_Click(sender, e)
End Sub
Private Sub CTSA10InclinazioneTxBx_TextChanged(sender As Object, e As TextChangedEventArgs) Handles CTSA10InclinazioneTxBx.TextChanged
If CTSA10InclinazioneTxBx.Text <> "-" Then
Dim dAng As Double : If Not StringToLen(CTSA10InclinazioneTxBx.Text, dAng) Then CTSA10InclinazioneTxBx.Text = ""
Dim dAng As Double : If Not StringToDouble(CTSA10InclinazioneTxBx.Text, dAng) Then CTSA10InclinazioneTxBx.Text = ""
End If
CTSA10EnableChBx_Click(sender, e)
End Sub
+95
View File
@@ -0,0 +1,95 @@
<UserControl x:Class="AddToDataBaseUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="853.3" d:DesignWidth="1280">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<!--Nome BLOCCO-->
<TextBlock Name="BlockTxBl" Grid.Column="1" Grid.Row="1" Text="Name block"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="BlockTxBx" Grid.Column="3" Grid.Row="1"
Style="{DynamicResource OmagCut_KeyboardTextBox}"/>
<!--Numero ID-->
<TextBlock Name="NbrIdTxBl" Grid.Column="1" Grid.Row="3" Text="ID"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="NbrIdTxBx" Grid.Column="3" Grid.Row="3"
Style="{DynamicResource OmagCut_KeyboardTextBox}"/>
<!--STATE-->
<TextBlock Name="StateTxBl" Grid.Column="1" Grid.Row="5" Text="State"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<ComboBox Name="StateCmBx" Grid.Column="3" Grid.Row="5" Style="{StaticResource OmagCut_LeftComboBoxInBorder}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!--PROJECT-->
<TextBlock Name="ProjectNameTxBl" Grid.Column="1" Grid.Row="7" Text="Project"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="ProjectTxBx" Grid.Column="3" Grid.Row="7"
Style="{DynamicResource OmagCut_KeyboardTextBox}"/>
<!--MATERIAL-->
<TextBlock Name="MatTxBl" Grid.Column="1" Grid.Row="9" Text="Mat"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="MatTxBx" Grid.Column="3" Grid.Row="9"
Style="{DynamicResource OmagCut_KeyboardTextBox}" IsEnabled="False"/>
<!--THICKNESS-->
<TextBlock Name="ThicknessTxBl" Grid.Column="1" Grid.Row="11" Text="Thickness"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="ThicknessTxBx" Grid.Column="3" Grid.Row="11"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<!--WAREHOUSE-->
<TextBlock Name="WarehouseTxBl" Grid.Column="1" Grid.Row="13" Text="Warehouse position"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="WarehouseTxBx" Grid.Column="3" Grid.Row="13"
Style="{DynamicResource OmagCut_KeyboardTextBox}"/>
<!--CANCEL-->
<Button Name="CacelBtn" Grid.Column="1" Grid.Row="15" Content="Delete"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<!--ADD-->
<Button Name="AddBtn" Grid.Column="3" Grid.Row="15" Content="Add"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<!--PRINT-->
<Button Name="PrintBtn" Grid.Column="1" Grid.Row="17" Content="Print"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
</Grid>
</Border>
</UserControl>
+121
View File
@@ -0,0 +1,121 @@
Imports EgtUILib
Imports EgtPHOTOLib
Imports System.IO
Public Class AddToDataBaseUC
Private m_OmagPhotoWD As OmagPhotoWD
#Region "PROPERTY"
Private Sub BlockTxBx_EgtClosed(sender As Object, e As EventArgs) Handles BlockTxBx.EgtClosed
' assegno il dato alla classe inizializzata nella libreria
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNameBlock = BlockTxBx.Text
' devo riasseganre il valore dell'indice
NbrIdTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNbrID
EnableButtons()
End Sub
Private Sub NbrIdTxBx_EgtClosed(sender As Object, e As EventArgs) Handles NbrIdTxBx.EgtClosed
' assegno il dato alla classe inizializzata nella libreria
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNbrID = NbrIdTxBx.Text
EnableButtons()
End Sub
Private Sub StateCmBx_Changed() Handles StateCmBx.SelectionChanged
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.State = StateCmBx.SelectedIndex
EnableButtons()
End Sub
Private Sub ProjectTxBx_EgtClosed(sender As Object, e As EventArgs) Handles ProjectTxBx.EgtClosed
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.ProjectAssignedTo = ProjectTxBx.Text
EnableButtons()
End Sub
Private Sub ThicknessTxBx_EgtClosed(sender As Object, e As EventArgs) Handles ThicknessTxBx.EgtClosed
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Thickness = ThicknessTxBx.Text
EnableButtons()
End Sub
Private Sub WarehouseTxBx_EgtClosed(sender As Object, e As EventArgs) Handles WarehouseTxBx.EgtClosed
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.WarehousePosition = WarehouseTxBl.Text
EnableButtons()
End Sub
#End Region ' Property
Sub New(LocalOmagPhotoWD As OmagPhotoWD)
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
m_OmagPhotoWD = LocalOmagPhotoWD
End Sub
' dopo la crezione della pagina imposto lo stato dei pulsanti
Private Sub PostLoaded() Handles Me.Loaded
If EgtPHOTOLib.MainData.bEnableTextId Then
BlockTxBx.Visibility = Visibility.Collapsed
BlockTxBl.Visibility = Visibility.Collapsed
Else
NbrIdTxBx.IsEnabled = False
End If
PrintBtn.IsEnabled = EgtPHOTOLib.MainData.bEnablePrinter
EnableButtons()
End Sub
#Region "COMMAND"
Private Sub CancelBtn_Click() Handles CacelBtn.Click
' se è stata inserita nel DB allora devo rimuoverla ed esco dalla pagina
EgtPHOTOLib.refOptionPanelVM.Delete()
' notifico che il grezzo è stato rimosso
OmagPhotoWD.m_IsDeleted = True
' notifico che il grezzo non è stato aggiunto al DB delle lastre
OmagPhotoWD.m_IsAdded = False
' elimino l'identificativo usato nel database del grezzo appena inserito
OmagPhotoWD.m_sDtBsId = ""
' esco dalla pagina
m_OmagPhotoWD.Close()
End Sub
Private Sub AddBtn_Click() Handles AddBtn.Click
' se non sono validi i campi allora attendo
If Not EgtPHOTOLib.PhotoMap.refOptionPanelVM.Ok_IsEnabled Then Return
' modalità di funzionamento della libreria: ProjectSlabVM.ProjectModeOpt.NEWSLAB
EgtPHOTOLib.PhotoMap.refOptionPanelVM.Save()
' notifico che il grezzo è stato aggiunto al DB delle lastre
OmagPhotoWD.m_IsAdded = True
' salvo l'identificativo usato nel database del grezzo appena inserito
OmagPhotoWD.m_sDtBsId = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Id
' salvo il nome del blocco che è stato utilizzato
If Not EgtPHOTOLib.MainData.bEnableTextId Then
WritePrivateProfileString(S_SCRAPS, K_LASTBLOCK, EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNameBlock, m_OmagPhotoWD.m_MainWindow.GetIniFile())
End If
' aggiorno il testo del messaggio "Add" "Save"
AddBtn.Content = "Save"
' notifico che da ora la lastra inserita è in modalità di modifica (non salvo la lastra come nuova, ma la sovrascrivo come in modifica)
EgtPHOTOLib.PhotoMap.refProjectVM.SetSelProjectMode(ProjectSlabVM.ProjectModeOpt.DETAIL)
EgtPHOTOLib.PhotoMap.refProjectVM.SelSlab.SetOrigValues()
' notifico che la lastra è in modifica da questo programma
EgtPHOTOLib.PhotoMap.refProjectVM.SelSlab.IsSelected = EgtPHOTOLib.MainData.nKey
EgtPHOTOLib.PhotoMap.refOptionPanelVM.IsSelected()
End Sub
Private Sub PrintBtn_Click() Handles PrintBtn.Click
EgtPHOTOLib.PhotoMap.refOptionPanelVM.PrintLabel()
End Sub
#End Region ' Command
#Region "METHODS"
Private Sub EnableButtons()
AddBtn.IsEnabled = EgtPHOTOLib.PhotoMap.refOptionPanelVM.Ok_IsEnabled
' se la stampante non è abilitata allora non permetto assolutamente di abilitare il comando
If EgtPHOTOLib.MainData.bEnablePrinter Then
PrintBtn.IsEnabled = EgtPHOTOLib.PhotoMap.refOptionPanelVM.Ok_IsEnabled
End If
End Sub
#End Region ' Methods
End Class
+21 -8
View File
@@ -107,7 +107,8 @@ Public Class CurrentProjectPageUC
Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile())
CurrentProjectScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
' inizializzo la scena (DB geometrico + visualizzazione) e verifico presenza chiave
If Not CurrentProjectScene.Init() Then
Dim bProd As Boolean = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_BASE)
If Not CurrentProjectScene.Init() Or Not bProd Then
' Rimuovo l'host della scena perchè altrimenti rimarrebbe il buco!!
Me.CurrentProjectPageGrid.Children.Remove(CurrentProjectSceneHost)
' Flag per riavvio programma
@@ -158,6 +159,7 @@ Public Class CurrentProjectPageUC
#End If
m_MainWindow.Close()
If bRestart Then Process.Start(Application.ResourceAssembly.Location)
Return
End If
' visualizzazione avanzata dei triangoli costituenti le superfici
Dim bShowTriaAdv As Boolean = (GetPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1, m_MainWindow.GetIniFile()) <> 0)
@@ -168,11 +170,6 @@ Public Class CurrentProjectPageUC
' dimensione lineare max in pixel delle textures
Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096, m_MainWindow.GetIniFile())
EgtSetTextureMaxLinPixels(nTxrMaxLinPix)
' Verifico abilitazione prodotto
If Not m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_BASE) Then
Dim MissingKeyWnd As New EgtMsgBox(m_MainWindow, EgtMsg(MSG_MISSINGKEYWD + 1), EgtMsg(MSG_MISSINGKEYWD + 5), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL, 1)
m_MainWindow.Close()
End If
' Recupero e imposto handle finestra principale
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
EgtSetMainWindowHandle(hMainWnd)
@@ -399,6 +396,8 @@ Public Class CurrentProjectPageUC
m_MainWindow.m_CadCutPageUC.m_NestPage.CalcRawPart()
m_dRawHeight = 0
UpdateHeightTxBx()
' prima di parcheggiare svuoto dei pezzi in parcheggio sia vuota
m_MainWindow.m_CadCutPageUC.m_NestPage.ResetListOfGruopInPark()
' Parcheggio correttamente i pezzi precedentemente salvati
Dim nId2 As Integer = EgtGetFirstPart()
While nId2 <> GDB_ID.NULL
@@ -410,7 +409,7 @@ Public Class CurrentProjectPageUC
nId2 = EgtGetNextPart(nId2)
End While
' Aggiorno Aree totale e da lavorare dei pezzi
SetTotalArea( dTotArea)
SetTotalArea(dTotArea)
UpdateToProduceArea()
ShowAreas()
' Dichiaro progetto non modificato
@@ -508,6 +507,20 @@ Public Class CurrentProjectPageUC
UpdateHeightTxBx()
' aggiorno materiale
m_MainWindow.m_CurrentMachine.SetCurrMatByName(GetProjectMaterial())
' aggiorno altezza sovaratavola
If GetPrivateProfileInt(S_GENERAL, "AdditionalTableByProj", 0, m_sIniFile) = 1 Then
' leggo il valore OrigiAdditionalTable
Dim dValue As Double = m_MainWindow.m_CurrentMachine.dAdditionalTable
Select Case GetCurrentTable()
Case 3
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB3_ADDITIONALTABLE, dValue)
Case 2
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_TAB2_ADDITIONALTABLE, dValue)
Case Else
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), K_ADDITIONALTABLE, dValue)
End Select
m_MainWindow.m_CurrentMachine.dAdditionalTable = dValue
End If
' forzo visualizzazione eventuali dati su aree
SetAreasStatus( True)
' Dichiaro progetto non modificato
@@ -856,7 +869,7 @@ Public Class CurrentProjectPageUC
Friend Function UpdateSideAngCutProbeFlag() As Boolean
Dim bCurrSacProbe As Boolean =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_SACPROBE, 0, m_MainWindow.GetMachIniFile()) <> 0)
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_SACPROBE, 0, m_MainWindow.GetMachIniFile()) <> 0) AndAlso m_MainWindow.m_CurrentMachine.IsRawProbingPossible()
Dim bProjSacProbe As Boolean = GetSideAngCutProbeFlag()
If bCurrSacProbe <> bProjSacProbe Then Return SetSideAngCutProbeFlag(bCurrSacProbe)
Return True
+40
View File
@@ -0,0 +1,40 @@
<Window x:Class="OmagPhotoWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:OmagCUT="clr-namespace:OmagCUT"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtPHOTOLib="clr-namespace:EgtPHOTOLib;assembly=EgtPHOTOLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="OmagPHOTO" Height="700" Width="1250" WindowStyle="None" ResizeMode="NoResize" ShowInTaskbar="False" >
<Border Style="{DynamicResource OmagCut_Border}">
<Grid Name="OptionSLabGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="0.25*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.25*"/>
</Grid.RowDefinitions>
<!-- nel codice mi occupo di riempire la griglia con gli UserControl -->
<Button Name="ExitBtn" Grid.Column="2" Grid.Row="3"
Style="{DynamicResource OmagCut_GradientBlueIconButton}" IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<DockPanel Grid.Column="1" Grid.Row="1" Visibility="Hidden">
<!--StatusBar-->
<EgtWPFLib5:StatusBarV DataContext="{StaticResource StatusBarVM}" DockPanel.Dock="Bottom"/>
</DockPanel>
</Grid>
</Border>
</Window>
+172
View File
@@ -0,0 +1,172 @@
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtPHOTOLib
Imports System.IO
Public Class OmagPhotoWD
' Riferimento alla MainWindow
Friend m_MainWindow As MainWindow
Private m_AddToDataBaseUC As AddToDataBaseUC
Private m_StateList As New List(Of EgtWPFLib5.IdNameStruct)
' il contorno dell sfrido è definito a partire dai punti che rappresentano i vertici dello stesso
Private m_ContornScrap As New List(Of Point3d)
' se lo stato della lastra è "2" significa che è già stata inserita nel DB (non devo generare una nuova foto!)
Private m_nState As Integer = 1
' salvo il nome del file *.jpg
Private m_sFileImage As String = String.Empty
' definsce se il slavataggio è andato a buon fine (questa variabile deve esistere anche dopo la chiusura della finestra!)
Public Shared m_IsAdded As Boolean = False
Public Shared m_sDtBsId As String = ""
Public Shared m_bSlabIsSelected As Boolean = False
' definisce se il grezzo è stato eliminato dal DB
Public Shared m_IsDeleted As Boolean = False
Public Sub New(sImage As String, ContornScrap As List(Of Point3d), MnWindow As MainWindow, nState As Integer, DatabaseID As String)
InitializeComponent()
' salvo il riferimento della finestra principale
m_MainWindow = MnWindow
' leggo lo stato dello sfrido per decidere quale modalità di apertuta usare
m_nState = nState
'--------------- CARCICO lastra esistente ---------------
If m_nState = 2 Then
m_bSlabIsSelected = False
' ricerco l'elemento già inserito nel DB
For Each Item As Slab In EgtPHOTOLib.refProjectVM.SlabList
Dim CurrId As String = Item.GetCurrentID.Trim
If Item.GetCurrentID.Trim = DatabaseID.Trim Then
EgtPHOTOLib.refProjectVM.SelSlab = Item
m_bSlabIsSelected = True
Exit For
End If
Next
' se non trovo nessun elemento nel db allora esco
If IsNothing(EgtPHOTOLib.refProjectVM.SelSlab) Then
EgtOutLog("ID is not found in database: " & DatabaseID)
m_bSlabIsSelected = False
Return
End If
' procedo alla visualizzazione della pagina
EgtPHOTOLib.PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.DETAIL
' carico la lista degli stati letta dalla libreria
For Each Item As EgtWPFLib5.IdNameStruct In EgtPHOTOLib.PhotoMap.refOptionPanelVM.StateList
m_StateList.Add(Item)
Next
' notifico che la lastra è in modifica da questo programma
EgtPHOTOLib.PhotoMap.refProjectVM.SelSlab.IsSelected = EgtPHOTOLib.MainData.nKey
EgtPHOTOLib.PhotoMap.refOptionPanelVM.IsSelected()
' posiziono la finestra
Me.Top = 15
Me.Left = 15
Return
End If
'--------------- DEFINSCO nuova lastra esistente ---------------
' imposto come prima pagina sempre la lista (per inizializzare gli elementi della libreria) ACCELERARE il processo di creazione di questo oggetto!
EgtPHOTOLib.PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.NEWSLAB
' imposto il percoso della foto appena generato
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.ImagePath = sImage
' carico la foto come texture
EgtPHOTOLib.PhotoMap.refOptionPanelVM.PostPhoto(sImage, "")
' carico l'elenco dei materiali (non serve...)
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SetMaterialFromDB()
' definisco la lista degli stati
For Each Item As EgtWPFLib5.IdNameStruct In EgtPHOTOLib.PhotoMap.refOptionPanelVM.StateList
m_StateList.Add(Item)
Next
' imposto i dati lastra
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Thickness = m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight
' carico la lista degli stati letta dalla libreria
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelState = EgtPHOTOLib.PhotoMap.refOptionPanelVM.StateList(0)
' ricorco il materiale corrente nell'elenco dei materiali presenti nel DB (se non presente nell'elenco?)
For Each MaterialItem As String In EgtPHOTOLib.PhotoMap.refOptionPanelVM.MaterialList
If MaterialItem.ToLower = m_MainWindow.m_CurrentMachine.CurrMat.sName.ToLower Then
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Material = MaterialItem
Exit For
End If
Next
' salvo in locale i punti che arrivano dal progetto
m_ContornScrap = ContornScrap
' avvio la finestra di modifica
Dim m_refImagePrevieV As New EgtPHOTOLib.ImagePreviewV()
' modifico l'immagine e salvo
m_refImagePrevieV.SetContourScraps(m_ContornScrap)
m_refImagePrevieV.Hide()
m_refImagePrevieV.Show()
m_refImagePrevieV.SaveImage()
m_refImagePrevieV.Close()
m_bSlabIsSelected = True
' posiziono la finestra
Me.Top = 15
Me.Left = 15
End Sub
' posizionamento degli UserControl all'interno della griglia
Private Sub OmagPhotoWD_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' definisco nella pagina la posizione dello UserControl e inizializzo le liste
m_AddToDataBaseUC = New AddToDataBaseUC(Me)
m_AddToDataBaseUC.SetValue(Grid.ColumnProperty, 0)
m_AddToDataBaseUC.SetValue(Grid.RowProperty, 1)
m_AddToDataBaseUC.SetValue(Grid.RowSpanProperty, 2)
Me.OptionSLabGrid.Children.Add(m_AddToDataBaseUC)
m_AddToDataBaseUC.StateCmBx.ItemsSource = m_StateList
' recupero la scena dalla libreria e la carico nel finestra
Dim MyScene As New EgtPHOTOLib.SceneHostSlabV(EgtPHOTOLib.PhotoMap.refSceneHostVM)
MyScene.SetValue(Grid.ColumnProperty, 1)
MyScene.SetValue(Grid.ColumnSpanProperty, 2)
MyScene.SetValue(Grid.RowProperty, 1)
Me.OptionSLabGrid.Children.Add(MyScene)
End Sub
' carcio i dati della lastra
Private Sub PostLoaded() Handles Me.Loaded
If Not m_bSlabIsSelected Then
Return
End If
' carico i campi con i dati letti da database
If m_nState = 2 Then
' provo ad eseguire la separazione dei campi
m_sDtBsId = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Id
m_AddToDataBaseUC.BlockTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNameBlock
m_AddToDataBaseUC.NbrIdTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNbrID
m_AddToDataBaseUC.StateCmBx.SelectedIndex = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.State
m_AddToDataBaseUC.MatTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Material
m_AddToDataBaseUC.ThicknessTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Thickness
m_AddToDataBaseUC.ProjectTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.ProjectAssignedTo
' aggiorno il testo del messaggio "Add" "Save"
m_AddToDataBaseUC.AddBtn.Content = "Save"
Return
End If
' inizializzo i campi
'm_AddToDataBaseUC.IdTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.Id
m_AddToDataBaseUC.BlockTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNameBlock
m_AddToDataBaseUC.NbrIdTxBx.Text = EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.sNbrID
m_AddToDataBaseUC.StateCmBx.SelectedIndex = 0
m_AddToDataBaseUC.MatTxBx.Text = m_MainWindow.m_CurrentMachine.CurrMat.sName
m_AddToDataBaseUC.ThicknessTxBx.Text = LenToString(m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight, 4)
m_AddToDataBaseUC.ProjectTxBx.Text = m_MainWindow.m_CurrentProjectPageUC.GetCurrentProjectName()
' rendo in primo piano la finestra
Me.Activate()
End Sub
Private Sub ExitBtn_Click() Handles ExitBtn.Click
' se esista una lastra corrente, notifico che deve essere deselezionata
If Not IsNothing(EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab) Then
EgtPHOTOLib.PhotoMap.refOptionPanelVM.SelSlab.IsSelected = 0
EgtPHOTOLib.PhotoMap.refOptionPanelVM.IsSelected()
End If
Me.Close()
End Sub
End Class
+30 -9
View File
@@ -2,7 +2,8 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
mc:Ignorable="d"
d:DesignHeight="853.3" d:DesignWidth="1280" Initialized="OpenPage_Initialized" Loaded="OpenPage_Loaded" Unloaded="OpenPage_Unloaded">
@@ -17,22 +18,42 @@
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="8*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<!-- Definizione della Grid Inferiore per i Button V e X -->
<!-- Definizione della Grid Superiore -->
<Grid Name="UpperButtonsGrid" Grid.Column="1" Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
</Grid>
<TextBlock Name="FilePathTxBl" Foreground="White" Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
<ListBox Name="FileListBox" Grid.Row="1" Grid.RowSpan="2" ItemTemplate="{DynamicResource DataTemplateItem}"
ItemsSource="{Binding ItemList}"/>
<TextBlock Name="FilePathTxBl" Grid.Row="0" Foreground="White" Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
<Grid Grid.Row="1" Grid.RowSpan="2">
<Grid.RowDefinitions>
<RowDefinition Height="6.5*"/>
<RowDefinition Height="0.65*"/>
</Grid.RowDefinitions>
<ListBox Name="FileListBox" ItemTemplate="{DynamicResource DataTemplateItem}"
ItemsSource="{Binding ItemList}"/>
<Grid Grid.Row="1" Margin="0,0,8,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<EgtWPFLib:EgtTextBox Name="FindTxBx" Grid.Column="0"
Style="{DynamicResource OmagCut_LeftKeyboardTextBoxNoBorder}"/>
<Button Name="ClearFindBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" Margin="0,6,2,6">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}" Width="30" />
</Button>
</Grid>
</Grid>
<Border Name="MessageBrd" Grid.Row="3" BorderThickness="0,1,0,0" BorderBrush="Gray">
<TextBlock Name="MessageTxBx" TextAlignment="Center"
Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
+31
View File
@@ -38,6 +38,7 @@ Public Class OpenPageUC
OpenSceneHost.SetValue(Grid.ColumnProperty, 1)
OpenSceneHost.SetValue(Grid.RowProperty, 2)
' OpenSceneHost.SetValue(Grid.RowSpanProperty, 1)
OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 2)
Me.OpenPageGrid.Children.Add(OpenSceneHost)
' Definizione del collegamento tra ItemList e ListBox1
@@ -203,6 +204,36 @@ Public Class OpenPageUC
End If
End Sub
Private Sub FindTxBx_EgtClosed(sender As Object, e As EventArgs) Handles FindTxBx.EgtClosed
' Elimino spazi iniziali e finali
FindTxBx.Text = FindTxBx.Text.Trim()
' ricarico la lista dei file
LoadCurrDir()
Dim UpdateListFile As New List(Of IconListBoxItem)
' Se esiste un nome
If Not String.IsNullOrWhiteSpace(FindTxBx.Text) Then
For Each Item As IconListBoxItem In FileListBox.ItemsSource
If Item.Name.ToLower.Contains(FindTxBx.Text.ToLower) Then
UpdateListFile.Add(Item)
End If
Next
End If
If UpdateListFile.Count > 0 Then
FileListBox.ItemsSource = UpdateListFile
Else
FileListBox.ItemsSource = m_MainWindow.m_OpenItemList
End If
End Sub
Private Sub ClearFindBtn_Click() Handles ClearFindBtn.Click
' svuoto la text
FindTxBx.Text = ""
' ricarico la lista dei file
LoadCurrDir()
' e aggiorno la lista dei file
FileListBox.ItemsSource = m_MainWindow.m_OpenItemList
End Sub
Private Function ClearView() As Boolean
' Pulisco il DB geometrico locale
EgtNewFile()
+107 -3
View File
@@ -1,4 +1,6 @@
Imports System.IO
Imports System.ComponentModel
Imports System.Drawing
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib
@@ -252,6 +254,12 @@ Public Class ProjectMgrUC
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Cancello eventuali messaggi
m_CurrProjPage.ClearMessage()
' cancello tutti i tagli di separazione (Waterjet)
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)
@@ -472,7 +480,6 @@ Public Class ProjectMgrUC
If Not (m_CurrMachine.bProdLine Or m_CurrMachine.bDemo) Then
' Download programma (eventuali errori sono segnalati dalla funzione)
If m_CurrNcComm.SendProgram(sCncPath, 900) Then
' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' se abilitato e non è restart, lancio eventuale lua post-trasmissione
@@ -488,6 +495,20 @@ Public Class ProjectMgrUC
End If
'------------------- FINE Avvio il Ciclo-Start-------------------------
' ------------------ INIZIO gestione SCRAPS ---------------------------
Dim NewScrapsList As New List(Of Scrap)
' procedo all'aggiornamento della lista degli sfridi
UpDateScrapList(NewScrapsList)
' se esiste almeno uno sfrido da inserire come nuovo grezzo
If NewScrapsList.Count > 0 Then
' apro la finestra con l'elenco degli sfridi
Dim MyScrapsWD As New ScrapsWD(m_MainWindow, Me, NewScrapsList)
MyScrapsWD.ShowDialog()
End If
' ------------------ FINE gestione SCRAPS -----------------------------
' Altrimenti linea di produzione
Else
' Verifico non sia già stato trasmesso
@@ -659,6 +680,32 @@ Public Class ProjectMgrUC
#End If
End Sub
' aggiorno la lista dei grezzi/sfridi
Public Sub UpDateScrapList(ByRef NewScrapsList As List(Of Scrap))
If IsNothing(NewScrapsList) Then
NewScrapsList = New List(Of Scrap)
Else
NewScrapsList.Clear()
End If
' procedo all'aggiornamento della lista degli sfridi
Dim CurrRawId As Integer = EgtGetFirstRawPart()
Dim IsNewScraps As Integer = 0
Dim nCountScrap As Integer = 1
While CurrRawId <> GDB_ID.NULL
If EgtGetInfo(CurrRawId, K_ISNEWSCRAPS, IsNewScraps) Then
If IsNewScraps = 1 Or IsNewScraps = 2 Then
' deve essere aggiunto nel DB delle lastre come nuovo grezzo (l'indice è utilizzato per definire il nome della lastra)
NewScrapsList.Add(New Scrap(CurrRawId, "Scrap_" & nCountScrap.ToString, IsNewScraps))
nCountScrap += 1
' è già stato aggiunto al DB delle lastre come nuovo grezzo
Else
' non è stato definito come nuovo grezzo
End If
End If
CurrRawId = EgtGetNextRawPart(CurrRawId)
End While
End Sub
' ------------------------------------------------ GENERA COMANDI CNC MOVIMENTO ------------------------------------------------
Private Sub ExecuteCommandCNC(ptMid As Point3d, dAngC As Double, dAngB As Double)
@@ -749,7 +796,7 @@ Public Class ProjectMgrUC
Else
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
EgtResetMark(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
End If
' aggiorno il disegno
EgtDraw()
@@ -932,3 +979,60 @@ Public Class ProjectMgrUC
End Sub
End Class
Public Class Scrap
Private m_iPictureID As Integer
Private m_sName As String
Private m_IdRaw As Integer
Private m_nState As Integer
Public Property PictureID() As Integer
Get
Return m_iPictureID
End Get
Set(value As Integer)
m_iPictureID = value
End Set
End Property
Public Property Name() As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
End Set
End Property
Public ReadOnly Property IdRaw() As Integer
Get
Return m_IdRaw
End Get
End Property
Public ReadOnly Property nState As Integer
Get
Return m_nState
End Get
End Property
Public ReadOnly Property PictureString() As String
Get
Return "/Resources/ImportPageListBoxImages/" + PictureID.ToString() + ".png"
End Get
End Property
Sub New(IdScrap As Integer, NameScrap As String, State As Integer)
m_IdRaw = IdScrap
m_sName = NameScrap
m_nState = State
' immagine del grezzo
If m_nState = 2 Then
m_iPictureID = 5
Else
m_iPictureID = 4
End If
End Sub
End Class
+50
View File
@@ -0,0 +1,50 @@
<Window x:Class="ScrapsWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="Scraps" Height="482.6" Width="226.6" WindowStyle="None" ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True" Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Label Name="TitleTxBl" Grid.Column="1" Grid.Row="1" Foreground="White" FontSize="20" VerticalAlignment="Center"/>
<ListBox Name="ScrapsListBox" Grid.Column="1" Grid.Row="2" ItemTemplate="{DynamicResource DataTemplateItem}"
ItemsSource="{Binding ItemList, NotifyOnSourceUpdated=True}"/>
<Grid Grid.Column="1" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.1*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" >
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Column="3" Style="{DynamicResource OmagCut_GradientBlueIconButton}" IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+186
View File
@@ -0,0 +1,186 @@
Imports EgtUILib
Imports EgtPHOTOLib
Imports System.IO
Public Class ScrapsWD
' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_refProjectMgrUC As ProjectMgrUC
Private m_ScrapList As New List(Of Scrap)
Private m_CurrScrapId As Integer = GDB_ID.NULL
Private m_CurrScrapState As Integer = 2
Private m_sDatabaseId As String = ""
Private Sub Initalized()
' resetto eventuali errori mostrati nella pagina
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
' inserisco il titolo della pagina aperta
TitleTxBl.Content = "Scraps List"
ScrapsListBox.ItemsSource = m_ScrapList
' definzione posizione finetra
Me.Left = 25
Me.Top = 25
End Sub
Public Sub New(Owner As Window, LocalProjectMgrUC As ProjectMgrUC, MyScrapList As List(Of Scrap))
Me.Owner = Owner
InitializeComponent()
m_ScrapList = MyScrapList
m_refProjectMgrUC = LocalProjectMgrUC
Initalized()
End Sub
' visualizzo la fase del pezzo selezionato
Private Sub ScrapListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ScrapsListBox.PreviewMouseUp
Dim vItems As Scrap = ScrapsListBox.SelectedItems(0)
' elimino l'utimo selzione
EgtResetMark(m_CurrScrapId)
EgtDeselectObj(m_CurrScrapId)
' ricerco il grezzo associato a questo Id
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
If nRawId = vItems.IdRaw Then
m_CurrScrapId = nRawId
m_CurrScrapState = vItems.nState
If m_CurrScrapState = 2 Then
EgtGetInfo(nRawId, K_DATABASEID, m_sDatabaseId)
Else
m_sDatabaseId = String.Empty
End If
Dim nCurrRawPhase As Integer = 0
' recupero la fase del grezzo corrente
EgtGetInfo(nRawId, "Ph", nCurrRawPhase)
If nCurrRawPhase <> 0 Then
' evidenzio lo sfrido selezionato all'interno della fase
EgtSetCurrPhase(nCurrRawPhase)
EgtSetMark(m_CurrScrapId)
EgtSelectObj(m_CurrScrapId)
EgtDraw()
Return
End If
End If
nRawId = EgtGetNextRawPart(nRawId)
End While
End Sub
Private Sub OkBtn_Click() Handles OkBtn.Click
If m_CurrScrapId = GDB_ID.NULL Then Return
' creo una copia dell'immagine attuale (fotocamera 1)
Dim sImage As String = String.Empty
Dim sInfo As String = String.Empty
GetPrivateProfileString(S_CAMERA, K_CAM_IMAGE, "", sImage, m_MainWindow.GetIniFile())
GetPrivateProfileString(S_CAMERA, K_CAM_INFO, "", sInfo, m_MainWindow.GetIniFile())
' recupero dalla libreria il percoso del database
Dim sPhotoDir As String = String.Empty
EgtPHOTOLib.GetPhotoDir(sPhotoDir)
' recupero l'ora corrente
Dim sDate As String = Date.Now.ToString
sDate = sDate.Replace("/", "_")
sDate = sDate.Replace(" ", "_")
sDate = sDate.Replace(":", "_")
Dim sNewPath As String = sPhotoDir & "\Scrap_" & sDate
Try
File.Copy(sImage, sNewPath & ".jpg", False)
File.Copy(sInfo, sNewPath & ".txt", False)
Catch ex As Exception
EgtOutLog(ex.Message.ToString)
End Try
' se non esiste la classe StatusBar allora provo ad inizializzarla...
If IsNothing(EgtWPFLib5.LibMap.refStatusBarVM) Then
Dim objStatusBarVM As New EgtWPFLib5.StatusBarVM
End If
' salvo il contesto corrente del programma
Dim nCurrentContetxt As Integer = EgtGetCurrentContext()
' costruisco l'elenco ordinato dei punti che reppresentano il contorno del grezzo da salvare
Dim ContornScrapList As New List(Of Point3d)
Dim RefId As New Frame3d
Dim nRawSolidId As Integer = EgtGetFirstNameInGroup(m_CurrScrapId, "RawSolid")
EgtGetTextureFrame(nRawSolidId, nRawSolidId, RefId)
Dim nCurveCompoId As Integer = EgtGetFirstNameInGroup(m_CurrScrapId, "RawOutline")
Dim dStart As Double = 0
Dim dEnd As Double = 0
EgtCurveDomain(nCurveCompoId, dStart, dEnd)
Dim ptCurrPoint As Point3d
For dU As Integer = dStart To dEnd - 1
EgtAtParamPoint(nCurveCompoId, dU, m_CurrScrapId, ptCurrPoint)
ptCurrPoint.z = 0
ptCurrPoint.ToLoc(RefId)
ContornScrapList.Add(ptCurrPoint)
Next
MainData.SetPreviousContext(nCurrentContetxt)
'If Not IsNothing(MainData.ContextSTONELib) Or MainData.ContextSTONELib <> 0 Then
'If MainData.ContextSTONELib <> 0 Then
' EgtSetCurrentContext(MainData.ContextSTONELib)
'End If
' inizializzo PojectSlabV pechè si occupa di inizializzare le pagine Detail e Option
Dim MyProjectSlab As New EgtPHOTOLib.ProjectSlabV
' ACCELERARE il processo di creazione di questo oggetto!
MyProjectSlab.DataContext = New EgtPHOTOLib.ProjectSlabVM
' per ogni creazione della nuova pagina viene creata una nuova scena, ma non viene eliminata
Dim refProjectVMSceneContext As Integer = EgtGetCurrentContext()
' apro la finestra OmagPHOTO (passo il nome del file come copia dell'originale)
If ContornScrapList.Count > 2 Then
Dim MyOmagPhotoWD As New OmagPhotoWD(sNewPath & ".jpg", ContornScrapList, m_MainWindow, m_CurrScrapState, m_sDatabaseId)
OmagPhotoWD.m_IsAdded = False
OmagPhotoWD.m_sDtBsId = String.Empty
OmagPhotoWD.m_IsDeleted = False
MyOmagPhotoWD.ShowDialog()
Else
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
m_MainWindow.m_CurrentProjectPageUC.SetErrorMessage("Error loading contour scrap")
End If
' ripristino il contesto corrente dell'immagine
EgtSetCurrentContext(EgtPHOTOLib.MainData.PreviousContext)
' se l'inserimento è andatoa buon fine allora procedo a notificarlo
If OmagPhotoWD.m_IsAdded AndAlso Not String.IsNullOrEmpty(OmagPhotoWD.m_sDtBsId) Then
EgtSetInfo(m_CurrScrapId, K_ISNEWSCRAPS, 2)
EgtSetInfo(m_CurrScrapId, K_DATABASEID, OmagPhotoWD.m_sDtBsId)
Else
' se è stato eliminato dal DB allora aggiorno la lista dei grezzi
If OmagPhotoWD.m_IsDeleted Then
EgtSetInfo(m_CurrScrapId, K_ISNEWSCRAPS, 1)
EgtRemoveInfo(m_CurrScrapId, K_DATABASEID)
End If
Try
File.Delete(sNewPath & ".jpg")
File.Delete(sNewPath & ".txt")
Catch ex As Exception
EgtOutLog(ex.Message.ToString)
End Try
End If
'----------------INIZIO ELIMINAZIONE contesti generati da OmagPHOTOLib per la visualizzazione delle Texture
EgtDeleteContext(EgtPHOTOLib.MainData.ContextSTONELib)
EgtDeleteContext(refProjectVMSceneContext)
'---------------- FINE ELIMINAZIONE contesti
' aggiorno la lista degli scrap
m_refProjectMgrUC.UpDateScrapList(m_ScrapList)
ScrapsListBox.ItemsSource = m_ScrapList
ScrapsListBox.Items.Refresh()
End Sub
Private Sub ExitBtn_Click() Handles ExitBtn.Click
' resetto eventuali errori mostrati nella pagina
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
' deseleziono l'oggetto corrente
EgtResetMark(m_CurrScrapId)
EgtDeselectObj(m_CurrScrapId)
' reimposto la fase iniziale
EgtSetCurrPhase(1)
EgtDraw()
Me.Close()
End Sub
End Class
+392 -12
View File
@@ -45,9 +45,9 @@ Public Class RawPartPageUC
' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL
' Definizione lista modalità di definizione grezzo per ComboBox
Private m_RawModeList(2) As String
Private m_RawModeDamagedList(1) As String
Private m_RawModeListEx(3) As String
Private m_RawModeList(3) As String
Private m_RawModeDamagedList(2) As String
Private m_RawModeListEx(4) As String
' Variabile che indica la zona danneggiata selezionata
Private m_nSelDmg As Integer
' Array per modalità per punti
@@ -63,6 +63,8 @@ Public Class RawPartPageUC
Private m_CurveXDamagedAreaList As New List(Of Integer)
' Flag che indica se è in corso la definizione tramite laser o se il grezzo è già chiuso
Private m_bIsRawDefiningByLaser As Boolean = False
' Flag che indica se è in corso la definizione tramite lama o se il grezzo è già chiuso
Private m_bIsRawDefiningBySaw As Boolean = False
' Flag di tastatura in corso
Private m_bProbingOn As Boolean = False
' Flag inserimento punti laser da disegno
@@ -99,6 +101,8 @@ Public Class RawPartPageUC
FROM_PHOTO = 3
DAMAGED = 4
DAMAGED_BY_LASER = 5
DAMAGED_BY_SAW = 6
FROM_SAW = 7
End Enum
Private Sub RawPartPage_Initialized(sender As Object, e As EventArgs)
@@ -123,14 +127,32 @@ Public Class RawPartPageUC
m_RawModeList(0) = EgtMsg(MSG_RAWPARTPAGEUC + 1) 'Rettangolo
m_RawModeList(1) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeList(2) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
If m_MainWindow.m_CurrentMachine.bSaw Then
m_RawModeList(3) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
Else
' se non insrisco "Lama" allora ridimensiono il vettore
ReDim Preserve m_RawModeList(2)
End If
m_RawModeListEx(0) = EgtMsg(MSG_RAWPARTPAGEUC + 1) 'Rettangolo
m_RawModeListEx(1) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeListEx(2) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
m_RawModeListEx(3) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
If m_MainWindow.m_CurrentMachine.bSaw Then
m_RawModeListEx(3) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
m_RawModeListEx(4) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
Else
' se non insrisco "Lama" allora ridimensiono il vettore
m_RawModeListEx(3) = EgtMsg(MSG_RAWPARTPAGEUC + 35) 'Da Fotografia
ReDim Preserve m_RawModeListEx(3)
End If
RawModeCmBx.ItemsSource = m_RawModeList
' lista per selezione RawModeDamaged
m_RawModeDamagedList(0) = EgtMsg(MSG_RAWPARTPAGEUC + 2) 'Per Punti
m_RawModeDamagedList(1) = EgtMsg(MSG_RAWPARTPAGEUC + 30) 'Da Laser
If m_MainWindow.m_CurrentMachine.bSaw Then
m_RawModeDamagedList(2) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24) 'Da Lama
Else
ReDim Preserve m_RawModeDamagedList(1)
End If
RawModeDamagedCmBx.ItemsSource = m_RawModeDamagedList
' Nascondo bottone tastatura lastra se disattivato da file .ini
@@ -309,9 +331,10 @@ Public Class RawPartPageUC
' Verifico cosa selezionato
Dim nSolidId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID)
Dim nKerfId = EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_KERF)
'----------------------------------------- INIZIO ------------------ se decido di inserire i punti laser manualmente --------------------------------------------------
' se decido di inserire i punti laser manualmente
If m_bFromDraw And m_ActiveRawMode = RAWMODE.FROM_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Then
' se decido di inserire i punti laser manualmente (in assenza di collegamento con CN)
If m_bFromDraw AndAlso (m_ActiveRawMode = RAWMODE.FROM_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.FROM_SAW Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW) Then
' Rimuovo eventuali crocette create acquisendo i punti nel disegno
EgtEmptyGroup(m_nTempLay)
' Acquisisco punto da disegno
@@ -336,6 +359,7 @@ Public Class RawPartPageUC
Return
End If
'----------------------------------------- FINE ------------------ se decido di inserire i punti laser manualmente --------------------------------------------------
' recupero elemento selezionato nella scena
EgtSetObjFilterForSelWin(True, True, True, True, True)
Dim nSel As Integer
EgtSelect(e.Location, 2 * Scene.DIM_SEL, 2 * Scene.DIM_SEL, nSel)
@@ -349,8 +373,7 @@ Public Class RawPartPageUC
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
m_nDragEnt = -1
m_dDragPar = -1
ElseIf sName = NAME_KERF And
(m_ActiveRawMode = RAWMODE.RECTANGLE Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
ElseIf sName = NAME_KERF And (m_ActiveRawMode = RAWMODE.RECTANGLE Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
Dim dDist, dU As Double
If Not EgtPointCurveDist(m_ptPrev.Loc(nKerfId), nKerfId, nKerfId, dDist, dU) Then
@@ -360,7 +383,7 @@ Public Class RawPartPageUC
m_dDragPar = dU
' Privilegio il kerf, pertanto esco
Exit While
ElseIf sName = NAME_DAMAGED And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER) Then
ElseIf sName = NAME_DAMAGED And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.BY_POINTS) Then
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
Dim dDist, dU As Double
If Not EgtPointCurveDist(m_ptPrev.Loc(nSelId), nSelId, nSelId, dDist, dU) Then
@@ -377,6 +400,7 @@ Public Class RawPartPageUC
End If
nSelId = EgtGetNextObjInSelWin()
End While
' se drag e modalità punti
If m_bDrag And m_ActiveRawMode = RAWMODE.BY_POINTS Then
' se aggiungi punto
@@ -413,7 +437,7 @@ Public Class RawPartPageUC
End If
End If
' se drag e modalità zona danneggiata
ElseIf m_bDrag And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER) Then
ElseIf m_bDrag And (m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW) Then
' se aggiungi zona rovinata
If m_nPtDmgMode = DMGMODE.ADD Then
AddNewDamagedArea()
@@ -489,6 +513,8 @@ Public Class RawPartPageUC
End Select
' Aggiorno il punto precedente
m_ptPrev = ptCurr
' Resetto i ponticelli (per ora non sono in grado di muoverli assieme ai pezzi)
ResetAllBRidges()
End Sub
Private Sub ModifyRectangle(ptCurr As Point3d)
@@ -665,6 +691,8 @@ Public Class RawPartPageUC
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
' Non è possibile uscire con tastatura in corso
If m_bProbingOn Then Return
' reimposto il comando OutLine
OutlineBtn_Click(Nothing, Nothing)
' Se confermata uscita
If ExitRawPart(True) Then
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Remove(Me)
@@ -696,6 +724,16 @@ Public Class RawPartPageUC
CloseDamagedAreaByLaser()
End If
End If
If m_ActiveRawMode = RAWMODE.FROM_SAW Then
If m_bIsRawDefiningBySaw Then
CloseRawBySaw()
End If
End If
If m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW Then
If m_bIsRawDefiningBySaw Then
CloseDamagedAreaBySaw()
End If
End If
' Apro pagina di selezione della lavorazione prima di chiudere il grezzo
m_ChooseMachiningPage = New ChooseMachining(m_MainWindow)
'--------------------------- SELEZIONE LAVORAZIONI ---------------------------------
@@ -779,6 +817,8 @@ Public Class RawPartPageUC
Case 0 ' Rettangolo
' Se ero in modalità da laser
VerifyLaserDefining()
' Se ero in modalità da Lama
VerifySawDefinig()
' Verificos e sto realmente cambiando modalità
Dim bChanging As Boolean = (m_ActiveRawMode <> RAWMODE.RECTANGLE)
' Imposto nuova modalità
@@ -790,6 +830,8 @@ Public Class RawPartPageUC
Case 1 ' Punti
' Se ero in modalità da laser
VerifyLaserDefining()
' Se ero in modalità da Lama
VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.BY_POINTS
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
@@ -797,6 +839,8 @@ Public Class RawPartPageUC
UpdateCircles()
EgtDraw()
Case 2 ' Da laser
' Se ero in modalità da Lama
VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_LASER
RemoveCircles()
@@ -811,10 +855,44 @@ Public Class RawPartPageUC
' Disattivo il bottone
CloseBtn.IsEnabled = False
OkBtn.IsEnabled = False
Case 3 ' Da fotografia
Case 3 ' Da Lama
If Not m_MainWindow.m_CurrentMachine.bSaw Then ' Da fotografia
' Se ero in modalità da laser
VerifyLaserDefining()
' Se ero in modalità da Lama
VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_PHOTO
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
RawModeView()
RemoveCircles()
' Creo il grezzo dal contorno riconosciuto nella fotografia
CreateRawFromPhotoContour()
EgtDraw()
Exit Select
End If
' Se ero in modalità da laser
VerifyLaserDefining()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_SAW
RemoveCircles()
LoadFromMachine()
' Azzero lista e punto di partenza
m_CurveXKerfList.Clear()
m_bptLast = False
' Segno flag che indica definizione grezzo con laser in corso
m_bIsRawDefiningBySaw = True
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
RawModeView()
' Disattivo il bottone
CloseBtn.IsEnabled = False
OkBtn.IsEnabled = False
Case 4 ' Da fotografia
' Se ero in modalità da laser
VerifyLaserDefining()
' Se ero in modalità da Lama
VerifySawDefinig()
' Imposto nuova modalità
m_ActiveRawMode = RAWMODE.FROM_PHOTO
' Riattivo i controlli in base a quale modalità di inserimento contorni è attiva
RawModeView()
@@ -822,6 +900,7 @@ Public Class RawPartPageUC
' Creo il grezzo dal contorno riconosciuto nella fotografia
CreateRawFromPhotoContour()
EgtDraw()
End Select
End Sub
@@ -831,6 +910,8 @@ Public Class RawPartPageUC
m_ActiveRawMode = RAWMODE.DAMAGED
Case 1 ' Da laser
m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER
Case 2 ' Da Lama
m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW
End Select
RawModeView()
EgtDraw()
@@ -927,11 +1008,43 @@ Public Class RawPartPageUC
' Disattivo bottoni zone rovinate e foto
DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
Case RAWMODE.DAMAGED_BY_SAW
RawModeCmBx.IsEnabled = True
RawModeDamagedCmBx.Visibility = Visibility.Visible
LengthTxBx.IsEnabled = False
WidthTxBx.IsEnabled = False
OffsetXTxBx.IsEnabled = False
OffsetYTxBx.IsEnabled = False
' Visualizzo bottoni per laser
PointsGpBx.Visibility = Windows.Visibility.Visible
PointsGpBx.SetValue(Grid.RowSpanProperty, 2)
AddBtn.SetValue(Grid.RowSpanProperty, 1)
RemoveBtn.SetValue(Grid.RowSpanProperty, 1)
CloseBtn.Visibility = Windows.Visibility.Visible
' Disattivo bottoni zone rovinate e foto
DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
Case RAWMODE.FROM_SAW
RawModeCmBx.IsEnabled = True
RawModeDamagedCmBx.Visibility = Visibility.Collapsed
LengthTxBx.IsEnabled = False
WidthTxBx.IsEnabled = False
OffsetXTxBx.IsEnabled = False
OffsetYTxBx.IsEnabled = False
' Visualizzo bottoni per lama
PointsGpBx.Visibility = Windows.Visibility.Visible
PointsGpBx.SetValue(Grid.RowSpanProperty, 2)
AddBtn.SetValue(Grid.RowSpanProperty, 1)
RemoveBtn.SetValue(Grid.RowSpanProperty, 1)
CloseBtn.Visibility = Windows.Visibility.Visible
' Disattivo bottoni zone rovinate e foto
DamagedAreaGpBx.Visibility = Windows.Visibility.Hidden
ConfirmPhotoBtn.Visibility = Windows.Visibility.Hidden
End Select
End Sub
Private Sub OutlineBtn_Click(sender As Object, e As RoutedEventArgs) Handles OutlineBtn.Click
If m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Then
If m_ActiveRawMode = RAWMODE.DAMAGED Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER Or m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW Then
' m_ActiveRawMode = RAWMODE.BY_POINTS
m_ActiveRawMode = m_PrecActiveRawMode
RawModeCmBx.SelectedIndex = m_ActiveRawMode
@@ -946,6 +1059,9 @@ Public Class RawPartPageUC
If m_PrecActiveRawMode = RAWMODE.FROM_LASER Then
m_ActiveRawMode = RAWMODE.DAMAGED_BY_LASER
RawModeDamagedCmBx.SelectedIndex = 1
ElseIf m_PrecActiveRawMode = RAWMODE.FROM_SAW Then
m_ActiveRawMode = RAWMODE.DAMAGED_BY_SAW
RawModeDamagedCmBx.SelectedIndex = 2
Else
m_ActiveRawMode = RAWMODE.DAMAGED
RawModeDamagedCmBx.SelectedIndex = 0
@@ -1010,6 +1126,54 @@ Public Class RawPartPageUC
End If
AddBtn.IsChecked = False
EgtDraw()
Case RAWMODE.FROM_SAW
Dim ptAcquired As Point3d
' Se inserimento manuale dei punti laser
If m_bFromDraw Then
If Not IsNothing(m_ptPrev) Then
ptAcquired = m_ptPrev
ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
Else
m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
Return
End If
' altrimenti da macchina
Else
If Not AcquireSawPoint(ptAcquired) Then
m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
Return
End If
End If
' Limito il punto a stare nella tavola con franco pari al kerf
If ptAcquired.x < m_RawKerf Then ptAcquired.x = m_RawKerf + SAFE_RAW_DIST
If ptAcquired.y < m_RawKerf Then ptAcquired.y = m_RawKerf + SAFE_RAW_DIST
If ptAcquired.x > m_dTableLength - m_RawKerf Then ptAcquired.x = m_dTableLength - m_RawKerf - SAFE_RAW_DIST
If ptAcquired.y > m_dTableWidth - m_RawKerf Then ptAcquired.y = m_dTableWidth - m_RawKerf - SAFE_RAW_DIST
' Aggiusto Z punto movimentato (è in locale al tavolo)
ptAcquired.z = m_CurrentMachine.dAdditionalTable + m_RawHeight
'Porto il punto nel riferimento del grezzo
Dim frRaw As New Frame3d
EgtGetGroupGlobFrame(m_CurrProjPage.m_nRawId, frRaw)
ptAcquired.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
m_ptPrev.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
If m_bptLast Then
If Point3d.SameApprox(ptAcquired, m_ptLast) Then
AddBtn.IsChecked = False
Exit Sub
End If
Dim NewLine As Integer = EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptAcquired)
EgtSetColor(NewLine, m_KerfCol)
m_CurveXKerfList.Add(NewLine)
Else
m_bptLast = True
End If
m_ptLast = ptAcquired
If m_CurveXKerfList.Count > 1 Then
OkBtn.IsEnabled = True
CloseBtn.IsEnabled = True
End If
AddBtn.IsChecked = False
EgtDraw()
Case RAWMODE.DAMAGED
' Verifico ci sia almeno una zona rovinata
If EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_DAMAGED) = GDB_ID.NULL Then
@@ -1068,6 +1232,54 @@ Public Class RawPartPageUC
End If
AddBtn.IsChecked = False
EgtDraw()
Case RAWMODE.DAMAGED_BY_SAW
Dim ptAcquired As Point3d
' Se inserimento manuale dei punti laser
If m_bFromDraw Then
If Not IsNothing(m_ptPrev) Then
ptAcquired = m_ptPrev
ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
Else
m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
Return
End If
' altrimenti da macchina
Else
If Not AcquireSawPoint(ptAcquired) Then
m_CurrProjPage.SetErrorMessage(EgtMsg(90532)) ' Errore nell'acquisizione del punto
Return
End If
End If
' Limito il punto a stare nella tavola con franco pari al kerf
If ptAcquired.x < m_RawKerf Then ptAcquired.x = m_RawKerf + SAFE_RAW_DIST
If ptAcquired.y < m_RawKerf Then ptAcquired.y = m_RawKerf + SAFE_RAW_DIST
If ptAcquired.x > m_dTableLength - m_RawKerf Then ptAcquired.x = m_dTableLength - m_RawKerf - SAFE_RAW_DIST
If ptAcquired.y > m_dTableWidth - m_RawKerf Then ptAcquired.y = m_dTableWidth - m_RawKerf - SAFE_RAW_DIST
' Aggiusto Z punto movimentato (è in locale al tavolo)
ptAcquired.z = m_CurrentMachine.dAdditionalTable + m_RawHeight
'Porto il punto nel riferimento del grezzo
Dim frRaw As New Frame3d
EgtGetGroupGlobFrame(m_CurrProjPage.m_nRawId, frRaw)
ptAcquired.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
m_ptPrev.LocToLoc(New Frame3d(m_ptTableMin), frRaw)
If m_bptLast Then
If Point3d.SameApprox(ptAcquired, m_ptLast) Then
AddBtn.IsChecked = False
Exit Sub
End If
Dim NewLine As Integer = EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptAcquired)
EgtSetColor(NewLine, m_KerfCol)
m_CurveXDamagedAreaList.Add(NewLine)
Else
m_bptLast = True
End If
m_ptLast = ptAcquired
If m_CurveXDamagedAreaList.Count > 1 Then
OkBtn.IsEnabled = True
CloseBtn.IsEnabled = True
End If
AddBtn.IsChecked = False
EgtDraw()
End Select
End Sub
@@ -1099,6 +1311,28 @@ Public Class RawPartPageUC
Return True
End Function
Private Function AcquireSawPoint(ByRef ptAcquired As Point3d) As Boolean
Dim ptTipP1 As Point3d
' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then
Return False
End If
' Recupero dati utensile e testa corrente
Dim sTool As String = ""
Dim sHead As String = ""
Dim nExit As Integer = 0
EgtGetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, ptTipP1) Then
Return False
End If
' Porto il tip nell'origine tavola
ptAcquired = ptTipP1
ptAcquired.ToLoc(New Frame3d(m_ptTableMin))
Return True
End Function
Private Sub RemoveBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveBtn.Click
Select Case m_ActiveRawMode
Case RAWMODE.RECTANGLE
@@ -1126,6 +1360,26 @@ Public Class RawPartPageUC
End If
RemoveBtn.IsChecked = False
EgtDraw()
Case RAWMODE.FROM_SAW
If m_CurveXKerfList.Count > 0 Then
If m_CurveXKerfList.Count = 1 Then
' Aggiorno ptLast con primo punto
EgtStartPoint(m_CurveXKerfList(m_CurveXKerfList.Count - 1), m_ptLast)
' Cancello ultima linea
EgtErase(m_CurveXKerfList(m_CurveXKerfList.Count - 1))
m_CurveXKerfList.RemoveAt(m_CurveXKerfList.Count - 1)
Else
' Cancello ultima linea
EgtErase(m_CurveXKerfList(m_CurveXKerfList.Count - 1))
m_CurveXKerfList.RemoveAt(m_CurveXKerfList.Count - 1)
' Aggiorno ptLast
EgtEndPoint(m_CurveXKerfList(m_CurveXKerfList.Count - 1), m_ptLast)
End If
Else
m_bptLast = False
End If
RemoveBtn.IsChecked = False
EgtDraw()
Case RAWMODE.DAMAGED
' Verifico ci sia almeno una zona rovinata
If EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_DAMAGED) = GDB_ID.NULL Then
@@ -1136,6 +1390,46 @@ Public Class RawPartPageUC
DeleteBtn.IsChecked = False
m_nPtMode = If(RemoveBtn.IsChecked(), PTMODE.REMOVE, PTMODE.MOVE)
m_nPtDmgMode = DMGMODE.NONE
Case RAWMODE.DAMAGED_BY_LASER
If m_CurveXDamagedAreaList.Count > 0 Then
If m_CurveXDamagedAreaList.Count = 1 Then
' Aggiorno ptLast con primo punto
EgtStartPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
' Cancello ultima linea
EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
Else
' Cancello ultima linea
EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
' Aggiorno ptLast
EgtEndPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
End If
Else
m_bptLast = False
End If
RemoveBtn.IsChecked = False
EgtDraw()
Case RAWMODE.DAMAGED_BY_SAW
If m_CurveXDamagedAreaList.Count > 0 Then
If m_CurveXDamagedAreaList.Count = 1 Then
' Aggiorno ptLast con primo punto
EgtStartPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
' Cancello ultima linea
EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
Else
' Cancello ultima linea
EgtErase(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1))
m_CurveXDamagedAreaList.RemoveAt(m_CurveXDamagedAreaList.Count - 1)
' Aggiorno ptLast
EgtEndPoint(m_CurveXDamagedAreaList(m_CurveXDamagedAreaList.Count - 1), m_ptLast)
End If
Else
m_bptLast = False
End If
RemoveBtn.IsChecked = False
EgtDraw()
End Select
End Sub
@@ -1976,6 +2270,26 @@ Public Class RawPartPageUC
End If
End Sub
Private Sub VerifySawDefinig()
If m_bIsRawDefiningBySaw Then
If m_CurveXKerfList.Count > 1 Then
CloseRawBySaw()
Else
' Elimino tutti i segmenti disegnati
For Each nEntityId As Integer In m_CurveXKerfList
If EgtGetType(nEntityId) = GDB_TY.CRV_LINE Then
EgtErase(nEntityId)
End If
Next
' Azzero lista e punto di partenza
m_CurveXKerfList.Clear()
' Creo rettangolo
UpdateRawPart()
End If
m_bIsRawDefiningBySaw = False
End If
End Sub
Private Sub LoadFromMachine()
' Elimino grezzo già presente
EgtErase(EgtGetFirstNameInGroup(m_CurrProjPage.m_nRawId, NAME_RAW_SOLID))
@@ -1993,6 +2307,10 @@ Public Class RawPartPageUC
Select Case m_ActiveRawMode
Case RAWMODE.DAMAGED_BY_LASER
CloseDamagedAreaByLaser()
Case RAWMODE.DAMAGED_BY_SAW
CloseDamagedAreaBySaw()
Case RAWMODE.FROM_SAW
CloseRawBySaw()
Case Else
CloseRawByLaser()
End Select
@@ -2036,6 +2354,42 @@ Public Class RawPartPageUC
CloseBtn.IsEnabled = False
End Sub
Private Sub CloseRawBySaw()
' Verifico ci siano punti
If m_CurveXKerfList.Count() = 0 Then Return
' Recupero punto iniziale prima linea del grezzo
Dim ptStart As Point3d
EgtStartPoint(m_CurveXKerfList(0), ptStart)
m_CurveXKerfList.Add(EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptStart))
' Trasformo lista di curve in un array
Dim CurveXKerfArray As Integer() = m_CurveXKerfList.ToArray
' Creo contorno kerf
Dim nKerfId As Integer = EgtCreateCurveCompoByChain(m_CurrProjPage.m_nRawId, m_CurveXKerfList.Count, CurveXKerfArray, ptStart, True)
EgtSetName(nKerfId, NAME_KERF)
EgtSetColor(nKerfId, m_KerfCol)
' Pulisco lista entità del grezzo
m_CurveXKerfList.Clear()
' Aggiorno il grezzo comprese dimensioni e posizione
UpdateRawPartKerf()
' Salvo il valore del kerf (sempre in mm)
Dim dKerf As Double = 0
StringToLen(KerfTxBx.Text, dKerf)
If dKerf < 0 Then
EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_INVERT_KERF, -1)
Else
EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_INVERT_KERF, 1)
End If
EgtSetInfo(m_CurrProjPage.m_nRawId, KEY_KERF, m_RawKerf)
' Segno flag che indica fine della definizione
m_bIsRawDefiningBySaw = False
' Elimino primo punto per prossimo grezzo
m_bptLast = False
' Aggiorno visualizzazione
EgtDraw()
' Disattivo il bottone chiudi grezzo
CloseBtn.IsEnabled = False
End Sub
#Region "Damaged Area"
Private Sub AddNewDamagedArea()
@@ -2092,6 +2446,32 @@ Public Class RawPartPageUC
CloseBtn.IsEnabled = False
End Sub
Private Sub CloseDamagedAreaBySaw()
' Verifico ci siano punti
If m_CurveXDamagedAreaList.Count() = 0 Then Return
' Recupero punto iniziale prima linea del grezzo
Dim ptStart As Point3d
EgtStartPoint(m_CurveXDamagedAreaList(0), ptStart)
' creao la linea che va dal primo punto all'ultimo
m_CurveXDamagedAreaList.Add(EgtCreateLine(m_CurrProjPage.m_nRawId, m_ptLast, ptStart))
' Trasformo lista di curve in un array
Dim CurveXDamagedAreaArray As Integer() = m_CurveXDamagedAreaList.ToArray
' Creo contorno kerf
Dim nDmgId As Integer = EgtCreateCurveCompoByChain(m_CurrProjPage.m_nRawId, m_CurveXDamagedAreaList.Count, CurveXDamagedAreaArray, ptStart, True)
EgtSetName(nDmgId, NAME_DAMAGED)
EgtSetColor(nDmgId, m_KerfCol)
' Pulisco lista entità del grezzo
m_CurveXDamagedAreaList.Clear()
' Segno flag che indica fine della definizione
m_bIsRawDefiningBySaw = False
' Elimino primo punto per prossimo grezzo
m_bptLast = False
' Aggiorno visualizzazione
EgtDraw()
' Disattivo il bottone chiudi grezzo
CloseBtn.IsEnabled = False
End Sub
Private Sub RemoveDamagedArea()
' Elimino area rovinata selezionata
EgtErase(m_nSelDmg)
Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

+213 -3
View File
@@ -1,5 +1,8 @@
Imports System.Globalization
Imports System.Diagnostics
Imports System.Collections.ObjectModel
Imports System.Text.RegularExpressions
Imports EgtWPFLib
Imports EgtUILib
Module Utility
@@ -15,8 +18,25 @@ Module Utility
End Function
'--------------------------------------------------------------------------------------------------
Friend Sub UpdateUI()
Friend StopWatch As Stopwatch
Friend Sub TimeSpanInit()
StopWatch = New Stopwatch
StopWatch.Start()
End Sub
Friend Function TimeSpanEnd()
Dim sTime As String = ""
If Not IsNothing(StopWatch) Then
StopWatch.Stop()
Dim ts As TimeSpan = StopWatch.Elapsed
sTime = String.Format("{0:00}:{1:00}:{2:00}.{3:000}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)
End If
Return sTime
End Function
'--------------------------------------------------------------------------------------------------
Friend Sub UpdateUI()
' Costringo ad aggiornare UI
Dim nDummy As Integer
Application.Current.Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Background, _
@@ -24,6 +44,144 @@ Module Utility
End Sub
'--------------------------------------------------------------------------------------------------
#Region "INCHES FRACTIONS"
'Enum FractionPattern
' None
' Feet_Inches
' Inches
'End Enum
'' seleziona il tipo di Pattern con cui stamoare i dati
Friend nCurrFractionPattern As FractionStringConverter.FractionPattern = FractionPattern.Feet_Inches
Friend dPrecision As Double = 64
'Friend Function StringFractionToStringDecimal(dVal As Double, dBase As Double) As String
' Dim sSign As String = String.Empty
' If dVal < 0 Then
' sSign = "-"
' dVal = Math.Abs(dVal)
' End If
' Dim sFraction As String = String.Empty
' ' integer and decima part of the value
' Dim dInteger As Double = Math.Floor(dVal)
' Dim dFraction As Double = dVal - dInteger
' ' the nearest decimal numerator
' Dim dNumeretor As Double = dFraction * dBase
' Dim dRound As Double = Math.Round(dNumeretor)
' ' estimates the irreducible fraction
' If dRound = 0 Then
' ' no decimal part
' ElseIf dRound = dBase Then
' ' no decimal part
' dInteger = dInteger + 1
' Else
' ' simplify fraction
' While dRound Mod 2 = 0
' dRound = dRound / 2
' dBase = dBase / 2
' End While
' sFraction = DoubleToString(dRound, 0) & "/" & DoubleToString(dBase, 0)
' End If
' ' sVal: dFeet'dInteger"sFraction --- dInteger sFraction
' Return WriteFraction(dInteger, sFraction)
'End Function
'' trasforma il valore da pollici a piedi
'Private Sub ConvertInchesToFeet(ByRef dFeet As Double, ByRef dInches As Double)
' If dInches = 0 Then Return
' While dInches - 12 >= 0
' dFeet = dFeet + 1
' dInches = dInches - 12
' End While
'End Sub
'' stampa dati in funzione del pattern dichiarato
'Private Function WriteFraction(ByVal dInches As Double, sFraction As String) As String
' Dim sVal As String = String.Empty
' Select Case nCurrFractionPattern
' Case FractionPattern.Feet_Inches
' Dim dFeet As Double = 0
' ConvertInchesToFeet(dFeet, dInches)
' If dFeet > 0 Then
' sVal = String.Format("{0}'{1}""{2}", DoubleToString(dFeet, 0), DoubleToString(dInches, 0), sFraction).Trim
' Else
' sVal = String.Format("{0}""{1}", DoubleToString(dInches, 0), sFraction).Trim
' End If
' Case FractionPattern.Inches
' sVal = DoubleToString(dInches, 0) & " " & sFraction
' sVal = String.Format("{0}""{1}", DoubleToString(dInches, 0), sFraction).Trim
' End Select
' Return sVal
'End Function
'' riceve la stringa sorgente e restituisce la nuova strunga in formato decimale (senza eseguire conversioni di unità)
'Friend Function StringFractionToDouble(sVal As String, ByRef sValConverted As String) As Boolean
' Dim dVal As Double = 0
' ' dato in ingresso: sVal = 2'3"23/32
' Dim sFeet As String = String.Empty
' Dim sFeetPattern As String = "^.*?(?=')"
' Dim dFeet As Double = 0
' Dim bOkFeet As Boolean = True
' Dim bFeetExists As Boolean = False
' Dim sInch As String = String.Empty
' Dim sInchPattern As String = "(?<=')(.*?)(?="")" ' se la stringa contiene l'apice singolo
' Dim sInchPattern1 As String = "(.*?)(?="")" ' se la stringa NON contiene l'apice singolo
' Dim dInch As Double = 0
' Dim bOkInch As Boolean = True
' Dim bInchExists As Boolean = False
' Dim sFraction As String = String.Empty
' Dim sFractionPattern As String = "(?<="")(.*)" ' se la stringa contiene l'apice doppio
' Dim sFractionPattern1 As String = "(?<=')(.*)" ' se la stringa NON contiene l'apice doppio ma solo quello singolo
' Dim dFraction As Double = 0
' Dim bOkFraction As Boolean = True
' Dim bFractionExists As Boolean = False
' ' recupero il valore di Feet (2')
' Dim sMyMatch As String = Regex.Match(sVal, sFeetPattern).Groups(1).Value
' If Not String.IsNullOrEmpty(sMyMatch) Or Not String.IsNullOrWhiteSpace(sMyMatch) Then
' sFeet = sMyMatch.Trim
' bOkFeet = StringToDouble(sFeet, dFeet)
' bFeetExists = True
' End If
' ' recupero il valore di Inch (3") dopo i Feet - oppure direttamente i pollici
' If bFeetExists Then
' sMyMatch = Regex.Match(sVal, sInchPattern).Groups(1).Value
' Else
' sMyMatch = Regex.Match(sVal, sInchPattern1).Groups(1).Value
' End If
' If Not String.IsNullOrEmpty(sMyMatch) Or Not String.IsNullOrWhiteSpace(sMyMatch) Then
' sInch = sMyMatch.Trim
' bOkInch = StringToDouble(sInch, dInch)
' bInchExists = True
' End If
' ' recupero il valore frazionario (23/32) dopo i pollici - oppure dopo i feet - oppure direttamente i valore inteso come pollici
' If bInchExists Then
' sMyMatch = Regex.Match(sVal, sFractionPattern).Groups(1).Value
' ElseIf bFeetExists And Not bInchExists Then
' sMyMatch = Regex.Match(sVal, sFractionPattern1).Groups(1).Value
' ElseIf Not bFeetExists And Not bInchExists Then
' sMyMatch = sVal
' End If
' If Not String.IsNullOrEmpty(sMyMatch) Or Not String.IsNullOrWhiteSpace(sMyMatch) Then
' sFraction = sMyMatch
' bOkFraction = StringToDouble(sFraction, dFraction)
' End If
' ' calcolo il valore decimale dell'espressione
' If bOkFeet And bOkInch And bOkFraction Then
' dVal = dFeet / 12 + dInch + dFraction
' sValConverted = DoubleToString(dVal, 4)
' Return True
' Else
' Return False
' End If
'End Function
#End Region ' Inches Fraction
'--------------------------------------------------------------------------------------------------
Friend Function DoubleToString(dVal As Double, nNumDec As Integer) As String
Dim sFormat As String = "F" + Math.Abs(nNumDec).ToString()
Dim sVal As String = dVal.ToString(sFormat, CultureInfo.InvariantCulture)
@@ -46,12 +204,28 @@ Module Utility
Return True
End Function
' conerte il dato (in mm) in stringa nell'unità corrente
Friend Function LenToString(dVal As Double, nNumDec As Integer) As String
Return DoubleToString(EgtToUiUnits(dVal), nNumDec)
Dim sVal As String = DoubleToString(EgtToUiUnits(dVal), nNumDec)
' se richiesta scrittura in frazione (solo se unità corrente INCHES)
If nCurrFractionPattern <> FractionPattern.None And Not EgtUiUnitsAreMM() Then
' conevrto il dato corrente in decimale
Dim dCurrVal As Double = dVal
StringToDouble(sVal, dCurrVal)
Return DoubleToStringFraction(dCurrVal, dPrecision)
End If
Return sVal
End Function
Friend Function StringToLen(sVal As String, ByRef dVal As Double) As Boolean
If String.IsNullOrEmpty(sVal) Then Return False
If nCurrFractionPattern <> FractionPattern.None And Not EgtUiUnitsAreMM() Then
Dim sValSource As String = sVal
' conevrto la stringa in formato decimale (sempre in stringa)
StringFractionToStringDecimal(sValSource, sVal)
End If
If EgtLuaEvalNumExpr(sVal, dVal) Then
dVal = EgtFromUiUnits(dVal)
Return True
@@ -373,4 +547,40 @@ Module Utility
End If
End Sub
Public Sub GetMillFromMilling(ByRef sCurrMill As String, ByVal sCurrMilling As String)
If String.IsNullOrEmpty(sCurrMill) Or String.IsNullOrWhiteSpace(sCurrMill) Then
' creo l'elenco degli utensili di foratura
Dim sToolName As String = String.Empty
Dim nType As Integer = MCH_TY.NONE
Dim MillToolList As New ObservableCollection(Of String)
MillToolList.Clear()
If EgtTdbGetFirstTool(MCH_TF.MILL, sToolName, nType) Then
MillToolList.Add(sToolName)
While EgtTdbGetNextTool(MCH_TF.MILL, sToolName, nType)
MillToolList.Add(sToolName)
End While
End If
' recupero l'utensile associato alla lavorazione
'Dim sCurrDrilling As String = m_MainWindow.m_CurrentMachine.sCurrDrilling
Dim ToolString As String = String.Empty
EgtMdbSetCurrMachining(sCurrMilling)
' Recupero nome utensile tramite TUUID
Dim sTuuid As String = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sTuuid)
EgtTdbGetToolFromUUID(sTuuid, ToolString)
Dim bToolExist As Boolean = False
For Each CurrTool As IEnumerable In MillToolList
If CurrTool.ToString() = ToolString Then
bToolExist = True
Exit For
End If
Next
If bToolExist Then
sCurrMill = ToolString
Else
sCurrMill = String.Empty
End If
End If
End Sub
End Module
+3 -1
View File
@@ -309,7 +309,8 @@ Public Class WorkInProgressPageUC
Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile())
WorkInProgressScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
' inizializzo la scena (DB geometrico + visualizzazione) e verifico presenza chiave
If Not WorkInProgressScene.Init() Then
Dim bProd As Boolean = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_BASE)
If Not WorkInProgressScene.Init() Or Not bProd Then
' Rimuovo l'host della scena perchè altrimenti rimarrebbe il buco!!
Me.WorkInProgressPageGrid.Children.Remove(WorkInProgressSceneHost)
' Flag per riavvio programma
@@ -360,6 +361,7 @@ Public Class WorkInProgressPageUC
#End If
m_MainWindow.Close()
If bRestart Then Process.Start( Application.ResourceAssembly.Location)
Return True
End If
' dimensione lineare max in pixel delle textures
Dim nTxrMaxLinPix As Integer = GetPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096, m_MainWindow.GetIniFile())