Compare commits

..

244 Commits

Author SHA1 Message Date
Nicola Pievani 1ddb8a27fb Aggiunto comando "Muovi" per i tagli diretti 2023-10-24 17:37:11 +02:00
Nicola Pievani 41ca5127c6 Merge commit '6fc916051c7939ae1e0d42d2919eeb126499becc' into Features/Add_Single_CUT 2023-10-23 18:11:56 +02:00
Nicola Pievani 860823c929 Nuova impaginazione dati Split, correzione apertura file Log 2023-10-23 18:11:29 +02:00
Nicola Pievani 9cd0b4aefa Gestione Selezione multipla da Scena 2023-10-20 14:39:14 +02:00
Nicola Pievani 6fc916051c Gestione colore testi Compo 2023-10-19 18:08:45 +02:00
Nicola Pievani 8df36d2768 Aggiornata pagina CSV 2023-10-19 17:20:33 +02:00
Nicola Pievani 997ca13934 Merge commit '9b6761af37c0801aa8825592aed0941c2d3d5238' into Features/Manage_Icons 2023-10-19 14:55:22 +02:00
Nicola Pievani 9b6761af37 Gestione comando Escape per interrompere 2023-10-19 11:05:08 +02:00
Nicola Pievani 732c05fd9c Creazione taglio SplitCut da contorno pezzo 2023-10-18 13:38:40 +02:00
Nicola Pievani 71372bf51a Merge commit '30cc0e29e4b79b951543f4d56293bbffae853233' into Features/Add_Single_CUT 2023-10-18 10:34:02 +02:00
Nicola Pievani a63089a0c8 Gestione eliminazione tagli diretti 2023-10-06 17:43:10 +02:00
Nicola Pievani 5d6c666128 Inizio inserimento tagli separazione in Splitting 2023-10-05 18:45:39 +02:00
Demetrio Cassarino 30cc0e29e4 Aggiornamento label grafica 2023-10-04 08:45:15 +02:00
Demetrio Cassarino 882f7ba82f Creazioen label apertura file log 2023-10-03 17:35:40 +02:00
Demetrio Cassarino 1bf0979c94 Sostituzione ioniczip con dotnetzip 2023-10-03 16:59:47 +02:00
Demetrio Cassarino f5bb24a4db Merge remote-tracking branch 'origin/Features/Manage_Icons' into Demetrio/Manage_Color 2023-10-03 11:33:45 +02:00
Demetrio Cassarino 470a88bd95 Modifica colore isSelected datagrid 2023-10-03 11:32:17 +02:00
Nicola Pievani b63a7f3046 Merge commit '7bc6619e92d7d29e4fc0429535b6542c5f6c5420' into Features/Manage_Icons 2023-10-02 15:51:49 +02:00
Demetrio Cassarino 7bc6619e92 Merge remote-tracking branch 'origin/Features/Manage_Icons' into Demetrio/Manage_Color 2023-09-25 11:05:57 +02:00
Nicola Pievani a39cfeb4dd Gestione pagina DB waterjet 2023-09-22 19:15:31 +02:00
Demetrio Cassarino 3a71247913 Merge commit '422538b5fe9525a13892a7caa9d647545b7a1396' into Demetrio/Manage_Color 2023-09-21 08:33:05 +02:00
Nicola Pievani 422538b5fe Migliorata grafica finestre 2023-09-20 18:21:08 +02:00
Nicola Pievani ab32986539 Merge remote-tracking branch 'origin/Demetrio/Manage_Color' into Features/Manage_Icons 2023-09-19 17:53:49 +02:00
Demetrio Cassarino 9eb196b942 Aggiunta stile listbox 2023-09-19 17:26:22 +02:00
Demetrio Cassarino ab87952edb Merge remote-tracking branch 'origin/Features/Manage_Icons' into Demetrio/Manage_Color 2023-09-19 15:56:00 +02:00
Nicola Pievani b59fe318cf Aggiunta finestra SetUpWindow 2023-09-19 15:52:48 +02:00
Nicola Pievani 83c63bd583 Cambio versione 2023-09-18 18:13:46 +02:00
Nicola Pievani cca2a923ee Merge remote-tracking branch 'origin/Demetrio/Manage_Color' into Features/Manage_Icons 2023-09-18 18:07:26 +02:00
Nicola Pievani a6e9747da8 Gestione comandi Import/Export/Reload 2023-09-18 18:07:07 +02:00
Demetrio Cassarino 65f8d69361 Gestione interfaccia 2023-09-18 17:56:38 +02:00
Demetrio Cassarino f3b7f4fd04 Merge remote-tracking branch 'origin/Features/Manage_Icons' into Demetrio/Manage_Color 2023-09-15 16:47:06 +02:00
Nicola Pievani 2d77634314 Gestione dimensione bottone Mach/Tool Window 2023-09-15 16:40:36 +02:00
Nicola Pievani bd79698a6e Merge remote-tracking branch 'origin/Demetrio/Manage_Color' into Features/Manage_Icons 2023-09-15 16:39:40 +02:00
Demetrio Cassarino efe5199258 nuovi parametri datagrid 2023-09-15 16:38:26 +02:00
Nicola Pievani 3171b3d6ea Gestione ToolDBWindow 2023-09-15 16:38:16 +02:00
Demetrio Cassarino 9eb75eb8f9 Merge remote-tracking branch 'origin/Features/Manage_Icons' into Demetrio/Manage_Color 2023-09-15 11:42:49 +02:00
Nicola Pievani edcbec6597 Aggiunte nuove icone 2023-09-14 18:08:45 +02:00
Nicola Pievani d083b465fd Merge remote-tracking branch 'origin/Demetrio/Manage_Color' into Features/Manage_Icons 2023-09-14 17:44:19 +02:00
Nicola Pievani 5327830ea7 Gestione icone MachDB 2023-09-14 17:43:59 +02:00
Demetrio Cassarino c06eddcd12 Nuovi parametri grafica 2023-09-14 17:39:00 +02:00
Demetrio Cassarino 83388c0b97 Gestione pagina SawingStone 2023-09-13 15:01:08 +02:00
Demetrio Cassarino 72a6ca774e Merge commit 'f7f321fba7d98af5959bbdb6d793754e571fb61c' into Demetrio/Manage_Color 2023-09-12 15:38:10 +02:00
Nicola Pievani f7f321fba7 Definizione style nuovi parametri EgtTextBox 2023-09-12 15:26:57 +02:00
Nicola Pievani eba9686148 Inizio gestione colori GENERAL EgtTextBox 2023-09-07 18:14:34 +02:00
Nicola Pievani 41f5b6ba70 Gestione colori interfaccia MachiningDB 2023-09-07 14:59:39 +02:00
Nicola Pievani 66685b7e4f Inizio preparazione interfaccia scura 2023-08-24 17:32:14 +02:00
Nicola Pievani e91b0e3087 Merge commit 'ee85507b11dd60950c6e7a5af9b97a8439d0a259' into Features/Manage_Icons 2023-08-03 19:14:54 +02:00
Nicola Pievani ee85507b11 Correzione a seguito del merge con il Master 2023-08-03 19:14:30 +02:00
Nicola Pievani f9c184a81c Merge commit '6545afb8311769aa04c050d3605318ea667a7631' into develop 2023-08-03 19:10:41 +02:00
Nicola Pievani 1fb59b293f Migliorata posizione punti SpotReg 2023-08-03 15:27:06 +02:00
Nicola Pievani 3d93d98603 Migliorata gestione Layer per SpotReg 2023-08-02 17:19:23 +02:00
Nicola Pievani 1ea76d1caa Inserimento SpotReg nel grezzo 2023-07-31 16:52:48 +02:00
Nicola Pievani 4bea9d2483 Migliorato dizionario 2023-06-29 18:46:23 +02:00
Nicola Pievani eaf4a836fa Rimosso FloatingManager da OptionPanel 2023-06-13 15:27:53 +02:00
Nicola Pievani a5b9957c76 Modifica stile interfaccia (Colore e icone) 2023-06-13 13:03:54 +02:00
Nicola Pievani b8b92e637c Merge commit '83b1b5b5318e305cedc042ddb5e1ab61d988190d' into Features/Manage_Icons 2023-06-05 15:57:27 +02:00
Nicola Pievani 83b1b5b531 Aggiornamento programma 2023-06-05 15:57:07 +02:00
Emmanuele Sassi 6545afb831 - modificate funzioni gestione progetto da sub a function 2023-04-11 09:52:28 +02:00
Nicola Pievani c530f172bb Merge branch 'develop' 2023-03-21 15:59:16 +01:00
Nicola Pievani 98dcbc65e7 Cambio versione e milgiorata gestione SplitRaws 2023-03-21 15:58:23 +01:00
Nicola Pievani bc92139a3d Merge branch 'develop' 2023-02-28 17:12:08 +01:00
Nicola Pievani a88c804370 Merge branch 'master' into develop 2023-02-28 17:11:26 +01:00
NicolaP ce21ef3a71 Aggiunta icona Quality 2023-02-20 19:46:19 +01:00
NicolaP 15021a7d0f Merge branch 'develop' into Features/Manage_Icons 2023-02-20 19:42:15 +01:00
NicolaP 7c21db7055 Merge branch 'Features/Manage_Quality_WaterJet' into develop 2023-02-20 19:22:02 +01:00
NicolaP 4c142df7ef Gestione qualità tagli WJ in SplitPage 2023-02-20 19:21:21 +01:00
NicolaP 72f41bacab Migliorata gestione salvataggio lavorazioni
(cherry picked from commit c01972f99e)
2023-02-20 13:02:09 +01:00
NicolaP b91dc8972d Aggiunte icone nella pagina Split 2023-02-20 12:55:07 +01:00
NicolaP c01972f99e Migliorata gestione salvataggio lavorazioni 2023-02-20 10:08:54 +01:00
NicolaP 5fe6b03a89 Merge branch 'develop' 2023-02-15 13:21:08 +01:00
NicolaP be30ebadbf Migliorata spaziatura nella pagina Split 2023-02-15 12:52:40 +01:00
NicolaP e67cf50f50 Merge branch 'Features/Set_CurrSawing' into develop 2023-02-15 12:30:41 +01:00
NicolaP f82a6495bd Gestione setting lavorazioni correnti di Office 2023-02-15 12:30:07 +01:00
NicolaP 9168da183e Merge branch 'develop' 2023-02-13 18:55:13 +01:00
NicolaP c6262613c8 Aggiorno dati di stime di lavoro 2023-02-13 15:37:06 +01:00
NicolaP 31edd150bd Aggiunti commenti per preprare aggiornamento SelezionaLavorazione 2023-02-13 13:08:47 +01:00
NicolaP 9fdd7b4b77 Migliorata gestione stampa progetto corrente 2023-02-13 10:52:40 +01:00
NicolaP 0ed3efed11 Merge branch 'develop' 2023-02-10 14:05:02 +01:00
NicolaP b0bae3af98 Correzione gestione parcheggio 2023-02-10 13:25:50 +01:00
NicolaP 235ec10a2d Correzione non visualizzazione Magnetico in VeinMatch 2023-02-09 16:22:11 +01:00
NicolaP 66061ad262 Rimosso pulsante magnetico in VeinMatch 2023-02-09 15:10:07 +01:00
NicolaP 3e99eb1a8f Merge branch 'Features/Print_LayOut_Machine' into develop 2023-02-09 10:00:25 +01:00
NicolaP 753ff7b4f1 Recupero dimensione corrente orgetto per stampa 2023-02-09 09:49:04 +01:00
NicolaP 1edfe486cb Migliorato rapporto di stsampa immagini 2023-02-08 19:36:09 +01:00
NicolaP 7190993f11 Aggiunto bottone per stampa layout corrente 2023-02-08 18:13:12 +01:00
NicolaP 249289144f Merge branch 'master' into develop 2023-02-08 14:51:06 +01:00
NicolaP 36ee5e4352 Cambio versione 2.5b1 2023-02-03 16:32:25 +01:00
NicolaP 147099b702 Merge branch 'develop' 2023-02-03 16:29:01 +01:00
NicolaP dd81384bb8 Migliorata gestione rotazione in park 2023-01-30 15:38:13 +01:00
NicolaP 9cf61d691d Gestione rotazione pezzi con Drag 2023-01-20 12:24:10 +01:00
NicolaP 358c5df390 Merge remote-tracking branch 'origin/HEAD' 2023-01-18 18:09:32 +01:00
NicolaP ccaec9af5a Merge branch 'develop' 2023-01-18 18:04:12 +01:00
NicolaP 1dbecd0083 Gestione allungamento tagli curvi 2023-01-18 18:03:57 +01:00
DarioS 11c6f95378 OmagOFFICE :
- aggiornamento info programma.
2023-01-18 09:17:16 +01:00
NicolaP 3604a85cc1 Merge branch 'develop' 2023-01-05 18:58:40 +01:00
NicolaP 3aaaa0fcb6 Lettura StarEndModifyOnIntCorner da file macchina, ver 2.5a1 2023-01-05 18:58:04 +01:00
NicolaP 52da2bc2c9 Merge branch 'develop' 2022-12-07 19:55:29 +01:00
NicolaP 4de476907f Migliorata gestione ventose 2022-12-07 19:55:06 +01:00
NicolaP 07bcb7479b Merge branch 'master' into develop 2022-11-09 10:32:11 +01:00
NicolaP 92818aafd4 Cambio versione 2.4k1 2022-11-09 10:31:37 +01:00
NicolaP f4326b27b7 Merge branch 'develop' 2022-11-09 10:29:46 +01:00
NicolaP 1f4a0afd75 Merge commit '565ba3c7564c5c4610b99ac1b6460b627f3a7708' into develop 2022-11-07 18:19:27 +01:00
NicolaP 565ba3c756 Gestione primo Engrave inclinato 2022-11-07 18:19:11 +01:00
NicolaP 7ab4e56594 Merge branch 'Features/StartEnd_Modify_On_Internal_Corner' into develop 2022-11-07 17:16:11 +01:00
NicolaP 697fb4c730 Gestioena modifica tagli su angoli interni 2022-11-07 17:09:47 +01:00
NicolaP 4f5804206d Merge branch 'master' into develop 2022-10-24 09:48:15 +02:00
NicolaP 58828cf846 Merge branch 'master' of https://gitlab.steamware.net/egaltech/omagoffice 2022-10-24 09:47:44 +02:00
NicolaP 36138ec459 Merge branch 'develop' 2022-10-24 09:43:54 +02:00
NicolaP 7fc49b0d1d Merge branch 'master' into develop 2022-10-24 09:39:13 +02:00
NicolaP cf9379272c Merge branch 'develop' 2022-10-24 09:38:49 +02:00
NicolaP cd6714752e Cambio versione 2.4j1 2022-10-24 09:37:48 +02:00
DarioS 4c62410c20 OmagOFFICE 2.4j1 :
- ricompilazione con cambio versione.
2022-10-24 08:48:12 +02:00
NicolaP b017fef2b9 Merge branch 'develop' 2022-10-17 14:39:17 +02:00
NicolaP 17785afc20 Merge branch 'Features/Manage_Raw' into develop 2022-10-17 14:39:04 +02:00
NicolaP 62953c981e Correzione creazione nuovo grezzo in macchina 2022-10-17 14:36:08 +02:00
NicolaP c3a3057420 Merge branch 'master' into develop 2022-10-06 16:15:58 +02:00
NicolaP 8fa7b6188c Cambio versione: 2.4i4 2022-10-06 13:05:43 +02:00
NicolaP f3770dfc7c Eliinazione caratteri speciali da perocrosi file 2022-10-06 11:11:43 +02:00
NicolaP 1358cef04a Merge branch 'develop' 2022-10-05 19:57:08 +02:00
NicolaP e0fe4d9444 Migliorata abilitazione bottoni gruppi di lavoro 2022-10-05 19:39:48 +02:00
NicolaP 05186db728 Merge remote-tracking branch 'origin/HEAD' into develop 2022-10-05 10:17:32 +02:00
DarioS 5b21559e56 OmagOFFICE 2.4i3 :
- modifiche per gestione multidirettori di base delle macchine.
2022-10-04 11:16:17 +02:00
NicolaP 13a774429e Merge branch 'develop' 2022-09-19 15:08:51 +02:00
NicolaP bde6c38733 Migliorata gestione lavorazioni con ponticelli 2022-09-19 15:08:35 +02:00
NicolaP e3beaf2aa3 Merge branch 'develop' 2022-09-15 12:10:23 +02:00
NicolaP deb8b34402 Gestione eliminazione Pezzi/Ponticelli, migliorata gestione reset ponticelli 2022-09-15 12:10:03 +02:00
NicolaP 49311579ec Merge branch 'develop' 2022-09-15 11:27:01 +02:00
NicolaP 589b7211ab Migliorata gestione selezione lati per ponticelli 2022-09-15 11:26:14 +02:00
NicolaP 892806d32a Merge remote-tracking branch 'origin/master' into develop 2022-09-15 11:21:12 +02:00
DarioS 914a89014e OmagOFFICE :
- aggiunte altre info per Bridges.
2022-09-14 10:11:55 +02:00
NicolaP 3043a717d3 Merge branch 'develop' 2022-09-13 15:40:13 +02:00
NicolaP 8a3b52e082 Migliorato caricamento direttori macchine 2022-09-13 15:39:52 +02:00
NicolaP f4126dba7a Reset Bridges se muovo grezzo 2022-09-13 15:32:07 +02:00
NicolaP 6009db35cd Merge branch 'develop' 2022-09-13 12:08:32 +02:00
NicolaP 4a42374891 Migliorata gestione Bridges 2022-09-13 12:08:05 +02:00
NicolaP 64c6a6cf9b Merge remote-tracking branch 'origin/master' into develop 2022-09-13 11:36:27 +02:00
DarioS d1a8f033db OmagOFFICE 2.4i2 :
- prime modifiche per direttori multipli di base delle macchine.
2022-09-13 08:59:25 +02:00
NicolaP a6be019b32 Merge branch 'Features/Manage_MachinesDir' into develop 2022-09-12 17:27:09 +02:00
NicolaP c343b18571 Preparazione lista direttori macchina 2022-09-12 17:21:50 +02:00
NicolaP f2a777a226 Correzione gestione alzatine/frontalini 2022-09-06 11:53:08 +02:00
NicolaP 2e0979a618 Merge branch 'Features/Waterjet_Bridges' into develop 2022-09-05 17:37:05 +02:00
NicolaP bd33450bb0 Gestione comando Canc e Escape per interrompere 2022-08-31 18:07:55 +02:00
NicolaP fa0ebe1503 Utilizzo costanti per Bridge 2022-08-31 17:49:19 +02:00
NicolaP d33a976d3b Gestione costruzione ponticelli WJ 2022-08-31 17:41:28 +02:00
NicolaP ebe0c84e1f Merge commit '090e930a0febd976d4c9e2f135c61b71c9898d5b' into develop 2022-08-24 12:37:34 +02:00
DarioS 090e930a0f OmagOFFICE 2.4g1 :
- cambio di versione.
2022-08-11 10:45:51 +02:00
NicolaP f319409261 Inizio gestione lettura direttorio di appartenenza macchina 2022-08-10 09:16:09 +02:00
NicolaP ad7634f52d Merge commit 'a788f207af3d2d351992691248c5820d06ae2646' into develop 2022-08-08 11:33:23 +02:00
DarioS c95fb50006 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagOFFICE 2022-08-02 10:01:50 +02:00
Emmanuele Sassi a788f207af Merge remote-tracking branch 'origin/develop' 2022-08-02 09:58:48 +02:00
DarioS f4a8edd421 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/OmagOFFICE 2022-08-02 08:34:10 +02:00
NicolaP 601f66187a Merge branch 'Features/Manage_Filo_Top_Corner' into develop 2022-07-04 18:07:24 +02:00
NicolaP a92822bb87 Gestione visualizzazione percorso FiloTop 2022-06-30 19:01:07 +02:00
NicolaP 1a9045a23f Merge branch 'develop' 2022-06-27 09:48:36 +02:00
NicolaP fb0d35eddf Cambio versione 2022-06-27 09:47:50 +02:00
NicolaP c367f1bfe9 Merge branch 'Features/Manage_Multi_Istances' into develop 2022-06-20 18:17:18 +02:00
NicolaP d789be4547 Merge branch 'Features/Manage_Engrave' into develop 2022-06-20 18:17:11 +02:00
NicolaP 20e1e9b41c Merge branch 'Features/Manage_REDO' into develop 2022-06-20 18:16:58 +02:00
NicolaP b25f065f3c Merge branch 'Features/SHOTT_Over_Table' into develop 2022-06-20 18:16:46 +02:00
NicolaP 83cf2646cf Passo alla libreira il nome dello User 2022-06-20 15:08:08 +02:00
NicolaP 11bc92bb10 Getsione comunicazionea DB lastra in lettura 2022-06-16 16:17:35 +02:00
NicolaP 953083e429 Gestione affandamento incisioni da sopra 2022-06-13 12:46:22 +02:00
NicolaP 132990d705 Mantegno attive le lavorazioni della fase corrente 2022-06-09 12:52:41 +02:00
NicolaP 0477c42208 Salvo dimensione sovratavola per ogni macchinata 2022-06-09 12:37:44 +02:00
NicolaP c11925e90f Merge remote-tracking branch 'origin/master' into develop 2022-06-08 17:21:26 +02:00
DarioS d745119195 OmagOFFICE 2.4e4 :
- correzione versione.
2022-05-31 00:29:40 +02:00
NicolaP aa283fd190 Merge branch 'develop' 2022-05-30 15:13:27 +02:00
NicolaP 243125cbb4 Merge remote-tracking branch 'origin/master' 2022-05-30 15:12:22 +02:00
NicolaP 2789051005 Cambio versione 2022-05-30 14:54:55 +02:00
NicolaP 0b13379731 Inseriti messaggi e costanti 2022-05-30 11:02:11 +02:00
NicolaP 6cc7ba8ccd Gestione StartPoint per tagli WJ InLoop 2022-05-26 17:47:39 +02:00
NicolaP 36674aeb65 Aggiunta gestione grafica per Taglio WJ separato 2022-05-26 16:29:11 +02:00
NicolaP 9aa9b51710 Merge branch 'Features/Manage_Interference_On_Vacuum_Move' into develop 2022-05-25 18:23:15 +02:00
NicolaP 15b87d7911 Merge branch 'Features/WaterJet_Punto_Inizio' into develop 2022-05-25 18:22:47 +02:00
NicolaP c8bf133113 Gestione comando StartPoint lavorazioni waterjet 2022-05-25 18:21:57 +02:00
NicolaP faba640eee Gestione comando per separazione lavorazione WaterJet 2022-05-25 15:19:22 +02:00
DarioS e9ff1c198b OmagOFFICE 2.4e3 :
- modifiche per prima versione con chiave di rete.
2022-05-17 08:27:56 +02:00
NicolaP abc304e25c Verifica interferenze tra grezzi in fase di split 2022-05-02 14:28:08 +02:00
NicolaP 80f4dc6b83 Merge branch 'master' into develop 2022-05-02 11:12:34 +02:00
DarioS 8f5ef91890 OmagOFFICE 2.4e1 :
- controlli vari.
2022-05-02 10:29:43 +02:00
NicolaP 2cef4e6fd8 Aggiornamento versione 2.4d1 2022-04-28 16:23:28 +02:00
NicolaP f2fce7a653 Merge branch 'Features/Limit_Vacuum_On_Stroke' 2022-04-28 16:04:25 +02:00
NicolaP 7581ae0bdb Miglioramenti scrittura codice e commneti 2022-04-28 14:48:29 +02:00
NicolaP 661ae9f09c Gestione limiti corsa in fase di manipolazione 2022-04-13 17:51:13 +02:00
NicolaP 44d411819f Notifica dei limiti di corsa in fase di prelievo pezzi 2022-04-11 19:35:52 +02:00
NicolaP 46134c10b6 Gestione del carico massio delle ventose 2022-04-07 18:31:09 +02:00
NicolaP 36b7ae4843 Migliorata gestione comando Ctrl nella pagina Split 2022-03-21 14:33:43 +01:00
NicolaP 63b4977c39 Migliorara gestione lavorazioni pagina split 2022-03-16 19:27:51 +01:00
NicolaP ae927719c6 Merge branch 'Features/Multiple_CSV' 2022-03-10 20:43:26 +01:00
NicolaP 8944a8d191 Gestione massima dimensione finestra CSV 2022-03-09 11:58:23 +01:00
NicolaP 5cdfc79aca Aggrioanemetno CSV e inserimento multiplo 2022-03-07 20:31:50 +01:00
NicolaP 2f24604fa8 Gestione multiselezione in parcheggio 2022-03-02 17:06:18 +01:00
NicolaP 2889e30386 Importazione di DXF contente più di 1 part 2022-03-02 15:34:58 +01:00
NicolaP a9458620c1 Gestione parcheggio (inserimento da CSV) 2022-02-28 19:28:47 +01:00
NicolaP 7fe03cbbb4 Gestione parcheggio (inserimento da Compo) 2022-02-28 18:46:05 +01:00
NicolaP d0646eb922 Migliorata gestione Text dei rettangoli 2022-02-28 16:29:48 +01:00
NicolaP 83f37dc628 Merge commit '601471482ad03d54149f8bcf5e938c47d63a0b70' 2022-02-28 16:07:13 +01:00
DarioS 568d7c109d OmagOFFICE 2.4b2 :
- corretta gestione angolo di rotazione pezzi con misure pollici (veniva moltiplicato per 25.4 come fosse una lunghezza) presente da ver 2.3b2
- uscendo da gestione grezzo senza alcun grezzo ora si nasconde la eventuale foto.
2022-02-22 10:50:20 +01:00
NicolaP 1c36907b47 Cambio versione 2022-02-17 11:13:09 +01:00
NicolaP d2e45a937e Merge commit '614756e1bb8cb0e583d961478d3c6860779b8d1d' 2022-02-17 11:10:55 +01:00
NicolaP 13f9fc9bd2 Migliorata visualizzazione lavorazioni WaterJet 2022-02-17 11:08:40 +01:00
NicolaP 614756e1bb Correzione gestione rotazione ventose. 2022-02-17 09:57:34 +01:00
NicolaP 601471482a Insrite funzioni per la gestione del DragRettangle 2022-02-15 19:14:47 +01:00
NicolaP 8e112dc210 Inserito comando DragRettangle (gestione da configurazione) 2022-02-07 18:42:01 +01:00
NicolaP 007ad8439c Aggiornamento versione 2.4a3 2022-01-24 19:35:21 +01:00
NicolaP 1ffca8b52c Correzione gestiione VeinMatch per assemblato 3D 2022-01-24 19:34:55 +01:00
NicolaP c96251ba99 Nuova gestione SpliAuto, abilitato alzatine e frontalini 2022-01-24 12:18:34 +01:00
NicolaP 19e347412c Modifica visualizzazione comandi "DB WAterJet" 2022-01-24 12:08:07 +01:00
NicolaP 8ff06da714 Coorezione visualizzazione parametri InclinaLati 2022-01-24 12:05:08 +01:00
DarioS a18408724c OmagOFFICE :
- piccole correzioni.
2022-01-24 09:11:49 +01:00
NicolaP 701f1f2b87 Correzione gestione Quality nel file CamAuto, eliminato la qualità "" 2022-01-20 19:27:27 +01:00
NicolaP 2bb53b0b06 Merge commit 'f456c168274c47995a47f4cc3fc414137f27dac6' 2022-01-19 16:21:50 +01:00
NicolaP f456c16827 Aggiornamento di versione 2.4a2 2022-01-19 16:21:30 +01:00
NicolaP 334bfa68f7 Aggiornamento versione 2.4a2 2022-01-19 11:11:48 +01:00
NicolaP 51bbaf0bfe Merge branch 'Features/DB_WaterJet' into Features/Alz_And_Front 2022-01-17 18:39:35 +01:00
NicolaP 57cf143306 Gestioen Modifica Inizio/FIne da comandi 2022-01-17 18:38:28 +01:00
NicolaP a804043d2e Correzione gestione selezione lavorazioni 2022-01-13 19:42:00 +01:00
NicolaP 59865b140e Merge commit '959cbfb28bfec9c9b8013b700fe251a8084b6534' into Features/DB_WaterJet 2022-01-13 18:06:38 +01:00
RenzoL 959cbfb28b Selezione da interfaccia delle lavorazioni 2022-01-13 18:00:27 +01:00
RenzoL 6023318ff4 Gestione parametri macchina Waterjet 2022-01-13 12:32:34 +01:00
RenzoL d39c5bec47 Implementato flag FromDBWaterJet come in OmagCUT 2022-01-13 11:27:36 +01:00
RenzoL 54522e0733 Caricamento Materiali Waterjet riferito a WjMaterialList di EgtWPFLib5 2022-01-11 09:09:01 +01:00
RenzoL 11e3cfc7bc Aggiunta gestione Materiali e Qualità nel caso di macchina con WaterJet 2021-12-21 17:09:33 +01:00
RenzoL 114fc2dfa5 Spostato DB Waterjet in EgtWPFLib5 2021-12-10 12:54:24 +01:00
RenzoL 885495b13d DB Waterjet per OmagOFFICE completato 2021-12-10 12:12:57 +01:00
RenzoL c6c8d62e84 DB Waterjet WIP 2 2021-12-09 17:25:09 +01:00
RenzoL a72259b326 DB WaterJet WIP 1 2021-12-07 17:38:38 +01:00
NicolaP 08cd099947 Inizio gestione Kerf negativo 2021-12-06 18:41:00 +01:00
NicolaP 7dfb843b36 Gestione colori in fase di importazione DXF 2021-12-01 11:03:53 +01:00
NicolaP 108b075e4f Gestione VeinMatch e colore pezzi 2021-11-29 18:29:41 +01:00
DarioS ba0f00413d OmagOFFICE 2.3k5 :
- correzione per scalatura foto al cambio di spessore.
2021-11-17 07:34:09 +01:00
DarioS 2d39dcacc3 OmagOFFICE 2.3k1 :
- modifiche per escludere spessore sovratavola da scalatura foto fatte con CameraMng
- all'esportazione verso la macchina le foto vengono rese non più scalabili per lo spessore pezzo (come gli scan)
- corretta scrittura dati in interfaccia per problema decimali che falsano la posizione del cursore.
2021-11-16 06:37:37 +01:00
NicolaP f4887ab587 Merge branch 'Features/Alz_And_Front' 2021-11-15 18:11:04 +01:00
NicolaP 6cb04a1216 Migliorata visualizzazione dei dati in SideAngle 2021-11-15 18:09:59 +01:00
NicolaP 8dcebea39c Nuova gestioene delle alzatine 2021-11-15 16:23:45 +01:00
NicolaP 5b84a0cefe Correzione pagina SideAngle per modalita SideMode=0 2021-11-15 16:23:06 +01:00
NicolaP f0d08c562e Modifica gestione alzatine 2021-11-11 19:32:15 +01:00
NicolaP 0e77455500 Gestione alzatine e frontalini 2021-11-04 19:49:53 +01:00
NicolaP d1247d5c7e Costruzione delle alette, da gestire la riapertutra della pagina 2021-11-03 19:32:51 +01:00
NicolaP bc06203edd Iniaziata gestione delle CheckBox per le Alette 2021-10-29 17:05:26 +02:00
NicolaP c768b80802 Gestione pulsante Back e visualizzazione dati piano cucina 2021-10-29 15:39:53 +02:00
NicolaP ae204b7ee2 Inizio nuova gestione pulsante Back per compo interni e alzatine 2021-10-28 18:19:31 +02:00
NicolaP d21067988c Aggiornamento veriosne 2.3j3 2021-10-21 14:57:17 +02:00
NicolaP 9c503cdb5c Correzione aggiornamento di versione 2021-10-11 19:14:54 +02:00
288 changed files with 49996 additions and 3143 deletions
+20
View File
@@ -0,0 +1,20 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Class AlzAndFrontVM
Inherits VMBase
#Region "CONSTRUCTOR"
Sub New()
End Sub
#End Region ' CONSTRUCTOR
End Class
+137
View File
@@ -0,0 +1,137 @@
<UserControl x:Class="AlzAndFrontV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Visibility="{Binding Legenda_Visibility}"
Grid.Row="0"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="0.6*"/>
<ColumnDefinition Width="0.6*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding FirstColumnMsg}" Grid.Column="1" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding SecondColumnMsg}" Grid.Column="2" HorizontalAlignment="Center"/>
</Grid>
<EgtWPFLib5:EgtScrollViewer VerticalScrollBarVisibility="Auto"
Focusable="false"
Padding="3"
Grid.Row="1">
<ItemsControl ItemsSource="{Binding SideEntityList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding sEntityName}"
VerticalAlignment="Center"/>
<!--Drip e Engrave-->
<UniformGrid Grid.Column="1" Columns="3" Rows="1">
<CheckBox IsChecked="{Binding bIsChecked}"
Grid.Column="1"
Visibility="{Binding Check_Visibility}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<EgtWPFLib5:EgtTextBox Text="{Binding GrphShortStart}"
Visibility="{Binding Value_Visibility_DE}"
VerticalAlignment="Center"
Margin="0,0,2.5,0"/>
<EgtWPFLib5:EgtTextBox Text="{Binding GrphShortEnd}"
Visibility="{Binding Value_Visibility_DE}"
VerticalAlignment="Center"
Margin="2.5,0,0,0"/>
</UniformGrid>
<!--SideAngle-->
<UniformGrid Grid.Column="1" Columns="2" Rows="1">
<EgtWPFLib5:EgtTextBox Text="{Binding GrphSideAngle}"
Visibility="{Binding Value_Visibility}"
VerticalAlignment="Center"
Margin="0,0,2.5,0"/>
<EgtWPFLib5:EgtTextBox Text="{Binding GrphSideHeel}"
Visibility="{Binding Value_Visibility}"
VerticalAlignment="Center"
Margin="2.5,0,0,0"/>
</UniformGrid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</EgtWPFLib5:EgtScrollViewer>
<Grid Visibility="{Binding Parameter1_Visibility}"
Grid.Row="2"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Parameter1Msg}" Grid.Row="0"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Parameter1}"
Grid.Column="1"/>
</Grid>
<Grid Visibility="{Binding Parameter1_Visibility}"
Grid.Row="3"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Parameter2Msg}" Grid.Row="1"/>
<EgtWPFLib5:EgtTextBox Visibility="{Binding Parameter2_Visibility}"
Text="{Binding Parameter2}"
Grid.Column="1"/>
<UniformGrid Grid.Column="1" Columns="2"
Visibility="{Binding Parameter2ab_Visibility}">
<EgtWPFLib5:EgtTextBox Text="{Binding Parameter2a}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Parameter2b}"/>
</UniformGrid>
</Grid>
<Grid Visibility="{Binding Parameter23_Visibility}"
Grid.Row="4"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Parameter3Msg}" Grid.Row="2"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Parameter3}"
Grid.Column="1"/>
</Grid>
<Grid Visibility="{Binding Parameter4_Visibility}"
Grid.Row="5"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Parameter4Msg}" Grid.Row="2"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Parameter4}"
Grid.Column="1"/>
</Grid>
</Grid>
</UserControl>
+13
View File
@@ -0,0 +1,13 @@
Public Class AlzAndFrontV
Private WithEvents m_AlzAndFrontVM As AlzAndFrontVM
Sub New(AlzAndFrontVM As AlzAndFrontVM)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = AlzAndFrontVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_AlzAndFrontVM = AlzAndFrontVM
End Sub
End Class
+37 -3
View File
@@ -108,6 +108,8 @@ Public Class CompoListPageVM
End Get
Set(value As Boolean)
If m_SideAngle_IsChecked OrElse m_Drip_IsChecked Then Return
CompoWindowMap.refCompoSceneHostV.m_SelListHole.Clear()
CompoWindowMap.refCompoSceneHostV.m_DeselectListHole.Clear()
m_FiloTop_IsChecked = value
If value Then
' Se non ci sono loop interni, imposto quello esterno
@@ -122,6 +124,7 @@ Public Class CompoListPageVM
SideEntityControl = New SideEntityControlV(m_SideEntityControlVM)
m_CompoListVisibility = Visibility.Collapsed
m_CompoBackVisibility = Visibility.Collapsed
CompoWindowMap.refCompoSceneHostV.SetRefSideEntityControlVM(m_SideEntityControlVM)
Else
m_SideEntityControlVM.Close()
m_SideEntityControlVM = Nothing
@@ -300,9 +303,16 @@ Public Class CompoListPageVM
m_BackVisibility = Visibility.Visible
m_SideEntity_Visibility = Visibility.Collapsed
Else
LoadInternalCompoList()
m_BackVisibility = Visibility.Visible
m_SideEntity_Visibility = Visibility.Visible
' differenzio il caso di AlzAndFront
If CompoWindowMap.refCompoWindowVM.m_bSelAlzAndFront Then
' carico la pagina per la definizione delle componenti Alette
m_BackVisibility = Visibility.Visible
m_SideEntity_Visibility = Visibility.Hidden
Else
LoadInternalCompoList()
m_BackVisibility = Visibility.Visible
m_SideEntity_Visibility = Visibility.Visible
End If
End If
NotifyPropertyChanged("BackVisibility")
NotifyPropertyChanged("SideEntity_Visibility")
@@ -449,8 +459,32 @@ Public Class CompoListPageVM
If IsNothing(CompoWindowMap.refCompoWindowVM.m_SelCompo) Then
CompoWindowMap.refCompoWindowVM.m_SelCompoFamily = Nothing
InitCompoListPage()
ElseIf CompoWindowMap.refCompoWindowVM.m_bSelInternalCompo Then
'CompoWindowMap.refCompoWindowVM.CompoPage = CompoWindowVM.CompoPageOpt.PARAM
CompoWindowMap.refCompoWindowVM.SetCompoPage(CompoWindowVM.CompoPageOpt.PARAM)
CompoWindowMap.refCompoParamPageVM.MyInitCompoParamPage()
Dim PartId As Integer = EgtGetFirstPart()
EgtSetStatus(EgtGetFirstNameInGroup(PartId, CompoParamPageVM.COMPO_LAYER_AUX), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, CompoParamPageVM.COMPO_LAYER_QUOTATURE), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, CompoParamPageVM.COMPO_LAYER_ETICHETTE), GDB_ST.OFF)
EgtZoom(ZM.ALL)
CompoWindowMap.refCompoWindowVM.m_bSelInternalCompo = False
' aggiorno la lista dei parametri da visualizzare a schermo
CompoWindowMap.refCompoParamPageVM.SetCompoParamList(CompoWindowMap.refCompoParamPageVM.CompoParamOutLoopList)
' disbilito la modifica del componente piano cucicna/bagno corrente
For Each Item In CompoWindowMap.refCompoParamPageVM.CompoParamList
If TypeOf (Item) Is TextParamItem Then
Dim TxtParam As TextParamItem = DirectCast(Item, TextParamItem)
TxtParam.IsEnable = False
ElseIf TypeOf (Item) Is CheckParamItem Then
Dim ChkParam As CheckParamItem = DirectCast(Item, CheckParamItem)
ChkParam.IsEnable = False
End If
Next
CompoWindowMap.refCompoParamPageVM.ListParamIsEnable = False
Else
CompoWindowMap.refCompoWindowVM.m_SelCompo = Nothing
CompoWindowMap.refCompoParamPageVM.ListParamIsEnable = True
InitCompoListPage()
EgtNewFile()
EgtDraw()
+27 -27
View File
@@ -3,60 +3,60 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
DockPanel.Dock="Bottom">
<Grid Visibility="{Binding Top_Visibility}"
<Grid Visibility="{Binding Top_Visibility}"
Margin="0,0,0,5">
<TextBlock Text="{Binding TopMsg}"/>
<CheckBox IsChecked="{Binding TopIsChecked}"
<TextBlock Text="{Binding TopMsg}" Foreground="{DynamicResource Omag_White}"/>
<CheckBox IsChecked="{Binding TopIsChecked}"
HorizontalAlignment="Right" Margin="6,0,6,0"/>
</Grid>
</Grid>
<Button Content="{Binding TrfDataMsg}"
<Button Content="{Binding TrfDataMsg}"
Command="{Binding TrfData_Command}"
Visibility="{Binding TrfData_Visibility}"
Margin="0,0,0,5"
Style="{StaticResource CompoWindow_Button}"/>
<Button Content="{Binding CsvDataMsg}"
<Button Content="{Binding CsvDataMsg}"
Command="{Binding CsvData_Command}"
Visibility="{Binding CsvData_Visibility}"
Margin="0,0,0,5"
Style="{StaticResource CompoWindow_Button}"/>
<Grid Visibility="{Binding PartName_Visibility}"
<Grid Visibility="{Binding PartName_Visibility}"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding PartNameMsg}" Grid.Column="0"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartName}" Grid.Column="1" Width="130"/>
<TextBlock Text="{Binding PartNameMsg}" Grid.Column="0" Foreground="{DynamicResource Omag_White}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartName}" Grid.Column="1" Width="130"/>
</Grid>
</Grid>
<Grid Visibility="{Binding PartNum_Visibility}"
<Grid Visibility="{Binding PartNum_Visibility}"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding PartNumMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartNum}" Grid.Column="1" Width="60"/>
<TextBlock Text="{Binding PartNumMsg}" Foreground="{DynamicResource Omag_White}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartNum}" Grid.Column="1" Width="60"/>
</Grid>
</Grid>
<UniformGrid Columns="2"
<UniformGrid Columns="2"
Margin="0,0,0,5"
Visibility="{Binding OkExit_Visibility}">
<Button Content="{Binding OkMsg}"
<Button Content="{Binding OkMsg}"
Command="{Binding OkCommand}"
Style="{StaticResource CompoWindow_Button}"/>
<Button Content="{Binding ExitMsg}" IsCancel="True"
<Button Content="{Binding ExitMsg}" IsCancel="True"
Style="{StaticResource CompoWindow_Button}"/>
</UniformGrid>
</UniformGrid>
</StackPanel>
+2 -1
View File
@@ -307,7 +307,8 @@ Public Class CompoManagerVM
' Passo al contesto principale
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' Inserisco il componente nel DB geometrico principale
CompoWindowMap.refCompoWindowVM.MakeInsert(InsNbr, m_PartName)
'CompoWindowMap.refCompoWindowVM.MakeInsert(InsNbr, m_PartName)
CompoWindowMap.refCompoWindowVM.MakeMultipleInsert(InsNbr, m_PartName)
' Aggiorno ambiente principale
EgtZoom(ZM.ALL)
' Elimino riferimento con delegato
+70 -65
View File
@@ -4,13 +4,13 @@
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5">
<DockPanel>
<DockPanel>
<UniformGrid Columns="3"
DockPanel.Dock="Top"
Visibility="{Binding SideEntity_Visibility}"
Margin="0,0,0,0">
<!--Inclina lati-->
<ToggleButton
IsChecked="{Binding SideAngle_IsChecked}"
@@ -21,9 +21,9 @@
<AccessText TextWrapping="Wrap" Text="{Binding SideAngleMsg}"/>
</ToggleButton.Content>
</ToggleButton>
<!--FiloTop--><!--
<ToggleButton Padding="0"
<!--FiloTop-->
<!--<ToggleButton Padding="0"
IsChecked="{Binding FiloTop_IsChecked}"
Style="{StaticResource CompoWindow_ToggleButton}"
Margin="0,0,1.75,0"
@@ -32,7 +32,7 @@
<AccessText TextWrapping="Wrap" Text="{Binding FiloTopMsg}"/>
</ToggleButton.Content>
</ToggleButton>-->
<!--Incidi-->
<ToggleButton Padding="0"
IsChecked="{Binding Engrave_IsChecked}"
@@ -50,95 +50,100 @@
Margin="1.75,0,0,0"
IsEnabled="{Binding Drip_IsEnabled}">
<ToggleButton.Content>
<AccessText TextWrapping="Wrap" Text="{Binding DripMsg}" />
<AccessText TextWrapping="Wrap" Text="{Binding DripMsg}" />
</ToggleButton.Content>
</ToggleButton>
</UniformGrid>
<StackPanel DockPanel.Dock="Bottom">
<ContentControl Content="{Binding CompoManagerControl,
<StackPanel DockPanel.Dock="Bottom">
<ContentControl Content="{Binding CompoManagerControl,
UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding CompoManagerControl_Visibility}"/>
<Button Command="{Binding BackCommand}"
<Button Command="{Binding BackCommand}"
Visibility="{Binding Back_Visibility}"
Style="{StaticResource CompoWindow_Button}"
Focusable="False"
Margin="0,0,0,5">
<Image Source="/Resources/MachiningTab/BackArrow.png"/>
</Button>
</StackPanel>
<Image Source="/Resources/MachiningTab/BackArrow.png"/>
</Button>
<Grid>
<ContentControl VerticalAlignment="Center"
</StackPanel>
<Grid>
<ContentControl VerticalAlignment="Center"
Content="{Binding SideEntityControl}"/>
<StackPanel VerticalAlignment="Center"
<StackPanel VerticalAlignment="Center"
Visibility="{Binding Measure_Visibility}">
<ItemsControl ItemsSource="{Binding CompoParamList}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type OmagOFFICE:TextParamItem}">
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
<EgtWPFLib5:EgtTextBox Grid.Column="1"
Text="{Binding Value}"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type OmagOFFICE:CheckParamItem}">
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}"/>
<CheckBox Grid.Column="1"
IsChecked="{Binding Value}"
<ItemsControl ItemsSource="{Binding CompoParamList}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type OmagOFFICE:TextParamItem}">
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Foreground="{DynamicResource Omag_White}"/>
<EgtWPFLib5:EgtTextBox Grid.Column="1"
Text="{Binding Value}" IsEnabled="{Binding IsEnable}"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type OmagOFFICE:CheckParamItem}">
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" Foreground="{DynamicResource Omag_White}"/>
<CheckBox Grid.Column="1"
IsChecked="{Binding Value}" IsEnabled="{Binding IsEnable}"
HorizontalAlignment="Center"/>
</Grid>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</Grid>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ItemsControl>
<TextBlock Text="{Binding OutputMessage}"
<TextBlock Text="{Binding OutputMessage}"
Foreground="{Binding MsgColor}"
TextWrapping="Wrap"
TextAlignment="Justify"
Margin="0,0,0,5"/>
<Button Content="{Binding InternalMsg}"
<Button Content="{Binding InternalMsg}"
Command="{Binding InternalCommand}"
Visibility="{Binding Internal_Visibility}"
Style="{StaticResource CompoWindow_Button}"/>
<UniformGrid Columns="2"
<Button Content="{Binding AlzAndFrontMsg}"
Command="{Binding AlzAndFrontCommand}"
Visibility="{Binding AlzAndFront_Visibility}"
Style="{StaticResource CompoWindow_Button}"/>
<UniformGrid Columns="2"
Margin="0,0,0,5"
Visibility="{Binding AddRemove_Visibility}">
<Button Content="{Binding AddMsg}"
<Button Content="{Binding AddMsg}"
Command="{Binding AddCommand}"
Style="{StaticResource CompoWindow_Button}"/>
<Button Content="{Binding CancelMsg}"
<Button Content="{Binding CancelMsg}"
Command="{Binding CancelCommand}"
Style="{StaticResource CompoWindow_Button}"/>
</UniformGrid>
</UniformGrid>
</StackPanel>
</Grid>
</DockPanel>
</StackPanel>
</Grid>
</DockPanel>
</UserControl>
+323 -16
View File
@@ -23,12 +23,35 @@ Public Class CompoParamPageVM
Friend Const COMPO_LAYER_QUOTATURE As String = "Quotature"
Friend Const COMPO_LAYER_ETICHETTE As String = "Etichette"
' questo parametro diventa False in uscita dalla pagine Alzatine o CompoInterni
Public ListParamIsEnable As Boolean = True
Private m_SideEntityControlVM As SideEntityControlVM
Private m_CompoParamList As New ObservableCollection(Of CompoParamItem)
Public ReadOnly Property CompoParamList As ObservableCollection(Of CompoParamItem)
Get
Return m_CompoParamList
End Get
End Property
Public Sub SetCompoParamList(CurrList As ObservableCollection(Of CompoParamItem))
m_CompoParamList.Clear()
' eseguo una copia dei parametri da una lista all'altra
For Each Item In CurrList
Dim NewCompoItem As CompoParamItem = Item
m_CompoParamList.Add(NewCompoItem)
Next
NotifyPropertyChanged("CompoParamList")
End Sub
' lista dei parametri del piano cucina (da mostrare quando eseguo la funzione Back)
Private m_CompoParamOutLoopList As New ObservableCollection(Of CompoParamItem)
Public ReadOnly Property CompoParamOutLoopList As ObservableCollection(Of CompoParamItem)
Get
Return m_CompoParamOutLoopList
End Get
End Property
Private m_Internal_Visibility As Visibility
Public Property Internal_Visibility As Visibility
@@ -41,6 +64,17 @@ Public Class CompoParamPageVM
End Set
End Property
Private m_AlzAndFront_Visibility As Visibility
Public Property AlzAndFront_Visibility As Visibility
Get
Return m_AlzAndFront_Visibility
End Get
Set(value As Visibility)
m_AlzAndFront_Visibility = value
NotifyPropertyChanged("AlzAndFront_Visibility")
End Set
End Property
Private m_AddRemove_Visibility As Visibility
Public Property AddRemove_Visibility As Visibility
Get
@@ -129,7 +163,7 @@ Public Class CompoParamPageVM
End Set
End Property
Private m_SideEntityControlVM As SideEntityControlVM
#Region "SideAngle"
Private m_SideAngle_IsChecked As Boolean
Public Property SideAngle_IsChecked As Boolean
@@ -172,9 +206,17 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.SelectedLayer = GDB_ID.NULL
' Attivo layer delle misure
Dim PartId As Integer = EgtGetFirstPart()
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
If Not ListParamIsEnable Then
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
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
End If
End If
NotifyPropertyChanged("SideAngle_IsChecked")
EgtZoom(ZM.ALL)
@@ -192,6 +234,10 @@ Public Class CompoParamPageVM
End Set
End Property
#End Region ' SideAngle
#Region "FiloTop"
Private m_FiloTop_IsChecked As Boolean
Public Property FiloTop_IsChecked As Boolean
Get
@@ -233,9 +279,17 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.SelectedLayer = GDB_ID.NULL
' Attivo layer delle misure
Dim PartId As Integer = EgtGetFirstPart()
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
If Not ListParamIsEnable Then
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
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
End If
End If
NotifyPropertyChanged("FiloTop_IsChecked")
EgtZoom(ZM.ALL)
@@ -253,6 +307,10 @@ Public Class CompoParamPageVM
End Set
End Property
#End Region ' FiloTop
#Region "Drip"
Private m_Drip_IsChecked As Boolean
Public Property Drip_IsChecked As Boolean
Get
@@ -293,9 +351,17 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.SelectedLayer = GDB_ID.NULL
' Attivo layer delle misure
Dim PartId As Integer = EgtGetFirstPart()
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
If Not ListParamIsEnable Then
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
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
End If
End If
NotifyPropertyChanged("Drip_IsChecked")
EgtZoom(ZM.ALL)
@@ -313,6 +379,10 @@ Public Class CompoParamPageVM
End Set
End Property
#End Region ' Drip
#Region "Engrave"
Private m_Engrave_IsChecked As Boolean
Public Property Engrave_IsChecked As Boolean
Get
@@ -339,8 +409,13 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.CompoScene,
SideEntityControlVM.ModeOpt.ENGRAVE)
SideEntityControl = New SideEntityControlV(m_SideEntityControlVM)
If m_SideEntityControlVM.SideEntityList.Count < 1 Then
' eventulmente stamnpare messaggio!
' OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
' OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Lavorazioni non disponibile", MSG_TYPE.WARNING)
End If
Else
SideAngle_IsEnabled = True
SideAngle_IsEnabled = True
Drip_IsEnabled = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(CurrentMachine.sCurrDripSaw)
FiloTop_IsEnabled = True
@@ -354,9 +429,17 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.SelectedLayer = GDB_ID.NULL
' Attivo layer delle misure
Dim PartId As Integer = EgtGetFirstPart()
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
If Not ListParamIsEnable Then
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
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_AUX), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_QUOTATURE), GDB_ST.ON_)
EgtSetStatus(EgtGetFirstNameInGroup(PartId, COMPO_LAYER_ETICHETTE), GDB_ST.ON_)
End If
End If
NotifyPropertyChanged("Engrave_IsChecked")
EgtZoom(ZM.ALL)
@@ -374,6 +457,8 @@ Public Class CompoParamPageVM
End Set
End Property
#End Region ' Engrave
Private m_SideEntityControl As SideEntityControlV
Public Property SideEntityControl As SideEntityControlV
Get
@@ -385,6 +470,8 @@ Public Class CompoParamPageVM
End Set
End Property
#Region "Messages"
Public ReadOnly Property InternalMsg As String
@@ -392,6 +479,12 @@ Public Class CompoParamPageVM
Return EgtMsg(MSG_COMPONENTPAGEUC + 47)
End Get
End Property
Public ReadOnly Property AlzAndFrontMsg As String
Get
Return "Alzatine e frontalini"
End Get
End Property
Private m_AddMsg As String
Public Property AddMsg As String
Get
@@ -432,6 +525,7 @@ Public Class CompoParamPageVM
' definizione comandi
Private m_cmdInternal As ICommand
Private m_cmdAlzAndFront As ICommand
Private m_cmdAdd As ICommand
Private m_cmdCancel As ICommand
Private m_cmdBack As ICommand
@@ -471,7 +565,7 @@ Public Class CompoParamPageVM
CompoWindowMap.refCompoSceneHostV.CompoScene.ZoomAll()
' Imposto messaggio aggiungi
AddMsg = EgtMsg(MSG_COMPONENTPAGEUC + 48)
' altrimenti se è un compo interno
' altrimenti se è un compo interno
Else
If Not bOk Then
EgtOutLog("Error in Component " & CompoWindowMap.refCompoWindowVM.m_SelInternalCompo.LuaPath)
@@ -480,7 +574,7 @@ Public Class CompoParamPageVM
' Imposto messaggio conferma
AddMsg = EgtMsg(MSG_COMPONENTPAGEUC + 50)
End If
' leggo variabili e aggiorno griglia
' leggo variabili e aggiorno griglia
ReadAndShowVariables()
' visualizzo/nascondo bottoni
If IsNothing(CompoWindowMap.refCompoWindowVM.m_SelInternalCompo) Then
@@ -491,8 +585,60 @@ Public Class CompoParamPageVM
EgtLuaGetGlobBoolVar(LUA_CMP_WITHINT, bHasInternalCompo)
Internal_Visibility = If(bHasInternalCompo, Visibility.Visible, Visibility.Collapsed)
SideEntity_Visibility = Visibility.Visible
' verifico che esista la configurazione per le alzatine e i frontalini
Dim sVariable As String = String.Empty
Dim bEnableAlzAndFront As Boolean = GetMainPrivateProfileString("Alz&Front", "Alz&Front", "", sVariable) <> 0
' verifio se abilitare il bottone per inserire le Alz&Front
Dim sCMPName As String = String.Empty
If EgtLuaGetGlobStringVar("CMP.Nome", sCMPName) Then
If bEnableAlzAndFront And sCMPName.StartsWith("PCucina") Or sCMPName.StartsWith("PBagno") Then
AlzAndFront_Visibility = Visibility.Visible
Else
AlzAndFront_Visibility = Visibility.Collapsed
End If
End If
Else
Internal_Visibility = Visibility.Collapsed
AlzAndFront_Visibility = Visibility.Collapsed
AddRemove_Visibility = Visibility.Visible
Back_Visibility = Visibility.Collapsed
SideEntity_Visibility = Visibility.Collapsed
End If
' porto in CompoParam il CompoManager
CompoWindowMap.refCompoListPageVM.CompoManagerControl = Nothing
CompoManagerControl = CompoWindowMap.refCompoWindowVM.CompoManagerV
' lancio inizializzazione CompoManager
CompoWindowMap.refCompoManagerVM.InitCompoManager()
End Sub
' gestione speciale per componenti piani cucina e piani bagno
Friend Sub MyInitCompoParamPage()
' Pulisco l'ambiente lua
ResetLuaVariables()
' leggo variabili e aggiorno griglia
ReadAndShowVariables()
' visualizzo/nascondo bottoni
If IsNothing(CompoWindowMap.refCompoWindowVM.m_SelInternalCompo) Then
AddRemove_Visibility = Visibility.Collapsed
Back_Visibility = Visibility.Visible
Internal_Visibility = Visibility.Visible
' verifico che esista la configurazione per le alzatine e i frontalini
Dim sVariable As String = String.Empty
Dim bEnableAlzAndFront As Boolean = GetMainPrivateProfileString("Alz&Front", "Alz&Front", "", sVariable) <> 0
AlzAndFront_Visibility = If(bEnableAlzAndFront, Visibility.Visible, Visibility.Collapsed)
SideEntity_Visibility = Visibility.Visible
' verifio se abilitare il bottone per inserire le Alz&Front
Dim sCMPName As String = String.Empty
If EgtLuaGetGlobStringVar("CMP.Nome", sCMPName) Then
If bEnableAlzAndFront And sCMPName.StartsWith("PCucina") Or sCMPName.StartsWith("PBagno") Then
AlzAndFront_Visibility = Visibility.Visible
Else
AlzAndFront_Visibility = Visibility.Collapsed
End If
End If
Else
Internal_Visibility = Visibility.Collapsed
AlzAndFront_Visibility = Visibility.Collapsed
AddRemove_Visibility = Visibility.Visible
Back_Visibility = Visibility.Collapsed
SideEntity_Visibility = Visibility.Collapsed
@@ -602,6 +748,50 @@ Public Class CompoParamPageVM
NotifyPropertyChanged("MsgColor")
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}
If IsNothing(m_SideEntityControlVM) Then
m_SideEntityControlVM = New SideEntityControlVM(SideEntityControlVM.CallingWindowOpt.COMPO,
CompoWindowMap.refCompoSceneHostV.CompoScene,
SideEntityControlVM.ModeOpt.FILOTOP)
m_SideEntityControlVM.CreateFiloTopPreView(LocalList)
Else
m_SideEntityControlVM.CreateFiloTopPreView(LocalList)
End If
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
#Region "COMMANDS"
@@ -620,7 +810,14 @@ Public Class CompoParamPageVM
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub Internal(ByVal param As Object)
' creo una copia della lista dei parametri del piano cucina
m_CompoParamOutLoopList.Clear()
For i As Integer = 0 To m_CompoParamList.Count - 1
m_CompoParamOutLoopList.Add(m_CompoParamList(i))
Next
CompoWindowMap.refCompoWindowVM.m_SelInternalCompo = Nothing
CompoWindowMap.refCompoWindowVM.m_bSelInternalCompo = True
CompoWindowMap.refCompoWindowVM.m_bSelAlzAndFront = False
CompoWindowMap.refCompoWindowVM.CompoPage = CompoWindowVM.CompoPageOpt.LIST
' Nascondo layer etichette e quotature
Dim Pz As Integer = EgtGetFirstGroupInGroup(GDB_ID.ROOT)
@@ -632,6 +829,61 @@ Public Class CompoParamPageVM
#End Region ' InternalCommand
#Region "AlzAndFrontCommand"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property AlzAndFrontCommand() As ICommand
Get
If m_cmdAlzAndFront Is Nothing Then
m_cmdAlzAndFront = New Command(AddressOf AlzAndFront)
End If
Return m_cmdAlzAndFront
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub AlzAndFront(ByVal param As Object)
' creo una copia della lista dei parametri del piano cucina
m_CompoParamOutLoopList.Clear()
For i As Integer = 0 To m_CompoParamList.Count - 1
m_CompoParamOutLoopList.Add(m_CompoParamList(i))
Next
CompoWindowMap.refCompoWindowVM.m_SelInternalCompo = Nothing
CompoWindowMap.refCompoWindowVM.m_bSelInternalCompo = False
CompoWindowMap.refCompoWindowVM.m_bSelAlzAndFront = True
' disabilito i comandi seguenti
m_SideAngle_IsEnabled = False
NotifyPropertyChanged("SideAngle_IsEnabled")
m_Drip_IsEnabled = False
NotifyPropertyChanged("Drip_IsEnabled")
m_Engrave_IsEnabled = False
NotifyPropertyChanged("Engrave_IsEnabled")
m_FiloTop_IsEnabled = False
NotifyPropertyChanged("FiloTop_IsEnabled")
Measure_Visibility = Visibility.Collapsed
CompoManagerControl_Visibility = Visibility.Collapsed
Back_Visibility = Visibility.Visible
' Nascondo layer etichette e quotature del disegno corrente
Dim Pz As Integer = EgtGetFirstGroupInGroup(GDB_ID.ROOT)
EgtSetStatus(EgtGetFirstNameInGroup(Pz, "LayAux"), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(Pz, "Etichette"), GDB_ST.OFF)
EgtSetStatus(EgtGetFirstNameInGroup(Pz, "Quotature"), GDB_ST.OFF)
' Imposto il loop interno
CompoWindowMap.refCompoSceneHostV.SelectedLayer = EgtGetFirstNameInGroup(EgtGetFirstPart(), NAME_OUTLOOP)
m_SideEntityControlVM = New SideEntityControlVM(SideEntityControlVM.CallingWindowOpt.COMPO,
CompoWindowMap.refCompoSceneHostV.CompoScene,
SideEntityControlVM.ModeOpt.ALZANDFRONT)
SideEntityControl = New SideEntityControlV(m_SideEntityControlVM)
EgtDraw()
End Sub
#End Region ' AlzAndFrontCommand
#Region "AddCommand"
' Returns a command that manage the MainWindow_Unloaded command
@@ -657,6 +909,7 @@ Public Class CompoParamPageVM
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")
@@ -726,13 +979,54 @@ Public Class CompoParamPageVM
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub Back(ByVal param As Object)
' se sto uscendo dalla pagina delle alzatine (rimanendo nel componente del piano cucina/bagno)
If CompoWindowMap.refCompoWindowVM.m_bSelAlzAndFront Then
SideAngle_IsEnabled = True
Engrave_IsEnabled = True
Drip_IsEnabled = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(CurrentMachine.sCurrDripSaw)
If Not IsNothing(m_SideEntityControlVM) Then
m_SideEntityControlVM.Close()
m_SideEntityControlVM = Nothing
SideEntityControl = Nothing
End If
Measure_Visibility = Visibility.Visible
CompoManagerControl_Visibility = Visibility.Visible
Back_Visibility = Visibility.Visible
' Deseleziono tutto
CompoWindowMap.refCompoSceneHostV.SelectedLayer = GDB_ID.NULL
' Attivo layer delle misure
Dim PartId As Integer = EgtGetFirstPart()
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)
EgtZoom(ZM.ALL)
CompoWindowMap.refCompoWindowVM.m_bSelAlzAndFront = False
' aggiorno la lista dei parametri da visualizzare a schermo
SetCompoParamList(CompoParamOutLoopList)
' disbilito la modifica del componente piano cucicna/bagno corrente
For Each Item In CompoParamList
If TypeOf (Item) Is TextParamItem Then
Dim TxtParam As TextParamItem = DirectCast(Item, TextParamItem)
TxtParam.IsEnable = False
ElseIf TypeOf (Item) Is CheckParamItem Then
Dim ChkParam As CheckParamItem = DirectCast(Item, CheckParamItem)
ChkParam.IsEnable = False
End If
Next
ListParamIsEnable = False
Return
End If
' se sto uscendo dalla pagina dei componenti
If CompoWindowMap.refCompoWindowVM.m_SelCompoFamily Is CompoWindowMap.refCompoWindowVM.m_SelCompo Then
CompoWindowMap.refCompoWindowVM.m_SelCompoFamily = Nothing
End If
ListParamIsEnable = True
CompoWindowMap.refCompoWindowVM.m_SelCompo = Nothing
CompoWindowMap.refCompoWindowVM.CompoPage = CompoWindowVM.CompoPageOpt.LIST
EgtNewFile()
EgtDraw()
End Sub
#End Region ' BackCommand
@@ -742,6 +1036,7 @@ Public Class CompoParamPageVM
End Class
Public Class CompoParamItem
Inherits VMBase
Public Enum ParamType As Integer
BOOL = 1
@@ -774,6 +1069,18 @@ Public Class CompoParamItem
End Get
End Property
Public m_IsEnable As Boolean = True
Public Property IsEnable As Boolean
Get
Return m_IsEnable
End Get
Set(value As Boolean)
m_IsEnable = value
NotifyPropertyChanged("IsEnable")
End Set
End Property
Sub New(nInd As Integer, sName As String, nType As ParamType)
m_nInd = nInd
m_sName = sName
+19
View File
@@ -3,6 +3,11 @@ Imports EgtWPFLib5
Public Class CompoSceneHostV
Public m_SelListHole As New List(Of Integer)
Public m_DeselectListHole As New List(Of Integer)
Private m_refSideEntityControlVM As SideEntityControlVM
Private m_SelFromScene As Boolean = False
Friend ReadOnly Property SelFromScene As Boolean
Get
@@ -36,6 +41,10 @@ Public Class CompoSceneHostV
EgtDraw()
End Sub
Public Sub SetRefSideEntityControlVM(refSideEntityControl As SideEntityControlVM)
m_refSideEntityControlVM = refSideEntityControl
End Sub
Private Sub PreInitializeScene()
' imposto colore di default
Dim DefColor As New Color3d(0, 0, 0)
@@ -156,6 +165,8 @@ Public Class CompoSceneHostV
Dim nCmpInfo As Integer = 0
If EgtGetInfo(nHLId, "ID", nCmpInfo) AndAlso nCmp = nCmpInfo Then
EgtSetStatus(nHLId, GDB_ST.ON_)
' nascondo eventuali FiloTop
CompoWindowMap.refCompoParamPageVM.SetStatusVisibilityInLoopReference(nCmp, GDB_ST.OFF)
Exit While
End If
nHLId = EgtGetNextName(nHLId, "HoleLabels")
@@ -262,6 +273,8 @@ Public Class CompoSceneHostV
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
@@ -272,12 +285,18 @@ Public Class CompoSceneHostV
EgtSetInfo(nLayId, INFO_DEPTH, SideAngleEntity.m_Parameter2)
EgtSetColor(nLayId, New Color3d(255, 255, 255))
End If
m_SelListHole.Add(nLayId)
m_DeselectListHole.Remove(nLayId)
End If
EgtDraw()
End If
End If
nId = EgtGetNextObjInSelWin()
End While
If Not IsNothing(m_refSideEntityControlVM) Then
m_refSideEntityControlVM.CreateFiloTopPreView(m_SelListHole)
m_refSideEntityControlVM.EraseFiloTopPreview(m_DeselectListHole)
End If
End Sub
#End Region ' Events
+243
View File
@@ -28,6 +28,9 @@ Public Class CompoWindowVM
Friend m_SelCompo As CompoItem = Nothing
Friend m_SelInternalCompo As CompoItem = Nothing
Friend m_bSelAlzAndFront As Boolean = False
Friend m_bSelInternalCompo As Boolean = False
Private m_sCompoDir As String = String.Empty
Friend m_bDrawOk As Boolean = False
@@ -62,6 +65,15 @@ Public Class CompoWindowVM
NotifyPropertyChanged("CompoPageControl")
End Set
End Property
' utilizzato per forzare il cambio pagina senza passare dall'inizializzazione della componente
Public Sub SetCompoPage(PageOpt As CompoPageOpt)
If PageOpt = CompoPageOpt.LIST Then
m_CompoPage = CompoPageOpt.LIST
Else
m_CompoPage = CompoPageOpt.PARAM
End If
NotifyPropertyChanged("CompoPageControl")
End Sub
Private m_CompoListPageV As CompoListPageV
Private m_CompoParamPageV As CompoParamPageV
@@ -340,6 +352,237 @@ Public Class CompoWindowVM
Return True
End Function
Friend Function MakeMultipleInsert(ByVal nNbr As Integer, sName As String) As Boolean
Dim InsertColor As Color3d = CompoColor(IniFile.m_sIniFile)
' Imposto il contesto corrente
EgtSetCurrentContext(CompoWindowMap.refCompoSceneHostV.CompoScene.GetCtx())
Dim Pz As Integer = -1
Dim NxtPz As Integer = -1
' Cancello layer regioni per selezione buchi
Pz = EgtGetFirstGroupInGroup(GDB_ID.ROOT)
' identificativo univoico del gruppo di pezzi, se più di un pezzo
Dim sGUICode As String = String.Empty
While Pz <> -1
' imposto il contesto corrente
EgtSetCurrentContext(CompoWindowMap.refCompoSceneHostV.CompoScene.GetCtx())
' cerco un altro pezzo nell'elenco
NxtPz = EgtGetNextPart(Pz)
Dim SelectRegion As Integer = EgtGetFirstNameInGroup(Pz, "SelectRegion")
EgtErase(SelectRegion)
' Cancello layer etichette, quotatura,ausiliario e box
EgtErase(EgtGetFirstNameInGroup(Pz, "LayAux"))
EgtErase(EgtGetFirstNameInGroup(Pz, "Etichette"))
EgtErase(EgtGetFirstNameInGroup(Pz, "Quotature"))
EgtErase(EgtGetFirstNameInGroup(Pz, "Box"))
' Cancello layer etichette dei componenti interni (buchi)
Dim nHLId As Integer = EgtGetFirstNameInGroup(Pz, "HoleLabels")
While nHLId <> GDB_ID.NULL
EgtErase(nHLId)
nHLId = EgtGetFirstNameInGroup(Pz, "HoleLabels")
End While
' Attivo visualizzazione misura
Dim nRegLayId As Integer = EgtGetFirstNameInGroup(Pz, NAME_REGION)
Dim nId As Integer = EgtGetFirstInGroup(nRegLayId)
While nId <> GDB_ID.NULL
If EgtGetType(nId) = GDB_TY.EXT_TEXT Then
EgtSetStatus(nId, GDB_ST.ON_)
End If
nId = EgtGetNext(nId)
End While
' Calcolo dimensione ingombro Pezzo tramite OutLoop
Dim nOutLoopLayer = EgtGetFirstNameInGroup(Pz, NAME_OUTLOOP)
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nOutLoopLayer, GDB_BB.STANDARD, b3Part)
' Muovo la regione in Z per evitare problemi in visualizzazione
EgtMove(nRegLayId, New Vector3d(0, 0, DELTAZ_REG), GDB_RT.GLOB)
' Se pezzo con dati TRF
If m_bTrfData Then
' Nome da dati Trf
Dim nTextId = EgtGetFirstInGroup(nRegLayId)
While nTextId <> GDB_ID.NULL
If EgtGetType(nTextId) = GDB_TY.EXT_TEXT Then
Dim sText As String = CompoWindowMap.refCompoManagerVM.sTrfOrderCode & "-" & CompoWindowMap.refCompoManagerVM.sTrfOrderDesc
Dim sText2 As String = CompoWindowMap.refCompoManagerVM.sTrfMatCode & "-" & CompoWindowMap.refCompoManagerVM.sTrfSurfCode
Dim sText3 As String = LenToString(b3Part.DimX(), 0) & " x " & LenToString(b3Part.DimY(), 0) & " x " & LenToString(CompoWindowMap.refCompoManagerVM.dTrfThickness, 0)
Dim dRatio As Double = Math.Max(b3Part.DimX(), b3Part.DimY()) / Math.Min(b3Part.DimX(), b3Part.DimY())
If dRatio < 5 Then
sText = sText & "<br/>" & sText2 & "<br/>" & sText3
Else
sText = sText & " " & sText2 & " " & sText3
End If
EgtModifyText(nTextId, sText)
Dim ptCen As Point3d
EgtCenterPoint(nTextId, ptCen)
Dim b3Text As New BBox3d
EgtGetBBoxGlob(nTextId, GDB_BB.STANDARD, b3Text)
Dim dCoeff As Double = Math.Min(b3Part.DimX() / b3Text.DimX(), b3Part.DimY() / b3Text.DimY()) / 1.25
If dCoeff < 1 Then EgtScale(nTextId, New Frame3d(ptCen), dCoeff, dCoeff, dCoeff)
Exit While
End If
nTextId = EgtGetNext(nTextId)
End While
' Info di pezzo da dati Trf
EgtSetInfo(Pz, "OC", CompoWindowMap.refCompoManagerVM.sTrfOrderCode)
EgtSetInfo(Pz, "OD", CompoWindowMap.refCompoManagerVM.sTrfOrderDesc)
EgtSetInfo(Pz, "PC", CompoWindowMap.refCompoManagerVM.sTrfPartCode)
EgtSetInfo(Pz, "MT", CompoWindowMap.refCompoManagerVM.sTrfMatCode)
EgtSetInfo(Pz, "SRF", CompoWindowMap.refCompoManagerVM.sTrfSurfCode)
EgtSetInfo(Pz, "L", DoubleToString(b3Part.DimX(), 1))
EgtSetInfo(Pz, "W", DoubleToString(b3Part.DimY(), 1))
EgtSetInfo(Pz, "T", CompoWindowMap.refCompoManagerVM.dTrfThickness)
EgtSetInfo(Pz, "V1", DoubleToString(b3Part.DimX(), 1))
EgtSetInfo(Pz, "V2", DoubleToString(b3Part.DimY(), 1))
' Se altrimenti pezzo con dati Csv
ElseIf m_bCsvData Then
' Nome del pezzo
EgtSetName(Pz, CompoWindowMap.refCompoManagerVM.sCsvName)
' Dati Csv
EgtSetInfo(Pz, INFO_CSV_PART, CompoWindowMap.refCompoManagerVM.sCsvName)
EgtSetInfo(Pz, INFO_CSV_ORD, CompoWindowMap.refCompoManagerVM.sCsvOrder)
EgtSetInfo(Pz, INFO_CSV_DIST, CompoWindowMap.refCompoManagerVM.sCsvList)
EgtSetInfo(Pz, INFO_CSV_MAT, CurrentMachine.CurrMat.sName)
EgtSetInfo(Pz, INFO_CSV_V1, DoubleToString(b3Part.DimX(), 1))
EgtSetInfo(Pz, INFO_CSV_V2, DoubleToString(b3Part.DimY(), 1))
' Se definito nome lo inserisco nel testo
If Not String.IsNullOrWhiteSpace(CompoWindowMap.refCompoManagerVM.sCsvName) Then
Dim nTextId = EgtGetFirstInGroup(nRegLayId)
While nTextId <> GDB_ID.NULL
If EgtGetType(nTextId) = GDB_TY.EXT_TEXT Then
Dim sText As String = String.Empty
EgtTextGetContent(nTextId, sText)
Dim sNewText = CompoWindowMap.refCompoManagerVM.sCsvName & "<br/>" & sText
EgtModifyText(nTextId, sNewText)
Exit While
End If
nTextId = EgtGetNext(nTextId)
End While
End If
' Altrimenti pezzo con dati normali
Else
' Se definito nome lo inserisco nel testo
If Not String.IsNullOrWhiteSpace(sName) Then
Dim nTextId = EgtGetFirstInGroup(nRegLayId)
While nTextId <> GDB_ID.NULL
If EgtGetType(nTextId) = GDB_TY.EXT_TEXT Then
Dim sText As String = String.Empty
EgtTextGetContent(nTextId, sText)
Dim sNewText = sName & "<br/>" & sText
EgtModifyText(nTextId, sNewText)
Exit While
End If
nTextId = EgtGetNext(nTextId)
End While
End If
End If
' Eventuale testo per indicare il sopra (solo nel caso di rettangolo)
If CompoWindowMap.refCompoManagerVM.Top_Visibility = Visibility.Visible And
CompoWindowMap.refCompoManagerVM.TopIsChecked Then
AddTopToPartRegion(nRegLayId)
End If
' Scrivo testi per nesting
SideEntityControlVM.WriteSideAngleForNest(CompoWindowMap.refCompoSceneHostV.CompoScene.GetCtx())
' Imposto colore testi
EstCalc.SetTextColor(nRegLayId)
' Imposto il colore del pezzo inserito nel progetto
EgtSetColor(nRegLayId, InsertColor)
Dim EntId As Integer = EgtGetFirstInGroup(nRegLayId)
While EntId <> GDB_ID.NULL
If EgtGetType(EntId) = GDB_TY.SRF_FRGN Then EgtSetColor(EntId, InsertColor)
EntId = EgtGetNext(EntId)
End While
' Esporto il pezzo in un file temporaneo
Dim sTmpFile As String = OmagOFFICEMap.refMainWindowVM.MainWindowM.sTempDir & "\FlatPartCompo.Nge"
If Not EgtSaveObjToFile(Pz, sTmpFile, NGE.BIN) Then
Return False
End If
' Passo al contesto principale
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' Recupero flag per inserimento diretto in grezzo (altrimenti in parcheggio)
Dim bDirect As Boolean = (GetMainPrivateProfileInt(S_NEST, K_DIRECT, 0) <> 0)
' Elimino eventuali precedenti pezzi vuoti
EgtEraseEmptyParts()
' Area dei nuovi pezzi
Dim dNewArea As Double = 0
If nNbr > 1 Then
sGUICode = System.Guid.NewGuid.ToString
End If
' Se esiste il file del pezzo
If My.Computer.FileSystem.FileExists(sTmpFile) Then
' eseguo inserimento
For i As Integer = 1 To nNbr
' Inserisco il pezzo
EgtInsertFile(sTmpFile)
' Ne recupero l'Id
Dim nId2 As Integer = EgtGetLastPart()
' Aggiusto per lavorazioni
EgtAdjustFlatPart(nId2)
' Se dati Trf assegno nome univoco
If m_bTrfData Then EgtSetInfo(nId2, "CsvPart", CompoWindowMap.refCompoManagerVM.sTrfOrderCode & "-" & nId2.ToString())
' Aggiorno l'area dei nuovi pezzi
dNewArea += GeomCalc.GetPartArea(nId2)
' assegno l'identificatico del pezzo, se esiste
If Not String.IsNullOrEmpty(sGUICode) Then
Dim sPreGuid As String = EstCalc.CreatePreGuidCode(nId2)
EgtSetInfo(nId2, INFO_REFGROUP, sPreGuid & sGUICode)
End If
' muovo il pezzo nella prima posizione di parcheggio libera
EstCalc.StoreOnePart(nId2, True)
' Aggiungo riferimento e lo inserisco in VeinMatching
VeinMatching.SetRefOnPart(nId2)
VeinMatching.AddPart(nId2, True)
' Se richiesto posizionamento diretto, lo eseguo
If bDirect Then
If EstCalc.InsertOnePart(nId2, CurrentMachine.bAligned, CurrentMachine.bReducedCut) Then
' Eventuale notifica al VeinMatching
VeinMatching.OnInsertPartInRaw(nId2)
End If
End If
'' ------------------------ AGGIUNGO PEZZO NEL VEINMATCH ----------------------------------
'' verifico che il pezzo sia un Piano Cucina o un Piano Bagno o un'Aletta
'Dim sCMP As String = String.Empty
'EgtGetInfo(nId2, "CMP", sCMP)
'If sCMP.StartsWith("PCucina") Or sCMP.StartsWith("PBagno") Or sCMP.StartsWith("AlzFront") Then
' ' Aggiungo riferimento e lo inserisco in VeinMatching
' VeinMatching.SetRefOnPart(nId2)
' VeinMatching.AddPart(nId2, True)
' ' Se richiesto posizionamento diretto, lo eseguo
' If bDirect Then
' If EstCalc.InsertOnePart(nId2, CurrentMachine.bAligned, CurrentMachine.bReducedCut) Then
' ' Eventuale notifica al VeinMatching
' VeinMatching.OnInsertPartInRaw(nId2)
' End If
' End If
'End If
'' ------------------------ AGGIUNGO PEZZO NEL VEINMATCH ----------------------------------
Next
' Cancello il file
My.Computer.FileSystem.DeleteFile(sTmpFile)
End If
' passo al pezzo successivo
Pz = NxtPz
End While
' Aggiorno ambiente principale
EgtZoom(ZM.ALL)
Return True
End Function
Friend Sub Close(bDialogResult As Boolean)
RaiseEvent m_CloseWindow(bDialogResult)
End Sub
+12
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_USERLEVEL As String = "UserLevel"
Public Const K_MAXINST As String = "MaxInstances"
Public Const K_INSTANCES As String = "Instances"
@@ -86,6 +87,8 @@ Module ConstIni
Public Const K_SIDEMODE As String = "SideMode"
Public Const K_TRFDATA As String = "TrfData"
Public Const K_CSVDATA As String = "CsvData"
Public Const K_LASTCOLOR As String = "LastColor"
Public Const K_COLOR As String = "Color"
Public Const S_FLATPARTS As String = "FlatParts"
Public Const K_FLPCURRDIR As String = "CurrDir"
@@ -101,6 +104,8 @@ Module ConstIni
Public Const K_ENGRAVENUMBER2 As String = "EngraveNumber2"
Public Const K_ENGRAVEDEPTH As String = "EngraveDepth"
Public Const K_ENGRAVESHORT As String = "EngraveShort"
Public Const K_ENGRAVEANGLE As String = "EngraveAngle"
Public Const K_ENGRAVEDEPTH2 As String = "EngraveDepth2"
Public Const K_DRIPOFFSET As String = "DripOffset"
Public Const K_DRIPOFFSET2 As String = "DripOffset2"
Public Const K_DRIPDEPTH As String = "DripDepth"
@@ -108,6 +113,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_FILOTOPROUNDOFF As String = "FiloTopRoundOff"
Public Const S_NEST As String = "Nest"
Public Const K_DIRECT As String = "Direct"
@@ -119,6 +125,11 @@ Module ConstIni
Public Const K_TEXTCOLOR As String = "TextColor"
Public Const K_AUTOMATICOPTIMIZE As String = "AutomaticOptimize"
Public Const K_AUTOMATICMAXTIME As String = "AutomaticMaxTime"
Public Const K_DRAGRECTANGLE 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"
Public Const S_CSV As String = "Csv"
Public Const K_CSVDIRECT As String = "Direct"
@@ -127,6 +138,7 @@ Module ConstIni
Public Const K_CSVCURRDIR As String = "CurrDir"
Public Const K_CSVLASTFILE As String = "LastFile"
Public Const K_THICKTOLERANCE As String = "ThickTolerance"
Public Const K_FULL As String = "Full"
Public Const S_COLORTOSIDEANG As String = "ColorToSideAng"
Public Const K_CTSA_ENABLE As String = "Enable"
Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

+88 -76
View File
@@ -10,103 +10,115 @@
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStartupLocation="CenterOwner"
MinWidth="270" MinHeight="250"
MaxWidth="500"
ResizeMode="NoResize">
<DockPanel Margin="5,5,5,0">
<DockPanel Margin="5,5,5,0" Background="{StaticResource Omag_DarkGray}">
<TextBlock Text="{Binding CsvPath}"
DockPanel.Dock="Top"
Margin="0,0,0,5"/>
<UniformGrid Columns="2"
DockPanel.Dock="Bottom"
<UniformGrid Columns="15"
DockPanel.Dock="Top"
Margin="0,0,0,5">
<Button Content="{Binding InsertMsg}"
<Button Command="{Binding NewCommand}"
Margin="0,0,2.5,0"
Style = "{DynamicResource CSV_Button}">
<Image Source="/Resources/TopCommandBar/Reset.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding OpenCommand}"
Margin="2.5,0,2.5,0"
Style = "{DynamicResource CSV_Button}">
<Image Source="/Resources/TopCommandBar/Import.png" Stretch="Uniform"/>
</Button>
<ToggleButton IsChecked="{Binding Plus_IsChecked}"
Style="{DynamicResource CSV_ToggleButton}"
Margin="2.5,0,2.5,0">
<Image Source="/Resources/CsvWindow/CsvPlus - Color.png"/>
</ToggleButton>
<ToggleButton IsChecked="{Binding Minus_IsChecked}"
Style="{DynamicResource CSV_ToggleButton}"
Margin="2.5,0,0,0">
<Image Source="/Resources/CsvWindow/CsvMinus - Color.png"/>
</ToggleButton>
<Button ToolTip="{Binding InsertMsg}"
Command="{Binding InsertCommand}"
Margin="0,0,2.5,0"
Style="{StaticResource CompoWindow_Button}"/>
<Button Content="{Binding RemoveMsg}"
Style = "{DynamicResource CSV_Button}">
<Image Source="/Resources/CsvWindow/Inserisci-pezzo CSV.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding RemoveMsg}"
Command="{Binding RemoveCommand}"
Margin="2.5,0,0,0"
Style="{StaticResource CompoWindow_Button}"/>
</UniformGrid>
Style = "{DynamicResource CSV_Button}">
<Image Source="/Resources/CsvWindow/Parcheggia-pezzo CSV.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
<UniformGrid Columns="4"
DockPanel.Dock="Bottom"
Margin="0,0,0,5">
<Button Command="{Binding NewCommand}"
Margin="0,0,2.5,0">
<Image Source="/Resources/CsvWindow/CsvNew.png"/>
</Button>
<Button Command="{Binding OpenCommand}"
Margin="2.5,0,2.5,0">
<Image Source="/Resources/CsvWindow/CsvOpen.png"/>
</Button>
<ToggleButton IsChecked="{Binding Plus_IsChecked}"
Margin="2.5,0,2.5,0">
<Image Source="/Resources/CsvWindow/CsvPlus.png"/>
</ToggleButton>
<ToggleButton IsChecked="{Binding Minus_IsChecked}"
Margin="2.5,0,0,0">
<Image Source="/Resources/CsvWindow/CsvMinus.png"/>
</ToggleButton>
</UniformGrid>
<TreeView ItemsSource="{Binding CsvTypeList}"
<TextBlock Text="{Binding CsvPath}"
DockPanel.Dock="Top"
Foreground="{StaticResource Omag_White}"
Margin="0,0,0,5"/>
<TreeView ItemsSource="{Binding CsvTypeList}"
Background="Transparent"
BorderThickness="0"
Margin="0,0,0,5" >
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<EventSetter Event="MouseUp" Handler="PartTypeClick"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<EventSetter Event="MouseUp" Handler="PartTypeClick"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type OmagOFFICE:CsvPartType}"
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type OmagOFFICE:CsvPartType}"
ItemsSource="{Binding CsvPartList}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0,8,6,4" />
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="10" />
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0,8,6,4" />
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="10" Foreground="{StaticResource Omag_White}"/>
</Grid>
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseUp" Handler="PartItemClick"/>
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource Omag_Gray}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</Grid>
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseUp" Handler="PartItemClick"/>
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="true">
<Setter Property="Foreground" Value="{StaticResource Omag_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource Omag_Gray}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type OmagOFFICE:CsvPartItem}">
<Grid Width="246" Margin="0,5,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<DataTemplate DataType="{x:Type OmagOFFICE:CsvPartItem}">
<Grid Width="246" Margin="0,5,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Name}" Height="18" FontSize="14" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="1" Text="{Binding sText1}" Height="18" FontSize="14" HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="{Binding sText2}" Height="18" FontSize="14" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="0" Text="{Binding Name}" Height="18" FontSize="14" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="1" Text="{Binding sText1}" Height="18" FontSize="14" HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="{Binding sText2}" Height="18" FontSize="14" HorizontalAlignment="Left"/>
</Grid>
</DataTemplate>
</TreeView.Resources>
</Grid>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</TreeView>
</DockPanel>
</DockPanel>
</EgtWPFLib5:EgtCustomWindow>
+51 -9
View File
@@ -1,4 +1,5 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
@@ -110,6 +111,8 @@ Public Class CsvWindowVM
#Region "METHODS"
Private Sub ShowTreeView()
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
' Path del file Csv
Dim TempPath As New Text.StringBuilder(260)
PathCompactPathEx(TempPath, CsvM.CsvPath, 56, 0)
@@ -118,6 +121,7 @@ Public Class CsvWindowVM
m_CsvTypeList.Clear()
Dim sCurrMat As String = String.Empty
Dim dCurrTh As Double = 0
Dim sCurrPath As String = String.Empty
Dim nCatToNest As Integer = 0
Dim nCatCount As Integer = 0
Dim PartCathegory As New CsvPartType("", 0)
@@ -128,15 +132,29 @@ Public Class CsvWindowVM
If i = 1 Then
sCurrMat = CurrPart.m_sMaterial
dCurrTh = CurrPart.m_dTh
sCurrPath = CurrPart.m_sPath
ElseIf String.Compare(sCurrMat, CurrPart.m_sMaterial, True) <> 0 Or
String.Compare(sCurrPath, CurrPart.m_sPath, True) <> 0 Or
Math.Abs(dCurrTh - CurrPart.m_dTh) > 10 * EPS_SMALL Then
PartCathegory.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If bFull Then
PartCathegory.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
PartCathegory.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
Else
PartCathegory.Name = nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
PartCathegory.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
End If
PartCathegory.IsExpanded = True
CsvTypeList.Add(PartCathegory)
sCurrMat = CurrPart.m_sMaterial
dCurrTh = CurrPart.m_dTh
sCurrPath = CurrPart.m_sPath
PartCathegory = New CsvPartType("", 0)
nCatToNest = 0
nCatCount = 0
@@ -150,18 +168,31 @@ Public Class CsvWindowVM
PartCathegory.CsvPartList.Add(New CsvPartItem(CurrPart.m_sName, i, sCount, sDim, CurrPart.m_bActive))
Next
' Inserisco ultima categoria
PartCathegory.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If bFull Then
PartCathegory.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
PartCathegory.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
Else
PartCathegory.Name = nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
PartCathegory.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
End If
PartCathegory.IsExpanded = True
CsvTypeList.Add(PartCathegory)
NotifyPropertyChanged("CsvTypeList")
End Sub
Private Sub UpdateTreeView()
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
For Each CatItem As CsvPartType In m_CsvTypeList
Dim sCurrMat As String = String.Empty
Dim dCurrTh As Double = 0
Dim sCurrPath As String = String.Empty
Dim nCatToNest As Integer = 0
Dim nCatCount As Integer = 0
For Each PrtItem As CsvPartItem In CatItem.CsvPartList
@@ -171,12 +202,23 @@ Public Class CsvWindowVM
PrtItem.sText1 = sCount
sCurrMat = PartData.m_sMaterial
dCurrTh = PartData.m_dTh
sCurrPath = PartData.m_sPath
nCatToNest += PartData.m_nToNest
nCatCount += PartData.m_nCount + PartData.m_nAdd
Next
CatItem.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If bFull Then
CatItem.Name = If(String.IsNullOrWhiteSpace(sCurrMat), "***", sCurrMat) &
" - " & LenToString(dCurrTh, 2) &
" - " & nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
CatItem.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
Else
CatItem.Name = nCatToNest.ToString() & "/" & nCatCount.ToString()
If Not String.IsNullOrWhiteSpace(sCurrPath) Then
CatItem.Name &= vbCrLf & Path.GetFileNameWithoutExtension(sCurrPath)
End If
End If
Next
End Sub
+33 -6
View File
@@ -6,17 +6,21 @@
IsResizable="False"
IsMinimizable="False"
IsClosable="False"
ShowInTaskbar="False"
ShowInTaskbar="False"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStartupLocation="CenterOwner"
WindowStartupLocation="CenterOwner"
Width="270" ResizeMode="NoResize" SizeToContent="Height">
<StackPanel Margin="5,5,5,0">
<!--TAGLIO-->
<TextBlock Text="{Binding CurrSawingMsg}"
Visibility="{Binding CurrSawing_Visibility}"
Style="{StaticResource RawTextBlock}"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding CurrSawingList}"
SelectedItem="{Binding SelCurrSawing}"
Visibility="{Binding CurrSawing_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="0,0,0,5"/>
<!--<TextBlock Text="{Binding AuxMachTypeMsg}"
@@ -31,35 +35,58 @@
<!--FORATURA-->
<TextBlock Text="{Binding CurrDrillingMsg}"
Visibility="{Binding CurrDrilling_Visibility}"
Style="{StaticResource RawTextBlock}"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding CurrDrillingList}"
SelectedItem="{Binding SelCurrDrilling}"
Visibility="{Binding CurrDrilling_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="0,0,0,5"/>
<!--FRESATURA-->
<TextBlock Text="{Binding CurrMillingMsg}"
Visibility="{Binding CurrMilling_Visibility}"
Style="{StaticResource RawTextBlock}"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding CurrMillingList}"
SelectedItem="{Binding SelCurrMilling}"
Visibility="{Binding CurrMilling_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="0,0,0,5"/>
<!--SVUOTATURA-->
<TextBlock Text="{Binding CurrPocketingMsg}"
Visibility="{Binding CurrPocketing_Visibility}"
Style="{StaticResource RawTextBlock}"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding CurrPocketingList}"
SelectedItem="{Binding SelCurrPocketing}"
Visibility="{Binding CurrPocketing_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="0,0,0,5"/>
<!--WATERJET-->
<TextBlock Text="{Binding CurrWaterjettingMsg}"
Visibility="{Binding CurrWaterjetting_Visibility}"
Style="{StaticResource RawTextBlock}"
Margin="0,0,0,5"/>
<ComboBox ItemsSource="{Binding CurrWaterjettingList}"
SelectedItem="{Binding SelCurrWaterjetting}"
Visibility="{Binding CurrWaterjetting_Visibility}"
Margin="0,0,0,5"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ComboBox ItemsSource="{Binding CurrWaterjettingList}"
SelectedItem="{Binding SelCurrWaterjetting}"
Visibility="{Binding CurrWaterjetting_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="0,0,5,5"/>
<!--Quality-->
<ComboBox ItemsSource="{Binding CurrWaterjettingQualityList}"
SelectedItem="{Binding SelCurrWaterjettingQuality}"
Visibility="{Binding CurrWaterjetting_Visibility}"
Style="{DynamicResource Raw_ComboBox}"
Margin="5,0,0,5"
Grid.Column="1">
</ComboBox>
</Grid>
<UniformGrid Columns="2"
Margin="0,0,0,5">
+6
View File
@@ -9,6 +9,12 @@
Me.DataContext = CurrMachWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_CurrMachWindowVM = CurrMachWindowVM
End Sub
Private Sub Me_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
Me.Top = Owner.Top + Owner.Height / 2 - Me.ActualHeight / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.ActualWidth / 2
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
+238 -28
View File
@@ -29,9 +29,27 @@ Public Class CurrMachWindowVM
m_SelCurrSawing = value
End If
CurrentMachine.sCurrSawing = m_SelCurrSawing
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRSAWING_OFFICE, m_SelCurrSawing, sMachIniFile)
End Set
End Property
Public Sub SetCurrSawing(sCurrOfficeSawing As String)
m_SelCurrSawing = sCurrOfficeSawing
CurrentMachine.sCurrSawing = m_SelCurrSawing
NotifyPropertyChanged("SelCurrSawing")
End Sub
Public ReadOnly Property CurrSawing_Visibility As Visibility
Get
If EgtGetHeadId("H1") = GDB_ID.NULL Then
Return Visibility.Collapsed
Else
Return Visibility.Visible
End If
End Get
End Property
#End Region ' Saw
#Region " AUX MACHINING "
@@ -139,10 +157,18 @@ Public Class CurrMachWindowVM
If value <> m_SelCurrDrilling Then
m_SelCurrDrilling = value
CurrentMachine.sCurrDrilling = m_SelCurrDrilling
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRDRILLING_OFFICE, m_SelCurrDrilling, sMachIniFile)
End If
End Set
End Property
Public Sub SetCurrDrilling(sCurrOfficeDrilling As String)
m_SelCurrDrilling = sCurrOfficeDrilling
CurrentMachine.sCurrDrilling = m_SelCurrDrilling
NotifyPropertyChanged("SelCurrDrilling")
End Sub
Private m_CurrDrilling_Visibility As Visibility
Public Property CurrDrilling_Visibility As Visibility
Get
@@ -177,10 +203,18 @@ Public Class CurrMachWindowVM
If value <> m_SelCurrMilling Then
m_SelCurrMilling = value
CurrentMachine.sCurrMilling = m_SelCurrMilling
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRMILLING_OFFICE, m_SelCurrMilling, sMachIniFile)
End If
End Set
End Property
Public Sub SetCurrMilling(sCurrOfficeMilling As String)
m_SelCurrMilling = sCurrOfficeMilling
CurrentMachine.sCurrMilling = m_SelCurrMilling
NotifyPropertyChanged("SelCurrMilling")
End Sub
Private m_CurrMilling_Visibility As Visibility
Public Property CurrMilling_Visibility As Visibility
Get
@@ -215,10 +249,18 @@ Public Class CurrMachWindowVM
If value <> m_SelCurrPocketing Then
m_SelCurrPocketing = value
CurrentMachine.sCurrPocketing = m_SelCurrPocketing
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRPOCKETING_OFFICE, m_SelCurrPocketing, sMachIniFile)
End If
End Set
End Property
Public Sub SetCurrPocketing(sCurrOfficePocketing As String)
m_SelCurrPocketing = sCurrOfficePocketing
CurrentMachine.sCurrPocketing = m_SelCurrPocketing
NotifyPropertyChanged("SelCurrPocketing")
End Sub
Private m_CurrPocketing_Visibility As Visibility
Public Property CurrPocketing_Visibility As Visibility
Get
@@ -253,18 +295,68 @@ Public Class CurrMachWindowVM
If value <> m_SelCurrWaterjetting Then
m_SelCurrWaterjetting = value
CurrentMachine.sCurrWaterJetting = m_SelCurrWaterjetting
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING_OFFICE, m_SelCurrWaterjetting, sMachIniFile)
End If
End Set
End Property
Private m_CurrWaterjetting_Visibility As Visibility
Public Sub SetCurrWaterjetting(sCurrOfficeWaterjetting As String)
m_SelCurrWaterjetting = sCurrOfficeWaterjetting
CurrentMachine.sCurrWaterJetting = m_SelCurrWaterjetting
NotifyPropertyChanged("SelCurrWaterjetting")
End Sub
Private m_CurrWaterjettingQualityList As New List(Of String)
Public Property CurrWaterjettingQualityList As List(Of String)
Get
Return m_CurrWaterjettingQualityList
End Get
Set(value As List(Of String))
m_CurrWaterjettingQualityList = value
End Set
End Property
Private m_SelCurrWaterjettingQuality As String
Public Property SelCurrWaterjettingQuality As String
Get
Return m_SelCurrWaterjettingQuality
End Get
Set(value As String)
If value <> m_SelCurrWaterjettingQuality Then
m_SelCurrWaterjettingQuality = value
CurrentMachine.sCurrWaterJettingQuality = m_SelCurrWaterjettingQuality
' salvo la lvorazione corrente
WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY_OFFICE, m_SelCurrWaterjettingQuality, sMachIniFile)
End If
End Set
End Property
Public Sub SetCurrWaterjettingQuality(sCurrOfficeWaterjettingQuality As String)
m_SelCurrWaterjettingQuality = sCurrOfficeWaterjettingQuality
CurrentMachine.sCurrWaterJettingQuality = m_SelCurrWaterjettingQuality
NotifyPropertyChanged("SelCurrWaterjetting")
End Sub
Private m_CurrWaterjetting_Visibility As Visibility = Visibility.Collapsed
Public Property CurrWaterjetting_Visibility As Visibility
Get
Return m_CurrWaterjetting_Visibility
End Get
Set(value As Visibility)
m_CurrWaterjetting_Visibility = value
NotifyPropertyChanged("CurrWaterjetting_Visibility")
NotifyPropertyChanged(NameOf(CurrWaterjetting_Visibility))
End Set
End Property
Private m_CurrWaterjettingQuality_Visibility As Visibility
Public Property CurrWaterjettingQuality_Visibility As Visibility
Get
Return m_CurrWaterjettingQuality_Visibility
End Get
Set(value As Visibility)
m_CurrWaterjettingQuality_Visibility = value
NotifyPropertyChanged(NameOf(CurrWaterjettingQuality_Visibility))
End Set
End Property
@@ -313,6 +405,13 @@ Public Class CurrMachWindowVM
Return EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 10)
End Get
End Property
Public ReadOnly Property CurrWaterjettingQualityMsg As String
Get
Return "Quality"
End Get
End Property
Public ReadOnly Property OkMsg As String
Get
Return "Ok"
@@ -381,6 +480,7 @@ Public Class CurrMachWindowVM
If m_CurrWaterjettingList.Count = 0 Then
CurrentMachine.sCurrWaterJetting = String.Empty
End If
m_CurrWaterjettingQualityList = New List(Of String)(CurrentMachine.Qualities)
ElseIf CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER Or
CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then
@@ -411,6 +511,7 @@ Public Class CurrMachWindowVM
If m_CurrWaterjettingList.Count = 0 Then
CurrentMachine.sCurrWaterJetting = String.Empty
End If
m_CurrWaterjettingQualityList = New List(Of String)(CurrentMachine.Qualities)
End If
' Nascondo la selezione dell'utensile ausiliario -- DA ELIMINARE? --
@@ -419,11 +520,13 @@ Public Class CurrMachWindowVM
If m_CurrSawingList.Count > 0 Then
If CurrentMachine.sCurrSawing <> String.Empty Then
SelCurrSawing = CurrentMachine.sCurrSawing
SetCurrSawing(CurrentMachine.sCurrSawing)
Else
Dim sCurrSawing As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, sCurrSawing, sMachIniFile)
SelCurrSawing = sCurrSawing
' GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, sCurrSawing, sMachIniFile)
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING_OFFICE, Nothing, sCurrSawing, sMachIniFile)
'SelCurrSawing = sCurrSawing
SetCurrSawing(sCurrSawing)
End If
Else
CurrentMachine.sCurrSawing = String.Empty
@@ -433,7 +536,11 @@ Public Class CurrMachWindowVM
If CurrentMachine.bDrilling And m_CurrDrillingList.Count > 1 Then
CurrDrilling_Visibility = Visibility.Visible
If CurrentMachine.sCurrDrilling <> String.Empty Then
SelCurrDrilling = CurrentMachine.sCurrDrilling
SetCurrDrilling(CurrentMachine.sCurrDrilling)
Else
Dim sCurrMachining As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILLING_OFFICE, Nothing, sCurrMachining, sMachIniFile)
SetCurrDrilling(sCurrMachining)
End If
Else
CurrDrilling_Visibility = Visibility.Collapsed
@@ -442,7 +549,11 @@ Public Class CurrMachWindowVM
If CurrentMachine.bMilling And m_CurrMillingList.Count > 1 Then
CurrMilling_Visibility = Visibility.Visible
If CurrentMachine.sCurrMilling <> String.Empty Then
SelCurrMilling = CurrentMachine.sCurrMilling
SetCurrMilling(CurrentMachine.sCurrMilling)
Else
Dim sCurrMachining As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRMILLING_OFFICE, Nothing, sCurrMachining, sMachIniFile)
SetCurrMilling(sCurrMachining)
End If
Else
CurrMilling_Visibility = Visibility.Collapsed
@@ -451,7 +562,11 @@ Public Class CurrMachWindowVM
If CurrentMachine.bPocketing And CurrPocketingList.Count > 1 Then
CurrPocketing_Visibility = Visibility.Visible
If CurrentMachine.sCurrPocketing <> String.Empty Then
SelCurrPocketing = CurrentMachine.sCurrPocketing
SetCurrPocketing(CurrentMachine.sCurrPocketing)
Else
Dim sCurrMachining As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRPOCKETING_OFFICE, Nothing, sCurrMachining, sMachIniFile)
SetCurrPocketing(sCurrMachining)
End If
Else
CurrPocketing_Visibility = Visibility.Collapsed
@@ -459,11 +574,28 @@ Public Class CurrMachWindowVM
If CurrentMachine.bWaterJetting And CurrWaterjettingList.Count > 1 Then
CurrWaterjetting_Visibility = Visibility.Visible
If CurrentMachine.sCurrWaterJetting <> String.Empty Then
SelCurrWaterjetting = CurrentMachine.sCurrWaterJetting
' se DB WaterJet abilitato avrò anche la CmBx della Quality solo la CmBx del Waterjetting corrente
If CurrentMachine.bFromDBWaterJet Then
If CurrentMachine.sCurrWaterJetting <> String.Empty Then
SetCurrWaterjetting(CurrentMachine.sCurrWaterJetting)
Else
Dim sCurrMachining As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING_OFFICE, Nothing, sCurrMachining, sMachIniFile)
SetCurrWaterjetting(sCurrMachining)
End If
If CurrentMachine.sCurrWaterJettingQuality <> String.Empty Then
SetCurrWaterjettingQuality(CurrentMachine.sCurrWaterJettingQuality)
Else
Dim sCurrMachining As String = ""
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY_OFFICE, Nothing, sCurrMachining, sMachIniFile)
SetCurrWaterjettingQuality(sCurrMachining)
End If
CurrWaterjettingQuality_Visibility = Visibility.Visible
Else
CurrWaterjettingQuality_Visibility = Visibility.Collapsed
End If
Else
CurrWaterjetting_Visibility = Visibility.Collapsed
CurrWaterjettingQuality_Visibility = Visibility.Collapsed
End If
' Con le nuove modifiche questa selezione dovrebbe scompaire definitivamente -- DA ELIMINARE? --
@@ -595,26 +727,57 @@ Public Class CurrMachWindowVM
EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
If SysNotes <> String.Empty Then
Dim MachiningMaterials() = SysNotes.Split(";".ToCharArray)
For Each Material In MachiningMaterials
Dim Param() As String = Material.Split(",".ToCharArray)
If Param.Count() < 2 Then Continue For
Dim CurrMatId As String = String.Empty
For Each Mat In CurrentMachine.Materials
If Mat.sName = EstCalc.GetMaterialName Then
CurrMatId = Mat.nId.ToString()
Exit For
If CurrentMachine.bWaterJet And CurrentMachine.bFromDBWaterJet Then
For Each Material As String In MachiningMaterials
Dim Param() As String = Material.Split(",".ToCharArray)
If Param.Count() < 2 Then Continue For
Dim CurrMatId As String = String.Empty
Dim CurrMatSubId As String = String.Empty
For Each Mat In CurrentMachine.Materials
If Mat.sName = EstCalc.GetMaterialName Then
CurrMatId = Mat.nId.ToString()
CurrMatSubId = Mat.SubId.ToString()
Exit For
End If
Next
Dim SubParam() As String = Param(0).Split(".".ToCharArray)
If Not IsNothing( CurrentMachine.CurrMat) AndAlso SubParam(0) = CurrentMachine.CurrMat.nId.ToString() AndAlso
SubParam.Count > 1 AndAlso SubParam(1) = CurrentMachine.CurrMat.SubId.ToString() Then
Dim MatMinH As Double = 0
StringToDouble(Param(1), MatMinH)
Dim MatMaxH As Double = 0
StringToDouble(Param(2), MatMaxH)
If EstCalc.GetRawHeight > MatMinH - EPS_SMALL And EstCalc.GetRawHeight < MatMaxH + EPS_SMALL Then
Return True
End If
End If
Next
If Param(0) = CurrMatId Then
Dim MatMinH As Double = 0
StringToDouble(Param(1), MatMinH)
Dim MatMaxH As Double = 0
StringToDouble(Param(2), MatMaxH)
If EstCalc.GetRawHeight > MatMinH - EPS_SMALL And EstCalc.GetRawHeight < MatMaxH + EPS_SMALL Then
Return True
Else
For Each Material In MachiningMaterials
Dim Param() As String = Material.Split(",".ToCharArray)
If Param.Count() < 2 Then Continue For
Dim CurrMatId As String = String.Empty
For Each Mat In CurrentMachine.Materials
If Mat.sName = EstCalc.GetMaterialName Then
CurrMatId = Mat.nId.ToString()
Exit For
End If
Next
If Param(0) = CurrMatId Then
Dim MatMinH As Double = 0
StringToDouble(Param(1), MatMinH)
Dim MatMaxH As Double = 0
StringToDouble(Param(2), MatMaxH)
If EstCalc.GetRawHeight > MatMinH - EPS_SMALL And EstCalc.GetRawHeight < MatMaxH + EPS_SMALL Then
Return True
End If
End If
End If
Next
Next
End If
Return False
Else
Return True
@@ -624,6 +787,53 @@ Public Class CurrMachWindowVM
End If
End Function
'Private Function VerifyMatThickCompatibility() As Boolean
' If Not IsNothing(m_CurrentMachine.CurrMat) Then
' Dim SysNotes As String = String.Empty
' EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
' If SysNotes <> String.Empty Then
' Dim MachiningMaterials() = SysNotes.Split(";".ToCharArray)
' SysNotes = String.Empty
' If m_CurrentMachine.bWaterJet Then
' For Each Material As Object In MachiningMaterials
' Dim Param() As String = Material.Split(",".ToCharArray)
' Dim SubParam() As String = Param(0).Split(".".ToCharArray)
' If SubParam(0) = m_CurrentMachine.CurrMat.nId.ToString() AndAlso SubParam.Count > 1 AndAlso SubParam(1) = m_CurrentMachine.CurrMat.SubId.ToString() Then
' Dim dRawHeight = GetRawHeight()
' Dim MatMinH As Double = 0
' StringToDouble(Param(1), MatMinH)
' Dim MatMaxH As Double = 0
' StringToDouble(Param(2), MatMaxH)
' If dRawHeight > MatMinH - EPS_SMALL And dRawHeight < MatMaxH + EPS_SMALL Then
' Return True
' End If
' End If
' Next
' Else
' For Each Material As Object In MachiningMaterials
' Dim Param() As String = Material.Split(",".ToCharArray)
' If Param(0) = m_CurrentMachine.CurrMat.nId.ToString() Then
' Dim dRawHeight = GetRawHeight()
' Dim MatMinH As Double = 0
' StringToDouble(Param(1), MatMinH)
' Dim MatMaxH As Double = 0
' StringToDouble(Param(2), MatMaxH)
' If dRawHeight > MatMinH - EPS_SMALL And dRawHeight < MatMaxH + EPS_SMALL Then
' Return True
' End If
' End If
' Next
' End If
' Return False
' Else
' Return False
' End If
' Else
' Return True
' End If
'End Function
#End Region ' METHODS
End Class
+90 -81
View File
@@ -8,12 +8,12 @@
ShowInTaskbar="False"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}" WindowStartupLocation="CenterOwner">
<DockPanel>
<DockPanel>
<DockPanel DockPanel.Dock="Left"
<DockPanel DockPanel.Dock="Left"
Width="200"
Margin="5,5,5,0">
<UniformGrid Columns="{Binding nButton}" Rows="1"
Margin="0,0,0,5"
DockPanel.Dock="Top">
@@ -40,145 +40,154 @@
</Button>
</UniformGrid>
<GroupBox Header="{Binding TypeMsg}"
<GroupBox Header="{Binding TypeMsg}"
DockPanel.Dock="Top"
IsEnabled="{Binding Type_IsEnabled}"
BorderThickness="{StaticResource BorderGpBx_Thickness}"
Foreground="{StaticResource Omag_White}"
Margin="0,0,0,5">
<UniformGrid Columns="2" Rows="2">
<Button Content="{Binding UseRegionMsg}"
<UniformGrid Columns="2" Rows="2">
<Button Content="{Binding UseRegionMsg}"
IsEnabled="{Binding UseRegionIsEnabled}"
Command="{Binding UseRegionCommand}"
Style="{StaticResource OptionPanel_TextButton}"/>
<Button Content="{Binding UseLayerMsg}"
<Button Content="{Binding UseLayerMsg}"
IsEnabled="{Binding UseLayerIsEnabled}"
Command="{Binding UseLayerCommand}"
Style="{StaticResource OptionPanel_TextButton}"/>
<Button Content="{Binding UseClosedCurveMsg}"
<Button Content="{Binding UseClosedCurveMsg}"
IsEnabled="{Binding UseClosedCurveIsEnabled}"
Command="{Binding UseClosedCurveCommand}"
Style="{StaticResource OptionPanel_TextButton}"/>
<Button Content="{Binding ResetMsg}"
<Button Content="{Binding ResetMsg}"
IsEnabled="{Binding ResetIsEnabled}"
Command="{Binding ResetCommand}"
Style="{StaticResource OptionPanel_TextButton}"/>
</UniformGrid>
</GroupBox>
</UniformGrid>
</GroupBox>
<GroupBox Header="{Binding MeasureUnitMsg}"
<GroupBox Header="{Binding MeasureUnitMsg}"
IsEnabled="{Binding Measure_IsEnabled}"
DockPanel.Dock="Top"
BorderThickness="{StaticResource BorderGpBx_Thickness}"
Foreground="{StaticResource Omag_White}"
Margin="0,0,0,5">
<UniformGrid Columns="2">
<RadioButton Content="{Binding MmMsg}"
<UniformGrid Columns="2">
<RadioButton Content="{Binding MmMsg}"
IsChecked="{Binding MmIsChecked}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
<RadioButton Content="{Binding InchMsg}"
<RadioButton Content="{Binding InchMsg}"
IsChecked="{Binding InchIsChecked, Mode=OneWay}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
</UniformGrid>
</GroupBox>
</UniformGrid>
</GroupBox>
<UniformGrid Columns="4"
<UniformGrid Columns="4"
DockPanel.Dock="Top"
IsEnabled="{Binding SideEntity_IsEnabled}"
Margin="0,0,0,5">
<!--Inclina lati-->
<ToggleButton Content="{Binding SideAngleMsg}"
Margin="0,0,0,5">
<!--Inclina lati-->
<ToggleButton Content="{Binding SideAngleMsg}"
IsChecked="{Binding SideAngle_IsChecked}"
Style="{StaticResource CompoWindow_WrapToggleButton}"/>
<!--Filo Top-->
<ToggleButton Content="{Binding FiloTopMsg}"
<!--Filo Top-->
<ToggleButton Content="{Binding FiloTopMsg}"
IsChecked="{Binding FiloTop_IsChecked}"
Style="{StaticResource CompoWindow_WrapToggleButton}"/>
<!--Incidi da sotto-->
<ToggleButton Content="{Binding DripMsg}"
<ToggleButton Content="{Binding DripMsg}"
IsChecked="{Binding Drip_IsChecked}"
Style="{StaticResource CompoWindow_WrapToggleButton}"
IsEnabled="{Binding Drip_IsEnabled}"/>
<!--Fora da sotto-->
<ToggleButton Content="{Binding UnderDrillMsg}"
<!--Fora da sotto-->
<ToggleButton Content="{Binding UnderDrillMsg}"
IsChecked="{Binding UnderDrill_IsChecked}"
Style="{StaticResource CompoWindow_WrapToggleButton}"
IsEnabled="{Binding Drip_IsEnabled}"/>
</UniformGrid>
</UniformGrid>
<UniformGrid DockPanel.Dock="Bottom"
<UniformGrid DockPanel.Dock="Bottom"
Columns="2"
Margin="0,0,0,5">
<Button x:Name="OkBtn"
<Button x:Name="OkBtn"
Content="{Binding OkMsg}"
IsEnabled="{Binding OkIsEnabled}"
Style="{StaticResource OptionPanel_TextButton}"/>
<Button x:Name="CancelBtn"
<Button x:Name="CancelBtn"
Content="{Binding CancelMsg}"
Style="{StaticResource OptionPanel_TextButton}"/>
</UniformGrid>
</UniformGrid>
<Grid DockPanel.Dock="Bottom"
Visibility="{Binding PartData_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<GroupBox Header="Dati pezzo"
BorderThickness="{StaticResource BorderGpBx_Thickness}"
Foreground="{StaticResource Omag_White}"
Margin="0">
<TextBlock Text="{Binding PartNumMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartNum}"
<StackPanel>
<Grid Visibility="{Binding PartData_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding PartNumMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding PartNum}"
Grid.Column="1"/>
</Grid>
</Grid>
<Grid DockPanel.Dock="Bottom"
Visibility="{Binding PartData_Visibility}"
Margin="0,0,0,10">
<TextBlock Text="{Binding TopMsg}"/>
<CheckBox IsChecked="{Binding TopIsChecked}"
HorizontalAlignment="Right" Margin="6,0,6,0"/>
</Grid>
<Grid Visibility="{Binding PartData_Visibility}"
Margin="0,0,0,10">
<TextBlock Text="{Binding TopMsg}"/>
<CheckBox IsChecked="{Binding TopIsChecked}"
HorizontalAlignment="Right" Margin="6,0,6,0"/>
</Grid>
<Grid DockPanel.Dock="Bottom"
Visibility="{Binding OrderList_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<Grid Visibility="{Binding OrderList_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ListMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding List}"
<TextBlock Text="{Binding ListMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding List}"
Grid.Column="1"/>
</Grid>
</Grid>
<Grid DockPanel.Dock="Bottom"
Visibility="{Binding OrderList_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<Grid Visibility="{Binding OrderList_Visibility}"
Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.8*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding OrderMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Order}"
<TextBlock Text="{Binding OrderMsg}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding Order}"
Grid.Column="1"/>
</Grid>
</Grid>
<TextBlock Text="{Binding OutputMessage}"
Foreground="{Binding MsgColor}"
DockPanel.Dock="Bottom"
TextWrapping="Wrap"
TextAlignment="Center"
Margin="0,0,0,20"/>
<TextBlock Text="{Binding OutputMessage}"
Foreground="{Binding MsgColor}"
DockPanel.Dock="Bottom"
TextWrapping="Wrap"
TextAlignment="Center"
Margin="0,0,0,20"/>
<ContentControl VerticalAlignment="Center"
<ContentControl VerticalAlignment="Center"
Content="{Binding SideEntityControl}"/>
</StackPanel>
</GroupBox>
</DockPanel>
</DockPanel>
<OmagOFFICE:DxfImportSceneHostV/>
</DockPanel>
<OmagOFFICE:DxfImportSceneHostV/>
</DockPanel>
</EgtWPFLib5:EgtCustomWindow>
+60 -2
View File
@@ -710,6 +710,8 @@ Public Class DxfImportWindowVM
EgtErase(EgtGetFirstNameInGroup(PartId, SELECT_REGION_LAYER))
PartId = EgtGetNextPart(PartId)
End While
' identificativo univoico del gruppo di pezzi, se più di un pezzo
Dim sGUICode As New List(Of String)
' Scrivo testi per nesting
SideEntityControlVM.WriteSideAngleForNest(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
' Imposto riferimento sul centro geometrico di ogni pezzo
@@ -732,10 +734,33 @@ Public Class DxfImportWindowVM
Dim bDirect As Boolean = (GetMainPrivateProfileInt(S_NEST, K_DIRECT, 0) <> 0)
' Elimino eventuali precedenti pezzi vuoti
EgtEraseEmptyParts()
' creo il riferimento
If m_PartNum > 1 Then
' per ogni pezze del file DXF creo un gruppo
Dim nIdTemp As Integer = EgtGetFirstPart()
While nIdTemp <> GDB_ID.NULL
Dim sPreGuid As String = CreatePreGuidCode(nIdTemp)
sGUICode.Add(sPreGuid & System.Guid.NewGuid.ToString)
nIdTemp = EgtGetNextPart(nIdTemp)
End While
End If
' Inserisco i pezzi nell'ambiente principale e recupero Id primo pezzo inserito
Dim nFirstId As Integer = EgtGetLastPart()
For nInd As Integer = 1 To m_PartNum
Dim nFirst2Id As Integer = EgtGetLastPart()
EgtInsertFile(sTmpFile)
Dim FirstOfImport As Integer = EgtGetNextPart(nFirst2Id)
Dim Index As Integer = 1
While FirstOfImport <> GDB_ID.NULL And Index <= sGUICode.Count
If Not String.IsNullOrEmpty(sGUICode(Index - 1)) Then
EgtSetInfo(FirstOfImport, INFO_REFGROUP, sGUICode(Index - 1))
Index += 1
Else
Exit While
End If
FirstOfImport = EgtGetNextPart(FirstOfImport)
End While
nFirst2Id = If(nFirst2Id <> GDB_ID.NULL, EgtGetNextPart(nFirst2Id), EgtGetFirstPart())
Next
nFirstId = If(nFirstId <> GDB_ID.NULL, EgtGetNextPart(nFirstId), EgtGetFirstPart())
' Cancello il file
@@ -900,15 +925,45 @@ Public Class DxfImportWindowVM
Private Sub SetMsgColor(nMsgType As MSG_TYPE)
Select Case nMsgType
Case MSG_TYPE.INFO
m_MsgColor = Brushes.Black
m_MsgColor = Brushes.White
Case MSG_TYPE.WARNING
m_MsgColor = Brushes.SaddleBrown
m_MsgColor = Brushes.Gold
Case MSG_TYPE.ERROR_
m_MsgColor = Brushes.Red
End Select
NotifyPropertyChanged("MsgColor")
End Sub
' metodo utilizzato per definire il colore dei pezzi DXF importati
Private Sub ColorRegion(nCtx As Integer)
' Leggo dati corrispondenza colore
Dim InsertColor As Color3d = CompoColor(IniFile.m_sIniFile)
' Imposto contesto corrente
EgtSetCurrentContext(nCtx)
' Ciclo sui pezzi
Dim PartId As Integer = EgtGetFirstPart()
While PartId <> GDB_ID.NULL
' Ciclo sui layer delle regioni
Dim RegionId As Integer = EgtGetFirstNameInGroup(PartId, NAME_REGION)
While RegionId <> GDB_ID.NULL
EgtSetColor(RegionId, InsertColor)
' Ciclo sulle regioni
Dim EntId As Integer = EgtGetFirstInGroup(RegionId)
While EntId <> GDB_ID.NULL
If EgtGetType(EntId) = GDB_TY.SRF_FRGN Then EgtSetColor(EntId, InsertColor)
EntId = EgtGetNext(EntId)
End While
RegionId = EgtGetNextName(PartId, NAME_REGION)
End While
' passo al pezzo successico
PartId = EgtGetNextPart(PartId)
End While
' Aggiorno scritte per angoli sui lati
'WriteSideAngleForNest(nCtx)
End Sub
#End Region ' METHODS
#Region "COMMANDS"
@@ -973,6 +1028,7 @@ Public Class DxfImportWindowVM
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, IniFile.m_sIniFile) <> 0 Then
SideEntityControlVM.ColorToEngrave(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
End If
ColorRegion(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
' Eseguo zoom
EgtZoom(ZM.ALL)
' disabilito bottoni UseLayer e UseRegion, abilito bottoni Reset e Insert
@@ -1013,6 +1069,7 @@ Public Class DxfImportWindowVM
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, IniFile.m_sIniFile) <> 0 Then
SideEntityControlVM.ColorToEngrave(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
End If
ColorRegion(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
' Eseguo zoom
EgtZoom(ZM.ALL)
' disabilito bottoni UseLayer. UseRegion e UseClosedCurve, abilito bottoni Reset e Insert
@@ -1053,6 +1110,7 @@ Public Class DxfImportWindowVM
If GetPrivateProfileInt(S_COLORTOENGRAVE, K_CTE_ENABLE, 0, IniFile.m_sIniFile) <> 0 Then
SideEntityControlVM.ColorToEngrave(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
End If
ColorRegion(DxfImportWindowMap.refDxfImportSceneHostV.ImportDxfScene.GetCtx())
' Eseguo zoom
EgtZoom(ZM.ALL)
' disabilito bottoni UseLayer e UseRegion, abilito bottoni Reset e Insert
+176 -29
View File
@@ -1,4 +1,5 @@
Imports EgtUILib
Imports System.Security.Cryptography
Imports EgtUILib
Friend Module CamAuto
@@ -32,7 +33,7 @@ Friend Module CamAuto
Return bOk
End Function
Friend Function AddWaterJetMachining( nOperId As Integer, ByRef nWarn As Integer) As Boolean
Friend Function AddWaterJetMachining(nOperId As Integer, ByRef nWarn As Integer) As Boolean
EgtLuaCreateGlobTable("CAM")
SetLuaStandardCamParams()
EgtLuaSetGlobIntVar("CAM.OPERID", nOperId)
@@ -95,6 +96,145 @@ 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, "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, "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, "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, "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, "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, "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
Friend Function ResetAllSplitCut() As Boolean
Dim PartList As New List(Of Integer)
' Ricerca nei grezzi dei pezzi (devono essere ricercati tra quelli presenti nei grezzi)
Dim bOk As Boolean = True
' Recupero il numero di fasi presenti nel progetto
Dim nPhaseCount As Integer = EgtGetPhaseCount()
For nPhase As Integer = 1 To nPhaseCount
EgtSetCurrPhase(nPhase)
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
Dim nParId As Integer = EgtGetFirstPartInRawPart(nRawId)
If EgtVerifyRawPartPhase(nRawId, nPhase) Then
While nParId <> GDB_ID.NULL
Dim nNextParId As Integer = EgtGetNextPartInRawPart(nParId)
' verifico se il pezzo passato è un taglio di sepatazione (il nome deve contenere "SpliCut")
Dim sName As String = String.Empty
If EgtGetName(nParId, sName) AndAlso sName.Contains(SPLIT_CUT) Then
' Rimuovo il pezzo dal grezzo
If EgtRemovePartFromRawPart(nParId) Then
' Salvo l'indice del pezzo se non è stato già inserito
Dim nIndex As Integer = PartList.FirstOrDefault(Function(nId) nId = nParId)
If nIndex = 0 Then PartList.Add(nParId)
End If
End If
nParId = nNextParId
End While
End If
nRawId = EgtGetNextRawPart(nRawId)
End While
Next
' Reimposto la prima fase del progetto
EgtSetCurrPhase(1)
' Procedo ad eliminare il pezzo
For Each Item As Integer In PartList
bOk = bOk And EgtErase(Item)
Next
Return bOk
End Function
Friend Function RemoveCurrentSplitCut(nIdSplitCut As Integer) As Boolean
Dim bOk As Boolean = False
Dim nCurrPhase As Integer = EgtGetCurrPhase()
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
Dim nParId As Integer = EgtGetFirstPartInRawPart(nRawId)
If EgtVerifyRawPartPhase(nRawId, nCurrPhase) Then
While nParId <> GDB_ID.NULL
If nParId = nIdSplitCut Then
' Rimuovo il pezzo dal grezzo
bOk = EgtRemovePartFromRawPart(nParId)
Exit While
End If
nParId = EgtGetNextPartInRawPart(nParId)
End While
End If
If bOk Then Exit While
nRawId = EgtGetNextRawPart(nRawId)
End While
' Elimino il pezzo
bOk = bOk And EgtErase(nIdSplitCut)
Return bOk
End Function
' verifico che il contorno passato non sia stato separato
Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer) As Boolean
Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
While nIdMy <> GDB_ID.NULL
Dim nValInfo As Integer = 1
If EgtGetInfo(nIdMy, "JoinEntity", nValInfo) Then
If nValInfo = 0 Then Return False
End If
EgtRemoveInfo(nIdMy, "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
@@ -184,7 +324,7 @@ Friend Module CamAuto
EgtGetGroupObjs(EgtGetFirstNameInGroup(nPartId, NAME_UNDERDRILL)) = 0 Then
Return True
End If
' Se tutti i pezzi
' Se tutti i pezzi
Else
' Salvo fase attualmente corrente
Dim nOriPhase As Integer = EgtGetCurrPhase()
@@ -325,9 +465,9 @@ Friend Module CamAuto
Dim sTool2 As String = String.Empty
EgtGetMachiningParam(MCH_MP.TUUID, sTuuid)
EgtTdbGetToolFromUUID(sTuuid, sTool)
If String.IsNullOrWhiteSpace( sTool) Then
If String.IsNullOrWhiteSpace(sTool) Then
Dim sMchTool As String = ""
EgtGetMachiningParam( MCH_MP.TOOL, sMchTool)
EgtGetMachiningParam(MCH_MP.TOOL, sMchTool)
bOk = False
If sMissingTools.IndexOf(sMchTool) = -1 Then
sMissingTools = sMissingTools & sMchTool & ", "
@@ -341,7 +481,7 @@ Friend Module CamAuto
sTool2 = sTool & "-2"
End If
If String.Compare(sTool, CurrentMachine.sCurrSaw) <> 0 AndAlso
( String.IsNullOrWhiteSpace( sTool2) OrElse String.Compare(sTool2, CurrentMachine.sCurrSaw) <> 0) AndAlso
(String.IsNullOrWhiteSpace(sTool2) OrElse String.Compare(sTool2, CurrentMachine.sCurrSaw) <> 0) AndAlso
String.Compare(sTool, CurrentMachine.sCurrDripSaw) <> 0 Then
bOk = False
If sMissingTools.IndexOf(sTool) = -1 Then
@@ -407,7 +547,7 @@ Friend Module CamAuto
Dim nOperId As Integer = EgtGetFirstOperation()
While nOperId <> GDB_ID.NULL
' verifico sia una lavorazione valida di taglio con lama
If IsValidMachining( nOperId) And EgtGetOperationType( nOperId) = MCH_OY.SAWING Then
If IsValidMachining(nOperId) And EgtGetOperationType(nOperId) = MCH_OY.SAWING Then
' verifica interferenza
Dim nFlag As Integer = FMI_TYPE.NONE
If Not VerifyComposedMachining(nOperId, nFlag) Then
@@ -528,8 +668,8 @@ Friend Module CamAuto
If nOriLeadIn <> MCH_SAW_LI.STRICT Then
EgtSetMachiningParam(MCH_MP.LEADINTYPE, MCH_SAW_LI.STRICT)
Dim dUserAddLen As Double = 0
EgtGetInfo( nMchId, INFO_MCH_USER_SAL, dUserAddLen)
EgtRemoveInfo( nMchId, INFO_MCH_USER_SAL)
EgtGetInfo(nMchId, INFO_MCH_USER_SAL, dUserAddLen)
EgtRemoveInfo(nMchId, INFO_MCH_USER_SAL)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.STARTADDLEN, dAddLen)
EgtSetMachiningParam(MCH_MP.STARTADDLEN, dAddLen - dUserAddLen - dSafeLen)
@@ -548,8 +688,8 @@ Friend Module CamAuto
If nOriLeadOut <> MCH_SAW_LO.STRICT Then
EgtSetMachiningParam(MCH_MP.LEADOUTTYPE, MCH_SAW_LO.STRICT)
Dim dUserAddLen As Double = 0
EgtGetInfo( nMchId, INFO_MCH_USER_EAL, dUserAddLen)
EgtRemoveInfo( nMchId, INFO_MCH_USER_EAL)
EgtGetInfo(nMchId, INFO_MCH_USER_EAL, dUserAddLen)
EgtRemoveInfo(nMchId, INFO_MCH_USER_EAL)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.ENDADDLEN, dAddLen)
EgtSetMachiningParam(MCH_MP.ENDADDLEN, dAddLen - dUserAddLen - dSafeLen)
@@ -668,6 +808,9 @@ Friend Module CamAuto
End If
' Lo sposto dalla lavorazione al pezzo
Dim nId As Integer = EgtGetFirstInGroup(nMchPvId)
If nId = GDB_ID.NULL Then Return False
While nId <> GDB_ID.NULL
EgtRelocateGlob(nId, nPartPvId)
nId = EgtGetFirstInGroup(nMchPvId)
@@ -714,10 +857,12 @@ Friend Module CamAuto
Private Function SetLuaStandardCamParams(Optional bDripOk As Boolean = True) As Boolean
Dim sMaterial As String = CurrentMachine.CurrMat.sName
Dim sSawMch As String = CurrentMachine.sCurrSawing
Dim sMillMch As String = CurrentMachine.sCurrMilling
Dim sDrillMch As String = CurrentMachine.sCurrDrilling
Dim sWaterJetMch As String = CurrentMachine.sCurrWaterJetting
Dim sWaterJetQual As String = CurrentMachine.sCurrWaterJettingQuality
Dim sDripSawMch As String = If(bDripOk, CurrentMachine.sCurrDripSawing, "")
Dim sDripDrillMch As String = If(bDripOk, CurrentMachine.sCurrDripDrilling, "")
Dim dReducedDepth As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_REDUCEDDEPTH, 1, CurrentMachine.sMachIniFile)
@@ -729,10 +874,12 @@ Friend Module CamAuto
Dim bMillingOnCorners As Boolean = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_CORNERS, 1, CurrentMachine.sMachIniFile) <> 0)
Dim bMillingOnSinks As Boolean = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_MILLING_ON_SINKS, 0, CurrentMachine.sMachIniFile) <> 0)
Dim dMillingShort As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, CurrentMachine.sMachIniFile)
EgtLuaSetGlobStringVar("CAM.MATERIAL", sMaterial)
EgtLuaSetGlobStringVar("CAM.SAWMCH", sSawMch)
EgtLuaSetGlobStringVar("CAM.MILLMCH", sMillMch)
EgtLuaSetGlobStringVar("CAM.DRILLMCH", sDrillMch)
EgtLuaSetGlobStringVar("CAM.WATERJETMCH", sWaterJetMch)
EgtLuaSetGlobStringVar("CAM.WATERJETQLTY", sWaterJetQual)
EgtLuaSetGlobStringVar("CAM.DRIPSAWMCH", sDripSawMch)
EgtLuaSetGlobStringVar("CAM.DRIPDRILLMCH", sDripDrillMch)
EgtLuaSetGlobNumVar("CAM.REDUCEDDEPTH", dReducedDepth)
@@ -873,13 +1020,13 @@ Friend Module CamAuto
Dim nRawId As Integer = EgtGetFirstRawPart()
If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart( nRawId)
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart(nRawId)
If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva
Dim nDir As Integer = 0
EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2)
Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di sgrossatura con lama
Dim sCurrSawRou As String = CurrentMachine.sCurrSawRoughing
If String.IsNullOrEmpty(sCurrSawRou) Then Return True
@@ -906,8 +1053,8 @@ Friend Module CamAuto
' Imposto la geometria
EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd))
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione
@@ -922,13 +1069,13 @@ Friend Module CamAuto
Dim nRawId As Integer = EgtGetFirstRawPart()
If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart( nRawId)
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart(nRawId)
If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva
Dim nDir As Integer = 0
EgtGetInfo( nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2)
EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di finitura con lama
Dim sCurrSawFin As String = CurrentMachine.sCurrSawFinishing
If String.IsNullOrEmpty(sCurrSawFin) Then Return True
@@ -965,8 +1112,8 @@ Friend Module CamAuto
' Imposto la geometria
EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd))
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione
@@ -981,13 +1128,13 @@ Friend Module CamAuto
Dim nRawId As Integer = EgtGetFirstRawPart()
If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart( nRawId)
Dim nPart1Id As Integer = EgtGetFirstPartInRawPart(nRawId)
If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva
Dim nDir As Integer = 0
EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2)
Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di spatolatura con lama
Dim sCurrSawSideFin As String = CurrentMachine.sCurrSawSideFinishing
If String.IsNullOrEmpty(sCurrSawSideFin) Then Return True
@@ -1008,8 +1155,8 @@ Friend Module CamAuto
' Imposto la geometria
EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd))
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione
@@ -1148,14 +1295,14 @@ Friend Module CamAuto
dStartDist = dEndDist
dEndDist = dTemp
End If
' altrimenti
' altrimenti
Else
Dim vtSide As Vector3d
' Se faccia non limitata da altre o sopra la limitante
If bFree Then
EgtSetMachiningParam(MCH_MP.FACEUSE, MCH_MIL_FU.ORTUP_DOWN)
vtSide = Vector3d.Z_AX()
' altrimenti è stata trovata una faccia adiacente limitante
' altrimenti è stata trovata una faccia adiacente limitante
Else
If vtAdjN.x > 10 * EPS_SMALL Then
EgtSetMachiningParam(MCH_MP.FACEUSE, MCH_MIL_FU.ORTUP_LEFT)
+23
View File
@@ -33,6 +33,10 @@ Module ConstMach
Public Const KEY_VACLAY_SEL As String = "Sel"
' Info in gruppo layout per angolo di rotazione preferito
Public Const KEY_VACLAY_PREFROT As String = "PreferredRot"
Public Const KEY_VACLAY_PREFVROTXMINUS As String = "PrefVertRotXMinus"
Public Const KEY_VACLAY_PREFVROTXPLUS As String = "PrefVertRotXPlus"
Public Const KEY_VACLAY_PREFVROTYMINUS As String = "PrefVertRotYMinus"
Public Const KEY_VACLAY_PREFVROTYPLUS As String = "PrefVertRotYPlus"
' Info in gruppo layout per direzione di riferimento ventose per tagli da sotto
Public Const KEY_VACLAY_DRIPREFDIR As String = "DripRefDir"
' Info in asse rotante ventosa per step discreti
@@ -91,6 +95,9 @@ Module ConstMach
Public Const INFO_RAW_BLOCK = "Block"
' Info per numero lastra nel blocco
Public Const INFO_RAW_SLABNBR = "SlabNbr"
' Info per identificazione gruppo pezzi
Public Const INFO_REFGROUP As String = "RefGroup"
Public Const INFO_COUNTERLY As String = "CounterPz"
' Contrassegno di progetto OmagCut
Public Const NAME_PROJMARK As String = "OmagCut"
@@ -151,8 +158,11 @@ Module ConstMach
Public Const NAME_UNDERDRILL As String = "UnderDrill"
' Nome layer preview
Public Const NAME_PREVIEW As String = "PV"
Public Const NAME_BRIDGES As String = "Bridges"
Public Const NAME_BRIDGESLINE As String = "BridgeLine"
' Info in layer contorno interno per FiloTop
Public Const INFO_FILOTOP As String = "FiloTop"
Public Const INFO_ROUNDOFF As String = "RoundOff"
' Info in entità da tagliare per affondamento
Public Const INFO_DEPTH As String = "Depth"
Public Const INFO_DEPTH2 As String = "Depth2"
@@ -244,6 +254,14 @@ Module ConstMach
Public Const SELECT_REGION_LAYER As String = "SelectRegion"
' 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_JOINTENTITY 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 dei tagli diretti inseriti in fase di Splitting
Public Const SPLIT_CUT As String = "SplitCut"
' Nome di pezzo che è una cornice
Public Const NAME_FRAME As String = "Frame"
@@ -280,6 +298,8 @@ Module ConstMach
' Nome di pezzo temporaneo che serve per copia dime
Public Const NAME_COPYTEMPLATE As String = "CopyTemplate"
' Nome layer solidi per VM
Public Const NAME_VM_SOLID As String = "Solid"
' Chiave per Id originale del pezzo per VeinMatch
Public Const KEY_ORI_ID As String = "OriId"
@@ -308,6 +328,9 @@ Module ConstMach
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
+13
View File
@@ -198,6 +198,10 @@
Public Const S_MACH_RAWMOVE As String = "RawMove"
Public Const K_MACH_RM_ROTATE As String = "Rotate"
Public Const K_MACH_RM_FINALMOVE As String = "FinalMove"
Public Const K_MACH_WEIGHT_SINGLEPLUGGER As String = "MaxWeightSinglePlugger"
Public Const K_MACH_WEIGHT_DOUBLEPLUGGER As String = "MaxWeightDoublePlugger"
Public Const K_MACH_ROTATEVACUUMFOREXTRASTROKEY As String = "RotateVacuumForExtraStrokeY"
Public Const K_MACH_ROTATEVACUUMFOREXTRASTROKEX As String = "RotateVacuumForExtraStrokeX"
Public Const S_MACH_REG As String = "Reg"
Public Const K_MACH_MAX_ROT_ANG As String = "MaxRotAng"
@@ -243,9 +247,13 @@
Public Const K_CURRDRIPDRILL As String = "CurrDripDrill"
Public Const K_CURRWATERJET As String = "CurrWaterJet"
Public Const K_CURRSAWING As String = "CurrSawing"
Public Const K_CURRSAWING_OFFICE As String = "CurrOfficeSawing"
Public Const K_CURRDRILLING As String = "CurrDrilling"
Public Const K_CURRDRILLING_OFFICE As String = "CurrOfficeDrilling"
Public Const K_CURRMILLING As String = "CurrMilling"
Public Const K_CURRMILLING_OFFICE As String = "CurrOfficeMilling"
Public Const K_CURRPOCKETING As String = "CurrPocketing"
Public Const K_CURRPOCKETING_OFFICE As String = "CurrOfficePocketing"
Public Const K_CURRSAWROUGHING As String = "CurrSawRoughing"
Public Const K_CURRSAWFINISHING As String = "CurrSawFinishing"
Public Const K_CURRSAWSIDEFINISHING As String = "CurrSawSideFinishing"
@@ -253,11 +261,16 @@
Public Const K_CURRDRIPSAWING As String = "CurrDripSawing"
Public Const K_CURRDRIPDRILLING As String = "CurrDripDrilling"
Public Const K_CURRWATERJETTING As String = "CurrWaterJetting"
Public Const K_CURRWATERJETTING_OFFICE As String = "CurrOfficeWaterJetting"
Public Const K_CURRWATERJETTINGQUALITY As String = "CurrWaterJettingQuality"
Public Const K_CURRWATERJETTINGQUALITY_OFFICE As String = "CurrWaterJettingQuality"
Public Const S_MATERIALS As String = "Materials"
Public Const K_CURRMATERIAL As String = "CurrMaterial"
Public Const K_CURROFFICEMATERIAL As String = "CurrOfficeMaterial"
Public Const K_MATERIAL As String = "Material"
Public Const K_FROMDBWATERJET As String = "FromDBWaterJet"
Public Const K_AVERAGEDENSITY As String = "AverageDensity"
Public Const S_SETUP As String = "SetUp"
Public Const K_DEFAULT As String = "Default"
+321 -74
View File
@@ -12,12 +12,19 @@ Module CsvM
Return m_sCsvPath
End Get
End Property
Private m_sFilePath As String = String.Empty
Public ReadOnly Property FilePath As String
Get
Return m_sFilePath
End Get
End Property
Private m_CsvPartList As New List(Of CsvPart)
Public ReadOnly Property CsvPartList As List(Of CsvPart)
Get
Return m_CsvPartList
End Get
End Property
Private m_bCsvPartListModified As Boolean = False
Private m_sCompoDir As String = String.Empty
@@ -36,12 +43,7 @@ Module CsvM
Public Sub NewCmd()
' Salvo lista dei pezzi attuale (se modificata)
If Not SaveCsvPartList() Then
' Errore nel salvataggio del file CSV, vuoi continuare lo stesso ? - Errore
If MessageBox.Show(EgtMsg(MSG_CSVPAGEUC + 5), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.YesNo, MessageBoxImage.Error) <> MessageBoxResult.Yes Then
Return
End If
End If
SaveCsvPartList()
' Pulisco path e lista dei pezzi Csv
m_sCsvPath = String.Empty
m_CsvPartList.Clear()
@@ -51,25 +53,33 @@ Module CsvM
End Sub
Public Sub Open()
' Salvo lista dei pezzi attuale (se modificata)
If Not SaveCsvPartList() Then
' Errore nel salvataggio del file CSV, vuoi continuare lo stesso ? - Errore
If MessageBox.Show(EgtMsg(MSG_CSVPAGEUC + 5), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.YesNo, MessageBoxImage.Error) <> MessageBoxResult.Yes Then
Return
End If
End If
' Leggo direttorio corrente dei file CSV
Dim sCurrDir As String = ""
GetMainPrivateProfileString(S_CSV, K_CSVCURRDIR, "C:\", sCurrDir)
' Apro dialogo scelta file
Dim CsvFileDlg As New Microsoft.Win32.OpenFileDialog()
If Directory.Exists(sCurrDir) Then CsvFileDlg.InitialDirectory = sCurrDir
CsvFileDlg.Filter = "Csv file (*.csv;*.epl)|*.csv;*.epl"
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
Dim sFilterDialog As String = String.Empty
Dim sDeniedFiles As List(Of String) = CreateListOfDeniedFiles()
If bFull Then
sFilterDialog = "Csv file (*.csv;*.epl)|*.csv;*.epl;Merge.epl"
Else
sFilterDialog = "Csv file (*.csv)|*.csv"
End If
CsvFileDlg.Filter = sFilterDialog
If Not CsvFileDlg.ShowDialog() Then Return
' Salvo lista dei pezzi attuale
SaveCsvPartList()
' Salvo direttorio corrente
WriteMainPrivateProfileString(S_CSV, K_CSVCURRDIR, Path.GetDirectoryName(CsvFileDlg.FileName))
' Apertura file
Dim sPath = CsvFileDlg.FileName
' se necessario cambio estensione del file
If String.Compare(Path.GetExtension(sPath), ".CSV", True) = 0 Then
LoadCsvFile(sPath)
Else
@@ -77,6 +87,93 @@ Module CsvM
End If
End Sub
Private Function CreateListOfDeniedFiles() As List(Of String)
Dim LocalList As New List(Of String)
LocalList.Add("MERGE")
Dim Index1 As Integer = 0
Dim Index2 As Integer = 0
For Index1 = 0 To m_CsvPartList.Count - 1
Dim sFileName As String = m_CsvPartList(Index1).m_sPath
sFileName = Path.GetFileNameWithoutExtension(sFileName).ToUpper.Trim()
Dim bNewFile As Boolean = True
For Index2 = 0 To LocalList.Count - 1
If sFileName = LocalList(Index2) Then
bNewFile = False
Exit For
End If
Next
If bNewFile Then
LocalList.Add(Path.GetFileNameWithoutExtension(sFileName).ToUpper.Trim)
End If
Next
Return LocalList
End Function
Private Function LoadCsvFile(sCsvPath As String) As Boolean
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
' aggiungo i pezzi su una lista temporanea
Dim LocalPartList As New List(Of CsvPart)
' Eseguo la lettura del file Csv
If Not ReadCsvFile(sCsvPath, LocalPartList) Then
'Errore nella lettura del file CSV
MessageBox.Show(EgtMsg(91206), "Error", MessageBoxButton.OK, MessageBoxImage.Error)
Return False
End If
' Creo un nuovo file che ospitarà il merge de
Dim sNewMergeFile As String = Path.GetDirectoryName(m_sCsvPath) & "\Merge.csv"
m_sCsvPath = sNewMergeFile
m_sFilePath = m_sCsvPath
' Elimino pezzi nulli
RemoveWrongParts(LocalPartList)
' Aggiorno
If bFull Then
MySaveCsvPartList(LocalPartList)
' Salvo come epl
SaveCsvPartList()
' Rinomino file originale
Dim sBakPath As String = sCsvPath & ".bak"
Dim sBakName As String = Path.GetFileName(sBakPath)
' cancello eventuale vecchio backup
If My.Computer.FileSystem.FileExists(sBakPath) Then
My.Computer.FileSystem.DeleteFile(sBakPath)
End If
' eseguo rinomina
My.Computer.FileSystem.RenameFile(sCsvPath, sBakName)
End If
' attacco i nuovi pezzi alla lista corrente
For Each Item As CsvPart In LocalPartList
m_CsvPartList.Add(Item)
Next
Return True
End Function
Private Sub LoadCsvPartList(sFile As String)
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
' Se Csv semplificato non va letta
If Not bFull Then Return
' aggiungo i pezzi su una lista temporanea
Dim LocalPartList As New List(Of CsvPart)
' Lettura del file
If ReadCsvPartList(sFile, LocalPartList) Then
' Creo un nuovo file che ospitarà il merge de
Dim sNewMergeFile As String = Path.GetDirectoryName(m_sCsvPath) & "\Merge.csv"
m_sCsvPath = sNewMergeFile
m_sFilePath = m_sCsvPath
End If
' Elimino pezzi nulli
RemoveWrongParts(LocalPartList)
' attacco i nuovi pezzi alla lista corrente
For Each Item As CsvPart In LocalPartList
m_CsvPartList.Add(Item)
Next
End Sub
Public Sub Insert()
' Recupero lo spessore della lastra corrente
Dim dRawHeight As Double = EstCalc.GetRawHeight()
@@ -88,7 +185,7 @@ Module CsvM
End If
' Recupero la tolleranza sullo spessore
Dim dToler As Double = GetMainPrivateProfileDouble(S_CSV, K_THICKTOLERANCE, 100 * EPS_SMALL)
dToler = Math.Max( dToler, 100 * EPS_SMALL)
dToler = Math.Max(dToler, 100 * EPS_SMALL)
' Creo la lista dei pezzi inseribili nella lastra corrente
Dim InsPartList As New List(Of CsvPart)
For i As Integer = 1 To m_CsvPartList.Count()
@@ -174,25 +271,46 @@ Module CsvM
If Not bMaxDimOnX Then
Dim dH As Double = Math.Min(0.1 * dDimY, 30)
Dim nText As Integer = EgtCreateTextAdv(nRegId, New Point3d(dDimX / 2, dDimY - 0.6 * dH, 0), 0, "*TOP*", "", 500, False, dH, 1, 0, INS_POS.MC)
EgtSetColor(nText, New Color3d( 0, 0, 0))
EgtSetColor(nText, New Color3d(0, 0, 0))
End If
' Aggiusto per lavorazioni
AdjustFlatPart(nId)
' Aggiungo info su CSV di origine
EgtSetInfo(nId, INFO_CSV_PATH, m_sCsvPath)
EgtSetInfo(nId, INFO_CSV_PATH, CurrPart.m_sPath)
EgtSetInfo(nId, INFO_CSV_PART, CurrPart.m_sName)
EgtSetInfo(nId, INFO_CSV_ORD, CurrPart.m_sOrd)
EgtSetInfo(nId, INFO_CSV_DIST, CurrPart.m_sDist)
EgtSetInfo(nId, INFO_CSV_MAT, CurrPart.m_sMaterial)
' Imposto colore testi
EstCalc.SetTextColor( nRegId)
EstCalc.SetTextColor(nRegId)
' Lo sposto nel gruppo speciale
EgtRelocate(nId, nIpGrp)
' assegno l'identificatico del pezzo, se esiste
If Not String.IsNullOrEmpty(CurrPart.m_sRefGuid) Then
' GuidCode dovrebbe contenere 36 caratteri, il precode 5: tot = 41
If CurrPart.m_sRefGuid.Count <= 36 Then
Dim sPreGuid As String = CreatePreGuidCode(CurrPart.m_nId)
CurrPart.m_sRefGuid = sPreGuid & CurrPart.m_sRefGuid
End If
EgtSetInfo(CurrPart.m_nId, INFO_REFGROUP, CurrPart.m_sRefGuid)
End If
Dim nRegLayId As Integer = EgtGetFirstNameInGroup(CurrPart.m_nId, NAME_REGION)
' Imposto il colore del pezzo inserito nel progetto
EgtSetColor(nRegLayId, CurrPart.m_cColor)
Dim EntId As Integer = EgtGetFirstInGroup(nRegLayId)
While EntId <> GDB_ID.NULL
If EgtGetType(EntId) = GDB_TY.SRF_FRGN Then EgtSetColor(EntId, CurrPart.m_cColor)
EntId = EgtGetNext(EntId)
End While
Next
EgtLuaResetGlobVar("CMP")
EgtLuaResetGlobVar("CMP_Draw")
' Provo ad inserire i pezzi
Dim bDirect As Boolean = (GetMainPrivateProfileInt(S_CSV, K_CSVDIRECT, 1) <> 0)
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
Dim bDirect As Boolean = bFull And (GetMainPrivateProfileInt(S_CSV, K_CSVDIRECT, 1) <> 0)
For i As Integer = 1 To InsPartList.Count()
Dim CurrPart As CsvPart = InsPartList(i - 1)
While CurrPart.m_nToNest > 0
@@ -229,7 +347,7 @@ Module CsvM
EgtErase(nId2)
Return False
End If
' altrimenti lo metto in parcheggio
' altrimenti lo metto in parcheggio
Else
' Aggiungo riferimento e lo inserisco in VeinMatching
VeinMatching.SetRefOnPart(nId2)
@@ -270,11 +388,11 @@ Module CsvM
Dim sName As String = String.Empty
EgtGetInfo(nId, INFO_CSV_PART, sName)
' Verifico che il pezzo appartenga a questo Csv
If String.Compare(sCsvPath, m_sCsvPath, True) = 0 Then
If SearchCurrCSV(sCsvPath) Then
' Cerco il pezzo nella lista dei pezzi
For i = 1 To m_CsvPartList.Count()
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
If String.Compare(sName, CurrPart.m_sName, True) = 0 Then
If String.Compare(sName, CurrPart.m_sName, True) = 0 And String.Compare(sCsvPath, CurrPart.m_sPath, True) = 0 Then
' Se era nel grezzo
If EgtGetParent(nId) = EstCalc.GetRawId() Then
' Rimuovo le lavorazioni
@@ -282,12 +400,19 @@ Module CsvM
' Rimuovo dal grezzo
EgtRemovePartFromRawPart(nId)
End If
' recupero il Guid del pezzo corrente (potrebbe essere stato modificato a causa di rotazioni quando il pezzo è passato in parcheggio)
Dim sCurrRefGuid As String = String.Empty
EgtGetInfo(nId, INFO_REFGROUP, sCurrRefGuid)
' Eventuale cancellazione per VM
VeinMatching.OnRemovePart(nId)
' Cancello il pezzo
EgtErase(nId)
' aggiorno il layer che indica il numero di pezzi in parcheggio (se sRefGroup<>"")
EstCalc.CountPartInFamily(sCurrRefGuid)
' Aggiorno il contatore
CurrPart.m_nToNest += 1
' ricreo la lista delle famiglie di pezzi presenti in parcheggio
GetFamilyGroupInPark()
' Esco
Return True
End If
@@ -297,10 +422,19 @@ Module CsvM
Return False
End Function
Private Function LoadCsvFile(sCsvPath As String) As Boolean
Private Function SearchCurrCSV(ByVal sCSVFile As String) As Boolean
For i As Integer = 1 To m_CsvPartList.Count()
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
If String.Compare(sCSVFile, CurrPart.m_sPath, True) = 0 Then
Return True
End If
Next
Return False
End Function
Private Function ReadCsvFile(sCsvPath As String, ByRef LocalCsvPartList As List(Of CsvPart)) As Boolean
' Pulisco path e lista dei pezzi Csv
m_sCsvPath = String.Empty
m_CsvPartList.Clear()
' Definizione variabili
EgtLuaCreateGlobTable("CSV")
EgtLuaSetGlobStringVar("CSV.FILE", sCsvPath)
@@ -308,7 +442,10 @@ Module CsvM
Dim nErr As Integer = 999
Dim sReader As String = String.Empty
GetMainPrivateProfileString(S_CSV, K_READER, "CsvRead.lua", sReader)
If EgtLuaExecFile(OmagOFFICEMap.refMainWindowVM.MainWindowM.sCsvAutoDir & "\" & sReader) AndAlso
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
Dim sLuaScript As String = OmagOFFICEMap.refMainWindowVM.MainWindowM.sCsvAutoDir & If(bFull, "\" & sReader, "\CsvSimplRead.lua")
If EgtLuaExecFile(sLuaScript) AndAlso
EgtLuaCallFunction("CSV.Read") Then
' Verifica stato di errore
EgtLuaGetGlobIntVar("CSV.ERR", nErr)
@@ -325,6 +462,7 @@ Module CsvM
For i As Integer = 1 To nNbr
Dim OnePart As New CsvPart
Dim sN As String = i.ToString()
OnePart.m_sPath = sCsvPath
EgtLuaGetGlobStringVar("CSV.NAME" & sN, OnePart.m_sName)
OnePart.m_bActive = True
EgtLuaGetGlobStringVar("CSV.ORD" & sN, OnePart.m_sOrd)
@@ -336,63 +474,50 @@ Module CsvM
EgtLuaGetGlobNumVar("CSV.DIMX" & sN, OnePart.m_dDimX)
EgtLuaGetGlobNumVar("CSV.DIMY" & sN, OnePart.m_dDimY)
EgtLuaGetGlobNumVar("CSV.TH" & sN, OnePart.m_dTh)
EgtLuaGetGlobNumVar("CSV.A1_" & sN, OnePart.m_dAng1)
EgtLuaGetGlobNumVar("CSV.H1_" & sN, OnePart.m_dHeel1)
EgtLuaGetGlobNumVar("CSV.A2_" & sN, OnePart.m_dAng2)
EgtLuaGetGlobNumVar("CSV.H2_" & sN, OnePart.m_dHeel2)
EgtLuaGetGlobNumVar("CSV.A3_" & sN, OnePart.m_dAng3)
EgtLuaGetGlobNumVar("CSV.H3_" & sN, OnePart.m_dHeel3)
EgtLuaGetGlobNumVar("CSV.A4_" & sN, OnePart.m_dAng4)
EgtLuaGetGlobNumVar("CSV.H4_" & sN, OnePart.m_dHeel4)
OnePart.m_nOriInd = i
If OnePart.m_nCount > 1 Then
OnePart.m_sRefGuid = System.Guid.NewGuid.ToString
End If
' inserisco in lista
m_CsvPartList.Add(OnePart)
LocalCsvPartList.Add(OnePart)
Next
EgtLuaResetGlobVar("CSV")
' Ordinamento lista dei pezzi (ordine crescente su materiale e spessore)
m_CsvPartList.Sort(Function(x, y)
Dim nComp As Integer = String.Compare(x.m_sMaterial, y.m_sMaterial, True)
If nComp = 0 Then
If Math.Abs(x.m_dTh - y.m_dTh) < EPS_SMALL Then
Return (x.m_nOriInd - y.m_nOriInd)
LocalCsvPartList.Sort(Function(x, y)
Dim nComp As Integer = String.Compare(x.m_sMaterial, y.m_sMaterial, True)
If nComp = 0 Then
If Math.Abs(x.m_dTh - y.m_dTh) < EPS_SMALL Then
Return (x.m_nOriInd - y.m_nOriInd)
Else
Return CInt(Math.Ceiling(x.m_dTh - y.m_dTh))
End If
Else
Return CInt(Math.Ceiling(x.m_dTh - y.m_dTh))
Return nComp
End If
Else
Return nComp
End If
End Function)
' Salvo come epl
m_bCsvPartListModified = True
SaveCsvPartList()
' Rinomino file originale
Dim sBakPath As String = sCsvPath & ".bak"
Dim sBakName As String = Path.GetFileName(sBakPath)
' cancello eventuale vecchio backup
If My.Computer.FileSystem.FileExists(sBakPath) Then
My.Computer.FileSystem.DeleteFile(sBakPath)
End If
' eseguo rinomina
My.Computer.FileSystem.RenameFile(sCsvPath, sBakName)
End Function)
Return True
End Function
Public Function SaveCsvPartList() As Boolean
' Se non c'è nulla di attivo, non faccio alcunché
If String.IsNullOrEmpty(m_sCsvPath) Then
EgtOutLog("CSV List Save Skipped : missing")
Return True
End If
' Se lista non modificata, non faccio alcunchhé
If Not m_bCsvPartListModified Then
EgtOutLog("CSV List Save Skipped : not modified")
Return True
End If
' Path del file
Dim sFile As String = Path.ChangeExtension(m_sCsvPath, ".epl")
' Gestione file
Public Function WriteCsvPartList(sFile As String, sCsvPath As String, LocalCsvPartList As List(Of CsvPart)) As Boolean
Try
' Apro file
Dim Writer As New IO.StreamWriter(sFile, False)
' Intestazione
Writer.WriteLine("[General]")
Writer.WriteLine("Path=" & m_sCsvPath)
Writer.WriteLine("Path=" & sCsvPath)
' Ciclo sui pezzi
For i As Integer = 1 To m_CsvPartList.Count()
Dim CurrPart As CsvPart = m_CsvPartList(i - 1)
For i As Integer = 1 To LocalCsvPartList.Count()
Dim CurrPart As CsvPart = LocalCsvPartList(i - 1)
Writer.WriteLine("[P" & i.ToString() & "]")
Writer.WriteLine("Path=" & CurrPart.m_sPath)
Writer.WriteLine("Nam=" & CurrPart.m_sName)
Writer.WriteLine("Ord=" & CurrPart.m_sOrd)
Writer.WriteLine("Dist=" & CurrPart.m_sDist)
@@ -405,7 +530,16 @@ Module CsvM
Writer.WriteLine("DX=" & DoubleToString(CurrPart.m_dDimX, 4))
Writer.WriteLine("DY=" & DoubleToString(CurrPart.m_dDimY, 4))
Writer.WriteLine("Th=" & DoubleToString(CurrPart.m_dTh, 4))
Writer.WriteLine("A1=" & DoubleToString(CurrPart.m_dAng1, 4))
Writer.WriteLine("H1=" & DoubleToString(CurrPart.m_dHeel1, 4))
Writer.WriteLine("A2=" & DoubleToString(CurrPart.m_dAng2, 4))
Writer.WriteLine("H2=" & DoubleToString(CurrPart.m_dHeel2, 4))
Writer.WriteLine("A3=" & DoubleToString(CurrPart.m_dAng3, 4))
Writer.WriteLine("H3=" & DoubleToString(CurrPart.m_dHeel3, 4))
Writer.WriteLine("A4=" & DoubleToString(CurrPart.m_dAng4, 4))
Writer.WriteLine("H4=" & DoubleToString(CurrPart.m_dHeel4, 4))
Writer.WriteLine("OIn=" & CurrPart.m_nOriInd.ToString())
Writer.WriteLine("Guid=" & CurrPart.m_sRefGuid)
Next
' Terminatore
Writer.WriteLine("[END]")
@@ -416,18 +550,80 @@ Module CsvM
' Registro in ini path
WriteMainPrivateProfileString(S_CSV, K_CSVLASTFILE, sFile)
Return True
' Errore
' Errore
Catch ex As Exception
EgtOutLog("CSV List error writing " & sFile)
Return False
End Try
End Function
Private Function LoadCsvPartList(sFile As String) As Boolean
' Pulisco path e lista dei pezzi Csv
m_sCsvPath = String.Empty
m_CsvPartList.Clear()
' Gestione file
' dato l'elenco completo dei file salvo ogni singolo epl
Friend Function WriteCsvMergePartList(CsvPartList As List(Of CsvPart)) As Boolean
Dim bOk As Boolean = True
Dim LocalPartList As New List(Of CsvPart)
Dim Index As Integer = 0
' devo dividere la lista in tante parti quanti sono i file che lo costituiscono
While Index < CsvPartList.Count
Dim CurrFile As String = CsvPartList(Index).m_sPath
Dim sFile As String = Path.ChangeExtension(CurrFile, ".epl")
LocalPartList.Clear()
While CurrFile = CsvPartList(Index).m_sPath
LocalPartList.Add(CsvPartList(Index))
Index += 1
' se terminata la lista
If Index = CsvPartList.Count Then
Exit While
End If
End While
' salvo l'elenco corrente
bOk = WriteCsvPartList(sFile, CurrFile, LocalPartList) And bOk
End While
Return bOk
End Function
Friend Sub SaveCsvPartList()
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
' Se Csv semplificato non va salvata
If Not bFull Then Return
' Se non c'è nulla di attivo, non faccio alcunché
If String.IsNullOrEmpty(m_sCsvPath) Then
EgtOutLog("CSV List missing")
Return
End If
' Path del file
Dim sFile As String = Path.ChangeExtension(m_sFilePath, ".epl")
' Scrittura dei file
If WriteCsvMergePartList(m_CsvPartList) Then
' Scrittura dei file Merge
If WriteCsvPartList(sFile, m_sCsvPath, m_CsvPartList) Then
WriteMainPrivateProfileString(S_CSV, K_CSVLASTFILE, sFile)
End If
End If
End Sub
Friend Sub MySaveCsvPartList(ByVal CurrPartList As List(Of CsvPart))
Dim bFull = OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.CSV_AUTO) And
(GetMainPrivateProfileInt(S_CSV, K_FULL, 1) <> 0)
' Se Csv semplificato non va salvata
If Not bFull Then Return
Dim sCurrPath As String = String.Empty
' recupero dalla lista il nome del file corrente
For Each Item As CsvPart In CurrPartList
sCurrPath = Item.m_sPath
Next
' se non trov il nome del file assocciato all'elenco di pezzi esco
If String.IsNullOrEmpty(sCurrPath) Then
EgtOutLog("CSV Curr list missing")
Return
End If
' Path del file
Dim sFile As String = Path.ChangeExtension(sCurrPath, ".epl")
' Scrittura del file
WriteCsvPartList(sFile, sCurrPath, CurrPartList)
End Sub
Private Function ReadCsvPartList(sFile As String, LocalCsvPartList As List(Of CsvPart)) As Boolean
Try
' Apro file
Dim Reader As New IO.StreamReader(sFile, False)
@@ -456,7 +652,7 @@ Module CsvM
' se esiste pezzo precedente, lo salvo
If nI > 1 Then
' inserisco in lista
m_CsvPartList.Add(OnePart)
LocalCsvPartList.Add(OnePart)
End If
' predisposizioni per prossimo pezzo
nI += 1
@@ -466,7 +662,9 @@ Module CsvM
Else
Dim sItems() As String = sLine.Split("=".ToCharArray)
If sItems.Count() >= 2 Then
If sItems(0) = "Nam" Then
If sItems(0) = "Path" Then
OnePart.m_sPath = sItems(1)
ElseIf sItems(0) = "Nam" Then
OnePart.m_sName = sItems(1)
ElseIf sItems(0) = "Ord" Then
OnePart.m_sOrd = sItems(1)
@@ -490,8 +688,26 @@ Module CsvM
StringToDouble(sItems(1), OnePart.m_dDimY)
ElseIf sItems(0) = "Th" Then
StringToDouble(sItems(1), OnePart.m_dTh)
ElseIf sItems(0) = "A1" Then
StringToDouble(sItems(1), OnePart.m_dAng1)
ElseIf sItems(0) = "H1" Then
StringToDouble(sItems(1), OnePart.m_dHeel1)
ElseIf sItems(0) = "A2" Then
StringToDouble(sItems(1), OnePart.m_dAng2)
ElseIf sItems(0) = "H2" Then
StringToDouble(sItems(1), OnePart.m_dHeel2)
ElseIf sItems(0) = "A3" Then
StringToDouble(sItems(1), OnePart.m_dAng3)
ElseIf sItems(0) = "H3" Then
StringToDouble(sItems(1), OnePart.m_dHeel3)
ElseIf sItems(0) = "A4" Then
StringToDouble(sItems(1), OnePart.m_dAng4)
ElseIf sItems(0) = "H4" Then
StringToDouble(sItems(1), OnePart.m_dHeel4)
ElseIf sItems(0) = "OIn" Then
StringToInt(sItems(1), OnePart.m_nOriInd)
ElseIf sItems(0) = "Guid" Then
OnePart.m_sRefGuid = sItems(1).Trim
End If
End If
End If
@@ -502,18 +718,37 @@ Module CsvM
' Dichiaro lista non modificata
m_bCsvPartListModified = False
Return True
' Errore
' Errore
Catch ex As Exception
EgtOutLog("Error reading " & sFile)
Return False
End Try
End Function
Friend Function RemoveNotToNestParts(ByRef CsvPartList As List(Of CsvPart)) As Boolean
For i As Integer = CsvPartList.Count() - 1 To 0 Step -1
If CsvPartList(i).m_nToNest = 0 Then
CsvPartList.RemoveAt(i)
End If
Next
Return True
End Function
Friend Function RemoveWrongParts(ByRef CsvPartList As List(Of CsvPart)) As Boolean
For i As Integer = CsvPartList.Count() - 1 To 0 Step -1
If Not CsvPartList(i).m_bIsRect Or CsvPartList(i).m_dDimX < EPS_SMALL Or CsvPartList(i).m_dDimY < EPS_SMALL Then
CsvPartList.RemoveAt(i)
End If
Next
Return True
End Function
#End Region ' METHODS
End Module
Public Class CsvPart
Public m_sPath As String = String.Empty
Public m_sName As String = String.Empty
Public m_sOrd As String = String.Empty
Public m_sDist As String = String.Empty
@@ -526,6 +761,18 @@ Public Class CsvPart
Public m_dDimX As Double = 0
Public m_dDimY As Double = 0
Public m_dTh As Double = 0
Public m_dAng1 As Double = 0
Public m_dHeel1 As Double = 0
Public m_dAng2 As Double = 0
Public m_dHeel2 As Double = 0
Public m_dAng3 As Double = 0
Public m_dHeel3 As Double = 0
Public m_dAng4 As Double = 0
Public m_dHeel4 As Double = 0
Public m_nOriInd As Integer = 0
Public m_nId As Integer = GDB_ID.NULL
' definsco il riferimento al gruppo
Public m_sRefGuid As String = System.Guid.NewGuid.ToString
' definisco il colore del gruppo che sto inserendo
Public m_cColor As Color3d = CompoColor(IniFile.m_sIniFile)
End Class
+131 -12
View File
@@ -86,6 +86,9 @@ Public Module CurrentMachine
Private m_bPolishingWheel As Boolean = False
Private m_bWaterJet As Boolean = False
' Abilitazione DB WaterJet
Private m_bFromDBWaterJet As Boolean = False
' Flag per visualizzazione TcPos, Testa/uscita e Note utente
Private m_nShowToolChanger As Integer = 0 ' 0=no, 1=tutti utensili, 2=solo lame
Private m_bShowHeadExit As Boolean = False
@@ -123,6 +126,7 @@ Public Module CurrentMachine
Private m_sCurrDripSawing As String = String.Empty
Private m_sCurrDripDrilling As String = String.Empty
Private m_sCurrWaterJetting As String = String.Empty
Private m_sCurrWaterJettingQuality As String = String.Empty
' Spessore sottopezzo
Private m_dAdditionalTable As Double = 0
@@ -162,6 +166,9 @@ Public Module CurrentMachine
' Lista dei materiali
Private m_Materials As New ObservableCollection(Of Material)
' Lista delle qualità di lavorazioni disponibili nel WaterJet
Private m_Qualities As New ObservableCollection(Of String)
' Massimo id della lista materiali nel file ini
Private m_MaxIdMat As Integer = 0
@@ -559,6 +566,12 @@ Public Module CurrentMachine
End Get
End Property
Friend ReadOnly Property bFromDBWaterJet As Boolean
Get
Return m_bFromDBWaterJet
End Get
End Property
Friend ReadOnly Property ShowToolChanger As Integer
Get
Return m_nShowToolChanger
@@ -828,6 +841,17 @@ Friend Property sCurrMillNoTip As String
End Set
End Property
Friend Property sCurrWaterJettingQuality As String
Get
Return m_sCurrWaterJettingQuality
End Get
Set(value As String)
If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, value, sMachIniFile) Then
m_sCurrWaterJettingQuality = value
End If
End Set
End Property
Friend ReadOnly Property WaterJettingActive As Boolean
Get
Return m_bWaterJetting AndAlso Not String.IsNullOrWhiteSpace(m_sCurrWaterJetting)
@@ -1006,6 +1030,12 @@ Friend Property sCurrMillNoTip As String
End Get
End Property
Friend ReadOnly Property Qualities As ObservableCollection(Of String)
Get
Return m_Qualities
End Get
End Property
Friend Sub AddMaterial(value As Material)
For Each Material In Materials
If Material.nId = value.nId Then
@@ -1089,9 +1119,13 @@ Friend Property sCurrMillNoTip As String
If Not IsNothing(value) Then
Dim CurrMatId As String = value.nId.ToString
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId, sMachIniFile)
If bWaterJet And bFromDBWaterJet Then
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId & "." & value.SubId, sMachIniFile)
Else
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId, sMachIniFile)
End If
m_CurrMat = value
End If
m_CurrMat = value
End Set
End Property
@@ -1200,6 +1234,8 @@ Friend Property sCurrMillNoTip As String
m_bPolishingWheel = (GetPrivateProfileInt(S_TOOLS, K_POLISHINGWHEEL, 0, sMachIniFile) > 0) And bKeyPolish
' waterjet
m_bWaterJet = (GetPrivateProfileInt(S_TOOLS, K_WATERJET, 0, sMachIniFile) > 0) And bKeyWJ
' Leggo abilitazione DB WaterJet
m_bFromDBWaterJet = (GetPrivateProfileInt(S_MATERIALS, K_FROMDBWATERJET, 0, sMachIniFile) > 0)
' Leggo abilitazione visualizzazione TcPos e Head/exit
m_nShowToolChanger = GetPrivateProfileInt(S_TOOLS, K_SHOWTOOLCHANGER, 0, sMachIniFile)
m_bShowHeadExit = (GetPrivateProfileInt(S_TOOLS, K_SHOWHEADEXIT, 0, sMachIniFile) > 0)
@@ -1272,6 +1308,8 @@ Friend Property sCurrMillNoTip As String
GetPrivateProfileString(S_MACH_MACH, K_CURRDRIPDRILLING, Nothing, m_sCurrDripDrilling, sMachIniFile)
' waterjetting
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, Nothing, m_sCurrWaterJetting, sMachIniFile)
' waterjettingquality
GetPrivateProfileString(S_MACH_MACH, K_CURRWATERJETTINGQUALITY, Nothing, m_sCurrWaterJettingQuality, sMachIniFile)
' Leggo numero di portautensili
m_ToolChangerNbr = GetPrivateProfileInt(S_TOOLCHANGER, K_NUMBER, 0, sMachIniFile)
@@ -1330,24 +1368,89 @@ Friend Property sCurrMillNoTip As String
' Leggo la lista dei materiali
Dim Material As Material = Nothing
Dim nIndex As Integer = 1
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
m_Materials.Add(Material)
nIndex += 1
End While
If m_bWaterJet And m_bFromDBWaterJet Then
LoadWJMaterial(True)
Else
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
m_Materials.Add(Material)
nIndex += 1
End While
End If
' Salvo massimo indice a cui sono arrivato per usarlo quando devo aggiungere nuovi elementi alla lista
m_MaxIdMat = nIndex - 1
' Leggo materiale correntemente attivo
Dim sCurrMatId As String = String.Empty
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
Dim CurrMatId As Integer = GetPrivateProfileInt(S_MATERIALS, sKey, 0, sMachIniFile)
For Each Material In Materials
If Material.nId = CurrMatId Then
m_CurrMat = Material
EgtUILib.GetPrivateProfileString(S_MATERIALS, sKey, "0", sCurrMatId, sMachIniFile)
If bWaterJet And bFromDBWaterJet Then
Dim sCurrMatIds As String()
sCurrMatIds = sCurrMatId.Split("."c)
If sCurrMatIds.Length > 1 Then
Dim nCurrMatId As Integer
Dim nCurrSubMatId As Integer
If Not Integer.TryParse(sCurrMatIds(0), nCurrMatId) Then nCurrMatId = 0
If Not Integer.TryParse(sCurrMatIds(1), nCurrSubMatId) Then nCurrSubMatId = 0
For Each Material In Materials
If Material.nId = nCurrMatId AndAlso Material.SubId = nCurrSubMatId Then
m_CurrMat = Material
Exit For
End If
Next
End If
Else
Dim nCurrMatId As Integer
If Not Integer.TryParse(sCurrMatId, nCurrMatId) Then nCurrMatId = 0
For Each Material In Materials
If Material.nId = nCurrMatId Then
m_CurrMat = Material
Exit For
End If
Next
End If
' Leggo se la macchina ha il tastatore dello spessore lastra
m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0)
' Se macchina ha Waterjet mostro il bottone per DB Waterjet
OmagOFFICEMap.refMachinePanelVM.NotifyPropertyChanged(NameOf(OmagOFFICEMap.refMachinePanelVM.WjDb_Visibility))
End Sub
' recupro dalla lista delle macchine l'oggetto associato al nome indicato
Public Sub GetMachineClass(sMachineName As String)
For Each Item In OmagOFFICEMap.refMachinePanelVM.MachineList
If string.Compare(Item.Name, sMachineName, True) = 0 Then
OmagOFFICEMap.refMachinePanelVM.SelectedMachine = Item
Exit For
End If
Next
' Leggo se la macchina ha il tastatore dello spessore lastra
m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0)
End Sub
Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False)
Dim TempCurrMat As Material = CurrMat
' Svuoto l'attuale lista di materiali e delle qualità
m_Materials.Clear()
m_Qualities.Clear()
' Leggo valori da file .data e li carico nelle proprietà
Dim sFilePath As String = sMachDir & EgtWPFLib5.WaterjetDbWindowVM.WATERJETDB_PATH
WjMaterialList = EgtWPFLib5.WaterjetDbWindowVM.LoadWjMaterials(sFilePath)
' definisco la lista delle qualità
m_Qualities.Add("Q1")
m_Qualities.Add("Q2")
m_Qualities.Add("Q3")
m_Qualities.Add("Q4")
m_Qualities.Add("Q5")
m_Qualities.Add("QExtra")
' costruisco la lista
Dim i As Integer = 0
Dim sName As String = String.Empty
For i = 0 To WjMaterialList.Count - 1
sName = WjMaterialList(i).Name
Dim j As Integer = 0
For j = 0 To WjMaterialList(i).SubMaterialList.Count - 1
m_Materials.Add(New Material(i + 1, sName & "." & WjMaterialList(i).SubMaterialList(j).Name, j + 1))
Next
Next
If Not bIsStart Then CurrMat = TempCurrMat
End Sub
Friend Function IsVacuumMovePossible() As Boolean
@@ -1456,6 +1559,7 @@ Public Class Material
Private m_nId As Integer
Private m_sName As String
Private m_SubId As Integer = 0
Public ReadOnly Property nId As Integer
Get
@@ -1472,6 +1576,15 @@ Public Class Material
End Set
End Property
Public Property SubId As Integer
Get
Return m_SubId
End Get
Set(value As Integer)
m_SubId = value
End Set
End Property
Sub New(sName As String, MaterialList As ObservableCollection(Of Material))
Dim nMaxId As Integer = 0
For Each Material In MaterialList
@@ -1488,4 +1601,10 @@ Public Class Material
m_sName = sName
End Sub
Sub New(nId As Integer, sName As String, nSubId As Integer)
m_nId = nId
m_sName = sName
m_SubId = nSubId
End Sub
End Class
+279 -7
View File
@@ -3,6 +3,16 @@ Imports EgtUILib
Imports EgtWPFLib5
Module EstCalc
Friend Function CompoColor(sIniFile As String) As Color3d
Dim InsertColor As New Color3d(89, 210, 210, 25)
Dim IndexColor As Integer = GetPrivateProfileInt(S_COMPO, K_LASTCOLOR, 1, sIniFile)
If Not GetPrivateProfileColor(S_COMPO, K_COLOR & IndexColor.ToString, InsertColor, sIniFile) Then
IndexColor = 1
GetPrivateProfileColor(S_COMPO, K_COLOR & IndexColor.ToString, InsertColor, sIniFile)
End If
WritePrivateProfileString(S_COMPO, K_LASTCOLOR, (IndexColor + 1).ToString, sIniFile)
Return InsertColor
End Function
'--------------------------------------------------------------------------------------------------
Friend Function DoubleToString(ByVal dVal As Double, ByVal nNumDec As Integer) As String
@@ -41,6 +51,68 @@ Module EstCalc
End If
End Function
#Region "PreGuidCode"
' recupero i primi 5 caratteri della stringa
Friend Function GetPreGuidCode(sGuidCode As String) As String
If sGuidCode.Count > 5 Then
Return sGuidCode(0) & sGuidCode(1) & sGuidCode(2) & sGuidCode(3) & sGuidCode(4)
End If
Return String.Empty
End Function
' sostituisce i primi 5 caratteri della stringa con qualle passata
Friend Function UppDateGuidCode(ByRef sGuidCode As String, sPreGuidCode As String) As Boolean
If sPreGuidCode.Count = 5 Then
sGuidCode = sGuidCode.Remove(0, 5)
sGuidCode = sPreGuidCode & sGuidCode
Return True
End If
Return False
End Function
' restituisce 5 caratteri
Friend Function CreatePreGuidCode(nId As Integer) As String
' recupero il frame dell'oggetto
Dim frGlobFrame As New Frame3d
If Not EgtGetGroupGlobFrame(nId, frGlobFrame) Then
Return String.Empty
End If
' recupero il suo versore
Dim vtX As Vector3d = frGlobFrame.VersX
Dim Len As Double
Dim AngV As Double
Dim AngH As Double
vtX.ToSpherical(Len, AngV, AngH)
' costruisco il codice (6 caratteri!) che identifica la posizione del pezzo in parcheggio
Dim sPreGuid As String = GetDirectionCode(AngH)
Return sPreGuid
End Function
Friend Function GetDirectionCode(dVal As Double) As String
Dim bIsNegative As Boolean = False
If dVal < 0 Then
dVal = dVal + (-1)
bIsNegative = True
End If
Dim sVal As String = DoubleToString(dVal * 1000, 0)
Dim nCount As Integer = sVal.Count
For Index As Integer = 1 To 4 - nCount
sVal = "0" & sVal
Next
Dim vVal As Char() = {"+"c, "1"c, "0"c, "0"c, "0"c}
If bIsNegative Then
vVal = {"-"c, sVal(0), sVal(1), sVal(2), sVal(3)}
Else
vVal = {"+"c, sVal(0), sVal(1), sVal(2), sVal(3)}
End If
' ricostruisco la stringa dotata di segno
sVal = vVal(0) & vVal(1) & vVal(2) & vVal(3) & vVal(4)
Return sVal
End Function
#End Region ' PreGiudCode
'--------------------------------------------------------------------------------------------------
Private m_nRawId As Integer = GDB_ID.NULL
Public Function GetRawId() As Integer
@@ -67,6 +139,8 @@ Module EstCalc
End Function
Public Function UpdateRawPart() As Boolean
' Passo al contesto principale
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' determino il grezzo (è il primo con fase 1)
m_nRawId = CamAuto.GetCurrentRaw()
If Not EgtGetRawPartBBox(m_nRawId, m_b3Raw) Then
@@ -173,7 +247,7 @@ Module EstCalc
Friend Function SetCurrSawing(sCurrSawing As String) As Boolean
Dim nOperId As Integer = EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers")
If nOperId = GDB_ID.NULL Then Return False
Return EgtSetInfo(nOperId, INFO_CURRSAWING, sCurrSawing)
Return EgtSetInfo(nOperId, INFO_CURRSAWING, sCurrSawing, True)
End Function
Friend Function GetCurrSawing() As String
@@ -187,7 +261,7 @@ Module EstCalc
Friend Function SetCurrMilling(sCurrMilling As String) As Boolean
Dim nOperId As Integer = EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers")
If nOperId = GDB_ID.NULL Then Return False
Return EgtSetInfo(nOperId, INFO_CURRMILLING, sCurrMilling)
Return EgtSetInfo(nOperId, INFO_CURRMILLING, sCurrMilling, True)
End Function
Friend Function GetCurrMilling() As String
@@ -201,7 +275,7 @@ Module EstCalc
Friend Function SetCurrDrilling(sCurrDrilling As String) As Boolean
Dim nOperId As Integer = EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers")
If nOperId = GDB_ID.NULL Then Return False
Return EgtSetInfo(nOperId, INFO_CURRDRILLING, sCurrDrilling)
Return EgtSetInfo(nOperId, INFO_CURRDRILLING, sCurrDrilling, True)
End Function
Friend Function GetCurrDrilling() As String
@@ -215,7 +289,7 @@ Module EstCalc
Friend Function SetCurrPocketing(sCurrMilling As String) As Boolean
Dim nOperId As Integer = EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers")
If nOperId = GDB_ID.NULL Then Return False
Return EgtSetInfo(nOperId, INFO_CURRPOCKETING, sCurrMilling)
Return EgtSetInfo(nOperId, INFO_CURRPOCKETING, sCurrMilling, True)
End Function
Friend Function GetCurrPocketing() As String
@@ -229,7 +303,7 @@ Module EstCalc
Friend Function SetCurrWaterjetting(sCurrMilling As String) As Boolean
Dim nOperId As Integer = EgtGetFirstNameInGroup(EgtGetCurrMachGroup(), "Opers")
If nOperId = GDB_ID.NULL Then Return False
Return EgtSetInfo(nOperId, INFO_CURRWATERJETTING, sCurrMilling)
Return EgtSetInfo(nOperId, INFO_CURRWATERJETTING, sCurrMilling, True)
End Function
Friend Function GetCurrWaterjetting() As String
@@ -614,6 +688,16 @@ Module EstCalc
End If
' Gestione risultato nesting
If bFit Then
'---------------------- COUNTER PART ----------------------
Dim sRefGroup As String = String.Empty
If EgtGetInfo(nId, INFO_REFGROUP, sRefGroup) Then
' spengo il layer che contiene il contatore
Dim nCounterLayer As Integer = EgtGetFirstNameInGroup(nId, INFO_COUNTERLY)
EgtSetStatus(nCounterLayer, GDB_ST.OFF)
' aggiorno il layer che indica il numero di pezzi in parcheggio
CountPartInFamily(sRefGroup)
End If
'---------------------- COUNTER PART ----------------------
' Eventuale aggiunta solido per taglio da sotto
UpdateSolidForDrip(nId)
Return True
@@ -690,12 +774,198 @@ Module EstCalc
Return True
End Function
#Region "Manager Counter Part"
' lista delle famiglie di pezzi in parcheggio
Public m_ListOfGroupInPark As New List(Of FamilyPart)
' se seleniozato il layer CounterPz
Public m_bIsCounterLy As Boolean = False
Public m_nCurrNubrOfParts As Integer = 0
' creo la lista delle famiglie che popolano il parcheggio
Public Sub GetFamilyGroupInPark()
m_ListOfGroupInPark.Clear()
Dim nIdInPark As Integer = EgtGetFirstPart()
While nIdInPark <> GDB_ID.NULL
If IsInRaw(nIdInPark) Then
nIdInPark = EgtGetNextPart(nIdInPark)
Continue While
End If
Dim sRefGroup As String = String.Empty
If EgtGetInfo(nIdInPark, INFO_REFGROUP, sRefGroup) Then
Dim bExists As Boolean = False
For Each sItem As FamilyPart In m_ListOfGroupInPark
If sRefGroup = sItem.sRefGuid Then
bExists = True
Exit For
End If
Next
If Not bExists Then
m_ListOfGroupInPark.Add(New FamilyPart(sRefGroup, nIdInPark))
End If
End If
nIdInPark = EgtGetNextPart(nIdInPark)
End While
End Sub
Public Sub CountPartInFamily(sRefGuid As String)
If String.IsNullOrEmpty(sRefGuid) Then Return
Dim nCount As Integer = 0
Dim nIdInPark As Integer = EgtGetFirstPart()
' conto il nuero di pezzi del gruppo inidcato
While nIdInPark <> GDB_ID.NULL
If IsInRaw(nIdInPark) Then
nIdInPark = EgtGetNextPart(nIdInPark)
Continue While
End If
Dim sRefGroup As String = String.Empty
EgtGetInfo(nIdInPark, INFO_REFGROUP, sRefGroup)
If sRefGroup = sRefGuid Then
nCount += 1
End If
nIdInPark = EgtGetNextPart(nIdInPark)
End While
' aggiorno il contatore dei pezzi del gruppo
nIdInPark = EgtGetFirstPart()
While nIdInPark <> GDB_ID.NULL
If IsInRaw(nIdInPark) Then
nIdInPark = EgtGetNextPart(nIdInPark)
Continue While
End If
Dim sRefGroup As String = String.Empty
EgtGetInfo(nIdInPark, INFO_REFGROUP, sRefGroup)
If sRefGroup = sRefGuid Then
Dim nId As Integer = EgtGetFirstNameInGroup(nIdInPark, INFO_COUNTERLY)
If nId <> GDB_ID.NULL Then
Dim m_IdCounterTextas As Integer = EgtGetFirstInGroup(nId)
EgtModifyText(m_IdCounterTextas, "# " & nCount.ToString)
End If
End If
nIdInPark = EgtGetNextPart(nIdInPark)
End While
End Sub
Public Sub SelectPartInFaimily(sRefGuid As String, nNbrOfSelection As Integer)
' aggiorno il contatore dei pezzi del gruppo
Dim nIdInPark As Integer = EgtGetFirstPart()
Dim nCounter As Integer = 0
While nIdInPark <> GDB_ID.NULL And nCounter < nNbrOfSelection
If IsInRaw(nIdInPark) Then
nIdInPark = EgtGetNextPart(nIdInPark)
Continue While
End If
Dim sRefGroup As String = String.Empty
EgtGetInfo(nIdInPark, INFO_REFGROUP, sRefGroup)
If sRefGroup = sRefGuid Then
EgtSelectObj(nIdInPark)
nCounter += 1
End If
nIdInPark = EgtGetNextPart(nIdInPark)
End While
End Sub
Public Sub DeselectPartInFaimily(sRefGuid As String)
' aggiorno il contatore dei pezzi del gruppo
Dim nIdInPark As Integer = EgtGetFirstPart()
While nIdInPark <> GDB_ID.NULL
If IsInRaw(nIdInPark) Then
nIdInPark = EgtGetNextPart(nIdInPark)
Continue While
End If
Dim sRefGroup As String = String.Empty
EgtGetInfo(nIdInPark, INFO_REFGROUP, sRefGroup)
If sRefGroup = sRefGuid Then
EgtDeselectObj(nIdInPark)
End If
nIdInPark = EgtGetNextPart(nIdInPark)
End While
End Sub
Public Function ParkInGroupFamily(nId As Integer) As Boolean
' se pezzo appartenente ad un gruppo
Dim sRefGroup As String = String.Empty
Dim Element As FamilyPart
If EgtGetInfo(nId, INFO_REFGROUP, sRefGroup) Then
' verifico se esiste un pezzo dello stesso gruppo in parcheggio
Dim nNewLayer As Integer
Dim ptMin As Point3d
Dim ptMax As Point3d
For Each sItem As FamilyPart In m_ListOfGroupInPark
If sRefGroup = sItem.sRefGuid Then
' creo un nuovo layer per contenere l'informazione del numero di pezzi da inserire
If EgtGetFirstNameInGroup(nId, INFO_COUNTERLY) = GDB_ID.NULL Then
nNewLayer = EgtCreateGroup(nId)
EgtSetName(nNewLayer, INFO_COUNTERLY)
EgtSetColor(nNewLayer, New Color3d(0, 0, 0))
EgtGetBBox(nId, GDB_BB.STANDARD, ptMin, ptMax)
EgtCreateText(nNewLayer, New Point3d((ptMin.x + ptMax.x) / 2, ptMin.y - sItem.nHText - 20, ptMin.z), "# ???", sItem.nHText, GDB_RT.LOC)
Else
' Accendo il layer che contiene il contatore
Dim nCounterLayer As Integer = EgtGetFirstNameInGroup(nId, INFO_COUNTERLY)
EgtSetStatus(nCounterLayer, GDB_ST.ON_)
End If
' calcolo lo spostamento del pezzo
Dim PtMinInRaw As Point3d
Dim PtMaxInRaw As Point3d
EgtGetBBoxGlob(nId, GDB_BB.STANDARD, PtMinInRaw, PtMaxInRaw)
Dim vtMoveToStorage As New Vector3d
vtMoveToStorage = sItem.PtStorage() - PtMinInRaw
EgtMove(nId, vtMoveToStorage, GDB_RT.GLOB)
' aggiorno il layer che indica il numero di pezzi in parcheggio
CountPartInFamily(sRefGroup)
Return True
End If
Next
' inserisco il primo pezzo del gruppo nel parcheggio
Element = New FamilyPart(sRefGroup, nId)
m_ListOfGroupInPark.Add(Element)
' creo un nuovo layer per contenere l'informazione del numero di pezzi da inserire
If EgtGetFirstNameInGroup(nId, INFO_COUNTERLY) = GDB_ID.NULL Then
nNewLayer = EgtCreateGroup(nId)
EgtSetName(nNewLayer, INFO_COUNTERLY)
EgtSetColor(nNewLayer, New Color3d(0, 0, 0))
EgtGetBBox(nId, GDB_BB.STANDARD, ptMin, ptMax)
' posso migliorarei lposizioanamento in funzione della dimensione della scritta...
EgtCreateText(nNewLayer, New Point3d((ptMin.x + ptMax.x) / 2, ptMin.y - Element.nHText - 20, ptMin.z), "# 1", Element.nHText, GDB_RT.LOC)
Else
' Accendo il layer che contiene il contatore
Dim nCounterLayer As Integer = EgtGetFirstNameInGroup(nId, INFO_COUNTERLY)
EgtSetStatus(nCounterLayer, GDB_ST.ON_)
' aggiorno il layer che indica il numero di pezzi in parcheggio
CountPartInFamily(sRefGroup)
End If
End If
Return False
End Function
' verifico se il pezzo ha un gruppo che contiene le informazioni per il taglio
Public Function IsInRaw(nIdGroup As Integer) As Boolean
' verifico che il pezzo sia veramente uin parcheggio
Dim nPV As Integer = EgtGetFirstNameInGroup(nIdGroup, "PV")
If nPV <> GDB_ID.NULL Then
' verifico che non ci siano delle lavorazioni
If EgtGetFirstInGroup(nPV) <> GDB_ID.NULL Then
Return True
End If
End If
Return False
End Function
#End Region ' Manager Counter Part
Public Function StoreOnePart(ByVal nId As Integer, Optional ByVal bForced As Boolean = False) As Boolean
' Se pezzo in grezzo, metto in parcheggio (sempre possibile)
If bForced OrElse
(m_nRawId <> GDB_ID.NULL AndAlso EgtGetParent(nId) = m_nRawId) Then
' Ripristino lo stato originale
PreRemoveOnePart( nId)
PreRemoveOnePart(nId)
'---------------------- COUNTER PART ----------------------
' se esiste almento un pezzo del gruppo in parcheggio esco
If ParkInGroupFamily(nId) Then Return True
'---------------------- COUNTER PART ----------------------
' Parcheggio
PackPartInStore(nId)
' Aggiusto la posizione in Z
@@ -718,7 +988,8 @@ Module EstCalc
' Parcheggio
Const STORE_LARGH As Double = 6000
Const STORE_DIST As Double = 200
Const STORE_OFFS As Double = 20
' 40 il Font usato per indicare il numero di pezzi in parcheggio "# N"
Const STORE_OFFS As Double = 20 + 40 + 20
Dim dStXmin As Double = b3Tab.Min().x - 0.5 * (STORE_LARGH - b3Tab.DimX())
Return EgtPackBox(nId, dStXmin, -INFINITO, dStXmin + STORE_LARGH, b3Tab.Min().y - STORE_DIST, STORE_OFFS, False)
End Function
@@ -819,3 +1090,4 @@ Module EstCalc
End Function
End Module
+27 -15
View File
@@ -1,13 +1,13 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
' EgalTech 2015-2021
'----------------------------------------------------------------------------
' File : GenPhoto.vb Data : 12.04.17 Versione : 1.8d1
' File : GenPhoto.vb Data : 15.11.21 Versione : 2.3k1
' Contenuto : Modulo gestione fotografie.
' Ogni gruppo di lavoro può avere una sua foto della lastra.
'
'
' Modifiche : 12.04.17 DS Creazione modulo.
'
' 15.11.21 PS Correzioni per scalatura foto da CameraMng senza sovratavola.
'
'----------------------------------------------------------------------------
@@ -35,12 +35,12 @@ Module EstPhoto
If dThick > EPS_SMALL Then
OmagOFFICEMap.refRawPartTabVM.Height = DoubleToString( dThick, 3)
End If
' Altezza eventuale tavola aggiuntiva
' Altezza della eventuale tavola aggiuntiva per solo posizionamento in Z
Dim dAddTable As Double = CurrentMachine.dAdditionalTable
' Aggiusto dati per spessore grezzo
If Math.Abs(EstCalc.GetRawHeight() + dAddTable) > EPS_SMALL Then
' Coefficiente di scalatura
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight() - dAddTable) / (ptCen.z - ptOri.z)
' Coefficiente di scalatura (non va considerata la sovratavola)
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight()) / (ptCen.z - ptOri.z)
dMMxPixel *= dFsca
ptOri.x = ptCen.x + (ptOri.x - ptCen.x) * dFsca
ptOri.y = ptCen.y + (ptOri.y - ptCen.y) * dFsca
@@ -67,7 +67,11 @@ Module EstPhoto
End If
EgtSetLevel(nPhGrpId, GDB_LV.SYSTEM)
' Carico la fotografia
Return EgtAddPhoto(GetPhotoName(), sPath, ptOri, ptCen, dMMxPixel, nPhGrpId, b3Tab.Min(), b3Tab.Max()) <> GDB_ID.NULL
Dim nPhotoId As Integer = EgtAddPhoto(GetPhotoName(), sPath, ptOri, ptCen, dMMxPixel, nPhGrpId, b3Tab.Min(), b3Tab.Max())
If nPhotoId = GDB_ID.NULL Then Return False
' Salvo spessore sovratavola usato per posizionamento in Z
EgtSetInfo( nPhotoId, "OvTab", dAddTable)
Return True
End Function
Friend Function LoadContour(sPath As String) As Boolean
@@ -92,12 +96,12 @@ Module EstPhoto
Dim nPixelX As Integer = 0
Dim nPixelY As Integer = 0
If Not EgtGetPhotoImagePixels(GetPhoto(), nPixelX, nPixelY) Then Return False
' Altezza eventuale tavola aggiuntiva
' Altezza della eventuale tavola aggiuntiva per solo posizionamento in Z
Dim dAddTable As Double = CurrentMachine.dAdditionalTable
' Aggiusto dati per spessore grezzo
If Math.Abs(EstCalc.GetRawHeight() + dAddTable) > EPS_SMALL Then
' Coefficiente di scalatura
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight() - dAddTable) / (ptCen.z - ptOri.z)
' Coefficiente di scalatura (non va considerata la sovratavola)
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight()) / (ptCen.z - ptOri.z)
dMMxPixel *= dFsca
ptOri.x = ptCen.x + (ptOri.x - ptCen.x) * dFsca
ptOri.y = ptCen.y + (ptOri.y - ptCen.y) * dFsca
@@ -385,10 +389,13 @@ Module EstPhoto
' Porto i punti in locale
ptOri.ToLoc(New Frame3d(ptTab))
ptCen.ToLoc(New Frame3d(ptTab))
' Altezza eventuale tavola aggiuntiva
' Altezza della eventuale tavola aggiuntiva originaria
Dim dOrigAddTable As Double = 0
EgtGetInfo( nPhotoId, "OvTab", dOrigAddTable)
' Altezza della eventuale tavola aggiuntiva per solo posizionamento in Z
Dim dAddTable As Double = CurrentMachine.dAdditionalTable
' Aggiusto dati per spessore grezzo (Coefficiente di scalatura)
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight() - dAddTable) / (ptCen.z - ptOri.z)
Dim dFsca As Double = (ptCen.z - EstCalc.GetRawHeight()) / (ptCen.z - ptOri.z + dOrigAddTable)
dDimX *= dFsca
dDimY *= dFsca
ptOri.x = ptCen.x + (ptOri.x - ptCen.x) * dFsca
@@ -426,6 +433,8 @@ Module EstPhoto
EgtSetInfo(nNewPhotoId, "OffsX", dOffsetX)
EgtSetInfo(nNewPhotoId, "OffsY", dOffsetY)
EgtSetInfo(nNewPhotoId, "Rot", dRot)
' Salvo sovratavola attuale
EgtSetInfo( nNewPhotoId, "OvTab", dAddTable)
Return True
End Function
@@ -482,17 +491,20 @@ Module EstPhoto
' Recupero origine della tavola
Dim ptTab As Point3d
If Not EgtGetTableRef(1, ptTab) Then Return False
' Altezza eventuale tavola aggiuntiva
' Altezza della eventuale tavola aggiuntiva originaria
Dim dOrigAddTable As Double = 0
EgtGetInfo( nPhotoId, "OvTab", dOrigAddTable)
' Altezza della eventuale tavola aggiuntiva per solo posizionamento in Z
Dim dAddTable As Double = CurrentMachine.dAdditionalTable
' Recupero inizio contorno
Dim ptStart As Point3d
EgtStartPoint(nCrvId, GDB_ID.ROOT, ptStart)
' Calcolo coefficiente di scalatura
Dim dFsca As Double = (ptCen.z - ptTab.z - EstCalc.GetRawHeight() - dAddTable) / (ptCen.z - ptStart.z)
Dim dFsca As Double = (ptCen.z - ptTab.z - EstCalc.GetRawHeight()) / (ptCen.z - ptStart.z + dOrigAddTable)
' Scalo opportunamente
EgtScale(nCrvId, New Frame3d(ptCen), dFsca, dFsca, 1, GDB_RT.GLOB)
' Sposto in Z
Dim vtMove As New Vector3d(0, 0, ptTab.z + EstCalc.GetRawHeight() + dAddTable - ptStart.z)
Dim vtMove As New Vector3d(0, 0, ptTab.z + EstCalc.GetRawHeight() + CurrentMachine.dAdditionalTable - ptStart.z)
EgtMove(nCrvId, vtMove, GDB_RT.GLOB)
Return True
End Function
+81 -24
View File
@@ -92,11 +92,12 @@ 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)
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)
@@ -160,6 +161,17 @@ Public Module SplitAuto
End Function
'-----------------------------------------------------------------------------------------------
' calcolo il numero di tipi di lavorazioni
Friend Sub CountMachiningType(MachSplit As SplitMach, ByRef nCountSawing As Integer, ByRef nCountWaterjetting As Integer, ByRef nCountOtherMachining As Integer)
If MachSplit.m_nType = MCH_OY.SAWING Then
nCountSawing += 1
ElseIf MachSplit.m_nType = MCH_OY.WATERJETTING Then
nCountWaterjetting += 1
Else
nCountOtherMachining += 1
End If
End Sub
Friend Sub ColorMachining(MachSplit As SplitMach, Optional bReset As Boolean = False)
EgtDisableModified()
' Assegno stato
@@ -372,28 +384,53 @@ Public Module SplitAuto
For Each nCut As Integer In vCuts
RemoveMachiningPreview(nCut)
Next
' Sposto tutte le lavorazioni disabilitate e le eventuali inglobate nella nuova fase
' ---------------------------------- LAVORAZIONI ----------------------------------
ChangeOperationPhase(nNewPhase)
' ---------------------------------- LAVORAZIONI ----------------------------------
Return True
End Function
Friend Sub ChangeOperationPhase(nNewPhase As Integer)
' creo l'elenco delle lavorazioni che devono essere sposate
Dim MchList As New List(Of Integer)
' Recupero le lavorazioni disabilitate e le eventuali inglobate nella nuova fase
Dim nId = EgtGetFirstOperation()
While nId <> GDB_ID.NULL
Dim nNextId = EgtGetNextOperation(nId)
If IsValidMachining(nId) And EgtGetOperationPhase(nId) = nNewPhase - 1 And EgtExistsInfo(nId, INFO_MCH_USER_OFF) Then
' sposto la lavorazione
EgtChangeOperationPhase(nId, nNewPhase)
' Provo ad inserire la lavorazione nell'elenco
AddMach(MchList, nId)
' sposto le inglobate
Dim sInfo As String = String.Empty
If EgtGetInfo(nId, INFO_MCH_OTHMID, sInfo) Then
Dim sItems() As String = sInfo.Split(",".ToCharArray)
For Each sId2 In sItems
For Each sId2 As String In sItems
Dim nId2 As Integer = 0
StringToInt(sId2, nId2)
If nId2 > 0 Then EgtChangeOperationPhase(nId2, nNewPhase)
If nId2 > 0 Then
' Provo ad inserire la lavorazione nell'elenco
AddMach(MchList, nId2)
End If
Next
End If
End If
nId = nNextId
End While
Return True
End Function
' Procedo ora a spostare le lavorazioni nella nuova disposizione
For Each ItemMchId As Integer In MchList
EgtChangeOperationPhase(ItemMchId, nNewPhase)
Next
End Sub
' Inserisce gli inidici delle lavorazioni evitando di inserire dei doppioni
Private Sub AddMach(MchList As List(Of Integer), IdMch As Integer)
For Each Item As Integer In MchList
If IdMch = Item Then
Return
End If
Next
MchList.Add(IdMch)
End Sub
'-----------------------------------------------------------------------------------------------
Friend Function CalculateSplitAuto() As Boolean
@@ -736,35 +773,55 @@ Public Module SplitAuto
End Function
Private Function SafeMoveRawPart(nRawId As Integer, ByRef vtMove As Vector3d, dMindist As Double) As Boolean
' Spostamento originale
Dim vtOriMove As New Vector3d(vtMove)
' Livello di movimento
Dim nMoveLevel As Integer = GetPrivateProfileInt(S_SPLIT, K_MOVE_LEV, 5, IniFile.m_sIniFile)
Dim nMove As Integer = 1
' Se esce dalla tavola, movimento già annullato ed esco con errore
If Not EgtMoveRawPart(nRawId, vtMove) Then Return False
If Not EgtMoveRawPart(nRawId, vtOriMove) Then Return False
' Se interferisce con altri grezzi, annullo movimento ed esco con errore
If Not VerifyRawWithOtherRaws(nRawId, dMindist) Then
EgtMoveRawPart(nRawId, -vtMove)
EgtMoveRawPart(nRawId, -vtOriMove)
Return False
End If
If nMoveLevel < 2 Then Return True
' Provo ad aggiungere un altro movimento
If EgtMoveRawPart(nRawId, vtMove) Then
If EgtMoveRawPart(nRawId, vtOriMove) Then
If VerifyRawWithOtherRaws(nRawId, dMindist) Then
vtMove += vtMove
vtMove += vtOriMove
nMove += 1
If nMoveLevel = nMove Then Return True
Else
EgtMoveRawPart(nRawId, -vtMove)
EgtMoveRawPart(nRawId, -vtOriMove)
End If
End If
' Provo ad aggiungere un altro movimento
If EgtMoveRawPart(nRawId, vtOriMove) Then
If VerifyRawWithOtherRaws(nRawId, dMindist) Then
vtMove += vtOriMove
nMove += 1
If nMoveLevel = nMove Then Return True
Else
EgtMoveRawPart(nRawId, -vtOriMove)
End If
End If
' Provo ad aggiungere un movimento dimezzato
If EgtMoveRawPart(nRawId, 0.5 * vtMove) Then
If EgtMoveRawPart(nRawId, 0.5 * vtOriMove) Then
If VerifyRawWithOtherRaws(nRawId, dMindist) Then
vtMove += 0.5 * vtMove
vtMove += 0.5 * vtOriMove
nMove += 1
If nMoveLevel = nMove Then Return True
Else
EgtMoveRawPart(nRawId, -0.5 * vtMove)
EgtMoveRawPart(nRawId, -0.5 * vtOriMove)
End If
End If
' Provo ad aggiunger un movimento 1/4
If EgtMoveRawPart(nRawId, 0.25 * vtMove) Then
' Provo ad aggiungere un movimento 1/4
If EgtMoveRawPart(nRawId, 0.25 * vtOriMove) Then
If VerifyRawWithOtherRaws(nRawId, dMindist) Then
vtMove += 0.25 * vtMove
vtMove += 0.25 * vtOriMove
Else
EgtMoveRawPart(nRawId, -0.25 * vtMove)
EgtMoveRawPart(nRawId, -0.25 * vtOriMove)
End If
End If
Return True
+170 -5
View File
@@ -8,7 +8,24 @@ Module VacuumCups
Private m_nVacId As Integer = GDB_ID.NULL
Private m_nRefId As Integer = GDB_ID.NULL
Private m_dPreferredRot As Double = 0
Private m_dPrefVertRotXMinus As Double = 0
Private m_dPrefVertRotXPlus As Double = 0
Private m_dPrefVertRotYMinus As Double = 0
Private m_dPrefVertRotYPlus As Double = 0
Private m_dDripRefAng As Double = 0
' dati carico massimo manipolatore
Private m_RawDensity As Double = 2500
Private m_RawWeight As Double = 0
Private m_MaxWeightSinglePlugger As Double = 250
Private m_MaxWeightDoublePlugger As Double = 750
Public bOverWeight As Boolean = False
' dati per rotazione ventose vicono al fine corsa Y e X
Private bRotateVacuumNearExtraStrokeY As Boolean = False
Private bRotateVacuumNearExtraStrokeX As Boolean = False
' dati stroke
Public bExtraStroke As Boolean = False
Public ptStartPointLift As Point3d
Public dDegRotStartAng As Double
' Nome del gruppo temporaneo per le ventose
Private Const VACTMP_GRP As String = "VacTmp"
@@ -48,6 +65,20 @@ Module VacuumCups
Return m_nVacType
End Function
Friend Sub GetWeightInformation(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)
bRotateVacuumNearExtraStrokeY = Rotate
End Sub
Friend Sub GetRotationForExtraStrokeX(Rotate As Boolean)
bRotateVacuumNearExtraStrokeX = Rotate
End Sub
Friend Function GetVacuumId() As Integer
Return m_nVacId
End Function
@@ -64,6 +95,8 @@ Module VacuumCups
' Identificativo riferimento della testa nella macchina
Dim nT1Id As Integer = EgtGetFirstNameInGroup(EgtGetHeadId(VACUUM_HEAD), HEAD_FIRST_EXIT)
If nT1Id = GDB_ID.NULL Then Return False
' imposto la l'uscita della ventosa come fosse l'uscita di un utensile
EgtSetCalcTool("", "H4", 1)
' Creo gruppo temporaneo in cui copiarli
m_nTempId = EgtCreateGroup(GDB_ID.ROOT)
If m_nTempId = GDB_ID.NULL Then Return False
@@ -73,7 +106,12 @@ Module VacuumCups
m_nVacId = EgtCopyGlob(nLayId, m_nTempId)
If m_nVacId = GDB_ID.NULL Then Return False
' Angolo di rotazione preferito
EgtGetInfo( m_nVacId, KEY_VACLAY_PREFROT, m_dPreferredRot)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFROT, m_dPreferredRot)
' Angoli di rotazione preferiti per ventosa in verticale (lungo Y) a sinistra e a destra del centro tavola
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTXMINUS, m_dPrefVertRotXMinus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTXPLUS, m_dPrefVertRotXPlus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYMINUS, m_dPrefVertRotYMinus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYPLUS, m_dPrefVertRotYPlus)
' Direzione di riferimento per tagli Drip
EgtGetInfo( m_nVacId, KEY_VACLAY_DRIPREFDIR, m_dDripRefAng)
' Nascondo il gruppo ma rendo visibili le curve di contorno delle ventose
@@ -160,6 +198,18 @@ Module VacuumCups
EgtGetBBoxGlob(nRKerfId, GDB_BB.STANDARD, b3Kerf)
Dim ptKerfCen As Point3d
EgtCentroid(nRKerfId, GDB_ID.ROOT, ptKerfCen)
'-------------------- INIZIO CALCOLO PESO --------------------
' recupero l'area del grezzo da muovere
Dim RawArea As Double = 0
' superficie del grezzo senza considerare eventuali fori
EgtSurfFrGrossArea(nRKerfId, RawArea)
' volume calcolato in mmc
Dim RawVolume As Double = RawArea * b3Raw.DimZ()
' peso calolato in kg
m_RawWeight = RawVolume * m_RawDensity / Math.Pow(10, 9)
'-------------------- FINE CALCOLO PESO --------------------
' Eseguo ricerca
If FindVacuumCupsOnRaw(nRawId, ptRawCen, b3Kerf, ptKerfCen, nKerfId, nRKerfId, rmData) Then
Return True
@@ -261,6 +311,7 @@ Module VacuumCups
Dim sCups() As String = Nothing
Dim sCups2() As String = Nothing
If Not GetVacuumCupSelection(nI, sCups, sCups2) Then Return False
bExtraStroke = False
' Determino validità soluzioni della configurazione
Dim vtMove As New Vector3d
Dim ptRotCen As New Point3d
@@ -363,6 +414,26 @@ Module VacuumCups
If b3Vac.IsEmpty() Then Return INFINITO
' Se box maggiore di quello del pezzo, scarto soluzione
If b3Vac.Radius() > b3Raw.Radius() Then Return INFINITO
'-------------------- INIZIO VERIFICA PESO --------------------
bOverWeight = False
Select Case GetPluggerFromCameras(sCups)
Case 2
' se peso del grezzo oltre il limite consentito allora scarto la soluzione
If m_RawWeight > m_MaxWeightDoublePlugger Then
bOverWeight = True
Return INFINITO
End If
Case 1
' se peso del grezzo oltre il limite consentito allora scarto la soluzione
If m_RawWeight > m_MaxWeightSinglePlugger Then
bOverWeight = True
Return INFINITO
End If
End Select
'-------------------- FINE VERIFICA PESO --------------------
' Recupero l'area della tavola
Dim b3Tab As New BBox3d
EgtGetTableArea(1, b3Tab)
' Determino il movimento
vtMove = ptRawCen - b3Vac.Center()
b3Vac.Move(vtMove)
@@ -373,12 +444,27 @@ Module VacuumCups
Dim dLen, dAngVertDeg, dAngOrizzDeg As Double
frMinRect.VersX().ToSpherical(dLen, dAngVertDeg, dAngOrizzDeg)
dRotAngDeg = dAngOrizzDeg
Dim dPreferredRot As Double = m_dPreferredRot
If bRotateVacuumNearExtraStrokeX And Not IsHorizontal(dAngOrizzDeg) Then
If frMinRect.Orig().x < b3Tab.Center().x Then
dPreferredRot = m_dPrefVertRotXMinus
Else
dPreferredRot = m_dPrefVertRotXPlus
End If
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
Else
dPreferredRot = m_dPrefVertRotYMinus
End If
End If
If b3Vac.DimY() > b3Vac.DimX() + EPS_SMALL Then dRotAngDeg -= 90
Dim dAngDelta As Double = If( Math.Abs( b3Vac.DimY() - b3Vac.DimX()) < 10 * EPS_SMALL, 90, 180)
While dRotAngDeg - m_dPreferredRot >= dAngDelta / 2
While dRotAngDeg - dPreferredRot >= dAngDelta / 2
dRotAngDeg -= dAngDelta
End While
While dRotAngDeg - m_dPreferredRot <= -dAngDelta / 2
While dRotAngDeg - dPreferredRot <= -dAngDelta / 2
dRotAngDeg += dAngDelta
End While
Else
@@ -430,13 +516,71 @@ Module VacuumCups
' Applico movimento e rotazione al punto
ptRef.Move(vtMove)
ptRef.Rotate(ptRotCen, Vector3d.Z_AX(), dRotAngDeg)
' -------------- INIZIO verifica di essere nel limite delle corse macchina --------------
If VerifyOutOfStrokes(ptRef, dRotAngDeg) <> 0 Then
bExtraStroke = True
Return INFINITO
End If
' se la posizione è accettbaile allora salvo i dati
ptStartPointLift = ptRef
dDegRotStartAng = dRotAngDeg
' -------------- FINE verifica di essere nel limite delle corse macchina --------------
' Ne calcolo la distanza dal centro della tavola
Dim b3Tab As New BBox3d
EgtGetTableArea(1, b3Tab)
Dim dDist As Double = Point3d.DistXY(ptRef, b3Tab.Center())
Return dDist
End Function
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
' assegante 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
' Posizione Home dell'asse rotante
Dim dCHome As Double
EgtGetAxisHomePos("C", dCHome)
' 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)
' 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
' dall'informazione di extra corsa recupera il valore indicato
Public Function GetExtraStrokeValue(sInfo As String) As Double
Dim dExtraStroke As Double = 0
Dim sItems As String() = sInfo.Split("="c)
If sItems.Count = 2 Then
Dim nStartIndex As Integer = 0
For Each ItemChar As Char In sItems(1)
If ItemChar = "("c Then
Exit For
End If
nStartIndex += 1
Next
If nStartIndex > 0 Then
Dim sValue As String = sItems(1).Remove(nStartIndex, sItems(1).Count - nStartIndex)
StringToLen(sValue, dExtraStroke)
End If
End If
Return dExtraStroke
End Function
Private Function TestVacuumCups(nCups() As Integer, nRawRegId As Integer,
vtMove As Vector3d, ptRotCen As Point3d, dRotAngDeg As Double) As Boolean
' Eseguo verifica delle ventose rispetto al grezzo
@@ -457,6 +601,27 @@ Module VacuumCups
Return bVacOk
End Function
Private Function GetPluggerFromCameras(sCups() As String) As Integer
Dim nCountPlunger As Integer = 1
Dim bPlugger1 As Boolean = False
Dim bPlugger2 As Boolean = False
For Each Camera As String In sCups
If (Camera.Contains("1") Or Camera.Contains("2") Or Camera.Contains("3")) Then
bPlugger1 = True
Else
bPlugger2 = True
End If
Next
' verifico quali sono le camere attive
If bPlugger1 And bPlugger2 Then
nCountPlunger = 2
ElseIf Not bPlugger1 And Not bPlugger2 Then
nCountPlunger = 0
End If
' restituisco il numero di Plugger in uso
Return nCountPlunger
End Function
Friend Function SaveOneMoveInfo(nId As Integer, rmData As RawMoveData) As Boolean
' Assegno le informazioni
EgtSetInfo(nId, "Id", rmData.m_nId)
+5 -1
View File
@@ -20,12 +20,16 @@
Margin="0,5,0,0"
Content="Verify"/>
<ToggleButton Name="MagneticBtn" Height="40" Width="80"
Visibility="Collapsed"
Margin="0,5,0,0"
Content="Magnetic"/>
<Button Name="ExportBtn" Height="40" Width="80"
Margin="0,5,0,0"
Content="Export"/>
</StackPanel>
<Button Name="AssemblyBtn" Height="40" Width="80"
Margin="0,5,0,0"
Content="3D"/>
</StackPanel>
</Grid>
+616 -26
View File
@@ -1,8 +1,10 @@
Imports System.IO
Imports System.Windows.Interop
Imports System.Collections.ObjectModel
Imports System.Runtime.InteropServices
Imports EgtUILib
Imports EgtWPFLib5
Imports OmagOFFICE.VeinMatchingWindow
Public Class VeinMatchingWindow
@@ -28,6 +30,18 @@ Public Class VeinMatchingWindow
Private m_locPrev As System.Drawing.Point
Private m_ptPrev As Point3d
Private m_ptCen As Point3d
' Gestione rotazione pezzi in fase di Drag
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
Enum ALETTE
F = 2
A = 1
End Enum
Private Sub Window_Initialized(sender As Object, e As EventArgs)
' Assegnazione scena all'host e posizionamento nella PlacePageGrid
@@ -248,14 +262,14 @@ Public Class VeinMatchingWindow
EgtMovePartToSnapPointOnCollision(nMoveId, True, m_dSnapDist, bSnapMoved)
End If
End If
' Standard
' Standard
Else
EgtMove(nMoveId, vtMove)
End If
VeinMatching.SetProjectModified()
EgtDraw()
End If
' altrimenti rotazione
' altrimenti rotazione
Else
' Ricavo l'angolo di movimento
Dim vtPrev As Vector3d = m_ptPrev - m_ptCen
@@ -265,7 +279,7 @@ Public Class VeinMatchingWindow
' Con verifica di collisione
If m_bCurrVerify Then
EgtRotatePart(nMoveId, True, m_ptCen, dAngRotDeg)
' Standard
' Standard
Else
EgtRotate(nMoveId, m_ptCen, Vector3d.Z_AX(), dAngRotDeg, GDB_RT.GLOB)
End If
@@ -285,15 +299,15 @@ Public Class VeinMatchingWindow
' Se eseguito drag
If Not m_bDragToStart Then
' Non serve fare alcunché
' Se selezione da eseguire
' Se selezione da eseguire
ElseIf m_nIdToSel <> GDB_ID.NULL Then
' Eseguo la selezione
EgtSelectObj(m_nIdToSel)
' Se deselezione da eseguire
' Se deselezione da eseguire
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
EgtDeselectObj(m_nIdToDesel)
End If
' Altrimenti selezione/deselezione anche per nesting
' Altrimenti selezione/deselezione anche per nesting
Else
' Se selezione da eseguire
If m_nIdToSel <> GDB_ID.NULL Then
@@ -316,11 +330,12 @@ Public Class VeinMatchingWindow
MessageBox.Show(Me, EgtMsg(91607) & " " & sMachGrpName, EgtMsg(91122), MessageBoxButton.OK, MessageBoxImage.Exclamation)
End If
End If
End If
EgtSetCurrentContext(VeinMatchingScene.GetCtx())
' Se selezione riuscita, la eseguo anche in VME
If bSelected Then EgtSelectObj(m_nIdToSel)
' Se deselezione da eseguire
' Se deselezione da eseguire
ElseIf m_nIdToDesel <> GDB_ID.NULL Then
' Eseguo la deselezione in Nesting
Dim bDeselected As Boolean = False
@@ -378,6 +393,13 @@ Public Class VeinMatchingWindow
VeinMatching.Export(SaveFileDialog.FileName)
End Sub
Private Sub AssemblyBtn_Click(sender As Object, e As RoutedEventArgs) Handles AssemblyBtn.Click
EstCalc.UpdateRawPart()
' lo spessore deve essere aggiornato per ogni lastra! (devo cicolare sull'elenco delle "macchinate"
Dim ThicknessRaw As Double = EstCalc.GetRawHeight
VeinMatching.AssemblyParts(ThicknessRaw)
End Sub
Private Sub Scene_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles VeinMatchingScene.KeyDown
' Con DEL eseguo cancellazione dei pezzi selezionati
If e.KeyData = System.Windows.Forms.Keys.Delete Then
@@ -401,6 +423,8 @@ Friend Module VeinMatching
' Dimensioni immagine da esportare
Private m_nImgWidth As Integer = 1600
Private m_nImgHeight As Integer = 1200
' Lista delle alzatine
Private m_ListAlzFront As New ObservableCollection(Of Aletta)
' Flag visualizzazione testi
Private m_bShowText As Boolean = True
Friend ReadOnly Property bShowText As Boolean
@@ -489,31 +513,31 @@ Friend Module VeinMatching
Dim PartId As Integer = EgtGetFirstPart()
While PartId <> GDB_ID.NULL
Dim b3Tmp As New BBox3d()
if EgtGetBBoxGlob( PartId, GDB_BB.STANDARD, b3Tmp) Then b3Parts.Add( b3Tmp)
If EgtGetBBoxGlob(PartId, GDB_BB.STANDARD, b3Tmp) Then b3Parts.Add(b3Tmp)
PartId = EgtGetNextPart(PartId)
End While
' Se ingombro troppo grande, errore
If b3Parts.DimX() > 2 * ( DIM_REG - SAFE_DIST) Or b3Parts.DimY() > 2 * ( DIM_REG - SAFE_DIST) Then
If b3Parts.DimX() > 2 * (DIM_REG - SAFE_DIST) Or b3Parts.DimY() > 2 * (DIM_REG - SAFE_DIST) Then
Return False
End If
' Se fuori dalla regione di validità, li muovo
Dim vtMove As New Vector3d
If b3Parts.Min().x < -DIM_REG + SAFE_DIST Then
vtMove += New Vector3d( -DIM_REG + SAFE_DIST - b3Parts.Min().x, 0, 0)
End If
vtMove += New Vector3d(-DIM_REG + SAFE_DIST - b3Parts.Min().x, 0, 0)
End If
If b3Parts.Min().y < -DIM_REG + SAFE_DIST Then
vtMove += New Vector3d( 0, -DIM_REG + SAFE_DIST - b3Parts.Min().y, 0)
End If
vtMove += New Vector3d(0, -DIM_REG + SAFE_DIST - b3Parts.Min().y, 0)
End If
If b3Parts.Max().x > DIM_REG - SAFE_DIST Then
vtMove += New Vector3d( DIM_REG - SAFE_DIST - b3Parts.Max().x, 0, 0)
End If
vtMove += New Vector3d(DIM_REG - SAFE_DIST - b3Parts.Max().x, 0, 0)
End If
If b3Parts.Max().y > DIM_REG - SAFE_DIST Then
vtMove += New Vector3d( 0, DIM_REG - SAFE_DIST - b3Parts.Max().y, 0)
End If
vtMove += New Vector3d(0, DIM_REG - SAFE_DIST - b3Parts.Max().y, 0)
End If
If Not vtMove.IsSmall() Then
PartId = EgtGetFirstPart()
While PartId <> GDB_ID.NULL
EgtMove( PartId, vtMove, GDB_RT.GLOB)
EgtMove(PartId, vtMove, GDB_RT.GLOB)
PartId = EgtGetNextPart(PartId)
End While
End If
@@ -562,9 +586,9 @@ Friend Module VeinMatching
EgtSetInfo(nVeinId2, KEY_ORI_ID, nPartId)
' Ne garantisco la visibilità
Dim nStat As Integer = GDB_ST.OFF
If Not EgtGetStatus( nVeinId2, nStat) OrElse nStat <> GDB_ST.ON_ Then
EgtSetStatus( nVeinId2, GDB_ST.ON_)
End If
If Not EgtGetStatus(nVeinId2, nStat) OrElse nStat <> GDB_ST.ON_ Then
EgtSetStatus(nVeinId2, GDB_ST.ON_)
End If
' Se impostato, nascondo scritte, sono nel layer "Region"
If Not m_bShowText Then
Dim nVeinRegId As Integer = EgtGetFirstNameInGroup(nVeinId2, NAME_REGION)
@@ -672,6 +696,15 @@ Friend Module VeinMatching
' Sistemo il colore
Dim colWhite As New Color3d(255, 255, 255, 100)
EgtSetColor(nRegId, colWhite)
' Ripeto le stesse operazioni con il solido del pezzo, se esiste
Dim nSolidId As Integer = GetVeinPartSolidId(nId)
If nSolidId <> GDB_ID.NULL Then
EgtSetTextureName(nSolidId, GetVeinPhotoName(nInd))
EgtSetTextureFrame(nSolidId, refTxr, GDB_RT.GLOB)
EgtSetColor(nSolidId, colWhite)
End If
' Se richiesto, eseguo deselezione
If bDeselect Then EgtDeselectObj(nId)
End If
@@ -698,10 +731,14 @@ Friend Module VeinMatching
If nId <> GDB_ID.NULL Then
' Recupero la regione del pezzo
Dim nRegId As Integer = GetVeinPartRegionId(nId)
Dim nSolidId As Integer = GetVeinPartSolidId(nId)
' Sistemo il riferimento della texture
Dim refTxr As New Frame3d
GetVeinRefPhoto(nMainCtx, nPartId, nId, refTxr)
EgtSetTextureFrame(nRegId, refTxr, GDB_RT.GLOB)
If nSolidId <> GDB_ID.NULL Then
EgtSetTextureFrame(nSolidId, refTxr, GDB_RT.GLOB)
End If
EgtDraw()
End If
EgtSetCurrentContext(nMainCtx)
@@ -728,8 +765,15 @@ Friend Module VeinMatching
' Gli tolgo la texture
EgtRemoveTextureData(nRegId)
' Sistemo il colore
Dim colAqua As New Color3d(0, 255, 255, 25)
EgtSetColor(nRegId, colAqua)
Dim colRegion As Color3d
EgtGetColor(EgtGetParent(nRegId), colRegion)
EgtSetColor(nRegId, colRegion)
' ripeto per il solido
Dim nSolidId As Integer = GetVeinPartSolidId(nId)
If nSolidId <> GDB_ID.NULL Then
EgtRemoveTextureData(nSolidId)
EgtSetColor(nSolidId, colRegion)
End If
' Se richiesto, eseguo deselezione
If bDeselect Then EgtDeselectObj(nId)
EgtDraw()
@@ -953,7 +997,8 @@ Friend Module VeinMatching
' Esporto il file come immagine
EgtSetCurrentContext(m_nVeinCtx)
Dim bOk As Boolean = (EgtGetFileType(sFilePath) = FT.IMG)
bOk = bOk AndAlso EgtGetImage(EgtGetShowMode(), New Color3d(255, 255, 255), New Color3d(255, 255, 255),
bOk = bOk AndAlso EgtGetImage(DirectCast(EgtGetShowMode(), EgtInterface.SM),
New Color3d(255, 255, 255), New Color3d(255, 255, 255),
m_nImgWidth, m_nImgHeight, sFilePath)
' Ripristino il contesto originale
EgtSetCurrentContext(nMainCtx)
@@ -1040,7 +1085,7 @@ Friend Module VeinMatching
Return (GetVeinPartId(nPartId) <> GDB_ID.NULL)
End Function
Friend Function ModifyPartText( nPartId As Integer, sNewText As String, Optional bDraw As Boolean = True) As Boolean
Friend Function ModifyPartText(nPartId As Integer, sNewText As String, Optional bDraw As Boolean = True) As Boolean
' Verifico esista il contesto del VeinMatching
If m_nVeinCtx = 0 Then Return True
' Recupero il contesto corrente (principale)
@@ -1058,7 +1103,7 @@ Friend Module VeinMatching
Dim nCurrId As Integer = EgtGetFirstInGroup(nVeinRegId)
While nCurrId <> GDB_ID.NULL
If EgtGetType(nCurrId) = GDB_TY.EXT_TEXT Then
EgtModifyText( nCurrId, sNewText)
EgtModifyText(nCurrId, sNewText)
Exit While
End If
nCurrId = EgtGetNext(nCurrId)
@@ -1240,4 +1285,549 @@ Friend Module VeinMatching
Return nRegId
End Function
Private Function GetVeinPartSolidId(nVeinPartId As Integer) As Integer
' Imposto VeinMatching context
Dim nCurrCtx = SetVeinContext()
If nCurrCtx = 0 Then Return GDB_ID.NULL
' Gruppo regione
Dim nRegLayId As Integer = EgtGetFirstNameInGroup(nVeinPartId, NAME_VM_SOLID)
' Entità superficie regione piatta
Dim nRegId As Integer = EgtGetFirstInGroup(nRegLayId)
While nRegId <> GDB_ID.NULL
If EgtGetType(nRegId) = GDB_TY.SRF_MESH Then
Exit While
End If
nRegId = EgtGetNext(nRegId)
End While
' Se necessario, ripristino il contesto originale
If nCurrCtx > 0 Then EgtSetCurrentContext(nCurrCtx)
Return nRegId
End Function
' ------------------- FUNZIONI PER GESTIONE ALZATINE E FRONTALINI -------------------
Friend Function CreateListAlzAndFront() As Boolean
m_ListAlzFront.Clear()
EgtSetCurrentContext(m_nVeinCtx)
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
' verifico che il pezzo sia una alzatina
Dim sInfoName As String = String.Empty
EgtGetInfo(nId, "CMP", sInfoName)
If sInfoName = "AlzFront" Then
Dim AlzFront As New Aletta(nId)
m_ListAlzFront.Add(AlzFront)
End If
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
Return True
End Function
Friend Function LinkReferencesOnAlette() As Boolean
Dim x As Integer = EgtGetCurrentContext()
' forzo il DB geometrico corrente
EgtSetCurrentContext(m_nVeinCtx)
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
' escludo dalla ricerca le alette
Dim sCMP As String = String.Empty
EgtGetInfo(nId, "CMP", sCMP)
If sCMP = "AlzFront" Then
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
Continue While
End If
' Recupero gruppo regione
Dim nOutLoopLayId As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP)
' Entità lato
Dim nSideId As Integer = EgtGetFirstInGroup(nOutLoopLayId)
While nSideId <> GDB_ID.NULL
Dim sInfoGUID As String = String.Empty
EgtGetInfo(nSideId, "RefAF", sInfoGUID)
If Not String.IsNullOrEmpty(sInfoGUID) Then
Dim Item As Aletta
For Each Item In m_ListAlzFront
If Item.RefGUID = sInfoGUID Then
Item.IdSideRef = nSideId
End If
Next
' ricerco nella lista delle alette il suo
End If
nSideId = EgtGetNext(nSideId)
End While
' Passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
Return True
End Function
Friend Function AssemblyParts(ByVal ThicknessRaw As Double) As Boolean
Dim CurrContext As Integer = EgtGetCurrentContext()
' per definizione un piano cucicina deve avere lo stesso spessore delle alette
'(abbiamo dato per scontato che le alette siano realizate sullo stesso grezzo del pinao cucina...)
CreateListAlzAndFront()
LinkReferencesOnAlette()
EgtSetCurrentContext(m_nVeinCtx)
' costruisco tutti i piani cucina (recupero l'Id geometrico del VeinMatch)
Dim nId As Integer = EgtGetFirstPart()
While nId <> GDB_ID.NULL
Dim sInfoName As String = String.Empty
EgtGetInfo(nId, "CMP", sInfoName)
' recuoer
Dim sNominalThickness As String = String.Empty
EgtGetInfo(nId, "RawTN", sNominalThickness)
' verifico che il pezzo sia una piano cucina
If sInfoName.Contains("PCucina") Or sInfoName.Contains("PBagno") Then
If Not CreateKitchenTop(nId, ThicknessRaw) Then Return False
End If
' altrimenti passo al pezzo successivo
nId = EgtGetNextPart(nId)
End While
' costruisco alzatine e frontalini
Dim Item As Aletta
For Each Item In m_ListAlzFront
' verifico che il disegno 3D non sia già stato fatto
Dim nInfo3D As Integer = 0
EgtGetInfo(Item.SideId, "Info3D", nInfo3D)
If nInfo3D <> 1 Then
' EgtSetInfo(Item.SideId, "Info3D", 1)
' creo il solido
If Not CreateAlettaSolid(Item, ThicknessRaw) Then Return False
'' posiziono il solido
'If Not MoveAlettaSolid(Item, ThicknessRaw) Then Return False
End If
' posiziono il solido
If Not MoveAlettaSolid(Item, ThicknessRaw) Then Return False
' solo se arrivo fino a qui allora imposto l'info
EgtSetInfo(Item.SideId, "Info3D", 1)
Next
Draw()
Return True
End Function
Friend Function CreateKitchenTop(ByRef nId As Integer, ByRef ThicknessRaw As Double) As Boolean
' creo o svuoto layer per facce del solido
Dim nSolidGrp As Integer = EgtGetFirstNameInGroup(nId, NAME_VM_SOLID)
If nSolidGrp <> GDB_ID.NULL Then
EgtEmptyGroup(nSolidGrp)
Else
nSolidGrp = EgtCreateGroup(nId)
EgtSetName(nSolidGrp, NAME_VM_SOLID)
End If
' recupero faccia top
Dim nRegGrp As Integer = EgtGetFirstNameInGroup(nId, NAME_REGION)
Dim nTopFr As Integer = EgtGetFirstInGroup(nRegGrp)
While nTopFr <> GDB_ID.NULL
If EgtGetType(nTopFr) = GDB_TY.SRF_FRGN Then Exit While
nTopFr = EgtGetNext(nTopFr)
End While
If nTopFr = GDB_ID.NULL Then Return False
EgtSetStatus(nTopFr, 0)
' setto colore per il solido
Dim cCol As New Color3d
EgtGetColor(nTopFr, cCol)
EgtSetColor(nSolidGrp, cCol)
' creo il solido
Dim bSameLoopsNbr As Boolean
Dim nSolidId As Integer
If Not CreateKitchenBaseSolid(nTopFr, nSolidGrp, ThicknessRaw, nSolidId, bSameLoopsNbr) Then Return False
' aggiungo componenti interni
If Not AddInternalComponents(nSolidId, nTopFr, bSameLoopsNbr, ThicknessRaw) Then Return False
' setto eventuale texture
Dim sTextName As String = String.Empty
EgtGetTextureName(nTopFr, sTextName)
If sTextName <> String.Empty Then
Dim frText As New Frame3d
EgtGetTextureFrame(nTopFr, nRegGrp, frText)
EgtSetTextureName(nSolidId, sTextName)
EgtSetTextureFrame(nSolidId, frText)
End If
' elimino curve ausiliarie
Dim nIdx As Integer = EgtGetFirstInGroup(nSolidGrp)
While nIdx <> GDB_ID.NULL
Dim newId As Integer = EgtGetNext(nIdx)
If EgtGetType(nIdx) <> GDB_TY.SRF_MESH Then
EgtErase(nIdx)
End If
nIdx = newId
End While
'Dim nOutloopGrpOrig As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP & ".orig")
'If nOutloopGrpOrig <> GDB_ID.NULL Then
' EgtSetStatus(nOutloopGrpOrig, 1)
' Dim nOutloopGrp As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP)
' EgtSetStatus(nOutloopGrp, 0)
'End If
Return True
End Function
Friend Function CreateKitchenBaseSolid(ByRef nTopFr As Integer, ByRef nSolidGrp As Integer, ByRef ThicknessRaw As Double,
ByRef nSolidStm As Integer, ByRef bSameLoopsNbr As Boolean) As Boolean
' creo la faccia bottom
Dim nBottomFr As Integer
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nTopFr))
If Not EgtCalcFlatPartDownRegion(nPartId, ThicknessRaw) Then Return False
Dim nDwnRegGrp As Integer = EgtGetFirstNameInGroup(nPartId, "DwnReg")
If nDwnRegGrp <> GDB_ID.NULL Then
EgtSetStatus(nDwnRegGrp, 0)
nBottomFr = EgtGetFirstInGroup(nDwnRegGrp)
If nBottomFr = GDB_ID.NULL Then Return False
Else
nBottomFr = EgtCopy(nTopFr, nSolidGrp)
End If
Dim vtMove As Vector3d = -ThicknessRaw * Vector3d.Z_AX()
EgtMove(nBottomFr, vtMove)
EgtSetStatus(nBottomFr, 0)
' superficie laterale
Dim nTopCrvCount, nBottomCrvCount As Integer
Dim nTopCrv, nBottomCrv As Integer
nTopCrv = EgtExtractSurfFrChunkLoops(nTopFr, 0, nSolidGrp, nTopCrvCount)
nBottomCrv = EgtExtractSurfFrChunkLoops(nBottomFr, 0, nSolidGrp, nBottomCrvCount)
' modifico il punto iniziale della curva bottom per ottenere una buona superficie rigata
Dim ptStartTop As Point3d
EgtStartPoint(nTopCrv, ptStartTop)
EgtChangeClosedCurveStartPoint(nBottomCrv, ptStartTop - vtMove)
Dim nLateralStm As Integer = EgtCreateSurfTmRuled(nSolidGrp, nBottomCrv, nTopCrv, 0, EPS_STM)
' superfici trimesh per faccia top e bottom
Dim nTopStm, nBottomStm As Integer
bSameLoopsNbr = (nTopCrvCount = nBottomCrvCount)
If bSameLoopsNbr Then
If Not GetSrfTmFromFlatRegion(nTopFr, nSolidGrp, nTopStm) Then Return False
If Not GetSrfTmFromFlatRegion(nBottomFr, nSolidGrp, nBottomStm) Then Return False
Else
' creo le facce top e bottom dimenticando eventuali aperture
nTopStm = EgtCreateSurfTmByFlatContour(nSolidGrp, nTopCrv, EPS_STM)
nBottomStm = EgtCreateSurfTmByFlatContour(nSolidGrp, nBottomCrv, EPS_STM)
End If
EgtInvertSurface(nBottomStm)
nSolidStm = EgtCreateSurfTmBySewing(nSolidGrp, 3, {nTopStm, nBottomStm, nLateralStm}, True)
' elimino il layer generato dalla funzione "EgtCalcFlatPartDownRegion" e rinomino quello acceso
Dim nOutLoopOrig As Integer = EgtGetFirstNameInGroup(nPartId, NAME_OUTLOOP & ".orig")
If nOutLoopOrig <> GDB_ID.NULL Then
Dim nCurrOutLoop As Integer = EgtGetFirstNameInGroup(nPartId, NAME_OUTLOOP)
EgtErase(nCurrOutLoop)
EgtSetName(nOutLoopOrig, NAME_OUTLOOP)
EgtSetStatus(nOutLoopOrig, GDB_ST.ON_)
End If
Return nSolidStm <> GDB_ID.NULL
End Function
Friend Function AddInternalComponents(ByRef nSolidStm As Integer, ByRef nTopFr As Integer, ByRef bSameLoopsNbr As Boolean,
ByRef ThicknessRaw As Double) As Boolean
Dim nSolidGrp = EgtGetParent(nSolidStm)
' aperture interne
Dim nTopCrvCount As Integer
Dim nTopCrv As Integer = EgtExtractSurfFrChunkLoops(nTopFr, 0, nSolidGrp, nTopCrvCount)
If bSameLoopsNbr Then
Dim FacesStm(nTopCrvCount - 1) As Integer
FacesStm(0) = nSolidStm
' creo le superfici laterali definite dalle aperture
For i As Integer = 1 To nTopCrvCount - 1
FacesStm(i) = EgtCreateSurfTmByExtrusion(nSolidGrp, 1, {nTopCrv + i}, -ThicknessRaw * Vector3d.Z_AX(), EPS_STM)
EgtInvertSurface(FacesStm(i))
Next
nSolidStm = EgtCreateSurfTmBySewing(nSolidGrp, nTopCrvCount, FacesStm, True)
Else
' creo le aperture per sottrazione di solidi
For i As Integer = 1 To nTopCrvCount - 1
Dim nComponentSrf As Integer = EgtCreateSurfTmByRegionExtrusion(nSolidGrp, 1, {nTopCrv + i}, -(ThicknessRaw + 10) * Vector3d.Z_AX(), EPS_STM)
EgtSurfTmSubtract(nSolidStm, nComponentSrf)
EgtErase(nComponentSrf)
Next
End If
' ribassi
Dim nId As Integer = EgtGetFirstGroupInGroup(EgtGetParent(nSolidGrp))
While nId <> GDB_ID.NULL
Dim sName As String = ""
EgtGetName(nId, sName)
If sName <> "Pocket" Then
nId = EgtGetNextGroup(nId)
Continue While
End If
' cerco curva composita che definisce il ribasso
Dim nCrvCompoId As Integer = EgtGetFirstInGroup(nId)
While nCrvCompoId <> GDB_ID.NULL
If EgtGetType(nCrvCompoId) = GDB_TY.CRV_COMPO Then Exit While
nCrvCompoId = EgtGetNext(nCrvCompoId)
End While
Dim dThick As Double
EgtCurveThickness(nCrvCompoId, dThick)
Dim vtExtr As Vector3d
EgtCurveExtrusion(nCrvCompoId, vtExtr)
Dim nRecessSrf As Integer = EgtCreateSurfTmByRegionExtrusion(nId, 1, {nCrvCompoId}, (dThick + 100) * vtExtr, EPS_STM)
EgtSurfTmSubtract(nSolidStm, nRecessSrf)
EgtErase(nRecessSrf)
' Passo al pezzo successivo
nId = EgtGetNextGroup(nId)
End While
Return True
End Function
Friend Function GetSrfTmFromFlatRegion(ByRef nFlatRegion As Integer, ByRef nSolidGrp As Integer, ByRef nSrfTmId As Integer) As Boolean
If nFlatRegion = GDB_ID.NULL Then Return False
' curve che delimitano la superficie
Dim nCrvCount As Integer
Dim nCrv As Integer = EgtExtractSurfFrChunkLoops(nFlatRegion, 0, nSolidGrp, nCrvCount)
If nCrv = GDB_ID.NULL Then Return False
' creo array con gli indici delle curve
Dim CrvList(nCrvCount - 1) As Integer
For i As Integer = 0 To nCrvCount - 1
CrvList(i) = nCrv + i
Next
nSrfTmId = EgtCreateSurfTmByRegion(nSolidGrp, CrvList, EPS_STM)
' cancello le curve create
For i As Integer = 0 To nCrvCount - 1
EgtErase(CrvList(i))
Next
Return nSrfTmId <> GDB_ID.NULL
End Function
Friend Function CreateAlettaSolid(ByRef Item As Aletta, ByRef ThicknessRaw As Double) As Boolean
' angoli per i tagli
Dim dAngL, dAngR, dAng As Double
EgtGetInfo(Item.SideId + 1, INFO_SIDE_ANGLE, dAngR)
EgtGetInfo(Item.SideId + 3, INFO_SIDE_ANGLE, dAngL)
EgtGetInfo(Item.SideId, INFO_SIDE_ANGLE, dAng)
If Math.Abs(dAngL - 90) < EPS_SMALL Or Math.Abs(dAngL + 90) < EPS_SMALL Then dAngL = 0
If Math.Abs(dAngR - 90) < EPS_SMALL Or Math.Abs(dAngR + 90) < EPS_SMALL Then dAngR = 0
If Math.Abs(dAng - 90) < EPS_SMALL Or Math.Abs(dAng + 90) < EPS_SMALL Then dAng = 0
' punti che delimitano la front face (faccia adiacente a top lungo il lato di riferimento)
Dim pt1, pt2, pt3, pt4 As Point3d
EgtStartPoint(Item.SideId, pt4)
EgtEndPoint(Item.SideId, pt3)
pt2 = pt3 - ThicknessRaw * Vector3d.Z_AX()
pt1 = pt4 - ThicknessRaw * Vector3d.Z_AX()
' aggiungo tagli inclinati
pt2 = pt2 + ThicknessRaw * Math.Tan(dAngR * Math.PI / 180) * Vector3d.X_AX()
pt1 = pt1 - ThicknessRaw * Math.Tan(dAngL * Math.PI / 180) * Vector3d.X_AX()
' aggiungo eventuale taglio sul lato superiore
pt2 = pt2 - ThicknessRaw * Math.Tan(dAng * Math.PI / 180) * Vector3d.Y_AX()
pt1 = pt1 - ThicknessRaw * Math.Tan(dAng * Math.PI / 180) * Vector3d.Y_AX()
' punti che delimitano back face
Dim HeightTop As Double
EgtCurveLength(Item.SideId + 1, HeightTop)
Dim HeightBottom As Double = HeightTop + ThicknessRaw * Math.Tan(dAng * Math.PI / 180)
Dim ptB1 As Point3d = pt1 + HeightBottom * Vector3d.Y_AX()
Dim ptB2 As Point3d = pt2 + HeightBottom * Vector3d.Y_AX()
Dim ptB3 As Point3d = pt3 + HeightTop * Vector3d.Y_AX()
Dim ptB4 As Point3d = pt4 + HeightTop * Vector3d.Y_AX()
' Creo o svuoto layer per facce del solido
Dim nSolidGrp As Integer = EgtGetFirstNameInGroup(Item.PartId, NAME_VM_SOLID)
If nSolidGrp <> GDB_ID.NULL Then
EgtEmptyGroup(nSolidGrp)
Else
nSolidGrp = EgtCreateGroup(Item.PartId)
EgtSetName(nSolidGrp, NAME_VM_SOLID)
End If
Dim nRegionGrp As Integer = EgtGetFirstNameInGroup(Item.PartId, NAME_REGION)
Dim cCol As New Color3d
EgtGetColor(EgtGetFirstInGroup(nRegionGrp), cCol)
EgtSetColor(nSolidGrp, cCol)
' Top Face
Dim nTopSrfFR As Integer = EgtGetFirstInGroup(nRegionGrp)
Dim tmp As Integer
Dim nTopCrv As Integer = EgtExtractSurfFrChunkLoops(nTopSrfFR, 0, nRegionGrp, tmp)
If nTopCrv = GDB_ID.NULL Then Return False
Dim nTopSrf As Integer = EgtCreateSurfTmByRegion(nSolidGrp, {nTopCrv}, EPS_SMALL)
EgtErase(nTopCrv)
EgtSetStatus(nTopSrfFR, 0)
Dim nFrontSrf, nBackSrf, nBottomSrf, nRightSrf, nLeftSrf As Integer
' Front Face
If Not CreateSolidFace(nSolidGrp, {pt1, pt2, pt3, pt4}, nFrontSrf, False) Then Return False
' Back Face
If Not CreateSolidFace(nSolidGrp, {ptB1, ptB4, ptB3, ptB2}, nBackSrf) Then Return False
' Bottom face
If Not CreateSolidFace(nSolidGrp, {pt2, pt1, ptB1, ptB2}, nBottomSrf) Then Return False
' Right face
If Not CreateSolidFace(nSolidGrp, {ptB1, pt1, pt4, ptB4}, nRightSrf) Then Return False
' Left face
If Not CreateSolidFace(nSolidGrp, {ptB2, ptB3, pt3, pt2}, nLeftSrf) Then Return False
' creo il solido
Dim nSolidSrf As Integer = EgtCreateSurfTmBySewing(nSolidGrp, 6, {nTopSrf, nFrontSrf, nBackSrf, nBottomSrf, nRightSrf, nLeftSrf}, True)
' setto eventuale texture
Dim sTextName As String = String.Empty
EgtGetTextureName(nTopSrfFR, sTextName)
If sTextName <> String.Empty Then
Dim frText As New Frame3d
EgtGetTextureFrame(nTopSrfFR, nRegionGrp, frText)
EgtSetTextureName(nSolidSrf, sTextName)
EgtSetTextureFrame(nSolidSrf, frText)
End If
Dim nOutloopGrp As Integer = EgtGetParent(Item.SideId)
EgtSetStatus(nOutloopGrp, 0)
Return True
End Function
Friend Function CreateSolidFace(ByRef nSrfGrp As Integer, ByRef Points As Point3d(), ByRef nSrfId As Integer,
Optional ByRef bDeleteCrv As Boolean = True) As Boolean
If Points.Count() <> 4 Then Return False
Dim nCrvId As Integer = EgtCreateCurveCompo(nSrfGrp, {EgtCreateLine(nSrfGrp, Points(0), Points(1)),
EgtCreateLine(nSrfGrp, Points(1), Points(2)),
EgtCreateLine(nSrfGrp, Points(2), Points(3)),
EgtCreateLine(nSrfGrp, Points(3), Points(0))}, True)
If nCrvId = GDB_ID.NULL Then Return False
nSrfId = EgtCreateSurfTmByRegion(nSrfGrp, {nCrvId}, EPS_SMALL)
If bDeleteCrv Then
EgtErase(nCrvId)
Else
EgtSetStatus(nCrvId, GDB_ST.OFF)
End If
Return nSrfId <> GDB_ID.NULL
End Function
Friend Function MoveAlettaSolid(ByRef Item As Aletta, ByRef ThicknessRaw As Double) As Boolean
' A: alzatina, F: frontalino
Dim nType As Integer
If Not EgtGetInfo(Item.IdSideRef, "AF", nType) Then Return False
Dim ptSRef, ptERef, ptS, ptE As Point3d
' Piano cucina
If Not EgtStartPoint(Item.IdSideRef, GDB_ID.ROOT, ptSRef) Then Return False
If Not EgtEndPoint(Item.IdSideRef, GDB_ID.ROOT, ptERef) Then Return False
' AlzFront
If Not EgtStartPoint(Item.SideId, GDB_ID.ROOT, ptS) Then Return False
If Not EgtEndPoint(Item.SideId, GDB_ID.ROOT, ptE) Then Return False
' vettore lato cucina
Dim vtRotRef As Vector3d = ptERef - ptSRef
' vettore lato AlzFront
Dim vtRot As Vector3d = ptE - ptS
' ruoto il solido intorno al lato di riferimento
If nType = ALETTE.A Then
EgtRotate(Item.PartId, ptE, vtRot, 90, GDB_RT.GLOB)
ElseIf nType = ALETTE.F Then
EgtRotate(Item.PartId, ptE, vtRot, -90, GDB_RT.GLOB)
End If
' punto di riferimento per la traslazione sul solido
Dim ptSolid As Point3d
If nType = ALETTE.A Then
' cerco id della curva che definisce la front face
Dim nSolidGrp As Integer = EgtGetFirstNameInGroup(Item.PartId, NAME_VM_SOLID)
Dim nFrontCrvId As Integer = EgtGetFirstInGroup(nSolidGrp)
EgtStartPoint(nFrontCrvId, GDB_ID.ROOT, ptSolid)
ElseIf nType = ALETTE.F Then
EgtStartPoint(Item.SideId, GDB_ID.ROOT, ptSolid)
End If
' Dim ItemFrame As New Frame3d
' If Not EgtGetGroupGlobFrame(Item.PartId, ItemFrame) Then Return False
' ptSolid.ToGlob(ItemFrame)
'punto di riferimento per la traslazione sul piano cucina
Dim ptKitchen As Point3d = ptERef
' traslazione
Dim vtMove As Vector3d = ptKitchen - ptSolid
EgtMove(Item.PartId, vtMove, GDB_RT.GLOB)
' eventualmente ruoto per allineare l'alzatina al piano cucina
Dim dLRef, dAngVRef, dAngHRef As Double
vtRotRef.ToSpherical(dLRef, dAngVRef, dAngHRef)
Dim dL, dAngV, dAngH As Double
vtRot.Rotate(Vector3d.Z_AX, 180)
vtRot.ToSpherical(dL, dAngV, dAngH)
Dim dDelta As Double = dAngHRef - dAngH
If Math.Abs(dDelta) < EPS_ANG_SMALL Then Return True
EgtRotate(Item.PartId, ptKitchen, Vector3d.Z_AX, dDelta, GDB_RT.GLOB)
Return True
End Function
End Module
Public Class Aletta
Private m_PartId As Integer = -1
Public ReadOnly Property PartId As Integer
Get
Return m_PartId
End Get
End Property
Private m_SideId As Integer = -1
Public ReadOnly Property SideId As Integer
Get
Return m_SideId
End Get
End Property
Private m_RefGUID As String = String.Empty
Public ReadOnly Property RefGUID As String
Get
Return m_RefGUID
End Get
End Property
Private m_IdSideRef As Integer = -1
Public Property IdSideRef As Integer
Get
Return m_IdSideRef
End Get
Set(value As Integer)
m_IdSideRef = value
End Set
End Property
Sub New(nId As Integer)
m_PartId = nId
' Recupero l'info legata al lato che contiene iil riferiemnto
Dim nOutLoopLayId As Integer = EgtGetFirstNameInGroup(nId, NAME_OUTLOOP)
' Entità lato
Dim nSideId As Integer = EgtGetFirstInGroup(nOutLoopLayId)
While nSideId <> GDB_ID.NULL
Dim sInfoGUID As String = String.Empty
EgtGetInfo(nSideId, "RefAF", sInfoGUID)
If Not String.IsNullOrEmpty(sInfoGUID) Then
m_RefGUID = sInfoGUID
m_SideId = nSideId
Exit While
End If
nSideId = EgtGetNext(nSideId)
End While
End Sub
End Class
+3 -5
View File
@@ -1,9 +1,7 @@
<EgtFloating:EgtFloatingPanel x:Class="InstrumentPanelV"
<DockPanel x:Class="InstrumentPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
IsTopDockable="True" IsBottomDockable="False" IsLeftDockable="False"
IsRightDockable="False" Style="{StaticResource ToolBar_EgtFloatingPanel}">
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5">
<ToggleButton ToolTip="{Binding GetDistToolTip}"
Style="{StaticResource ToolBar_ToggleButton}"
@@ -11,4 +9,4 @@
<Image Source="/Resources/InstrumentPanel/GetDist.png" Stretch="Uniform"/>
</ToggleButton>
</EgtFloating:EgtFloatingPanel>
</DockPanel>
+12
View File
@@ -0,0 +1,12 @@
<DockPanel x:Class="PrintPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5">
<Button ToolTip="{Binding PrintToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding PrintCommand}">
<Image Source="/Resources/InstrumentPanel/Print.png" Stretch="Uniform"/>
</Button>
</DockPanel>
+3
View File
@@ -0,0 +1,3 @@
Public Class PrintPanelV
End Class
+91
View File
@@ -0,0 +1,91 @@
Imports EgtUILib
Imports EgtWPFLib5
Public Class PrintPanelVM
' Definizione comandi
Private m_cmdPrint As ICommand
Public ReadOnly Property PrintToolTip As String
Get
' "Print shading" & vbCrLf & "Print hidden line (Shift)"
Return "Print"
End Get
End Property
#Region "PrintCommand"
Public ReadOnly Property PrintCommand As ICommand
Get
If m_cmdPrint Is Nothing Then
m_cmdPrint = New Command(AddressOf Print)
End If
Return m_cmdPrint
End Get
End Property
Public Sub Print(ByVal param As Object)
Dim SM_Select As SM = SM.SHADING
' Imposto la stampa HiddenLine (non è gestita la stampa WireFrame)
'If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then
' SM_Select = SM.HIDDENLINE
' EgtSetLineAttribs(3)
'End If
' Gestione stampa in funzione del della visualizzazione corrente
If OmagOFFICEMap.refShowPanelVM.WireframeIsChecked Then
SM_Select = SM.WIREFRAME
EgtSetLineAttribs(3)
ElseIf OmagOFFICEMap.refShowPanelVM.HiddenLineIsChecked Then
SM_Select = SM.HIDDENLINE
EgtSetLineAttribs(3)
End If
Dim printDlg As New PrintDialog
Dim sPath = OmagOFFICEMap.refMainWindowVM.MainWindowM.sTempDir & "\Image.png"
If printDlg.ShowDialog() Then
' Recupero le dimensioni dell'area di stampa
Dim dW As Double = printDlg.PrintableAreaWidth
Dim dH As Double = printDlg.PrintableAreaHeight
Try
' Prendo l'immagine corrente per la stampa
Dim colWhite As New Color3d(255, 255, 255)
' Recupero le dimensioni correnti della pagina di disegno
Dim nImgW As Integer = GetWidthDimProjectV()
Dim nImgH As Integer = GetHeightDimProjectV()
If Not EgtGetImage(SM_Select, colWhite, colWhite, nImgW, nImgH, sPath) Then
' Error in creating the print image
EgtOutLog(EgtMsg(50181))
EgtSetLineAttribs(1)
Return
End If
EgtSetLineAttribs(1)
'Metodo complesso di stampa che permette di rilasciare il file :
'carico la bitmap e la metto in uno stream in memoria
Dim stream As System.IO.Stream = New System.IO.MemoryStream()
Dim bitmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(sPath)
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png)
bitmap.Dispose()
' la sposto in una BitmapImage
Dim bitImage As New System.Windows.Media.Imaging.BitmapImage()
bitImage.BeginInit()
bitImage.StreamSource = stream
bitImage.EndInit()
' la sposto in un Visual Control
Dim tmpImg As New Image
tmpImg.BeginInit()
tmpImg.Source = bitImage
tmpImg.Stretch = Stretch.Uniform
tmpImg.EndInit()
' eseguo la stampa
printDlg.PrintVisual(tmpImg, "Parts Layout")
Catch
' Rrror in executing print
EgtOutLog(EgtMsg(50182))
End Try
End If
End Sub
#End Region ' PrintCommand
End Class
+23 -14
View File
@@ -28,16 +28,19 @@
</Grid.RowDefinitions>
<!--Seconda Colonna Terza riga-->
<GroupBox Header="{Binding SetUpMsg}" Grid.Column="1" Grid.Row="2">
<GroupBox Header="{Binding SetUpMsg}" Grid.Column="1" Grid.Row="2"
Style="{StaticResource GroupBoxOptionWnd}">
<Grid>
<ComboBox ItemsSource="{Binding ArchivedSetUpList}"
Style="{StaticResource OptionWnd_ComboBox}"
SelectedItem="{Binding SelectedDefaultSetUp}"
VerticalAlignment="Center"/>
</Grid>
</GroupBox>
<!--Seconda colonna Prima Riga-->
<GroupBox Header="{Binding HolesMsg}" Grid.Column="1" Grid.Row="0">
<GroupBox Header="{Binding HolesMsg}" Grid.Column="1" Grid.Row="0"
Style="{StaticResource GroupBoxOptionWnd}">
<Grid>
<Grid.RowDefinitions>
@@ -75,7 +78,8 @@
<!--Prima Colonna quarta riga - Lista Materiali-->
<GroupBox Header="{Binding MaterialsMsg}" Grid.Column="0"
Grid.Row="3" Grid.RowSpan="5">
Grid.Row="3" Grid.RowSpan="5" Visibility="{Binding Materials_Visibility}"
Style="{StaticResource GroupBoxOptionWnd}">
<DockPanel>
@@ -116,17 +120,19 @@
</Grid>
<ListBox ItemsSource="{Binding MaterialList}"
SelectedItem="{Binding SelMaterial}"
DisplayMemberPath="sName"
Grid.RowSpan="2"
Margin="0,0,0,5"/>
SelectedItem="{Binding SelMaterial}"
Style="{StaticResource OptionWnd_ListBox}"
DisplayMemberPath="sName"
Grid.RowSpan="2"
Margin="0,0,0,5"/>
</DockPanel>
</GroupBox>
<!--Parametri taglio lama-->
<GroupBox Header="{Binding SawParamMsg}">
<GroupBox Header="{Binding SawParamMsg}" Visibility="{Binding SawParam_Visibility}"
Style="{StaticResource GroupBoxOptionWnd}">
<UniformGrid Columns="2" >
<TextBlock Text="{Binding CutExtraLenMsg}"
@@ -157,7 +163,8 @@
</GroupBox>
<!--Seconda colonna, seconda riga-->
<GroupBox Header="{Binding MachineParamMsg}" Grid.Column="1" Grid.Row="1">
<GroupBox Header="{Binding MachineParamMsg}" Grid.Column="1" Grid.Row="1"
Style="{StaticResource GroupBoxOptionWnd}">
<UniformGrid Columns="2">
<TextBlock Text="{Binding SafeZMsg}"
@@ -168,10 +175,11 @@
</GroupBox>
<GroupBox Header="{Binding MillingParamMsg}" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2">
<GroupBox Header="{Binding MillingParamMsg}" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2"
Style="{StaticResource GroupBoxOptionWnd}">
<UniformGrid Rows="3">
<Grid>
<Grid Visibility="{Binding MillingParam_Visibility}">
<TextBlock Text="{Binding CornerCutsMsg}"
Style="{StaticResource OptionTextBlock}"/>
<CheckBox IsChecked="{Binding CornerCuts}"
@@ -183,7 +191,7 @@
<CheckBox IsChecked="{Binding InternalCuts}"
Style="{StaticResource OptionCheckBox}"/>
</Grid>
<UniformGrid Columns="2">
<UniformGrid Columns="2" Visibility="{Binding MillingParam_Visibility}">
<TextBlock Text="{Binding ShortMsg}"
Style="{StaticResource OptionTextBlock}"/>
<EgtWPFLib5:EgtTextBox Text="{Binding ShortCut}"/>
@@ -193,8 +201,9 @@
</GroupBox>
<!--Nesting-->
<GroupBox Header="{Binding NestingParamMsg}" Grid.Column="1" Grid.Row="3" Grid.RowSpan="2">
<!--Nesting-->
<GroupBox Header="{Binding NestingParamMsg}" Grid.Column="1" Grid.Row="3" Grid.RowSpan="2"
Style="{StaticResource GroupBoxOptionWnd}">
<UniformGrid Columns="2" >
+42 -11
View File
@@ -33,7 +33,7 @@ Public Class MachOptionWindowVM
Public Property HolesOffset As String
Get
Return LenToString(CurrentMachine.dHolesOffset, -2)
Return LenToString(CurrentMachine.dHolesOffset, 2)
End Get
Set(value As String)
Dim dHolesOffset As Double = 0
@@ -45,7 +45,7 @@ Public Class MachOptionWindowVM
Public Property HolesOverlap As String
Get
Return LenToString(CurrentMachine.dHolesOverlap, -2)
Return LenToString(CurrentMachine.dHolesOverlap, 2)
End Get
Set(value As String)
Dim dHolesOverlap As Double = 0
@@ -57,7 +57,7 @@ Public Class MachOptionWindowVM
Public Property HolesTolerance As String
Get
Return LenToString(CurrentMachine.dHolesTolerance, -2)
Return LenToString(CurrentMachine.dHolesTolerance, 2)
End Get
Set(value As String)
Dim dHolesTolerance As Double = 0
@@ -82,7 +82,7 @@ Public Class MachOptionWindowVM
Public Property CutExtraLen As String
Get
Return LenToString(CurrentMachine.dCutExtraLen, -2)
Return LenToString(CurrentMachine.dCutExtraLen, 2)
End Get
Set(value As String)
Dim dCutExtraLen As Double = 0
@@ -94,7 +94,7 @@ Public Class MachOptionWindowVM
Public Property AngleCutExtraLen As String
Get
Return LenToString(CurrentMachine.dAngleCutExtraLen, -2)
Return LenToString(CurrentMachine.dAngleCutExtraLen, 2)
End Get
Set(value As String)
Dim dAngleCutExtraLen As Double = 0
@@ -106,7 +106,7 @@ Public Class MachOptionWindowVM
Public Property ExtArcMinRad As String
Get
Return LenToString(CurrentMachine.dExtArcMinRad, -2)
Return LenToString(CurrentMachine.dExtArcMinRad, 2)
End Get
Set(value As String)
Dim dExtArcMinRad As Double = 0
@@ -118,7 +118,7 @@ Public Class MachOptionWindowVM
Public Property IntArcMaxSideAng As String
Get
Return DoubleToString(CurrentMachine.dIntArcMaxSideAng, -2)
Return DoubleToString(CurrentMachine.dIntArcMaxSideAng, 2)
End Get
Set(value As String)
Dim dIntArcMaxSideAng As Double = 0
@@ -144,13 +144,24 @@ Public Class MachOptionWindowVM
End Set
End Property
Public ReadOnly Property SawParam_Visibility As Visibility
Get
' in assenza dell'uscita H1 nascondo i parametri lama
If EgtGetHeadId("H1") = GDB_ID.NULL Then
Return Visibility.Hidden
Else
Return Visibility.Visible
End If
End Get
End Property
#End Region ' Saw Param
#Region "Machine Param"
Public Property SafeZ As String
Get
Return LenToString(CurrentMachine.dSafeZ, -2)
Return LenToString(CurrentMachine.dSafeZ, 2)
End Get
Set(value As String)
Dim dSafeZ As Double = 0
@@ -184,7 +195,7 @@ Public Class MachOptionWindowVM
Public Property ShortCut As String
Get
Return LenToString(CurrentMachine.dShortCut, -2)
Return LenToString(CurrentMachine.dShortCut, 2)
End Get
Set(value As String)
Dim dShortCut As Double = 0
@@ -194,6 +205,16 @@ Public Class MachOptionWindowVM
End Set
End Property
Public ReadOnly Property MillingParam_Visibility As Visibility
Get
If bWaterJet Then
Return Visibility.Hidden
Else
Return Visibility.Visible
End If
End Get
End Property
#End Region ' Milling Param
#Region "Nesting Param"
@@ -264,7 +285,7 @@ Public Class MachOptionWindowVM
Public Property AdditionalTable As String
Get
Return LenToString(CurrentMachine.dAdditionalTable, -2)
Return LenToString(CurrentMachine.dAdditionalTable, 2)
End Get
Set(value As String)
Dim dAdditionalTable As Double = 0
@@ -382,6 +403,12 @@ Public Class MachOptionWindowVM
End Set
End Property
Public ReadOnly Property Materials_Visibility As Visibility
Get
Return If(CurrentMachine.bWaterJet, Visibility.Collapsed, Visibility.Visible)
End Get
End Property
#End Region ' Material
' Definizione comandi
@@ -469,7 +496,11 @@ Public Class MachOptionWindowVM
End Property
Public ReadOnly Property MillingParamMsg As String
Get
Return EgtMsg(MSG_ALARMSPAGEUC + 29)
If bWaterJet Then
Return EgtMsg(91058)
Else
Return EgtMsg(MSG_ALARMSPAGEUC + 29)
End If
End Get
End Property
Public ReadOnly Property CornerCutsMsg As String
+17 -18
View File
@@ -1,26 +1,25 @@
<EgtFloating:EgtFloatingPanel x:Class="MachinePanelV"
<DockPanel x:Class="MachinePanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
IsTopDockable="True" IsBottomDockable="False" IsLeftDockable="False"
IsRightDockable="False"
Background="{StaticResource Omag_Gray}" BorderBrush="{StaticResource Omag_Gray}"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
IsEnabled="{Binding MachPanel_IsEnabled}">
<!--Combobox per selezionare la macchina corrente--><!--
<ComboBox ItemsSource="{Binding Path=MachineList}" DisplayMemberPath="Name"
SelectedItem="{Binding Path=SelectedMachine}" SelectedValuePath="Name"
Height="20" Width="150"/>-->
<Button Command="{Binding ToolDbCommand}" ToolTip="{Binding ToolDBToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="55" Content="{Binding ToolDBMsg}"/>
<Button Command="{Binding MachDbCommand}" ToolTip="{Binding MachiningDbToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="55" Content="{Binding MachiningDbMsg}"/>
<Button Command="{Binding SetUpCommand}" ToolTip="{Binding SetUpToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="55" Content="{Binding SetUpMsg}"
Background="{Binding SetUp_Background}"/>
<Button Command="{Binding MachOptionsCommand}" ToolTip="{Binding OptionsToolTip}">
<Image Source="/Resources/TopCommandBar/Options.png" Height="22" />
</Button>
</EgtFloating:EgtFloatingPanel>
<Button Command="{Binding ToolDbCommand}" ToolTip="{Binding ToolDBToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/NewIcons/DB-utensili.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding MachDbCommand}" ToolTip="{Binding MachiningDbToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/NewIcons/DB-lavorazioni.png" Stretch="UniformToFill"/>
</Button>
<Button Command="{Binding MachOptionsCommand}" ToolTip="{Binding OptionsToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/TopCommandBar/Options.png" Stretch="Uniform" />
</Button>
<Button Command="{Binding SetUpCommand}" ToolTip="{Binding SetUpToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/NewIcons/ToolChangerPos.png" Stretch="Uniform" />
</Button>
<Button Command="{Binding WaterjetDbCommand}" ToolTip="{Binding WaterjetDbToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="70" Content="{Binding WaterjetDbMsg}" Visibility="{Binding WjDb_Visibility}"/>
</DockPanel>
+2 -1
View File
@@ -1,3 +1,4 @@
Public Class MachinePanelV

Public Class MachinePanelV
End Class
+174 -10
View File
@@ -22,6 +22,12 @@ Public Class MyMachinePanelVM
End Set
End Property
Public ReadOnly Property WjDb_Visibility As Visibility
Get
Return If(CurrentMachine.bWaterJet And CurrentMachine.bFromDBWaterJet, Visibility.Visible, Visibility.Collapsed)
End Get
End Property
#Region "Messages"
Public ReadOnly Property ToolDBMsg As String
@@ -39,6 +45,11 @@ Public Class MyMachinePanelVM
Return EgtMsg(MSG_ALARMSPAGEUC + 33)
End Get
End Property
Public ReadOnly Property WaterjetDbMsg As String
Get
Return "DB WaterJet" 'EgtMsg(MSG_MACHINEPAGEUC + 7)
End Get
End Property
#End Region ' Messages
@@ -59,6 +70,11 @@ Public Class MyMachinePanelVM
Return "SetUp"
End Get
End Property
Public ReadOnly Property WaterjetDbToolTip As String
Get
Return "Waterjet DB"
End Get
End Property
#End Region ' ToolTip
@@ -67,6 +83,7 @@ Public Class MyMachinePanelVM
Private m_cmdMachDb As ICommand
Private m_cmdSetUp As ICommand
Private m_cmdMachOptions As ICommand
Private m_cmdWaterjetDb As ICommand
#End Region 'FIELDS & PROPERTIES
@@ -78,16 +95,19 @@ Public Class MyMachinePanelVM
OmagOFFICEMap.SetRefMachinePanelVM(Me)
' recupero cartella radice delle macchine
m_sMachinesRoot = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot
' Carica macchine da cartella delle macchine
Machine.MachineListInit(m_sMachinesRoot, MachineList)
' Inizializzo valori visibilità parametri Db utensili e lavorazioni
OmagOFFICETMDbParamVisibility.Init()
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Sub Init( sMchRoots As String)
' procedo ad inizializzare la classe carico la lista "MachineList" che visualizzo per l'inserimento di nuovi MachGroup
Machine.MachineListInit(sMchRoots, MachineList)
' Inizializzo valori visibilità parametri Db utensili e lavorazioni
OmagOFFICETMDbParamVisibility.Init()
End Sub
''' <summary>
''' Execute the Exec. This method is invoked by the ExecCommand.
''' </summary>
@@ -101,9 +121,70 @@ Public Class MyMachinePanelVM
End If
Dim ToolDbWindowVM As New ToolDbWindowVM(CurrentMachine.sMachDir, CurrentMachine.sMachIniFile, OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx(), "Stone", OmagOFFICEMap.refMainWindowVM.MainWindowM.nUserLevel > 5)
Dim ToolDbWindowV As New ToolDbWindowV(Application.Current.MainWindow, ToolDbWindowVM)
' imposto colori sfondo
Dim BackTopColor As New Color3d(192, 192, 192)
GetMainPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor)
Dim BackBotColor As New Color3d(BackTopColor)
GetMainPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor)
ToolDbWindowVM.SetBackgroundColor(BackTopColor, BackBotColor)
ToolDbWindowVM.bPersonalInterface = True
' Collegata allo stile della GroupBox
ToolDbWindowVM.MyBorderGrbThickness = 0.25
ToolDbWindowVM.MyForegroundGrbColor = Brushes.White
' Definisco lo stile della pagina
ToolDbWindowVM.BorderBrushIsMouseOver = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.GeneralBorderBrush = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.BorderBrushIsFocused = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.BackgroundBrdEnable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.BackgroundBrdDisable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.BackgroundTxBlDisable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.ForegroundTxBlEnable = Brushes.White
ToolDbWindowVM.ForegroundTxBlDisable = Brushes.White
ToolDbWindowVM.GeneralForeground = Brushes.White
ToolDbWindowVM.GeneralBackground = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
' Definisco lo stile della ComboBox
ToolDbWindowVM.BackgroundCmBxTxBl = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.ForegroundCmBxTxBl = Brushes.White
ToolDbWindowVM.BorderThicknessCmBxTxBl = 1.0
ToolDbWindowVM.VerticalContentAlignmentCmBxTxBl = "Center"
ToolDbWindowVM.HeightCmBxTxBl = "25"
ToolDbWindowVM.WidthCmBxTxBl = "Auto"
ToolDbWindowVM.ForegroundTextBoxCmBxTxBl = Brushes.White
'Definisco lo stile del Button
ToolDbWindowVM.BackgroundButton = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.ForegroundButton = Brushes.White
ToolDbWindowVM.BorderBrushButton = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
ToolDbWindowVM.BorderThicknessButton = 1.0
''Definisco lo stile della DataGrid
'ToolDbWindowVM.HeaderVisibility = DataGridHeadersVisibility.Column
'ToolDbWindowVM.BackgroundDataGrid = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.BackGroundHeader = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.ForegroundHeader = Brushes.White
'ToolDbWindowVM.BorderBrushHeader = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.BorderThicknessHeader = 0.0
'ToolDbWindowVM.FontWeightHeader = FontWeights.Bold
'ToolDbWindowVM.BackgroundDataGrid = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.BorderBrushDataGrid = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.BackgroundDataGridRow = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'ToolDbWindowVM.ForegroundDataGridRow = Brushes.White
'ToolDbWindowVM.BorderBrushDataGridRow = Brushes.DarkGray
'ToolDbWindowVM.BorderThicknessDataGridRow = "0 0 0 1"
'ToolDbWindowVM.BorderBrushDataGridCell = Brushes.DarkGray
'ToolDbWindowVM.BorderThicknessDataGridCell = "0 0 1 0"
' Definisco stile New Mach Grouo
' Dim ToolDbWindowV As New ToolDbWindowV(Application.Current.MainWindow, ToolDbWindowVM)
Dim ToolDbWindowV As New MyToolDbWindowV(Application.Current.MainWindow, ToolDbWindowVM)
If ToolDbWindowVM.MatType <> 0 Then
ToolDbWindowV.Height = 640
ToolDbWindowV.Height = 768
ToolDbWindowV.Width = 1024
ToolDbWindowV.ShowDialog()
Else
@@ -122,6 +203,7 @@ Public Class MyMachinePanelVM
''' </summary>
Public Overrides Sub MachDb(ByVal param As Object)
If Not VerifyMachinesDir(m_sMachinesRoot) Then Return
' ricarico il database per intercettare eventuali aggiornamenti fatti da altre istanze del programma (se la cartella Machines è condivisa)
If Not EgtMdbReload() Then
EgtOutLog("Impossible reloading machining Db")
@@ -129,7 +211,60 @@ Public Class MyMachinePanelVM
Return
End If
Dim MachDbWindowVM As New EgtWPFLib5.MachiningDbWindowVM(CurrentMachine.sMachIniFile, OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx(), "Stone", OmagOFFICEMap.refMainWindowVM.MainWindowM.nUserLevel > 5)
Dim MachDbWindowV As New EgtWPFLib5.MachiningDbWindowV(Application.Current.MainWindow, MachDbWindowVM)
' Dim MachDbWindowV As New EgtWPFLib5.MachiningDbWindowV(Application.Current.MainWindow, MachDbWindowVM)
MachDbWindowVM.bPersonalInterface = True
' Collegata allo stile della GroupBox
MachDbWindowVM.MyBorderGrbThickness = 0.25
MachDbWindowVM.MyForegroundGrbColor = Brushes.White
' Definisco lo stile della pagina
MachDbWindowVM.BorderBrushIsMouseOver = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.GeneralBorderBrush = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.BorderBrushIsFocused = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.BackgroundBrdEnable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.BackgroundBrdDisable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.BackgroundTxBlDisable = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.ForegroundTxBlEnable = Brushes.White
MachDbWindowVM.ForegroundTxBlDisable = Brushes.White
MachDbWindowVM.GeneralForeground = Brushes.White
MachDbWindowVM.GeneralBackground = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
' Definisco lo stile della ComboBox
MachDbWindowVM.BackgroundCmBxTxBl = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.ForegroundCmBxTxBl = Brushes.White
MachDbWindowVM.BorderThicknessCmBxTxBl = 1.0
MachDbWindowVM.VerticalContentAlignmentCmBxTxBl = "Center"
MachDbWindowVM.HeightCmBxTxBl = "25"
MachDbWindowVM.WidthCmBxTxBl = "Auto"
MachDbWindowVM.ForegroundTextBoxCmBxTxBl = Brushes.White
'Definisco lo stile del ToggleButton
MachDbWindowVM.BackgroundIsChecked = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.ForegroundIsChecked = Brushes.White
MachDbWindowVM.BorderBrushIsChecked = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
MachDbWindowVM.BorderThicknessIsChecked = 1.0
MachDbWindowVM.OpacityIsChecked = 0.25
'Definisco lo stile della DataGrid
'MachDbWindowVM.HeaderVisibility = DataGridHeadersVisibility.Column
'MachDbWindowVM.BackgroundDataGrid = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#484D55"), Brush)
'MachDbWindowVM.BackGroundHeader = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#484D55"), Brush)
'MachDbWindowVM.ForegroundHeader = Brushes.White
'MachDbWindowVM.BorderBrushHeader = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'MachDbWindowVM.BorderThicknessHeader = 0.0
'MachDbWindowVM.FontWeightHeader = FontWeights.Bold
'MachDbWindowVM.BorderBrushDataGrid = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'MachDbWindowVM.BackgroundDataGridRow = DirectCast(New System.Windows.Media.BrushConverter().ConvertFromString("#1C1D22"), Brush)
'MachDbWindowVM.ForegroundDataGridRow = Brushes.White
'MachDbWindowVM.BorderBrushDataGridRow = Brushes.DarkGray
'MachDbWindowVM.BorderThicknessDataGridRow = "0 0 0 1"
'MachDbWindowVM.BorderBrushDataGridCell = Brushes.DarkGray
'MachDbWindowVM.BorderThicknessDataGridCell = "0 0 1 0"
Dim MachDbWindowV As New MyMachiningDbWindowV(Application.Current.MainWindow, MachDbWindowVM)
If EgtWPFLib5.MachiningTreeViewItem.m_MatType <> 0 Then
MachDbWindowV.Height = 768
@@ -186,14 +321,14 @@ Public Class MyMachinePanelVM
If Not bOkSetUp Then
SetUp_Background = Brushes.Red
Else
SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
If Not bOkMatThick Then
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = Brushes.Red
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = Brushes.Red
Else
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = OmagOFFICEDictionary.TabControl_Header_Background
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
End Sub
@@ -232,7 +367,8 @@ Public Class MyMachinePanelVM
' Reset lua
EgtLuaResetGlobVar("STU")
Dim SetUpWindow As New SetUpWindowV(Application.Current.MainWindow, New MySetUpWindowVM(CurrentMachine.sMachDir, CurrentMachine.sMachineName))
' Dim SetUpWindow As New SetUpWindowV(Application.Current.MainWindow, New MySetUpWindowVM(CurrentMachine.sMachDir, CurrentMachine.sMachineName))
Dim SetUpWindow As New MySetUpWindowV(Application.Current.MainWindow, New MySetUpWindowVM(CurrentMachine.sMachDir, CurrentMachine.sMachineName))
SetUpWindow.Height = 614
SetUpWindow.Width = 1024
SetUpWindow.ShowDialog()
@@ -300,6 +436,34 @@ Public Class MyMachinePanelVM
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
End Sub
#Region "WaterjetDbCommand"
''' <summary>
''' Returns a command that do Exec.
''' </summary>
Public ReadOnly Property WaterjetDbCommand As ICommand
Get
If m_cmdWaterjetDb Is Nothing Then
m_cmdWaterjetDb = New Command(AddressOf WaterjetDb)
End If
Return m_cmdWaterjetDb
End Get
End Property
''' <summary>
''' Execute the Exec. This method is invoked by the ExecCommand.
''' </summary>
Public Sub WaterjetDb(ByVal param As Object)
' Dim WaterjetDbWindow As New WaterjetDbWindowV(Application.Current.MainWindow, New WaterjetDbWindowVM(CurrentMachine.sMachDir))
Dim WaterjetDbWindow As New MyWaterjetDbWindowV(Application.Current.MainWindow, New WaterjetDbWindowVM(CurrentMachine.sMachDir))
WaterjetDbWindow.Height = 546
WaterjetDbWindow.Width = 846
WaterjetDbWindow.ShowDialog()
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
End Sub
#End Region ' SpeedDbCommand
#End Region ' METHODS
End Class
+47 -5
View File
@@ -86,13 +86,29 @@ Public Class MainWindowM
Return m_sTempDir
End Get
End Property
'------------------INIZIO Gestione elenco direttori macchine ------------------
Private m_sMachinesRootList As New List(Of String)
Friend ReadOnly Property sMachinesRootList As List(Of String)
Get
Return m_sMachinesRootList
End Get
End Property
'------------------FINE Gestione elenco direttori macchine ------------------
Private m_sMachinesRoot As String
Friend ReadOnly Property sMachinesRoot As String
Friend Property sMachinesRoot As String
Get
Return m_sMachinesRoot
End Get
Set(value As String)
m_sMachinesRoot = value
End Set
End Property
Private m_sToolMakersDir As String
Friend ReadOnly Property sToolMakersDir As String
Get
Return m_sToolMakersDir
@@ -168,10 +184,20 @@ Public Class MainWindowM
Directory.CreateDirectory(m_sBackUpDir)
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
' Impostazione direttorio per le macchine
Dim nIndexDir As Integer = 1
Dim sCurrMachineDir As String = String.Empty
While GetMainPrivateProfileString(S_MACH, K_MACHINESDIR & nIndexDir.ToString, "", sCurrMachineDir) <> 0
If VerifyMachineIsUnique(sCurrMachineDir) Then
m_sMachinesRootList.Add(sCurrMachineDir)
End If
nIndexDir += 1
End While
' Impostazione direttorio (versioni precedenti 2.4i2) per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Carico il direttorio nell'elenco dei direttori macchina
If Not String.IsNullOrEmpty(m_sMachinesRoot) Then m_sMachinesRootList.Add(m_sMachinesRoot)
' Impostazione direttorio per toolmakers
If GetMainPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir) = 0 Then
m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_DFL_DIR
@@ -192,11 +218,13 @@ Public Class MainWindowM
Dim sNestKey As String = ""
EgtUILib.GetPrivateProfileString( S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
EgtSetNestKey( sNestKey)
Dim bNetHwKey As Boolean = ( GetMainPrivateProfileInt(S_GENERAL, K_NETKEY, 0) = 1)
EgtSetNetHwKey( bNetHwKey)
' Verifico abilitazione nesting automatico
m_bAutoNestOption = Not String.IsNullOrWhiteSpace( sNestKey)
' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2309, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2309, 1, m_nKeyOptions)
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2509, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2509, 1, m_nKeyOptions)
' Verifico abilitazione prodotto
Dim bProd As Boolean = GetKeyOption(KEY_OPT.OFFICE_BASE)
' Inizializzazione generale di EgtInterface
@@ -267,12 +295,26 @@ Public Class MainWindowM
EgtOutLog("KeyOptions : " & bKey.ToString() & " " & m_nKeyOptions.ToString() & " " & bProd.ToString())
EgtPHOTOLib.MainData.SetConfigDir(m_sConfigDir)
EgtPHOTOLib.MainData.SetKeyLevel(m_nKeyLevel)
EgtPHOTOLib.MainData.SetKeyOptions( CInt( m_nKeyOptions))
EgtPHOTOLib.MainData.SetKeyOptions(CInt(m_nKeyOptions))
EgtPHOTOLib.MainData.SetPhotoDir(m_sPhotoDir)
EgtPHOTOLib.MainData.SetBackUpDir(m_sBackUpDir)
EgtPHOTOLib.MainData.SetIsOmagOFFICE(True)
EgtPHOTOLib.MainData.SetUser(Environment.MachineName & "\" & Environment.UserName & " (" & nInstance.ToString() & ")")
Dim sIdKey As String = String.Empty
EgtGetKeyInfo(sIdKey)
EgtPHOTOLib.MainData.SetKey(sIdKey)
End Sub
' verifico che il nome da inserire non esista già in elenco
Private Function VerifyMachineIsUnique(sMachDir As String) As Boolean
For Each sDir As String In m_sMachinesRootList
If String.Compare( sDir.Trim().TrimEnd("\"c), sMachDir.Trim().TrimEnd("\"c), True) = 0 Then
Return False
End If
Next
Return True
End Function
Private Sub ManageInstance()
Dim bCreated As Boolean
Try
+14 -9
View File
@@ -4,24 +4,29 @@
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
DataContext="{StaticResource MainWindowVM}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Style="{DynamicResource MainWindowStyle}"
Title="{Binding Title}" Icon="/Resources/OmagOFFICE.ico"
MinHeight="600" MinWidth="800"
AboutBoxCommand="{Binding AboutBoxCommand}" WindowStyle="None" ResizeMode="NoResize"
CloseCommand="{Binding CloseApplicationCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">
CloseCommand="{Binding CloseApplicationCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
Background="{StaticResource Omag_DarkGray}">
<EgtWPFLib5:EgtCustomWindow.TitlePanel>
<OmagOFFICE:TopCommandBarV DataContext="{StaticResource TopCommandBarVM}"/>
</EgtWPFLib5:EgtCustomWindow.TitlePanel>
<EgtWPFLib5:EgtCustomWindow.InputBindings>
<KeyBinding Key="Escape" Command="{Binding EscapeCommand}"/>
</EgtWPFLib5:EgtCustomWindow.InputBindings>
<!--Pannello principale -->
<DockPanel>
<DockPanel>
<!--StatusBar -->
<OmagOFFICE:StatusBarV DataContext="{StaticResource StatusBarVM}"
<!--StatusBar -->
<OmagOFFICE:StatusBarV DataContext="{StaticResource StatusBarVM}"
DockPanel.Dock="Bottom"/>
<!--Progetto corrente -->
<OmagOFFICE:ProjectV DataContext="{StaticResource ProjectVM}"/>
<!--Progetto corrente -->
<OmagOFFICE:ProjectV DataContext="{StaticResource ProjectVM}"/>
</DockPanel>
</DockPanel>
</EgtWPFLib5:EgtCustomWindow>
+22
View File
@@ -45,6 +45,7 @@ Public Class MainWindowVM
' definizione comandi
Private m_cmdAboutBox As ICommand
Private m_cmdCloseApplication As ICommand
Private m_cmdEscape As ICommand
#Region "CONSTRUCTOR"
@@ -136,6 +137,27 @@ Public Class MainWindowVM
#Region "COMMANDS"
#Region "Escape"
Public ReadOnly Property EscapeCommand() As ICommand
Get
If m_cmdEscape Is Nothing Then
m_cmdEscape = New Command(AddressOf Escape)
End If
Return m_cmdEscape
End Get
End Property
Public Sub Escape()
If Not IsNothing(OmagOFFICEMap.refSplitModeVM) Then
OmagOFFICEMap.refSplitModeVM.DeactiveSplitCut()
OmagOFFICEMap.refSplitModeVM.DeselectWJBridgesPart()
OmagOFFICEMap.refSplitModeVM.ResetAllMark()
End If
End Sub
#End Region
#Region "AboutBoxCommand"
' Returns a command that manage the MainWindow_Unloaded command
+5 -5
View File
@@ -28,9 +28,9 @@ Imports System.Windows
<Assembly: AssemblyDescription("OmagOFFICE 32 bit")>
#End If
#End If
<Assembly: AssemblyCompany("EgalTech s.r.l.")>
<Assembly: AssemblyProduct("OmagOFFICE")>
<Assembly: AssemblyCopyright("Copyright © 2017-2021 by EgalTech s.r.l.")>
<Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("OmagOFFICE")>
<Assembly: AssemblyCopyright("Copyright © 2017-2023 by Egalware s.r.l.")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(false)>
'In order to begin building localizable applications, set
@@ -69,6 +69,6 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.3.10.1")>
<Assembly: AssemblyFileVersion("2.3.10.1")>
<Assembly: AssemblyVersion("2.5.9.5")>
<Assembly: AssemblyFileVersion("2.5.9.5")>
+79
View File
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- Opzioni manifesto di Controllo dell'account utente
Per modificare il livello di Controllo dell'account utente di Windows, sostituire il
nodo requestedExecutionLevel con uno dei seguenti.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Se si specifica l'elemento requestedExecutionLevel, la funzionalità Virtualizzazione file system e registro di sistema verrà disabilitata.
Rimuovere questo elemento se l'applicazione richiede questa virtualizzazione per
compatibilità con le versioni precedenti.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Elenco delle versioni di Windows in cui è stata testata questa applicazione e
per cui è stato previsto l'uso. Rimuovere il commento dagli elementi appropriati per
fare in modo che Windows selezioni automaticamente l'ambiente più compatibile. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- Indica che l'applicazione è sensibile ai valori DPI e non verrà scalata automaticamente da Windows in caso di
valori DPI maggiori. Le applicazioni Windows Presentation Foundation (WPF) sono automaticamente sensibili ai valori DPI, pertanto non è necessario
acconsentire esplicitamente. Con le applicazioni Windows Forms destinate a .NET Framework 4.6 per cui è stato acconsentito esplicitamente a questa impostazione,
è anche necessario impostare 'EnableWindowsFormsHighDpiAutoResizing' su 'true' nel relativo file app.config.
Imposta l'applicazione in modo riconosca i percorsi lunghi. Vedere https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
-->
<!-- Abilita i temi per finestre di dialogo e controlli comuni di Windows (Windows XP e versioni successive) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>
+109
View File
@@ -0,0 +1,109 @@
<UserControl x:Class="MyMachGroupPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Visibility="{Binding MachGroupPanel_Visibility}">
<!--<EgtFloating:EgtFloatingPanel.Resources>
<SolidColorBrush x:Key="ListBox.Static.Background" Color="#FFFFFFFF"/>
<SolidColorBrush x:Key="ListBox.Static.Border" Color="#FFABADB3"/>
<SolidColorBrush x:Key="ListBox.Disabled.Background" Color="#FFFFFFFF"/>
<SolidColorBrush x:Key="ListBox.Disabled.Border" Color="#FFD9D9D9"/>
<Style x:Key="MachiningGroupListBox" TargetType="{x:Type ListBox}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
<Setter Property="ScrollViewer.PanningMode" Value="Both"/>
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</EgtFloating:EgtFloatingPanel.Resources>-->
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding MachGroupList}" SelectedItem="{Binding SelectedMachGroup}"
Background="Transparent" BorderThickness="0">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="MachiningGroups"
Height="30" MaxWidth="150" MinWidth="50" Padding="5,0,5,0"
ToolTip="{Binding MachGroupToolTip}"
IsChecked="{Binding Path=IsSelected,
RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}},
Mode=TwoWay}"
IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
VerticalContentAlignment="Center" HorizontalContentAlignment="Center"
Style="{StaticResource ToolBar_TextToggleButton}">
<RadioButton.Content>
<TextBlock Text="{Binding Name}" Foreground="white"/>
</RadioButton.Content>
</RadioButton>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="0" SnapsToDevicePixels="true">
<EgtWPFLib5:EgtScrollViewer IsPageSlideCommand="True" Focusable="false" Padding="{TemplateBinding Padding}" IsCustom="True" Orientation="Horizontal" RepeatButtonDimension="20">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</EgtWPFLib5:EgtScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="Bd" Value="DeepPink"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="LightPink"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsGrouping" Value="true"/>
<!--<Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>-->
</MultiTrigger.Conditions>
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ListBox.Template>
</ListBox>
<Button Content="+" Height="20" Width="20" VerticalAlignment="Center" Focusable="False"
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"
Padding="0,0,0,5"
Margin="3,0,5,0" Command="{Binding AddMachGroupCommand}" Grid.Column="1"
IsEnabled="{Binding IsEnabledAddRemove}"/>
<Button Content="-" Height="20" Width="20" VerticalAlignment="Center" Focusable="False"
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"
Padding="0,0,0,5"
Margin="0,0,5,0" Command="{Binding RemoveMachGroupCommand}" Grid.Column="2"
IsEnabled="{Binding IsEnabledAddRemove}"/>
</Grid>
</UserControl>
@@ -0,0 +1,3 @@
Public Class MyMachGroupPanelV
End Class
+30 -11
View File
@@ -33,19 +33,22 @@ Public Class MyMachGroupPanelVM
Sub New()
MyBase.New()
' Recupero la macchina di default
Dim sDefaultMachine As String = String.Empty
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine)
' Creo riferimento a questa classe in OmagOFFICEMap
OmagOFFICEMap.SetRefMachGroupPanelVM(Me)
InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(),
sDefaultMachine, BASE_MACH_GROUP & "1")
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Sub Init()
' Recupero la macchina di default
Dim sDefaultMachine As String = String.Empty
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine)
EgtSetCurrMachine(sDefaultMachine)
InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(), sDefaultMachine, BASE_MACH_GROUP & "1")
End Sub
Public Overrides Sub AddMachGroup()
If NewMachGroup() Then
' creo oggetto gruppo creato
@@ -71,7 +74,9 @@ Public Class MyMachGroupPanelVM
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
MachGroupList.Add(New MyMachGroup(nId, sName, sMachine, EgtGetFirstNameInGroup(nId, "Opers")))
Dim NewMyMachGoup As MyMachGroup = New MyMachGroup(nId, sName, sMachine, EgtGetFirstNameInGroup(nId, "Opers"))
NewMyMachGoup.IsValid = VerifyMachExists(sMachine)
MachGroupList.Add(NewMyMachGoup)
If OmagOFFICEMap.refMainWindowVM.MainWindowM.m_SlabDB Then
Dim sSlabNameDB As String = String.Empty
EgtGetInfo(nId, INFO_SLABNAME, sSlabNameDB)
@@ -99,6 +104,8 @@ Public Class MyMachGroupPanelVM
' Salvo macchina del gruppo come nuovo default
Dim sCurrMachName As String = String.Empty
EgtGetCurrMachineName(sCurrMachName)
CurrentMachine.GetMachineClass(sCurrMachName)
OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath)
WriteMainPrivateProfileString(S_MACH, K_CURRMACH, sCurrMachName)
' Ricarico la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, sCurrMachName,
@@ -111,7 +118,7 @@ Public Class MyMachGroupPanelVM
Dim nTabInd As Integer = 1
Dim nTabCnt As Integer = CamAuto.GetTableCount()
If nTabCnt > 1 And nTabCnt <= 3 Then
Dim dlg As New SelectTableWindowV(Application.Current.MainWindow, New SelectTableWindowVM(nTabCnt))
Dim dlg As New SelectTableWindowV(Application.Current.MainWindow, New SelectTableWindowVM(DirectCast(nTabCnt, SelectTableWindowVM.TableNumOpt)))
dlg.ShowDialog()
nTabInd = dlg.m_SelTable
End If
@@ -152,6 +159,9 @@ Public Class MyMachGroupPanelVM
Public Overrides Function OnPostSetCurrMachGroup() As Boolean
' Imposto vista solo tavola
EgtSetMachineLook(MCH_LOOK.TAB)
CurrentMachine.GetMachineClass(SelectedMachGroup.Machine)
If IsNothing(OmagOFFICEMap.refMachinePanelVM.SelectedMachine) Then Return False
OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath)
' Ricarico la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, SelectedMachGroup.Machine,
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE),
@@ -179,6 +189,10 @@ Public Class MyMachGroupPanelVM
End If
' Verifico che gli utensili delle lavorazioni correnti siano attrezzati (necessario perchè potrei aver cambiato gli utensili delle lavorazioni)
' e che le lavorazioni correnti siano compatibili con materiale e spessore
' Inizializzo l'elenco delle lavorazioni correnti
Dim CurrMachining As New CurrMachWindowVM
' Lama
Dim bOkCurrSawing As Boolean = True
Dim bOkCurrWaterjetting As Boolean = True
@@ -219,23 +233,24 @@ Public Class MyMachGroupPanelVM
Else
bOkCurrWaterjetting = False
End If
' Imposto il colore del pulsante SetUp
If Not bOkSetUp Then
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = Brushes.Red
Else
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
' Imposto il colore di sfondo del pulsante SettingMachinig
If Not bOkMatThick Or Not bOkCurrSawing Then
If Not bOkMatThick Or Not bOkCurrWaterjetting Then
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = Brushes.Red
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = Brushes.Red
Else
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = OmagOFFICEDictionary.TabControl_Header_Background
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
Else
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = OmagOFFICEDictionary.TabControl_Header_Background
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
OmagOFFICEMap.refRawPartTabVM.CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
' Se non esiste il grezzo vado subito alla sua definizione
@@ -248,6 +263,10 @@ Public Class MyMachGroupPanelVM
' aggiungo alla lista delle lastre correnti/orig
Dim sSlabNameDB As String = GetSlabName()
LoadSlabsList(sSlabNameDB)
' imposto la visibilità dei comandi per il waterjet
OmagOFFICEMap.refNestingTabVM.Set_WJ_Cmd_Visibility()
Return True
End Function
+56 -21
View File
@@ -92,38 +92,70 @@
<sys:Int32 x:Key="LpTurns">69</sys:Int32>
<sys:Int32 x:Key="HpTurns">70</sys:Int32>
<sys:Int32 x:Key="ThicknessFeed">71</sys:Int32>
<SolidColorBrush x:Key="ListBorder" Color="#828790"/>
</EgtWPFLib5:EgtCustomWindow.Resources>
<Grid>
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.75*"/>
<ColumnDefinition Width="0.95*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="11*"/>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="12*"/>
</Grid.RowDefinitions>
<UniformGrid Grid.Row="0" Columns="3">
<Button Content="New" Command="{Binding NewCommand}"
<UniformGrid Grid.Row="0" Columns="8">
<Button ToolTip="New" Command="{Binding NewCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledNewBtn, Mode=OneWay}"/>
<Button Content="Save" Command="{Binding SaveCommand}"
IsEnabled="{Binding IsEnabledNewBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/New.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="Save" Command="{Binding SaveCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledSaveBtn, Mode=OneWay}"/>
<Button Content="Remove" Command="{Binding RemoveCommand}"
IsEnabled="{Binding IsEnabledSaveBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Save.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="Remove" Command="{Binding RemoveCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledRemoveBtn, Mode=OneWay}"/>
IsEnabled="{Binding IsEnabledRemoveBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Remove.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="Import" Command="{Binding ImportCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledNewBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Import.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="Export" Command="{Binding ExportCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledSaveBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Export_1.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="Reset" Command="{Binding ReloadMachiningCommand}"
CommandParameter="{Binding Path=SelectedItem, ElementName=MachiningsTreeView}"
IsEnabled="{Binding IsEnabledRemoveBtn, Mode=OneWay}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Reset.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
<TreeView Name="MachiningsTreeView" Grid.Row="1"
ItemsSource="{Binding Path=MachiningsList}">
<TreeView Name="MachiningsTreeView" Grid.Row="1"
Background="Transparent" BorderThickness="0"
ItemsSource="{Binding Path=MachiningsList}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="FontSize" Value="10" />
<Setter Property="Foreground" Value="{StaticResource Omag_White}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsEnabled" Value="{Binding IsEnabled, Mode=TwoWay}" />
@@ -133,23 +165,23 @@
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type EgtWPFLib5:FamilyMachiningTreeViewItem}" ItemsSource="{Binding Items}">
<Grid >
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0,8,6,4" />
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="10" />
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0" />
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="5,0,10,0" VerticalAlignment="Center" HorizontalAlignment="left" />
<Ellipse Grid.Column="2" Height="10" Width="10" Fill="{Binding FamilyColor}" />
</Grid>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type EgtWPFLib5:MachiningTreeViewItem}">
<Grid >
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
@@ -157,14 +189,17 @@
</Grid.ColumnDefinitions>
<!--<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Margin="0,8,6,4" />-->
<TextBlock Grid.Column="1" Text="{Binding NamePar}" Height="18" FontSize="15" Margin="10"/>
<TextBlock Grid.Column="1" Text="{Binding NamePar}" Height="21" FontSize="13" Margin="30,0,10,0"
VerticalAlignment="Center" HorizontalAlignment="left"/>
<Ellipse Grid.Column="2" Height="10" Width="10" Fill="{Binding ToolColor}" />
</Grid>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
@@ -1,21 +1,21 @@
'Imports EgtWPFLib5
Imports EgtWPFLib5
Public Class MyMachiningDbWindowV
' Private WithEvents m_MachiningDbWindowVM As MyMachiningDbWindowVM
Private WithEvents m_MachiningDbWindowVM As EgtWPFLib5.MachiningDbWindowVM
' Sub New(Owner As Window, MachiningDbWindowVM As MyMachiningDbWindowVM)
' MyBase.New(Owner)
' ' This call is required by the designer.
' InitializeComponent()
' Me.DataContext = MachiningDbWindowVM
' ' Assegno al riferimento locale al VM il VM preso dal DataContext
' m_MachiningDbWindowVM = MachiningDbWindowVM
' End Sub
Sub New(Owner As Window, MachiningDbWindowVM As EgtWPFLib5.MachiningDbWindowVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = MachiningDbWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_MachiningDbWindowVM = MachiningDbWindowVM
End Sub
' Private Sub CloseWindow(bDialogResult As Boolean) Handles m_MachiningDbWindowVM.m_CloseWindow
' Me.DataContext = Nothing
' Me.DialogResult = bDialogResult
' End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_MachiningDbWindowVM.m_CloseWindow
Me.DataContext = Nothing
Me.DialogResult = bDialogResult
End Sub
End Class
+104 -32
View File
@@ -33,8 +33,15 @@ Public Class MySceneHostVM
' Recupero e imposto handle finestra principale
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
EgtSetMainWindowHandle(hMainWnd)
' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = GetMachineBaseDirs()
' inizializzo gestore lavorazioni
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
If Not EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) Then
EgtOutLog("Error on loading machines roots: " & sMchRoots)
End If
' inizializzo gestione più macchine
OmagOFFICEMap.refMachinePanelVM.Init(sMchRoots)
OmagOFFICEMap.refMachGroupPanelVM.Init()
Return
End If
' Problemi
@@ -145,23 +152,40 @@ Public Class MySceneHostVM
MainScene.SetSnapPointType(SP.PT_SKETCH)
End Sub
Public Overrides Sub SaveProject()
MyBase.SaveProject()
Public Overrides Function SaveProject() As Boolean
Dim bOk As Boolean = MyBase.SaveProject()
' Imposto stato gestione mouse diretto della scena a nessuno
MainScene.SetStatusNull()
End Sub
Return bOk
End Function
Public Overrides Sub SaveAsProject()
MyBase.SaveAsProject()
Public Overrides Function SaveAsProject() As Boolean
Dim bOk As Boolean = MyBase.SaveAsProject()
' Imposto stato gestione mouse diretto della scena a nessuno
MainScene.SetStatusNull()
End Sub
Return bOk
End Function
Private Function GetMachineBaseDirs() As String
' Trasformo l'elenco dei direttori radice macchina in una stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = ""
' Pulisco eventuali caratteri nascosti: origString.Replace(vbCr, "").Replace(vbLf, "")
For Each MachDir In OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRootList
MachDir = MachDir.Replace(vbCr, "").Replace(vbLf, "")
sMchRoots &= MachDir & "|"
Next
' rimuovo dalla stringa l'ultimo carattere "|" inserito
sMchRoots = sMchRoots.Remove(sMchRoots.Length - 1, 1)
If String.IsNullOrEmpty(sMchRoots) Then sMchRoots = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot
EgtOutLog("Machine root list: " & sMchRoots)
Return sMchRoots
End Function
#End Region ' METHODS
#Region "ProjectManager"
Public Overrides Sub NewProject()
Public Overrides Function NewProject() As Boolean
EgtSetCurrentContext(MainScene.GetCtx())
Dim bOk As Boolean = MainController.NewProject()
' Eventuale reset VM
@@ -169,9 +193,10 @@ Public Class MySceneHostVM
VeinMatching.Clear()
End If
MainScene.SetStatusNull()
End Sub
Return bOk
End Function
Public Overrides Sub OpenProject(sFilePath As String)
Public Overrides Function OpenProject(sFilePath As String) As Boolean
EgtSetCurrentContext(MainScene.GetCtx())
Dim bOk As Boolean = False
If String.IsNullOrEmpty(sFilePath) Then
@@ -194,35 +219,42 @@ Public Class MySceneHostVM
Dim sVmFile As String = Path.ChangeExtension(sFile, ".vme")
VeinMatching.Open(sVmFile)
End If
End Sub
Return bOk
End Function
Public Overrides Sub ExportProject()
Public Overrides Function ExportProject() As Boolean
Dim bOk As Boolean = False
EgtSetCurrentContext(MainScene.GetCtx())
' Verifico che il progetto sia salvato
If EgtGetModified() Then
MessageBox.Show(EgtMsg( 91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
Return
MessageBox.Show(EgtMsg(91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
Return bOk
End If
' Scelta del direttorio di destinazione
Dim sLastExportDir As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_EXPORTDIR, "", sLastExportDir)
Dim DirDlg As New System.Windows.Forms.FolderBrowserDialog
DirDlg.Description = EgtMsg( 91502) ' Seleziona il direttorio di esportazione
DirDlg.Description = EgtMsg(91502) ' Seleziona il direttorio di esportazione
DirDlg.SelectedPath = sLastExportDir
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return bOk
WriteMainPrivateProfileString(S_GENERAL, K_EXPORTDIR, DirDlg.SelectedPath)
' Eseguo esportazione
If ExecExport(DirDlg.SelectedPath) Then
bOk = ExecExport(DirDlg.SelectedPath)
If bOk Then
' Esportazione conclusa con successo
OmagOFFICEMap.refStatusBarVM.SetOutputMessage( EgtMsg( 91504), 5, MSG_TYPE.INFO)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(91504), 5, MSG_TYPE.INFO)
bOk = True
Else
' Errore nell'esportazione
MessageBox.Show( EgtMsg( 91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
MessageBox.Show(EgtMsg(91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
End If
EgtSetCurrentContext(MainScene.GetCtx())
End Sub
Return bOk
End Function
Private Function ExecExport(sDirDest As String) As Boolean
' salvo il nome della macchina correntemente selezionata
Dim CurrentSelectedMachGroup As String = OmagOFFICEMap.refMachGroupPanelVM.SelectedMachGroup.Machine
' Path completa del progetto corrente
Dim sFilePath As String = String.Empty
EgtGetCurrFilePath(sFilePath)
@@ -238,7 +270,9 @@ Public Class MySceneHostVM
' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto
Dim nCurrCtx As Integer = EgtGetCurrentContext()
Dim nCtx As Integer = EgtInitContext()
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = GetMachineBaseDirs()
EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
' Per ogni gruppo di lavoro
For Each nMchGrpId As Integer In vMchGrps
' Carico il progetto
@@ -282,9 +316,10 @@ Public Class MySceneHostVM
File.Copy(sOriPath, sNewPath, True)
Catch ex As Exception
bOk = False
EgtOutLog( "Slab image not found :" & sOriPath)
EgtOutLog("Slab image not found :" & sOriPath)
End Try
EgtSetName(nPhotoId, PHOTO_NAME)
EgtChangePhotoCenterAsFlatScan(nPhotoId)
End If
' Elimino gli altri gruppi di lavorazioni
For Each nMGrpId As Integer In vMchGrps
@@ -307,6 +342,27 @@ Public Class MySceneHostVM
Dim nMarkId As Integer = EgtCreateGroup(GDB_ID.ROOT)
EgtSetName(nMarkId, NAME_PROJMARK)
EgtSetLevel(nMarkId, GDB_LV.SYSTEM)
' Imposto la macchina: salvo l'altezza della sovratavola
Dim sMachine As String = String.Empty
EgtGetInfo(nMchGrpId, "Machine", sMachine)
If Not String.IsNullOrEmpty(sMachine) Then
CurrentMachine.GetMachineClass(sMachine)
OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath)
InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, sMachine,
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_MILL),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_POLISHING),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_WJ),
True)
Select Case GetCurrentTable()
Case 3
EgtSetInfo(nMarkId, K_TAB3_ADDITIONALTABLE, CurrentMachine.dAdditionalTable)
Case 2
EgtSetInfo(nMarkId, K_TAB2_ADDITIONALTABLE, CurrentMachine.dAdditionalTable)
Case Else
EgtSetInfo(nMarkId, K_ADDITIONALTABLE, CurrentMachine.dAdditionalTable)
End Select
End If
Dim nReducedCut As Integer = 1
EgtGetInfo(nMchGrpId, INFO_REDUCEDCUT, nReducedCut)
EgtSetInfo(nMarkId, INFO_REDUCEDCUT, nReducedCut)
@@ -325,37 +381,48 @@ Public Class MySceneHostVM
' Salvo il file
If Not EgtSaveFile(sFileDest, NGE.CMPTEXT) Then bOk = False
Next
CurrentMachine.GetMachineClass(CurrentSelectedMachGroup)
OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath)
' reimposto la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, CurrentSelectedMachGroup,
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.PRODUCTION_LINE),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_MILL),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_POLISHING),
OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ENABLE_WJ),
True)
' Distruggo il contesto corrente e ripristino quello originale
EgtSetCurrentContext(nCurrCtx)
EgtDeleteContext(nCtx)
Return bOk
End Function
Public Sub DxfOutProject()
Public Function DxfOutProject() As Boolean
EgtSetCurrentContext(MainScene.GetCtx())
' Verifico che il progetto sia salvato
If EgtGetModified() Then
MessageBox.Show(EgtMsg( 91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
Return
MessageBox.Show(EgtMsg(91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
Return False
End If
' Scelta del direttorio di destinazione
Dim sLastDxfOutDir As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_DXFOUTDIR, "", sLastDxfOutDir)
Dim DirDlg As New System.Windows.Forms.FolderBrowserDialog
DirDlg.Description = EgtMsg( 91502) ' Seleziona il direttorio di esportazione
DirDlg.Description = EgtMsg(91502) ' Seleziona il direttorio di esportazione
DirDlg.SelectedPath = sLastDxfOutDir
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return False
WriteMainPrivateProfileString(S_GENERAL, K_DXFOUTDIR, DirDlg.SelectedPath)
' Eseguo esportazione
If ExecDxfOut(DirDlg.SelectedPath) Then
Dim bOk As Boolean = ExecDxfOut(DirDlg.SelectedPath)
If bOk Then
' Esportazione conclusa con successo
OmagOFFICEMap.refStatusBarVM.SetOutputMessage( EgtMsg( 91504), 5, MSG_TYPE.INFO)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(91504), 5, MSG_TYPE.INFO)
Else
' Errore nell'esportazione
MessageBox.Show( EgtMsg( 91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
MessageBox.Show(EgtMsg(91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
End If
EgtSetCurrentContext(MainScene.GetCtx())
End Sub
Return bOk
End Function
Private Function ExecDxfOut(sDirDest As String) As Boolean
' Path completa del progetto corrente
@@ -375,7 +442,9 @@ Public Class MySceneHostVM
' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto
Dim nCurrCtx As Integer = EgtGetCurrentContext()
Dim nCtx As Integer = EgtInitContext()
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = GetMachineBaseDirs()
EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
' Per ogni gruppo di lavoro
For Each nMchGrpId As Integer In vMchGrps
' Carico il progetto
@@ -743,6 +812,7 @@ Public Class MySceneHostVM
Case OptionPanelVM.Tabs.NESTING
OmagOFFICEMap.refNestingTabVM.OnMouseMoveScene(sender, e)
Case OptionPanelVM.Tabs.MACHINING
OmagOFFICEMap.refSplitModeVM.OnMyMouseMoveScene(sender, e)
Case OptionPanelVM.Tabs.SIMUL
End Select
End Sub
@@ -755,6 +825,7 @@ Public Class MySceneHostVM
Case OptionPanelVM.Tabs.NESTING
OmagOFFICEMap.refNestingTabVM.OnMouseUpScene(sender, e)
Case OptionPanelVM.Tabs.MACHINING
OmagOFFICEMap.refSplitModeVM.OnMyMouseUpScene(sender, e)
Case OptionPanelVM.Tabs.SIMUL
End Select
End Sub
@@ -766,6 +837,7 @@ Public Class MySceneHostVM
Case OptionPanelVM.Tabs.NESTING
OmagOFFICEMap.refNestingTabVM.OnKeyDownScene(sender, e)
Case OptionPanelVM.Tabs.MACHINING
OmagOFFICEMap.refSplitModeVM.OnKeyDownScene(sender, e)
Case OptionPanelVM.Tabs.SIMUL
End Select
End Sub
+200
View File
@@ -0,0 +1,200 @@
<EgtWPFLib5:EgtCustomWindow x:Class="MySetUpWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Title="{Binding Title}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsResizable="False"
IsMinimizable="False" WindowStartupLocation="CenterOwner" ShowInTaskbar="False"
CloseCommand="{Binding CloseSetUpCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
CloseCommandParameter="{Binding Path=SelectedItem, ElementName=ToolsTreeView}"
Height="900">
<EgtWPFLib5:EgtCustomWindow.InputBindings>
<KeyBinding Key="Escape" Command="{Binding ReloadToolCommand}"
CommandParameter="{Binding Path=SelectedItem,ElementName=ToolsTreeView}"/>
</EgtWPFLib5:EgtCustomWindow.InputBindings>
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.95*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="12*"/>
</Grid.RowDefinitions>
<UniformGrid Grid.Row="0" Columns="8">
<Button ToolTip="{Binding ApplyMsg}" Command="{Binding ApplyCommand}"
IsEnabled="{Binding IsEnabledApplyBtn}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Export_1.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding ArchiveMsg}" Command="{Binding ArchiveCommand}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Insert.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding RetrievesMsg}" Command="{Binding RetrievesCommand}"
CommandParameter="{Binding SelectedItem,ElementName=ToolsTreeView}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Open.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding AutomaticMsg}" Command="{Binding AutomaticCommand}"
CommandParameter="{Binding SelectedItem,ElementName=ToolsTreeView}"
Style = "{DynamicResource MachiningDB_Button}">
<Image Source="/Resources/TopCommandBar/Automatic.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
<TreeView Name="SetUpTreeView" Grid.Row="1"
Background="Transparent" BorderThickness="0"
ItemsSource="{Binding ToolsList}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="FontSize" Value="10" />
<Setter Property="Foreground" Value="{StaticResource Omag_White}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsEnabled" Value="{Binding IsEnabled, Mode=TwoWay}" />
<EventSetter Event="MouseDoubleClick" Handler="Tool_DoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type EgtWPFLib5:FamilyToolItem}"
ItemsSource="{Binding Items}">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0"/>
<TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="5,0,10,0" VerticalAlignment="Center" HorizontalAlignment="left" />
<Ellipse Grid.Column="2" Height="10" Width="10" Fill="{Binding FamilyColor}"/>
</Grid>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type EgtWPFLib5:ToolItem}">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!--<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Margin="0,8,6,4" />-->
<TextBlock Grid.Column="1" Text="{Binding Name}" Height="21" FontSize="13" Margin="30,0,10,0"
VerticalAlignment="Center" HorizontalAlignment="left"/>
<Ellipse Grid.Column="2" Height="10" Width="10" Fill="{Binding ToolColor}" />
</Grid>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding SetUpImage}" MaxWidth="300"/>
<!--Style="{DynamicResource HorizontalScrollViewerItemsControlStyle}"-->
<ItemsControl Grid.Column="1" ItemsSource="{Binding PositionGroupList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl Grid.Column="1" ItemsSource="{Binding PositionList}" Margin="0,0,20,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="5,5,15,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding TcPos}"
Foreground="White"/>
<ItemsControl Grid.Column="1" ItemsSource="{Binding ExitToolAssociationList}"
HorizontalAlignment="Left">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!--<WrapPanel Orientation="Horizontal" MaxWidth="200"/>-->
<UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="10,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<!--Style="{DynamicResource SetUpToggleButton}"-->
<ToggleButton Content="{Binding ExitPar}" Name="ExitBtn"
CommandParameter="{Binding SelectedItem,ElementName=SetUpTreeView}"
IsChecked="{Binding IsOccupied}" Height="25" Width="25" Margin="0,0,5,0"
Command="{Binding SetUpToolCommand}"
IsEnabled="{Binding IsEnabledPos}"
Background="{Binding ExitBtnBackgroundCol}"
Foreground="Black"/>
<!--BorderBrush="{DynamicResource EgaltechBlue1}"-->
<Border x:Name="ToolBorder" Grid.Column="1"
BorderThickness="1" ToolTip="{Binding ToolTipMsg}">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ExitBtn, Path=IsChecked}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="{Binding Tool.Name}" Margin="3"
Foreground="White"/>
</Border>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
</EgtWPFLib5:EgtCustomWindow>
+29
View File
@@ -0,0 +1,29 @@
Imports EgtWPFLib5
Public Class MySetUpWindowV
Private WithEvents m_SetUpWindowVM As SetUpWindowVM
Sub New(Owner As Window, SetUpWindowVM As SetUpWindowVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = SetUpWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_SetUpWindowVM = SetUpWindowVM
End Sub
Private Sub Tool_DoubleClick(sender As Object, e As MouseButtonEventArgs)
Dim TreeViewItem As TreeViewItem = DirectCast(sender, TreeViewItem)
If TypeOf TreeViewItem.DataContext Is ToolItem Then
Dim SelTool As ToolItem = DirectCast(TreeViewItem.DataContext, ToolItem)
m_SetUpWindowVM.ToolDoubleClick(SelTool)
e.Handled = True
End If
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_SetUpWindowVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
File diff suppressed because it is too large Load Diff
+30 -1
View File
@@ -1,3 +1,32 @@
Public Class MyToolDbWindowV
Imports EgtUILib
Public Class MyToolDbWindowV
Private WithEvents m_ToolDbWindowVM As EgtWPFLib5.ToolDbWindowVM
Sub New(Owner As Window, ToolDbWindowVM As EgtWPFLib5.ToolDbWindowVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = ToolDbWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_ToolDbWindowVM = ToolDbWindowVM
End Sub
Private Sub ToolsDbView_Closed(bDialogResult As Boolean) Handles m_ToolDbWindowVM.m_CloseWindow
' Imposto contesto generale
EgtSetCurrentContext(EgtWPFLib5.ToolDbWindowVM.ProjectSceneContext)
' Cancello contesto di visualizzazione utensile
EgtDeleteContext(EgtWPFLib5.ToolDbWindowVM.ToolDbSceneContext)
'ToolDbWindowVM.m_ToolDbSceneContext = 0
Me.Close()
End Sub
Private Sub ToolsDbView_Closing(sender As Object, e As ComponentModel.CancelEventArgs) Handles Me.Closing
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
e.Cancel = True
Return
End If
End Sub
End Class
+285
View File
@@ -0,0 +1,285 @@
<EgtWPFLib5:EgtCustomWindow x:Class="MyWaterjetDbWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Title="{Binding Title}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsResizable="False"
IsMinimizable="False" WindowStartupLocation="CenterOwner" ShowInTaskbar="False"
CloseCommand="{Binding CloseToolsDbCommand,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
CloseCommandParameter="{Binding Path=SelectedItem, ElementName=ToolsTreeView}"
Height="900" Width="1100">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.75*"/>
<RowDefinition Height="11*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="1" Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="MaterialListBox"
Background="Transparent"
Foreground="{StaticResource Omag_White}"
BorderThickness="0"
ItemsSource="{Binding MaterialList}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelMaterial}"
Grid.Column="0">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Opacity" Value="1"/>
</Trigger>
<Trigger Property="IsSelected" Value="false">
<Setter Property="Opacity" Value="0.6"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
<ListBox x:Name="SubMaterialListBox"
Background="Transparent"
Foreground="{StaticResource Omag_White}"
BorderThickness="0"
ItemsSource="{Binding Path=SelectedItem.SubMaterialList, ElementName=MaterialListBox}"
DisplayMemberPath="Name"
SelectedItem="{Binding Path=SelectedItem.SelSubMaterial, ElementName=MaterialListBox}"
Grid.Column="1">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Opacity" Value="1"/>
</Trigger>
<Trigger Property="IsSelected" Value="false">
<Setter Property="Opacity" Value="0.6"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
<DataGrid ItemsSource="{Binding Path=SelectedItem.ParamList, ElementName=SubMaterialListBox}"
SelectedItem="{Binding Path=SelectedItem.SelWjParam, ElementName=SubMaterialListBox}"
Grid.Column="2"
Background="Transparent"
BorderThickness="0"
Margin="2.5,0,2.5,0"
HeadersVisibility="Column"
AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
<Setter Property="Background" Value="{StaticResource Omag_Black}"/>
<Setter Property="Foreground" Value="{StaticResource Omag_White}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="BorderThickness" Value="0.25"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Opacity" Value="0.7"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="{StaticResource Omag_Black}"/>
<Setter Property="Foreground" Value="{StaticResource Omag_White}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="BorderThickness" Value="0.25"/>
</Style>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderBrush" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="BorderThickness" Value="0.25"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="Foreground" Value="{StaticResource Omag_White}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_DarkGray}"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<!--Thickness-->
<DataGridTextColumn Binding="{Binding Thickness}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Thickness_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Q1-->
<DataGridTextColumn Binding="{Binding Q1}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Q1_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Q2-->
<DataGridTextColumn Binding="{Binding Q2}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Q2_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Q3-->
<DataGridTextColumn Binding="{Binding Q3}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Q3_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Q4-->
<DataGridTextColumn Binding="{Binding Q4}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Q4_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Q5-->
<DataGridTextColumn Binding="{Binding Q5}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Q5_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--QExtra-->
<DataGridTextColumn Binding="{Binding QExtra}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.QExtra_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--AngComp-->
<DataGridTextColumn Binding="{Binding dAngComp}"
Width="*">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.AngComp_Msg,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<EgtWPFLib5:EgtTextBox Grid.Column="0" Text="{Binding sNewMaterial, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding NewMaterial_Visibility}" Height="20" Margin="10,0">
<EgtWPFLib5:EgtTextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding DoneCommand}"/>
<KeyBinding Key="Esc" Command="{Binding CancelCommand}"/>
</EgtWPFLib5:EgtTextBox.InputBindings>
</EgtWPFLib5:EgtTextBox>
<EgtWPFLib5:EgtTextBox Grid.Column="1" Text="{Binding sNewSubMaterial, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding NewSubMaterial_Visibility}" Height="20" Margin="10,0">
<EgtWPFLib5:EgtTextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding DoneCommand}"/>
<KeyBinding Key="Esc" Command="{Binding CancelCommand}"/>
</EgtWPFLib5:EgtTextBox.InputBindings>
</EgtWPFLib5:EgtTextBox>
<!--<Grid DockPanel.Dock="Bottom" Visibility="{Binding NewMaterial_Visibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<EgtWPFLib5:EgtTextBox Text="{Binding sNewMaterial}"
DockPanel.Dock="Bottom"
Margin="0,0,0,5"/>
<Button Content="{Binding OkMsg}" Grid.Column="1"
Command="{Binding DoneCommand}"
IsEnabled="{Binding EnableOkNewMat}"
Style="{StaticResource OptionPanel_TextButton}"
Margin="2.5,0,0,2.5"/>
<Button Content="{Binding CancelMsg}" Grid.Column="2"
Command="{Binding CamcelCommand}"
Style="{StaticResource OptionPanel_TextButton}"
Margin="2.5,0,0,2.5"/>
</Grid>-->
</Grid>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<UniformGrid Grid.Column="0" Columns="3" HorizontalAlignment="left">
<Button Command="{Binding NewMaterialCommand}" ToolTip="{Binding New_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/New.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding ModifyMaterialCommand}" ToolTip="{Binding Modify_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Modify.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding DeleteMaterialCommand}" ToolTip="{Binding Delete_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Remove.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
<UniformGrid Grid.Column="1" Columns="3" HorizontalAlignment="left">
<Button Command="{Binding NewSubMaterialCommand}" ToolTip="{Binding New_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/New.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding ModifySubMaterialCommand}" ToolTip="{Binding Modify_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Modify.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding DeleteSubMaterialCommand}" ToolTip="{Binding Delete_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Remove.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
<UniformGrid Grid.Column="2" Columns="3" HorizontalAlignment="Right">
<Button Command="{Binding NewWjParamCommand}" ToolTip="{Binding New_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/New.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding DeleteWjParamCommand}" ToolTip="{Binding Delete_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Remove.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding SaveCommand}" ToolTip="{Binding Save_Msg}"
Style = "{DynamicResource WaterjetDB_Button}">
<Image Source="/Resources/TopCommandBar/Save.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
</Grid>
</Grid>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,20 @@
Imports EgtWPFLib5
Public Class MyWaterjetDbWindowV
Private WithEvents m_WaterjetDbWindowVM As WaterjetDbWindowVM
Sub New(Owner As Window, WaterjetDbWindowVM As WaterjetDbWindowVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = WaterjetDbWindowVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_WaterjetDbWindowVM = WaterjetDbWindowVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_WaterjetDbWindowVM.m_CloseWindow
Me.DialogResult = bDialogResult
End Sub
End Class
+288 -3
View File
@@ -12,6 +12,21 @@
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MyType>Custom</MyType>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -109,7 +124,13 @@
<PropertyGroup>
<ApplicationIcon>Resources\OmagOFFICE.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="DotNetZip, Version=1.16.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
</Reference>
<Reference Include="EgtPHOTOLib, Version=2.3.1.1, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\EgtPHOTOLib.dll</HintPath>
@@ -120,9 +141,7 @@
<Reference Include="EgtWPFLib5">
<HintPath>..\..\EgtProg\DllD32\EgtWPFLib5.dll</HintPath>
</Reference>
<Reference Include="Ionic.Zip">
<HintPath>..\..\EgtProg\OmagOFFICE\Ionic.Zip.dll</HintPath>
</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>
@@ -151,6 +170,10 @@
<Compile Include="AboutBoxWindow\AboutBoxV.xaml.vb">
<DependentUpon>AboutBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="AlzAndFront\AlzAndFront.xaml.vb">
<DependentUpon>AlzAndFront.xaml</DependentUpon>
</Compile>
<Compile Include="AlzAndFront\AlzAndFront.vb" />
<Compile Include="CompoCsvTrfDataWindow\CompoCsvDataWindowV.xaml.vb">
<DependentUpon>CompoCsvDataWindowV.xaml</DependentUpon>
</Compile>
@@ -209,8 +232,15 @@
<Compile Include="EgtStoneLib\VeinMatchingWindow.xaml.vb">
<DependentUpon>VeinMatchingWindow.xaml</DependentUpon>
</Compile>
<Compile Include="InstrumentPanel\PrintPanelV.xaml.vb">
<DependentUpon>PrintPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="InstrumentPanel\MyInstrumentPanelVM.vb" />
<Compile Include="InstrumentPanel\PrintPanelVM.vb" />
<Compile Include="MachinePanel\MyMachinePanelVM.vb" />
<Compile Include="MyMachGroupPanel\MyMachGroupPanelV.xaml.vb">
<DependentUpon>MyMachGroupPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="MyMachGroupPanel\MyMachGroupPanelVM.vb" />
<Compile Include="MachinePanel\MachinePanelV.xaml.vb">
<DependentUpon>MachinePanelV.xaml</DependentUpon>
@@ -226,11 +256,17 @@
</Compile>
<Compile Include="MachOptionWindow\MachOptionWindowVM.vb" />
<Compile Include="MySceneHost\MySceneHostVM.vb" />
<Compile Include="MySetUpWindow\MySetUpWindowV.xaml.vb">
<DependentUpon>MySetUpWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="MySetUpWindow\MySetUpWindowVM.vb" />
<Compile Include="MyToolDbWindow\MyToolDbWindowV.xaml.vb">
<DependentUpon>MyToolDbWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="MyToolDbWindow\MyToolDbWindowVM.vb" />
<Compile Include="MyWaterjetDbWindow\MyWaterjetDbWindowV.xaml.vb">
<DependentUpon>MyWaterjetDbWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="OptionPanel\MachiningTab\MachiningTabV.xaml.vb">
<DependentUpon>MachiningTabV.xaml</DependentUpon>
</Compile>
@@ -243,6 +279,10 @@
</Compile>
<Compile Include="OptionPanel\MachiningTab\ModifStartEndCutWindowVM.vb" />
<Compile Include="OptionPanel\MachiningTab\ModifStartEndWjWindowVM.vb" />
<Compile Include="OptionPanel\MachiningTab\ModifyQualityV.xaml.vb">
<DependentUpon>ModifyQualityV.xaml</DependentUpon>
</Compile>
<Compile Include="OptionPanel\MachiningTab\ModifyQualityVM.vb" />
<Compile Include="OptionPanel\MachiningTab\MoveRawModeV.xaml.vb">
<DependentUpon>MoveRawModeV.xaml</DependentUpon>
</Compile>
@@ -251,6 +291,10 @@
<DependentUpon>SplitModeV.xaml</DependentUpon>
</Compile>
<Compile Include="OptionPanel\MachiningTab\SplitModeVM.vb" />
<Compile Include="OptionPanel\NestingTab\MultiSelectionV.xaml.vb">
<DependentUpon>MultiSelectionV.xaml</DependentUpon>
</Compile>
<Compile Include="OptionPanel\NestingTab\MultiSelectionVM.vb" />
<Compile Include="OptionPanel\NestingTab\NestingTabV.xaml.vb">
<DependentUpon>NestingTabV.xaml</DependentUpon>
</Compile>
@@ -333,6 +377,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="AlzAndFront\AlzAndFront.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="CompoCsvTrfDataWindow\CompoCsvDataWindowV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -377,6 +425,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="InstrumentPanel\PrintPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="MachinePanel\MachinePanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -385,6 +437,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MyMachGroupPanel\MyMachGroupPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MyMachiningDbWindow\MyMachiningDbWindowV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -405,10 +461,18 @@
<DependentUpon>MainWindowV.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="MySetUpWindow\MySetUpWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MyToolDbWindow\MyToolDbWindowV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="MyWaterjetDbWindow\MyWaterjetDbWindowV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="OptionPanel\MachiningTab\MachiningTabV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -421,6 +485,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="OptionPanel\MachiningTab\ModifyQualityV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="OptionPanel\MachiningTab\MoveRawModeV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -429,6 +497,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="OptionPanel\NestingTab\MultiSelectionV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="OptionPanel\NestingTab\NestingTabV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -550,11 +622,13 @@
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="My Project\app.manifest" />
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<AppDesigner Include="My Project\" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@@ -675,6 +749,217 @@
<ItemGroup>
<Resource Include="Resources\TopCommandBar\DxfOut.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\InstrumentPanel\Print.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\1-BottomLeft.png" />
<Resource Include="Resources\NewIcons\2-BottomRight.png" />
<Resource Include="Resources\NewIcons\3-TopRight.png" />
<Resource Include="Resources\NewIcons\4-TopLeft.png" />
<Resource Include="Resources\NewIcons\Acquisisci-P.png" />
<Resource Include="Resources\NewIcons\Acquisisci-P1.png" />
<Resource Include="Resources\NewIcons\Acquisisci-P1_P2.png" />
<Resource Include="Resources\NewIcons\Acquisisci-P2.png" />
<Resource Include="Resources\NewIcons\Allunga-o-accorcia.png" />
<Resource Include="Resources\NewIcons\Arco.png" />
<Resource Include="Resources\NewIcons\AvantiVeloce.png" />
<Resource Include="Resources\NewIcons\BarCode.png" />
<Resource Include="Resources\NewIcons\Carica.png" />
<Resource Include="Resources\NewIcons\centro.png" />
<Resource Include="Resources\NewIcons\Chiudi.png" />
<Resource Include="Resources\NewIcons\Copia-dima.png" />
<Resource Include="Resources\NewIcons\CSV.png" />
<Resource Include="Resources\NewIcons\CsvMinus.png" />
<Resource Include="Resources\NewIcons\CsvNew.png" />
<Resource Include="Resources\NewIcons\CsvOpen.png" />
<Resource Include="Resources\NewIcons\CsvPlus.png" />
<Resource Include="Resources\NewIcons\CsvRuinedParts.png" />
<Resource Include="Resources\NewIcons\DatiMacchina.png" />
<Resource Include="Resources\NewIcons\DB-lavorazioni.png" />
<Resource Include="Resources\NewIcons\DB-utensili.png" />
<Resource Include="Resources\NewIcons\Deseleziona-tutto.png" />
<Resource Include="Resources\NewIcons\Drag_Rettangle.png" />
<Resource Include="Resources\NewIcons\Elimina-pezzo.png" />
<Resource Include="Resources\NewIcons\Esegui.png" />
<Resource Include="Resources\NewIcons\File-CSV.png" />
<Resource Include="Resources\NewIcons\Fine-allunga-o-accorcia.png" />
<Resource Include="Resources\NewIcons\Fine-centro-fuori.png" />
<Resource Include="Resources\NewIcons\Fine-tutti-centro.png" />
<Resource Include="Resources\NewIcons\Fine-tutti-fuori.png" />
<Resource Include="Resources\NewIcons\Foro-singolo.png" />
<Resource Include="Resources\NewIcons\FrameMachining.png" />
<Resource Include="Resources\NewIcons\freccia-dx.png" />
<Resource Include="Resources\NewIcons\freccia-giu.png" />
<Resource Include="Resources\NewIcons\freccia-nera.png" />
<Resource Include="Resources\NewIcons\freccia-small.png" />
<Resource Include="Resources\NewIcons\freccia-su.png" />
<Resource Include="Resources\NewIcons\freccia-sx.png" />
<Resource Include="Resources\NewIcons\freccia.png" />
<Resource Include="Resources\NewIcons\GenerateCN.png" />
<Resource Include="Resources\NewIcons\GenericView-hover.png" />
<Resource Include="Resources\NewIcons\GenericView.png" />
<Resource Include="Resources\NewIcons\ico-3D.png" />
<Resource Include="Resources\NewIcons\ico-cursore.png" />
<Resource Include="Resources\NewIcons\ico-cut.png" />
<Resource Include="Resources\NewIcons\ico-deseleziona.png" />
<Resource Include="Resources\NewIcons\ico-elimina.png" />
<Resource Include="Resources\NewIcons\ico-hover-3D.png" />
<Resource Include="Resources\NewIcons\ico-hover-cursore.png" />
<Resource Include="Resources\NewIcons\ico-hover-magnete.png" />
<Resource Include="Resources\NewIcons\ico-hover-mano.png" />
<Resource Include="Resources\NewIcons\ico-hover-puntatore.png" />
<Resource Include="Resources\NewIcons\ico-hover-righello.png" />
<Resource Include="Resources\NewIcons\ico-hover-zoom+.png" />
<Resource Include="Resources\NewIcons\ico-hover-zoom-.png" />
<Resource Include="Resources\NewIcons\ico-impostazioni.png" />
<Resource Include="Resources\NewIcons\ico-inserisci-prezzo.png" />
<Resource Include="Resources\NewIcons\ico-magnete.png" />
<Resource Include="Resources\NewIcons\ico-mano.png" />
<Resource Include="Resources\NewIcons\ico-parcheggia.png" />
<Resource Include="Resources\NewIcons\ico-puntatore.png" />
<Resource Include="Resources\NewIcons\ico-righello.png" />
<Resource Include="Resources\NewIcons\ico-salva.png" />
<Resource Include="Resources\NewIcons\ico-seleziona-tutto.png" />
<Resource Include="Resources\NewIcons\icone-tagli-1.png" />
<Resource Include="Resources\NewIcons\icone-tagli-2.png" />
<Resource Include="Resources\NewIcons\icone-tagli-4.png" />
<Resource Include="Resources\NewIcons\icone-tagli-5.png" />
<Resource Include="Resources\NewIcons\icone-tagli-6.png" />
<Resource Include="Resources\NewIcons\IndietroVeloce.png" />
<Resource Include="Resources\NewIcons\Inizio-allunga-o-accorcia.png" />
<Resource Include="Resources\NewIcons\Inizio-centro-fuori.png" />
<Resource Include="Resources\NewIcons\Inizio-tutti-centro.png" />
<Resource Include="Resources\NewIcons\Inizio-tutti-fuori.png" />
<Resource Include="Resources\NewIcons\Inserisci-pezzo.png" />
<Resource Include="Resources\NewIcons\Inverti.png" />
<Resource Include="Resources\NewIcons\Linea.png" />
<Resource Include="Resources\NewIcons\logo-OmCut.png" />
<Resource Include="Resources\NewIcons\Lucidatura.png" />
<Resource Include="Resources\NewIcons\Macchina.png" />
<Resource Include="Resources\NewIcons\Manual.png" />
<Resource Include="Resources\NewIcons\MHT.png" />
<Resource Include="Resources\NewIcons\Modifica-fine.png" />
<Resource Include="Resources\NewIcons\Modifica-inizio.png" />
<Resource Include="Resources\NewIcons\Movimento-manuale.png" />
<Resource Include="Resources\NewIcons\Nest.png" />
<Resource Include="Resources\NewIcons\NumericKeyboardArrow.png" />
<Resource Include="Resources\NewIcons\Nuovo.png" />
<Resource Include="Resources\NewIcons\ON_OFF-singolo-taglio.png" />
<Resource Include="Resources\NewIcons\Options.png" />
<Resource Include="Resources\NewIcons\Parcheggia-pezzo.png" />
<Resource Include="Resources\NewIcons\Parking.png" />
<Resource Include="Resources\NewIcons\Pausa-ON_OFF.png" />
<Resource Include="Resources\NewIcons\Ponticelli.png" />
<Resource Include="Resources\NewIcons\Ponticelli_delete.png" />
<Resource Include="Resources\NewIcons\Quality.png" />
<Resource Include="Resources\NewIcons\RawProbe.png" />
<Resource Include="Resources\NewIcons\Rimuovi-segmento.png" />
<Resource Include="Resources\NewIcons\Rimuovi_elimina.png" />
<Resource Include="Resources\NewIcons\Salva-con-nome.png" />
<Resource Include="Resources\NewIcons\Salva-taglio.png" />
<Resource Include="Resources\NewIcons\Salva.png" />
<Resource Include="Resources\NewIcons\SawProbe.png" />
<Resource Include="Resources\NewIcons\Seleziona-tutto.png" />
<Resource Include="Resources\NewIcons\Send.png" />
<Resource Include="Resources\NewIcons\Sezione-cornice.png" />
<Resource Include="Resources\NewIcons\Simula.png" />
<Resource Include="Resources\NewIcons\SlabId.png" />
<Resource Include="Resources\NewIcons\Specchia.png" />
<Resource Include="Resources\NewIcons\Spianatura.png" />
<Resource Include="Resources\NewIcons\SPLIT-WJ.png" />
<Resource Include="Resources\NewIcons\Split.png" />
<Resource Include="Resources\NewIcons\START-WJ.png" />
<Resource Include="Resources\NewIcons\Taglio-griglia.png" />
<Resource Include="Resources\NewIcons\Taglio-multiplo.png" />
<Resource Include="Resources\NewIcons\Taglio-singolo.png" />
<Resource Include="Resources\NewIcons\Take-point.png" />
<Resource Include="Resources\NewIcons\Test-lama.png" />
<Resource Include="Resources\NewIcons\ToolChangerPos.png" />
<Resource Include="Resources\NewIcons\Tutti-accorcia.png" />
<Resource Include="Resources\NewIcons\Tutti-allunga.png" />
<Resource Include="Resources\NewIcons\Tutti-OFF.png" />
<Resource Include="Resources\NewIcons\Tutti-ON.png" />
<Resource Include="Resources\NewIcons\V.png" />
<Resource Include="Resources\NewIcons\Vacuum.png" />
<Resource Include="Resources\NewIcons\Vein-match.png" />
<Resource Include="Resources\NewIcons\X.png" />
<Resource Include="Resources\NewIcons\XYJog.png" />
<Resource Include="Resources\NewIcons\ZBJog.png" />
<Resource Include="Resources\NewIcons\ZCJog.png" />
<Resource Include="Resources\NewIcons\zoom+.png" />
<Resource Include="Resources\NewIcons\zoom-.png" />
<Resource Include="Resources\NewIcons\ZoomAll-hover.png" />
<Resource Include="Resources\NewIcons\ZoomAll.png" />
<Resource Include="Resources\NewIcons\ZoomWin.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\RawPartTab\MovePhoto.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Export_1.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Import.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Reset.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Remove.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Insert.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Automatic.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Modify.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Crea-taglio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Attrezzaggio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Rimuovi-taglio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Modifica-taglio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Crea-taglio-parallelo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\CsvWindow\CsvMinus - Color.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\CsvWindow\CsvPlus - Color.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\CsvWindow\Inserisci-pezzo CSV.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\CsvWindow\Parcheggia-pezzo CSV.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Linea-Elimina.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Linea-Muovi.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Linea-Copia.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagOFFICE\OmagOFFICER32.exe
+17 -12
View File
@@ -4,29 +4,34 @@
Margin="5,5,5,0">
<UniformGrid Columns="4" Margin="0,0,0,5">
<Button Style="{StaticResource OptionPanel_Button}"
<Button Style="{StaticResource MachiningTab_Button}"
Command="{Binding PrevCommand}"
IsEnabled="{Binding PrevIsEnabled}"
Margin="0,0,2.5,0">
<Image Source="/Resources/MachiningTab/BackArrow.png"/>
Background="{StaticResource Omag_Black}"
Margin="0,0,1,0">
<Image Source="/Resources/MachiningTab/BackArrow.png"/>
</Button>
<Button Style="{StaticResource OptionPanel_Button}"
<Button Style="{StaticResource MachiningTab_Button}"
Command="{Binding NextCommand}"
IsEnabled="{Binding NextIsEnabled}"
Margin="0,0,2.5,0">
<Image Source="/Resources/MachiningTab/ForwardArrow.png"/>
</Button>
<Button Style="{StaticResource OptionPanel_Button}"
Background="{StaticResource Omag_Black}"
Margin="0,0,0,0">
<Image Source="/Resources/MachiningTab/ForwardArrow.png"/>
</Button>
<Button Style="{StaticResource MachiningTab_Button}"
Content="{Binding ModifyMsg}"
Command="{Binding ModifyCommand}"
IsEnabled="{Binding ModifyIsEnabled}"
Margin="0,0,2.5,0"/>
<Button Style="{StaticResource OptionPanel_Button}"
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"
Margin="1,0,1,0"/>
<Button Style="{StaticResource MachiningTab_Button}"
Content="{Binding AutoMsg}"
Command="{Binding AutoCommand}"
IsEnabled="{Binding AutoIsEnabled}"
Visibility="{Binding AutoVisibility}"
Margin="0,0,0,0"/>
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"
Margin="1,0,1,0"/>
</UniformGrid>
<ContentControl Content="{Binding MachiningModeControl}"/>
+14 -5
View File
@@ -224,13 +224,17 @@ Public Class MachiningTabVM
End Property
Public Sub Prev(ByVal param As Object)
Dim bOk As Boolean = True
' Dichiaro solo visualizzazione
m_bIsShow = True
If m_MachiningMode = MachiningModeOpt.SPLIT Then
OmagOFFICEMap.refSplitModeVM.ExitSplitRaw(False)
Else
OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
' verifico collisione dei pezzi in fase di scarico
bOk = OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
End If
' se trovata interferenza tra grezzi (dopo movimentazione) esco
If Not bOk Then Return
' Torno alla fase precedente
EgtSetCurrPhase(EgtGetCurrPhase() - 1)
' Si va sempre in Split
@@ -255,19 +259,22 @@ Public Class MachiningTabVM
End Property
Public Sub NextCmd(ByVal param As Object)
Dim bOk As Boolean = True
If m_MachiningMode = MachiningModeOpt.SPLIT Then
OmagOFFICEMap.refSplitModeVM.ExitSplitRaw(False)
MachiningMode = MachiningModeOpt.MOVERAWPART
AutoVisibility = Visibility.Hidden
OmagOFFICEMap.refMoveRawModeVM.InitMoveRaw()
bOk = OmagOFFICEMap.refMoveRawModeVM.InitMoveRaw()
Else
OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
' se verificata una interferenza allora esco
bOk = OmagOFFICEMap.refMoveRawModeVM.ExitMoveRaw()
If Not bOk Then Return
MachiningMode = MachiningModeOpt.SPLIT
AutoVisibility = Visibility.Visible
OmagOFFICEMap.refSplitModeVM.InitSplitRaw()
End If
' Aggiorno possibilità di uscire
ManageExit()
' Se non ci sono interferenze tra i grezzi -> aggiorno possibilità di uscire
If bOk Then ManageExit()
End Sub
#End Region ' NextCommand
@@ -322,6 +329,8 @@ Public Class MachiningTabVM
Friend Sub OnMouseDownScene(sender As Object, e As Windows.Forms.MouseEventArgs)
If m_MachiningMode = MachiningModeOpt.MOVERAWPART Then
OmagOFFICEMap.refMoveRawModeVM.OnMouseDownScene(sender, e)
ElseIf m_MachiningMode = MachiningModeOpt.SPLIT Then
OmagOFFICEMap.refSplitModeVM.OnMouseDownScene(sender, e)
End If
End Sub
@@ -4,49 +4,31 @@
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
IsMinimizable="False"
ShowInTaskbar="False"
Title="{Binding Title}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Height="200" Width="400"
SizeToContent="Height" Width="270"
WindowStartupLocation="CenterOwner">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<StackPanel Margin="5,5,5,0">
<TextBlock Grid.Column="1" Grid.Row="1" Margin="0,5,0,0"
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Grid.Column="1" Grid.Row="1" Margin="0,0,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding ValueMsg}"/>
<EgtWPFLib5:EgtTextBox Grid.Column="2" Grid.Row="1" Margin="10,5,10,0"
<EgtWPFLib5:EgtTextBox Grid.Column="2" Grid.Row="1" Margin="0,0,0,0"
Style="{StaticResource OptionTextBox}" Text="{Binding sValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Grid Name="ButtonsGrid" Grid.Column="1" Grid.Row="3" Grid.RowSpan="1" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
</UniformGrid>
<UniformGrid Columns="2"
Margin="0,0,0,5">
<Button Name="OkBtn" Content="{Binding OkMsg}" Grid.Column="1"
Style="{DynamicResource ToolBar_TextButton}">
Style="{DynamicResource CompoWindow_Button}">
</Button>
<Button Content="{Binding ExitMsg}" Grid.Column="3"
IsCancel="True"
Style="{DynamicResource ToolBar_TextButton}">
Style="{DynamicResource CompoWindow_Button}">
</Button>
</Grid>
</Grid>
</UniformGrid>
</StackPanel>
</EgtWPFLib5:EgtCustomWindow>
@@ -3,6 +3,15 @@ Imports EgtUILib
Public Class ModifStartEndCutWindowVM
Private m_Title As String = String.Empty
Public Property Title As String
Get
Return m_Title
End Get
Set(value As String)
m_Title = value
End Set
End Property
Public ReadOnly Property ValueMsg As String
Get
Return EgtMsg(MSG_SPLITPAGEUC + 35)
@@ -4,95 +4,81 @@
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
IsMinimizable="False"
ShowInTaskbar="False"
Title="{Binding Title}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Height="400" Width="400"
SizeToContent="Height" Width="270"
WindowStartupLocation="CenterOwner">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<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="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<StackPanel Margin="5,5,5,0">
<TextBlock Name="HoleTxbl" Grid.Column="1" Grid.Row="1" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding HoleMsg}" Visibility="{Binding HoleVisibility}"/>
<CheckBox Name="HoleChBx" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" Margin="10,5,10,0"
Style="{DynamicResource OptionCheckBox}" IsChecked="{Binding bHole, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding HoleVisibility}"/>
<TextBlock Grid.Column="1" Grid.Row="2" Margin="0,5,0,0"
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Name="HoleTxbl" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding HoleMsg}" Visibility="{Binding HoleVisibility}"/>
<CheckBox Name="HoleChBx" HorizontalAlignment="Center" Margin="10,5,10,0"
Style="{DynamicResource OptionCheckBox}" IsChecked="{Binding bHole, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding HoleVisibility}"/>
</UniformGrid>
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding ValueMsg}"/>
<EgtWPFLib5:EgtTextBox Grid.Column="2" Grid.Row="2" Margin="10,5,10,0"
<EgtWPFLib5:EgtTextBox Margin="0,0,0,5"
Style="{StaticResource OptionTextBox}" Text="{Binding sValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</UniformGrid>
<TextBlock Name="LeadInTxbl" Grid.Column="1" Grid.Row="3" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding LeadInMsg}" Visibility="{Binding LeadInVisibility}"/>
<ComboBox Name="LeadInCmBx" Grid.Column="2" Grid.Row="3" Margin="10,5,10,0"
ItemsSource="{Binding LeadInTypeList, Mode=OneWay}"
SelectedIndex="{Binding SelectedLeadInType,Mode=TwoWay}"
Style="{DynamicResource MachiningsComboBox}" Visibility="{Binding LeadInVisibility}"/>
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Name="LeadInTxbl" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding LeadInMsg}" Visibility="{Binding LeadInVisibility}"/>
<ComboBox Name="LeadInCmBx" Margin="0,0,0,5"
ItemsSource="{Binding LeadInTypeList, Mode=OneWay}"
SelectedIndex="{Binding SelectedLeadInType,Mode=TwoWay}"
Style="{DynamicResource MachiningsComboBox}" Visibility="{Binding LeadInVisibility}"/>
</UniformGrid>
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Name="LeadOutTxbl"
Style="{StaticResource OptionTextBlock}" Text="{Binding LeadOutMsg}" Visibility="{Binding LeadOutVisibility}"/>
<ComboBox Name="LeadOutCmBx" Margin="0,0,0,5"
ItemsSource="{Binding LeadOutTypeList, Mode=OneWay}"
SelectedIndex="{Binding SelectedLeadOutType,Mode=TwoWay}"
Style="{DynamicResource MachiningsComboBox}" Visibility="{Binding LeadOutVisibility}"/>
</UniformGrid>
<TextBlock Name="LeadOutTxbl" Grid.Column="1" Grid.Row="3"
Style="{StaticResource OptionTextBlock}" Text="{Binding LeadOutMsg}" Visibility="{Binding LeadOutVisibility}"/>
<ComboBox Name="LeadOutCmBx" Grid.Column="2" Grid.Row="3" Margin="10,5,10,0"
ItemsSource="{Binding LeadOutTypeList, Mode=OneWay}"
SelectedIndex="{Binding SelectedLeadOutType,Mode=TwoWay}"
Style="{DynamicResource MachiningsComboBox}" Visibility="{Binding LeadOutVisibility}"/>
<TextBlock Name="TangDistTxbl" Grid.Column="1" Grid.Row="4" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding TangDistMsg}"/>
<EgtWPFLib5:EgtTextBox Name="LiTangDistTxBx" Grid.Column="2" Grid.Row="4" Margin="10,5,10,0"
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Name="TangDistTxbl" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding TangDistMsg}"/>
<EgtWPFLib5:EgtTextBox Name="LiTangDistTxBx" Margin="0,0,0,5"
Style="{StaticResource OptionTextBox}" Text="{Binding sLiTangDist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding LeadInVisibility}"/>
<TextBlock Name="PerpDistTxbl" Grid.Column="1" Grid.Row="5" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding PerpDistMsg}"/>
<EgtWPFLib5:EgtTextBox Name="LiPerpDistTxBx" Grid.Column="2" Grid.Row="5" Margin="10,5,10,0"
Style="{StaticResource OptionTextBox}" Text="{Binding sLiPerpDist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding LeadInVisibility}"/>
<EgtWPFLib5:EgtTextBox Name="LoTangDistTxBx" Grid.Column="2" Grid.Row="4" Margin="10,5,10,0"
<EgtWPFLib5:EgtTextBox Name="LoTangDistTxBx" Margin="0,0,0,5"
Style="{StaticResource OptionTextBox}" Text="{Binding sLoTangDist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding LeadOutVisibility}"/>
</UniformGrid>
<EgtWPFLib5:EgtTextBox Name="LoPerpDistTxBx" Grid.Column="2" Grid.Row="5" Margin="10,5,10,0"
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Name="PerpDistTxbl" Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding PerpDistMsg}"/>
<EgtWPFLib5:EgtTextBox Name="LiPerpDistTxBx" Margin="0,0,0,5"
Style="{StaticResource OptionTextBox}" Text="{Binding sLiPerpDist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding LeadInVisibility}"/>
<EgtWPFLib5:EgtTextBox Name="LoPerpDistTxBx" Margin="0,0,0,5"
Style="{StaticResource OptionTextBox}" Text="{Binding sLoPerpDist, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding LeadOutVisibility}"/>
</UniformGrid>
<Grid Name="ButtonsGrid" Grid.Column="1" Grid.Row="7" Grid.RowSpan="1" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<UniformGrid Name="ButtonsGrid" Columns="2" Margin="0,0,0,5">
<Button Name="OkBtn" Content="{Binding OkMsg}" Grid.Column="1"
Style="{DynamicResource ToolBar_TextButton}">
Style="{DynamicResource CompoWindow_Button}">
</Button>
<Button Content="{Binding ExitMsg}" Grid.Column="3"
IsCancel="True"
Style="{DynamicResource ToolBar_TextButton}">
Style="{DynamicResource CompoWindow_Button}">
</Button>
</UniformGrid>
</Grid>
</StackPanel>
</Grid>
<!--<GroupBox Header="{Binding DirectInsertHdr}"
<!--<GroupBox Header="{Binding DirectInsertHdr}"
Grid.Row="2" Margin="0,0,5,5">
<UniformGrid Rows="2">
<Grid>
@@ -6,6 +6,15 @@ Imports EgtWPFLib5
Public Class ModifStartEndWjWindowVM
Inherits VMBase
Private m_Title As String = String.Empty
Public Property Title As String
Get
Return m_Title
End Get
Set(value As String)
m_Title = value
End Set
End Property
Public ReadOnly Property ValueMsg As String
Get
Return EgtMsg(MSG_SPLITPAGEUC + 35)
@@ -0,0 +1,32 @@
<EgtWPFLib5:EgtCustomWindow x:Class="ModifyQualityV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
IsMinimizable="False"
ShowInTaskbar="False"
Title="{Binding Title}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
SizeToContent="Height" Width="270"
WindowStartupLocation="CenterOwner">
<StackPanel Margin="5,5,5,0">
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Margin="0,5,0,0"
Style="{StaticResource OptionTextBlock}" Text="{Binding ValueMsg}"/>
<ComboBox ItemsSource="{Binding QualityList}"
SelectedItem="{Binding SelectedQuality}"
Style="{StaticResource MachiningsComboBox}"
Grid.Column="2" Grid.Row="1" Margin="10,5,10,0"/>
</UniformGrid>
<UniformGrid Columns="2" Margin="0,0,0,5">
<Button Name="OkBtn" Content="{Binding OkMsg}" Grid.Column="1"
Style="{DynamicResource CompoWindow_Button}">
</Button>
<Button Content="{Binding ExitMsg}" Grid.Column="3"
IsCancel="True"
Style="{DynamicResource CompoWindow_Button}">
</Button>
</UniformGrid>
</StackPanel>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,6 @@
Public Class ModifyQualityV
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
DialogResult = True
End Sub
End Class
@@ -0,0 +1,61 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class ModifyQualityVM
Inherits VMBase
Private m_Title As String = String.Empty
Public Property Title As String
Get
Return m_Title
End Get
Set(value As String)
m_Title = value
End Set
End Property
Public ReadOnly Property ValueMsg As String
Get
Return EgtMsg(MSG_SPLITPAGEUC + 35)
End Get
End Property
Public ReadOnly Property OkMsg As String
Get
Return EgtMsg(91651) 'Ok
End Get
End Property
Public ReadOnly Property ExitMsg As String
Get
Return EgtMsg(91652) 'Annulla
End Get
End Property
Private m_QualityList As New ObservableCollection(Of String)
Public Property QualityList As ObservableCollection(Of String)
Get
Return m_QualityList
End Get
Set(value As ObservableCollection(Of String))
m_QualityList = value
End Set
End Property
Private m_SelectedQuality As String
Public Property SelectedQuality As String
Get
Return m_SelectedQuality
End Get
Set(value As String)
m_SelectedQuality = value
End Set
End Property
Sub New()
End Sub
End Class
+81 -69
View File
@@ -3,96 +3,108 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5">
<StackPanel IsEnabled="{Binding MoveRawModeIsEnabled}">
<Grid HorizontalAlignment="Center"
<StackPanel IsEnabled="{Binding MoveRawModeIsEnabled}">
<Border Margin="0,0,0,5" Style="{StaticResource Border}">
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="0.5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="0.5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.5"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Grid.Column="2" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}"
<Button Grid.Column="2" Grid.Row="0"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding UpCommand}">
<Image Source="/Resources/NestingTab/UpArrow.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="0" Grid.Row="2"
Style="{StaticResource OptionPanel_NestingButton}"
<Image Source="/Resources/NestingTab/UpArrow.png"
Width="45" Height="45" HorizontalAlignment="Center"/>
</Button>
<Button Grid.Column="0" Grid.Row="2"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding LeftCommand}"
Visibility="{Binding LRArrowVisibility}">
<Image Source="/Resources/NestingTab/LeftArrow.png"/>
</Button>
<EgtWPFLib5:EgtTextBox Grid.Column="2" Grid.Row="2" Width="40"
<Image Source="/Resources/NestingTab/LeftArrow.png"
Width="45" Height="45" HorizontalAlignment="Center"/>
</Button>
<TextBox Grid.Column="2" Grid.Row="2" Width="40" Height="20"
Text="{Binding MoveStep}"
VerticalAlignment="Center"
HorizontalContentAlignment="Right"/>
<Button Grid.Column="4" Grid.Row="2"
Style="{StaticResource OptionPanel_NestingButton}"
HorizontalAlignment="Center"
HorizontalContentAlignment="right"
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"
VerticalAlignment="Center"/>
<Button Grid.Column="4" Grid.Row="2"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding RightCommand}"
Visibility="{Binding LRArrowVisibility}">
<Image Source="/Resources/NestingTab/RightArrow.png"/>
</Button>
<Image Source="/Resources/NestingTab/RightArrow.png"
Width="45" Height="45" HorizontalAlignment="Center"/>
</Button>
<Button Grid.Column="2" Grid.Row="4"
Style="{StaticResource OptionPanel_NestingButton}"
<Button Grid.Column="2" Grid.Row="4"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding DownCommand}">
<Image Source="/Resources/NestingTab/DownArrow.png"/>
</Button>
<Image Source="/Resources/NestingTab/DownArrow.png"
Width="45" Height="45" HorizontalAlignment="Center"/>
</Button>
<Button Grid.Column="0" Grid.Row="6"
Style="{StaticResource OptionPanel_NestingButton}"
<Button Grid.Column="0" Grid.Row="6"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding CcwRotCommand}"
Visibility="{Binding RotationVisibility}">
<Image Source="/Resources/NestingTab/CounterClockwiseRotate.png"
Width="64" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
<Grid Name="RotationAngle" Grid.Column="2" Grid.Row="6"
HorizontalAlignment="Center" VerticalAlignment="Center"
Visibility="{Binding RotationVisibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<EgtWPFLib5:EgtTextBox Text="{Binding RotationStep}" Width="40"/>
<TextBlock Grid.Column="1" FontSize="30" Margin="2,-5,0,0"
Text="°"/>
</Grid>
<Button Grid.Column="4" Grid.Row="6"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding CwRotCommand}"
Visibility="{Binding RotationVisibility}">
<Image Source="/Resources/NestingTab/ClockwiseRotate.png"
<Image Source="/Resources/NestingTab/CounterClockwiseRotate.png"
Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
</Button>
</Grid>
<Grid Name="RotationAngle" Grid.Column="2" Grid.Row="6"
HorizontalAlignment="Center" VerticalAlignment="Center"
Visibility="{Binding RotationVisibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Text="{Binding RotationStep}" Width="40" Height="20"
HorizontalAlignment="center"
HorizontalContentAlignment="right"
Background="{StaticResource Omag_Black}"
Foreground="{StaticResource Omag_White}"/>
<TextBlock Grid.Column="1" FontSize="25" Margin="2,-5,0,0"
Foreground="{StaticResource Omag_White}" Text="°"/>
</Grid>
<Button Grid.Column="2" Grid.Row="4"
<Button Grid.Column="4" Grid.Row="6"
Style="{StaticResource OptionPanel_MoveButton}"
Command="{Binding CwRotCommand}"
Visibility="{Binding RotationVisibility}">
<Image Source="/Resources/NestingTab/ClockwiseRotate.png"
Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
</Grid>
</Border>
<Button Grid.Column="2" Grid.Row="4"
Content="{Binding RemoveMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding RemovePartCommand}"
Margin="0,0,0,5"/>
Margin="0,5,0,5"/>
</StackPanel>
</StackPanel>
</UserControl>
+259 -13
View File
@@ -17,6 +17,7 @@ Public Class MoveRawModeVM
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
Private m_CurrRawOnVacuum As Integer = GDB_ID.NULL ' identificativo pezzo correntemente attaccato alle ventose
Private m_dMoveStep As Double
Public Property MoveStep As String
@@ -108,6 +109,17 @@ Public Class MoveRawModeVM
#Region "METHODS"
Friend Function InitMoveRaw() As Boolean
'' verifico che il pezzo sia depositabile
'If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then
' ' mantengo la selezione del pezzo
' EgtSetStatus(m_CurrRawOnVacuum, GDB_ST.SEL)
' OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Collisione pezzi", 3, MSG_TYPE.ERROR_)
' EgtDraw()
' ' non cambio pagina
' Return False
'End If
' resetto l'inidice del pezzo da mnovimentare
m_CurrRawOnVacuum = GDB_ID.NULL
' Deseleziono tutto
EgtDeselectAll()
' Recupero i tagli allungati prima definiti
@@ -158,14 +170,14 @@ Public Class MoveRawModeVM
' 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
@@ -182,7 +194,7 @@ Public Class MoveRawModeVM
If OmagOFFICEMap.refMachiningTabVM.ByHand Then
LRArrowVisibility = Visibility.Hidden
RotationVisibility = Visibility.Hidden
' Altrimenti per movimento con ventose
' Altrimenti per movimento con ventose
Else
LRArrowVisibility = Visibility.Visible
RotationVisibility = If(CurrentMachine.bRawSplMovRotate, Visibility.Visible, Visibility.Hidden)
@@ -195,6 +207,17 @@ Public Class MoveRawModeVM
End Function
Friend Function ExitMoveRaw() As Boolean
' verifico che il pezzo sia depositabile
If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then
' mantengo la selezione del pezzo
EgtSetStatus(m_CurrRawOnVacuum, GDB_ST.SEL)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Collisione pezzi", 3, MSG_TYPE.ERROR_)
EgtDraw()
' non cambio pagina
Return False
End If
' resetto l'inidice del pezzo da mnovimentare
m_CurrRawOnVacuum = GDB_ID.NULL
' Deseleziono tutto
EgtDeselectAll()
' Se movimento con ventose
@@ -249,6 +272,141 @@ Public Class MoveRawModeVM
NotifyPropertyChanged("MoveStep")
End Sub
' verifica che la posizione di rialascio sia corretta, altrimenti coreggo il vettore di posizione
Private Function VerifyReleasdPositionIsValid(ByRef vtMove As Vector3d) As Boolean
Dim bOk As Boolean = True
' determino il punto finale dello spostamento
Dim ptEndPointLift As Point3d = VacuumCups.ptStartPointLift
ptEndPointLift.x += vtMove.x
ptEndPointLift.y += vtMove.y
Dim sInfo As String = String.Empty
Select Case VacuumCups.VerifyOutOfStrokes(ptEndPointLift, VacuumCups.dDegRotStartAng)
Case 1
' extra corsa sulla x-: devo ridurre del valore di extra corsa
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.x -= vtMove.x
Dim dMaxMove As Double = VacuumCups.GetExtraStrokeValue(sInfo)
If Math.Abs(dMaxMove - vtMove.x) <= EPS_SMALL * 100 Then
vtMove.x = 0
Else
vtMove.x -= dMaxMove - EPS_SMALL * 100
End If
ptEndPointLift.x += vtMove.x
bOk = False
Case 2
' extra corsa sulla x+: devo ridurre del valore di extra corsa
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.x -= vtMove.x
Dim dMaxMove As Double = VacuumCups.GetExtraStrokeValue(sInfo)
If Math.Abs(dMaxMove - vtMove.x) <= EPS_SMALL * 100 Then
vtMove.x = 0
Else
vtMove.x -= dMaxMove + EPS_SMALL * 100
End If
ptEndPointLift.x += vtMove.x
bOk = False
Case 4
' extra corsa sulla y-
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.y -= vtMove.y
Dim dMaxMove As Double = VacuumCups.GetExtraStrokeValue(sInfo)
If Math.Abs(dMaxMove - vtMove.y) <= EPS_SMALL * 100 Then
vtMove.y = 0
Else
vtMove.y -= dMaxMove - EPS_SMALL * 100
End If
ptEndPointLift.y += vtMove.y
bOk = False
Case 8
' extra corsa sulla y+
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.y -= vtMove.y
Dim dMaxMove As Double = VacuumCups.GetExtraStrokeValue(sInfo)
If Math.Abs(dMaxMove - vtMove.y) <= EPS_SMALL * 100 Then
vtMove.y = 0
Else
vtMove.y -= dMaxMove + EPS_SMALL * 100
End If
ptEndPointLift.y += vtMove.y
bOk = False
End Select
' il movimento del pezzo è accettabile, aggiorno le posizione per la verifica dello step successivo
VacuumCups.ptStartPointLift = ptEndPointLift
Return bOk
End Function
' verifica che la posizione di rialascio sia corretta, altrimenti coreggo l'angolo di posizione
Private Function VerifyReleasdAngleIsValid(ByRef dAngDeg As Double, ByVal ptCenter As Point3d) As Boolean
Dim bOk As Boolean = True
' determino il punto finale dello spostamento
Dim ptEndPointLift As Point3d = VacuumCups.ptStartPointLift
Dim dDegRotEndAng As Double = VacuumCups.dDegRotStartAng + dAngDeg
ptEndPointLift.Rotate(ptCenter, Vector3d.Z_AX(), dAngDeg)
Dim sInfo As String = String.Empty
Select Case VacuumCups.VerifyOutOfStrokes(ptEndPointLift, dDegRotEndAng)
Case 16
' extra corsa sulla c-
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.Rotate(ptCenter, Vector3d.Z_AX(), -dAngDeg)
dDegRotEndAng -= dAngDeg
dAngDeg += VacuumCups.GetExtraStrokeValue(sInfo) + EPS_SMALL
dDegRotEndAng += dAngDeg
ptEndPointLift.Rotate(ptCenter, Vector3d.Z_AX(), dAngDeg)
bOk = False
Case 34
' extra corsa sulla c+
EgtGetOutstrokeInfo(sInfo)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_SIMULATIONPAGEUC + 2) & " " & sInfo, 3, MSG_TYPE.WARNING) 'Extracorsa ...
ptEndPointLift.Rotate(ptCenter, Vector3d.Z_AX(), -dAngDeg)
dDegRotEndAng -= dAngDeg
dAngDeg -= VacuumCups.GetExtraStrokeValue(sInfo) + EPS_SMALL
dDegRotEndAng += dAngDeg
ptEndPointLift.Rotate(ptCenter, Vector3d.Z_AX(), dAngDeg)
bOk = False
End Select
' il movimento del pezzo è accettabile, aggiorno le posizione per la verifica dello step successivo
VacuumCups.ptStartPointLift = ptEndPointLift
VacuumCups.dDegRotStartAng = dDegRotEndAng
Return bOk
End Function
' Veririfica che il grezzo non entri in colliosione con altri pezzi
Private Function VerifyCollisionWithOtherRawPart(nIdOnVacumm As Integer) As Boolean
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)
If m_nTempId = GDB_ID.NULL Then Return False
EgtSetName(m_nTempId, "RawTemp")
Dim nIdActualRawOutLine As Integer = EgtGetFirstNameInGroup(nIdOnVacumm, "RawOutline")
Dim ActualRawFlatRegion As Integer = EgtCreateSurfFlatRegion(m_nTempId, nIdActualRawOutLine)
Dim nCurrPhase As Integer = EgtGetCurrPhase()
Dim nRawGroupId = EgtGetParent(EgtGetFirstRawPart())
Dim nIdRaw As Integer = EgtGetFirstRawPart()
' ciclo su tutti i grezzi per veririficare eventuali collisioni
While nIdRaw <> GDB_ID.NULL
' verifico la fase del grezzo
If EgtVerifyRawPartCurrPhase(nIdRaw) And nIdOnVacumm <> nIdRaw Then
' recupero il contorno del pezzo
Dim nIdRawOutLine As Integer = EgtGetFirstNameInGroup(nIdRaw, "RawOutline")
Dim nIdRawFlatRegion As Integer = EgtCreateSurfFlatRegion(m_nTempId, nIdRawOutLine)
If EgtSurfFrIntersect(nIdRawFlatRegion, ActualRawFlatRegion) Then
If EgtExistsObj(nIdRawFlatRegion) Then
EgtErase(m_nTempId)
' esiste una intersezione delle superfici
Return True
End If
End If
End If
nIdRaw = EgtGetNextRawPart(nIdRaw)
End While
EgtErase(m_nTempId)
Return False
End Function
#End Region ' METHODS
#Region "COMMANDS"
@@ -286,9 +444,15 @@ Public Class MoveRawModeVM
Else
If m_bRawWithCups Then
Dim vtMove As New Vector3d(0, m_dMoveStep, 0)
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdPositionIsValid(vtMove)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtMoveRawPart(nRawId, vtMove) Then
EgtMove(GetVacuumId(), vtMove, GDB_RT.GLOB)
AddRawMoveData(nRawId, vtMove, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.y -= vtMove.y
End If
Else
' Pezzo troppo piccolo : non si può muovere
@@ -320,9 +484,15 @@ Public Class MoveRawModeVM
While nRawId <> GDB_ID.NULL
If m_bRawWithCups Then
Dim vtMove As New Vector3d(-m_dMoveStep, 0, 0)
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdPositionIsValid(vtMove)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtMoveRawPart(nRawId, vtMove) Then
EgtMove(GetVacuumId(), vtMove, GDB_RT.GLOB)
AddRawMoveData(nRawId, vtMove, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.x -= vtMove.x
End If
Else
' Pezzo troppo piccolo : non si può muovere
@@ -353,9 +523,15 @@ Public Class MoveRawModeVM
While nRawId <> GDB_ID.NULL
If m_bRawWithCups Then
Dim vtMove As New Vector3d(m_dMoveStep, 0, 0)
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdPositionIsValid(vtMove)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtMoveRawPart(nRawId, vtMove) Then
EgtMove(GetVacuumId(), vtMove, GDB_RT.GLOB)
AddRawMoveData(nRawId, vtMove, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.x -= vtMove.x
End If
Else
' Pezzo troppo piccolo : non si può muovere
@@ -403,9 +579,15 @@ Public Class MoveRawModeVM
Else
If m_bRawWithCups Then
Dim vtMove As New Vector3d(0, -m_dMoveStep, 0)
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdPositionIsValid(vtMove)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtMoveRawPart(nRawId, vtMove) Then
EgtMove(GetVacuumId(), vtMove, GDB_RT.GLOB)
AddRawMoveData(nRawId, vtMove, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.y -= vtMove.y
End If
Else
' Pezzo troppo piccolo : non si può muovere
@@ -437,12 +619,19 @@ Public Class MoveRawModeVM
While nRawId <> GDB_ID.NULL
If m_bRawWithCups Then
Dim dAng As Double = m_dRotationStep
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
' Recupero il centro del grezzo
Dim ptRawCen As Point3d
EgtGetRawPartCenter(nRawId, ptRawCen)
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdAngleIsValid(dAng, ptRawCen)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAng) Then
' Recupero il centro del grezzo
Dim ptRawCen As Point3d
EgtGetRawPartCenter(nRawId, ptRawCen)
EgtRotate(GetVacuumId(), ptRawCen, Vector3d.Z_AX(), dAng, GDB_RT.GLOB)
AddRawMoveData(nRawId, dAng, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.Rotate(ptRawCen, Vector3d.Z_AX(), dAng)
VacuumCups.dDegRotStartAng -= dAng
End If
Else
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2), 3, MSG_TYPE.WARNING)
@@ -472,12 +661,19 @@ Public Class MoveRawModeVM
While nRawId <> GDB_ID.NULL
If m_bRawWithCups Then
Dim dAng As Double = -m_dRotationStep
' ----------- INIZIO verifica di essere entro i limiti macchina -----------
' Recupero il centro del grezzo
Dim ptRawCen As Point3d
EgtGetRawPartCenter(nRawId, ptRawCen)
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
VerifyReleasdAngleIsValid(dAng, ptRawCen)
' ----------- FINE verifica di essere entro i limiti macchina -----------
If EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAng) Then
' Recupero il centro del grezzo
Dim ptRawCen As Point3d
EgtGetRawPartCenter(nRawId, ptRawCen)
EgtRotate(GetVacuumId(), ptRawCen, Vector3d.Z_AX(), dAng, GDB_RT.GLOB)
AddRawMoveData(nRawId, dAng, m_RawMoveDataList)
Else
VacuumCups.ptStartPointLift.Rotate(ptRawCen, Vector3d.Z_AX(), dAng)
VacuumCups.dDegRotStartAng -= dAng
End If
Else
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2), 3, MSG_TYPE.WARNING)
@@ -545,17 +741,49 @@ Public Class MoveRawModeVM
' Se trovato il grezzo
If nParentId = nRawGroupId Then
Dim nStat As Integer = GDB_ST.ON_
' Se il pezzo corrente è selezionato allora lo disattivo -> deposito del pezzo
EgtGetStatus(nId, nStat)
If nStat = GDB_ST.SEL Then
EgtSetStatus(nId, GDB_ST.ON_)
' Se con ventose, le nascondo
If Not OmagOFFICEMap.refMachiningTabVM.ByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
' prima di rilasciare il pezzo verifico che non vada in collisione con altri pezzi sulla tavola
If VerifyCollisionWithOtherRawPart(nId) Then
' mantengo la selezione del pezzo
EgtSetStatus(nId, GDB_ST.SEL)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Collisione pezzi", 3, MSG_TYPE.ERROR_)
Else
' Se con ventose, le nascondo
If Not OmagOFFICEMap.refMachiningTabVM.ByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
End If
Else
' verifico che il pezzo precedente possa essere depositato correttamente
If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then
' mantengo la selezione del pezzo
EgtSetStatus(m_CurrRawOnVacuum, GDB_ST.SEL)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Collisione pezzi", 3, MSG_TYPE.ERROR_)
EgtDraw()
' esco dal ciclo, prima devo depositare correttamente il pezzo
Exit While
End If
' salvo l'indice del pezzo correntemente attaccato alle ventose
m_CurrRawOnVacuum = nId
EgtDeselectAll()
EgtSetStatus(nId, GDB_ST.SEL)
' Se con ventose, le posiziono sul grezzo
If Not OmagOFFICEMap.refMachiningTabVM.ByHand Then
Dim rmData As New RawMoveData
' inizializzo i dati del grezzo per il cacolo del peso
Dim MaxSinglePlugger As Double = 250
MaxSinglePlugger = GetPrivateProfileDouble(S_MACH_RAWMOVE, K_MACH_WEIGHT_SINGLEPLUGGER, MaxSinglePlugger, sMachIniFile)
Dim MaxDoublePlugger As Double = 750
MaxDoublePlugger = GetPrivateProfileDouble(S_MACH_RAWMOVE, K_MACH_WEIGHT_DOUBLEPLUGGER, MaxDoublePlugger, sMachIniFile)
Dim AverageDensity As Double = 2700
AverageDensity = GetPrivateProfileDouble(S_MATERIALS, K_AVERAGEDENSITY, AverageDensity, sMachIniFile)
VacuumCups.GetWeightInformation(AverageDensity, MaxSinglePlugger, MaxDoublePlugger)
VacuumCups.GetRotationForExtraStrokeY(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEY, 0, sMachIniFile) <> 0)
VacuumCups.GetRotationForExtraStrokeX(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEX, 0, sMachIniFile) <> 0)
If PutVacuumCupsOnRaw(nId, rmData) Then
' Visualizzo le ventose
EgtSetStatus(GetVacuumId(), GDB_ST.ON_)
@@ -565,10 +793,19 @@ Public Class MoveRawModeVM
' Reset eventuale messaggio
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
Else
' Visualizzo le ventose
EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
' Aggiorno i dati
m_bRawWithCups = False
' Messaggio di avvertimento (Pezzo troppo piccolo : non si può muovere)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2), 3, MSG_TYPE.WARNING)
If VacuumCups.bOverWeight Then
' Messaggio di avvertimento (Pezzo troppo piccolo : non si può muovere)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 4), 3, MSG_TYPE.WARNING)
ElseIf VacuumCups.bExtraStroke Then
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 5), 3, MSG_TYPE.WARNING) 'Pezzo oltre le corse : non si può muovere
Else
' Messaggio di avvertimento (Pezzo troppo piccolo : non si può muovere)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2), 3, MSG_TYPE.WARNING)
End If
End If
End If
End If
@@ -577,6 +814,15 @@ Public Class MoveRawModeVM
End If
nId = EgtGetNextObjInSelWin()
End While
' clicco su un oggetto che non è un grezzo -> verifico che il pezzo precedente possa essere depositato correttamente
If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then
' mantengo la selezione del pezzo
EgtSetStatus(m_CurrRawOnVacuum, GDB_ST.SEL)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage("Collisione pezzi", 3, MSG_TYPE.ERROR_)
EgtDraw()
End If
End Sub
#End Region ' EVENTS
+544 -129
View File
@@ -1,187 +1,602 @@
<UserControl x:Class="SplitModeV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Transparent">
<StackPanel IsEnabled="{Binding SplitModeIsEnabled}">
<UserControl.InputBindings>
<KeyBinding Key="Escape" Command="{Binding SplitCutCommand}" />
</UserControl.InputBindings>
<ListBox ItemsSource="{Binding ItemList}"
<StackPanel IsEnabled="{Binding SplitModeIsEnabled}">
<Border Margin="0,0,0,5" Style="{StaticResource BorderSplit}" Padding="0">
<ListBox ItemsSource="{Binding ItemList}"
Background="{StaticResource Omag_Gray}"
DisplayMemberPath="Name"
SelectionMode="Extended"
Height="250" Margin="0,0,0,5">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource Omag_Gray}"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
BorderThickness="0"
Height="200" Margin="0,0,0,0">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource Omag_White}"/>
<Setter Property="FontStyle" Value="Oblique"/>
<Setter Property="FontWeight" Value="Light"/>
</DataTrigger>
<DataTrigger Binding="{Binding bIsActive}" Value="True">
<Setter Property="Foreground" Value="{StaticResource Omag_Black}"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Border>
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,0,0,2.5">
<Button Grid.Column="1"
<Button Grid.Column="1"
IsEnabled="{Binding bEnabledCommandMove}"
Style="{StaticResource OptionPanel_Button}"
Command="{Binding MoveUpCommand}">
<Image Source="/Resources/MachiningTab/UpArrow.png"/>
</Button>
<Button Grid.Column="2"
Command="{Binding MoveUpCommand}"
Margin="0,0,0.5,0">
<Image Source="/Resources/NestingTab/UpArrow.png"/>
</Button>
<Button Grid.Column="2"
IsEnabled="{Binding bEnabledCommandMove}"
Style="{StaticResource OptionPanel_Button}"
Command="{Binding MoveDownCommand}">
<Image Source="/Resources/MachiningTab/DownArrow.png"/>
</Button>
Command="{Binding MoveDownCommand}"
Margin="0.5,0,0,0">
<Image Source="/Resources/NestingTab/DownArrow.png"/>
</Button>
</Grid>
</StackPanel>
<Border Margin="0,0,0,5" Style="{StaticResource Border}">
<UniformGrid Columns="3">
<Border Style="{StaticResource Border}" Margin="0,1,0,5">
<Expander Name="myExpander4" Background="Transparent"
Foreground="{DynamicResource Omag_White}"
HorizontalAlignment="Stretch" Header="Attiva tagli"
ExpandDirection="Down" IsExpanded="{Binding bOnOffCut_IsExpanded}">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="2,2.5,2,0">
<Button Content="{Binding OnOffMsg}"
<!--<Button Content="{Binding OnOffMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding OnOffCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding AllOnMsg}"
Margin="0,0,2.5,0"/>-->
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding OnOffMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding OnOffCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/ON_OFF-singolo-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<!--<Button Content="{Binding AllOnMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding AllOnCommand}"
Margin="2.5,0,2.5,0"/>
<Button Content="{Binding AllOffMsg}"
Margin="2.5,0,2.5,0"/>-->
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding AllOnMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllOnCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Tutti-ON.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<!--<Button Content="{Binding AllOffMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding AllOffCommand}"
Margin="2.5,0,0,0"/>
Margin="2.5,0,0,0"/>-->
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding AllOffMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllOffCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Tutti-OFF.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
</UniformGrid>
</StackPanel>
</Border>
</Expander>
</Border>
<Border Margin="0,0,0,5" Style="{StaticResource Border}">
<StackPanel>
<UniformGrid Columns="3" Margin="0,0,0,5">
<Border Style="{StaticResource Border}" Margin="0,1,0,5">
<Expander Name="myExpander0" Background="Transparent"
Foreground="{DynamicResource Omag_White}"
HorizontalAlignment="Stretch" Header="Tagli di separazione"
ExpandDirection="Down" IsExpanded="{Binding bSpLitCut_IsExpanded}">
<Button Content="{Binding CutMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
<StackPanel Margin="0,0,0,-2.5">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<Grid>
<!--<Button Content="{Binding CutMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding CutCommand}"
Visibility="{Binding CutBtnVisibility}"
Margin="0,0,2.5,0"/>-->
<StackPanel Visibility="{Binding CutBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding CutMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding CutCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding CutStartMsg}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Allunga-o-accorcia.png"
Height="40" Margin="0,2,0,0"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<!--<ToggleButton Grid.Row="0"
Content="{Binding BridgeMsg}"
Style="{StaticResource OptionPanel_ToggleWrapButton}"
IsChecked="{Binding BridgeBtn_IsChecked}"
Visibility="{Binding BridgeBtnVisibility}"
Margin="0,0,2.5,0" Padding="0"/>-->
<StackPanel Visibility="{Binding BridgeBtnVisibility}" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding BridgeMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding BridgeBtn_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Ponticelli.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</Grid>
<Grid>
<!--<Button Content="{Binding CutStartMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding CutStartCommand}"
Margin="2.5,0,2.5,0"/>
<Button Content="{Binding CutEndMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding CutEndCommand}"
Margin="2.5,0,0,0"/>
</UniformGrid>
Visibility="{Binding CutStartBtnVisibility}"
Margin="2.5,0,2.5,0"/>-->
<StackPanel Visibility="{Binding CutStartBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding CutStartMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding CutStartCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inizio-allunga-o-accorcia.png"
Height="40" Margin="0,2,0,0"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<Grid Visibility="{Binding AllExtRedVisibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Content="{Binding AllExtendMsg}" Grid.Column="1"
<!--<Button Content="{Binding QualityMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding QualityCommand}"
Visibility="{Binding QualityBtnVisibility}"
Margin="2.5,0,2.5,0"/>!-->
<StackPanel Visibility="{Binding QualityBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding QualityMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding QualityCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Quality.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
</Grid>
<Grid>
<StackPanel Visibility="{Binding CutEndBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding CutEndMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding CutEndCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Fine-allunga-o-accorcia.png"
Height="40" Margin="0,2,0,0"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding BridgeDeleteBtnVisibility}" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding BridgeDeleteMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding BridgeDeleteBtn_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Ponticelli_delete.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<!--Bottone invisibile per permetter il corretto allineamento-->
<!--
<Button Content="{Binding }" Grid.Column="0"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding }"
Visibility="Hidden"
Margin="0,0,1,0"/>-->
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="2" Margin="1,0,0,0">
<Button ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllExtendCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding AllReduceMsg}" Grid.Column="2"
Style="{StaticResource OptionPanel_TextWrapButton}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Tutti-allunga.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding AllReduceBtnVisibility}" Grid.Column="2" Margin="1,0,0,0">
<Button ToolTip="{Binding AllReduceMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllReduceCommand}"
Margin="2.5,0,0,0"/>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Tutti-accorcia.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
</Grid>
</StackPanel>
</StackPanel>
</Border>
<!--<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="1,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Crea-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<Border Margin="0,0,0,5" Style="{StaticResource Border}">
<StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding RemoveCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Rimuovi-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<UniformGrid Columns="3" Margin="0,0,0,5">
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateParallelCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="1,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Crea-taglio-parallelo.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateParallelCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="1,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Modifica-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</StackPanel>-->
<Button Content="{Binding OutCenStartMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
</StackPanel>
</Expander>
</Border>
<Border Style="{StaticResource Border}" Margin="0,1,0,5">
<Expander Name="myExpander2" Background="Transparent"
Foreground="{DynamicResource Omag_White}"
HorizontalAlignment="Stretch" Header="Tagli diretti di separazione"
ExpandDirection="Down" IsExpanded="{Binding bDirectSpLitCut_IsExpanded}">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="Crea"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Linea.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="Elimina"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding RemoveCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Linea-Elimina.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="Copia"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateParallelCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Linea-Copia.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="Muovi"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding ModifyCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="40" Height="40"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Linea-Muovi.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</StackPanel>
</Expander>
</Border>
<Border Style="{StaticResource Border}" Margin="0,1,0,0">
<Expander Name="myExpander1" Background="Transparent"
Foreground="{DynamicResource Omag_White}"
HorizontalAlignment="Stretch" Header="Modifica attacchi tagli"
ExpandDirection="Down" IsExpanded="{Binding bModifyCut_IsExpanded}">
<StackPanel Margin="0,0,0,-2.5">
<UniformGrid Columns="4" Margin="0,2.5,0,1">
<StackPanel Visibility="{Binding OutCenStartBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding OutCenStartMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding OutCenStartCommand}"
Margin="0,0,2.5,0" Padding="0"/>
<Button Content="{Binding AllOutStartMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inizio-centro-fuori.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding AllOutStartBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding AllOutStartMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllOutStartCommand}"
Margin="2.5,0,2.5,0"/>
<Button Content="{Binding AllCenStartMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inizio-tutti-fuori.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding AllCenStartBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding AllCenStartMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllCenStartCommand}"
Margin="2.5,0,0,0"/>
</UniformGrid>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inizio-tutti-centro.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<UniformGrid Columns="3" Margin="0,0,0,5">
<Button Content="{Binding OutCenEndMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
<StackPanel Visibility="{Binding OutCenEndBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding OutCenEndMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding OutCenEndCommand}"
Margin="0,0,2.5,0" Padding="0"/>
<Button Content="{Binding AllOutEndMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Fine-Centro-Fuori.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
</UniformGrid>
<UniformGrid Columns="4" Margin="0,0,0,1">
<StackPanel Visibility="{Binding AllOutEndBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding AllOutEndMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllOutEndCommand}"
Margin="2.5,0,2.5,0"/>
<Button Content="{Binding AllCenEndMsg}"
Style="{StaticResource OptionPanel_TextWrapButton}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Fine-tutti-fuori.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding AllCenEndBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding AllCenEndMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllCenEndCommand}"
Margin="2.5,0,0,0"/>
</UniformGrid>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Fine-tutti-centro.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<UniformGrid Columns="3" Margin="0,0,0,5">
<Button Content="{Binding ModifStartMsg}" Grid.Column="0"
Style="{StaticResource OptionPanel_TextWrapButton}"
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding ModifStartMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding ModifStartCommand}"
Margin="2.5,0,2.5,0"/>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Modifica-Inizio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<Button Content="{Binding ModifEndMsg}" Grid.Column="1"
Style="{StaticResource OptionPanel_TextWrapButton}"
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding ModifEndMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding ModifEndCommand}"
Margin="2.5,0,2.5,0"/>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Modifica-Fine.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<Button Content="{Binding PauseMsg}" Grid.Column="2"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding PauseCommand}"
Margin="2.5,0,2.5,0"/>
</UniformGrid>
</UniformGrid>
<UniformGrid Columns="4" Margin="0,0,0,1">
<UniformGrid Columns="3" Margin="0,0,0,5">
<!--Bottone invisibile per permetter il corretto allineamento-->
<Button Content="{Binding }" Grid.Column="0"
<!--Bottone invisibile per permetter il corretto allineamento-->
<Button Content="{Binding }" Grid.Column="0"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding }"
Visibility="Hidden"
Margin="2.5,0,2.5,0"/>
<!--Inverti direzione di taglio-->
<Button Content="{Binding InvertMsg}" Grid.Column="0"
Style="{StaticResource OptionPanel_TextWrapButton}"
Margin="0,0,1,0"/>
<StackPanel Margin="1,0,0,0">
<Button ToolTip="{Binding PauseMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding PauseCommand}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Pausa-ON_OFF.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Visibility="{Binding InvertBtnVisibility}" Margin="1,0,0,0">
<Button ToolTip="{Binding InvertMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding InvertCommand}"
Margin="2.5,0,2.5,0"/>
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inverti.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</Button>
</StackPanel>
</UniformGrid>
</UniformGrid>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</Expander>
</Border>
</StackPanel>
</UserControl>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,41 @@
<EgtWPFLib5:EgtCustomWindow x:Class="MultiSelectionV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Title="{Binding TitleMsg}"
IsMinimizable="False"
IsClosable="False"
ShowInTaskbar="False"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
WindowStartupLocation="CenterOwner"
Width="270" Height="150"
ResizeMode="NoResize">
<DockPanel Margin="5,5,5,0">
<UniformGrid Columns="2"
DockPanel.Dock="Top"
Margin="0,15,0,15">
<TextBlock Text="{Binding SelectionMsg}"/>
<TextBox Text="{Binding nNbrOfParts}"/>
</UniformGrid>
<UniformGrid Columns="4"
DockPanel.Dock="Bottom"
Margin="25,0,25,5">
<Button Command="{Binding OkCommand}"
Style="{StaticResource OptionPanel_TextButton}"
Content="{Binding OkMsg}">
</Button>
<ToggleButton Visibility="Hidden" />
<ToggleButton Visibility="Hidden" />
<Button Command="{Binding CancelCommand}"
Style="{StaticResource OptionPanel_TextButton}"
Content="{Binding CancelMsg}">
</Button>
</UniformGrid>
</DockPanel>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,15 @@
Public Class MultiSelectionV
Private WithEvents m_MultiSelectionVM As MultiSelectionVM
Sub New(Owner As Window, MultiSelVM As MultiSelectionVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = MultiSelVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_MultiSelectionVM = MultiSelVM
Me.Show()
End Sub
End Class
@@ -0,0 +1,97 @@
Imports EgtUILib
Imports EgtWPFLib5
Public Class MultiSelectionVM
Inherits VMBase
Private m_sRefGuidOfPart As String = String.Empty
Public ReadOnly Property TitleMsg As String
Get
Return "Multiple selection"
End Get
End Property
Public ReadOnly Property SelectionMsg As String
Get
Return "Number of Parts"
End Get
End Property
Public ReadOnly Property OkMsg As String
Get
Return "Ok"
End Get
End Property
Public ReadOnly Property CancelMsg As String
Get
Return "Cancel"
End Get
End Property
Private m_MultiSelectionV As MultiSelectionV
Public Sub SetMultiSelectionV(MultiSel As MultiSelectionV)
m_MultiSelectionV = MultiSel
End Sub
Private m_nNbrOfParts As Integer
Public Property nNbrOfParts As String
Get
Return m_nNbrOfParts.ToString
End Get
Set(value As String)
Dim nVal As Integer = 0
StringToInt(value, nVal)
m_nNbrOfParts = nVal
NotifyPropertyChanged("nNbrOfParts")
End Set
End Property
Private m_cmdOk As ICommand
Private m_cmdCancel As ICommand
Public ReadOnly Property OkCommand As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf OkCmd)
End If
Return m_cmdOk
End Get
End Property
Public Sub OkCmd(ByVal param As Object)
' il numero di elementi indicato è corretto
' deseleziono il pezzo corrente
DeselectPartInFaimily(m_sRefGuidOfPart)
Select Case m_nNbrOfParts
Case 0 ' Annulla
' continuo senza eseguire niente
Case Else
' seleziono il numero di pezzi indicati
SelectPartInFaimily(m_sRefGuidOfPart, m_nNbrOfParts)
End Select
' chiudo la finestra
m_MultiSelectionV.Close()
EgtDraw()
End Sub
Public ReadOnly Property CancelCommand As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf CancelCmd)
End If
Return m_cmdCancel
End Get
End Property
Public Sub CancelCmd(ByVal param As Object)
' chiudo la fiestra senza eseguire niente
m_MultiSelectionV.Close()
EgtDraw()
End Sub
Sub New(CurrNumberOfParts As Integer, sRefGuid As String)
m_nNbrOfParts = CurrNumberOfParts
m_sRefGuidOfPart = sRefGuid
End Sub
End Class
+257 -112
View File
@@ -4,175 +4,320 @@
xmlns:EgtWPFLib5 ="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Margin="5,5,5,0">
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}"
<GroupBox Header="Disegno parametrico" Style="{StaticResource GroupBoxSplit}">
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="0,2.5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Grid.Row="0"
Style="{StaticResource DrawImport_NestingButton}"
Command="{Binding DrawCommand}">
<Image Source="/Resources/NestingTab/Draw.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="2" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}"
<Image Source="/Resources/NestingTab/Draw.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="2" Grid.Row="0"
Style="{StaticResource DrawImport_NestingButton}"
Command="{Binding ImportDxfCommand}">
<Image Source="/Resources/NestingTab/ImportDxf.png" Stretch="Uniform"/>
</Button>
<ToggleButton Grid.Column="4" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingToggleButton}"
<Image Source="/Resources/NestingTab/ImportDxf.png" Stretch="Uniform"/>
</Button>
<ToggleButton Grid.Column="4" Grid.Row="0"
Style="{StaticResource DrawImport_NestingToggleButton}"
IsChecked="{Binding CsvImport_IsChecked}">
<Image Source="/Resources/NestingTab/ImportCsv.png" Stretch="Uniform"/>
</ToggleButton>
<Image Source="/Resources/NestingTab/ImportCsv.png" Stretch="Uniform"/>
</ToggleButton>
</Grid>
</Grid>
</GroupBox>
<Border Margin="0,0,0,5" Style="{StaticResource Border}">
<Border Margin="0,5,0,5" Style="{StaticResource Border}">
<Grid HorizontalAlignment="Center"
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
Margin="0,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--<TextBlock Name="PositioningLbl" Grid.ColumnSpan="3" VerticalAlignment="Center"
<!--<TextBlock Name="PositioningLbl" Grid.ColumnSpan="3" VerticalAlignment="Center"
HorizontalAlignment="Center" FontSize="15" />-->
<Button Grid.Column="0" Grid.Row="0"
<Button Grid.Column="0" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}" Width="48" Height="48"
Command="{Binding PartRotOnCommand}">
<Image Source="/Resources/NestingTab/PartRotOn.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="2" Grid.Row="0"
<Image Source="/Resources/NestingTab/PartRotOn.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="2" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding UpCommand}">
<Image Source="/Resources/NestingTab/UpArrow.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="4" Grid.Row="0"
<Image Source="/Resources/NestingTab/UpArrow.png"
Width="40"/>
</Button>
<Button Grid.Column="4" Grid.Row="0"
Style="{StaticResource OptionPanel_NestingButton}" Width="48" Height="48"
Command="{Binding PartRotOffCommand}">
<Image Source="/Resources/NestingTab/PartRotOff.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="0" Grid.Row="2"
<Image Source="/Resources/NestingTab/PartRotOff.png" Stretch="Uniform"/>
</Button>
<Button Grid.Column="0" Grid.Row="2"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding LeftCommand}">
<Image Source="/Resources/NestingTab/LeftArrow.png"/>
</Button>
<ToggleButton Grid.Column="2" Grid.Row="2"
<Image Source="/Resources/NestingTab/LeftArrow.png"
Width="40"/>
</Button>
<ToggleButton Grid.Column="2" Grid.Row="2"
Style="{StaticResource OptionPanel_NestingToggleButton}"
IsChecked="{Binding MaxMoveIsChecked}">
<Image Source="/Resources/NestingTab/MaxMove.png"/>
</ToggleButton>
<Button Grid.Column="4" Grid.Row="2"
<Image Source="/Resources/NestingTab/MaxMove.png"/>
</ToggleButton>
<Button Grid.Column="4" Grid.Row="2"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding RightCommand}">
<Image Source="/Resources/NestingTab/RightArrow.png"/>
</Button>
<Image Source="/Resources/NestingTab/RightArrow.png"
Width="40"/>
</Button>
<EgtWPFLib5:EgtTextBox Grid.Column="0" Grid.Row="4" Width="40"
<EgtWPFLib5:EgtTextBox Grid.Column="0" Grid.Row="4" Width="40"
Text="{Binding StepMove}"
VerticalAlignment="Center"
HorizontalContentAlignment="Right"/>
<Button Grid.Column="2" Grid.Row="4"
<Button Grid.Column="2" Grid.Row="4"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding DownCommand}">
<Image Source="/Resources/NestingTab/DownArrow.png"/>
</Button>
<Image Source="/Resources/NestingTab/DownArrow.png"
Width="40"/>
</Button>
<Grid Grid.Column="4" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="4" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<EgtWPFLib5:EgtTextBox Text="{Binding RotationAngle}" Width="50"
<EgtWPFLib5:EgtTextBox Text="{Binding RotationAngle}" Width="40"
VerticalAlignment="Center"
HorizontalContentAlignment="Right"/>
<TextBlock Grid.Column="1" Margin="2,0,0,0"
HorizontalContentAlignment="Left"/>
<TextBlock Grid.Column="1" Margin="2,0,0,0"
FontSize="20" Text="°"/>
</Grid>
</Grid>
<Button Grid.Column="0" Grid.Row="6"
<Button Grid.Column="0" Grid.Row="6"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding CClockwiseRotCommand}">
<Image Source="/Resources/NestingTab/CounterClockwiseRotate.png"
<Image Source="/Resources/NestingTab/CounterClockwiseRotate.png"
Width="64" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
<ToggleButton Grid.Column="2" Grid.Row="6"
</Button>
<ToggleButton Grid.Column="2" Grid.Row="6"
Style="{StaticResource OptionPanel_NestingToggleButton}"
IsChecked="{Binding MagneticIsChecked}">
<Image Source="/Resources/NestingTab/AlignPieces.png"
<Image Source="/Resources/NestingTab/AlignPieces.png"
Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</ToggleButton>
<Button Grid.Column="4" Grid.Row="6"
</ToggleButton>
<Button Grid.Column="4" Grid.Row="6"
Style="{StaticResource OptionPanel_NestingButton}"
Command="{Binding ClockwiseRotCommand}">
<Image Source="/Resources/NestingTab/ClockwiseRotate.png"
<Image Source="/Resources/NestingTab/ClockwiseRotate.png"
Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Button>
</Button>
</Grid>
</Grid>
</Border>
</Border>
<UniformGrid Grid.Column="0" Columns="2" Margin="0,0,0,5">
<Button Content="{Binding InsertPartMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding InsertPartCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding StorePartMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding StorePartCommand}"
Margin="2.5,0,0,0"/>
</UniformGrid>
<Button Content="{Binding RemovePartMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding RemovePartCommand}"
Margin="0,0,0,5"/>
<GroupBox Header="Gestione parcheggio" Style="{StaticResource GroupBoxSplit}">
<UniformGrid Columns="2" Margin="0,0,0,5">
<Button Content="{Binding SelectAllMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding SelectAllCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding DeselectAllMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding DeselectAllCommand}"
Margin="2.5,0,0,0"/>
</UniformGrid>
<UniformGrid Grid.Column="0" Columns="3" Margin="0,2.5,0,0">
<!--<Button Content="{Binding InsertPartMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding InsertPartCommand}"
Margin="0,0,2.5,0"/>
<Button Content="{Binding StorePartMsg}" Grid.Column="1"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding StorePartCommand}"
Margin="2.5,0,0,0"/>-->
<StackPanel>
<Button ToolTip="{Binding InsertPartMsg}" Grid.Column="1"
Style="{StaticResource Nest_Button_Img}"
Command="{Binding InsertPartCommand}"
HorizontalContentAlignment="Stretch"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Inserisci-pezzo.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding InsertPartMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</Button>
</StackPanel>
<Button Content="{Binding ResetMsg}"
<StackPanel>
<Button ToolTip="{Binding StorePartMsg}" Grid.Column="1"
Style="{StaticResource Nest_Button_Img}"
Command="{Binding StorePartCommand}"
HorizontalContentAlignment="Stretch"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Parcheggia-pezzo.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding StorePartMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</Button>
</StackPanel>
<StackPanel>
<Button ToolTip="{Binding RemovePartMsg}" Grid.Column="1"
Style="{StaticResource Nest_Button_Img}"
Command="{Binding RemovePartCommand}"
HorizontalContentAlignment="Stretch"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Elimina-pezzo.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding RemovePartMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</Button>
</StackPanel>
<!--<ToggleButton Content="{Binding StartCurvWJMsg}" Grid.Column="2"
Visibility="{Binding StartCurvWJ_Visibility}"
Style="{StaticResource OptionPanel_ToggleButton}"
IsChecked="{Binding bStartCurvWJ}"
Margin="2.5,0,2.5,0"/>-->
</UniformGrid>
</GroupBox>
<GroupBox Header="Gestione selezione" Style="{StaticResource GroupBoxSplit}">
<UniformGrid Grid.Column="0" Columns="{Binding CountColumn}" Margin="0,2.5,0,0">
<StackPanel>
<Button ToolTip="{Binding SelectAllMsg}" Grid.Column="1"
Style="{StaticResource Nest_Button_Img}"
Command="{Binding SelectAllCommand}"
HorizontalContentAlignment="Stretch"
Margin="2.5,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Seleziona-tutto.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding SelectAllMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</Button>
</StackPanel>
<StackPanel>
<Button ToolTip="{Binding DeselectAllMsg}" Grid.Column="1"
Style="{StaticResource Nest_Button_Img}"
Command="{Binding DeselectAllCommand}"
HorizontalContentAlignment="Stretch"
Margin="2.5,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Deseleziona-tutto.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding DeselectAllMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</Button>
</StackPanel>
<StackPanel>
<ToggleButton ToolTip="{Binding DragRectangleMsg}" Grid.Column="1"
Visibility="{Binding DragRectangle_Visibility}"
Style="{StaticResource Nest_ToggleButton_Img}"
IsChecked="{Binding bDragRectangle}"
HorizontalContentAlignment="Stretch"
Margin="2.5,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Drag_Rettangle.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding DragRectangleMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</ToggleButton>
</StackPanel>
</UniformGrid>
</GroupBox>
<GroupBox Header="Gestione tgali WJ" Style="{StaticResource GroupBoxSplit}" Visibility="{Binding WJ_Cmd_Visibility}">
<UniformGrid Grid.Column="0" Columns="2" Margin="2.5,0,0,0" Visibility="{Binding WJ_Cmd_Visibility}">
<StackPanel HorizontalAlignment="Right" Margin="0,0,3.75,0">
<ToggleButton ToolTip="{Binding SplitCurvWJMsg}" Grid.Column="1"
Style="{StaticResource Nest_ToggleButton_Img}"
IsChecked="{Binding bSplitCurvWJ}"
HorizontalContentAlignment="Stretch"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/SPLIT-WJ.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding SplitCurvWJMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Margin="3.75,0,0,0">
<ToggleButton ToolTip="{Binding StartCurvWJMsg}" Grid.Column="1"
Style="{StaticResource Nest_ToggleButton_Img}"
IsChecked="{Binding bStartCurvWJ}"
HorizontalContentAlignment="Stretch"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/START-WJ.png"
Width="40" Height="40" HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!--<TextBlock Text="{Binding StartCurvWJMsg}"
HorizontalAlignment="Center"/>-->
</StackPanel>
</ToggleButton>
</StackPanel>
</UniformGrid>
</GroupBox>
<Button Content="{Binding ResetMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding ResetCommand}"
Margin="0,0,0,5"/>
Margin="0,5,0,5"/>
<Button Content="{Binding CsvDataMsg}"
<Button Content="{Binding CsvDataMsg}"
Style="{StaticResource OptionPanel_TextButton}"
Command="{Binding CsvDataCommand}"
Visibility="{Binding CsvData_Visibility}"
Margin="0,0,0,5"/>
</StackPanel>
File diff suppressed because it is too large Load Diff
+71 -34
View File
@@ -1,39 +1,76 @@
<EgtFloating:EgtFloatingPanel x:Class="OptionPanelV"
<UserControl x:Class="OptionPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE"
Width="268"
IsTopDockable="False" IsBottomDockable="False" IsLeftDockable="True"
IsRightDockable="False" Style="{StaticResource Option_EgtFloatingPanel}">
Width="190">
<TabControl Name="Tabs" SelectedIndex="{Binding SelItem}">
<TabItem Header="{Binding RawPartTabMsg}" IsEnabled="{Binding RawTabIsEnabled}"
Background="{Binding RawPart_Background}">
<TabItem.Content>
<OmagOFFICE:RawPartTabV DataContext="{StaticResource RawPartTabVM}"/>
</TabItem.Content>
</TabItem>
<TabItem Header="{Binding NestingTabMsg}" IsEnabled="{Binding NestTabIsEnabled}">
<TabItem.Content>
<OmagOFFICE:NestingTabV DataContext="{StaticResource NestingTabVM}"/>
</TabItem.Content>
<TabItem.Style>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<EventSetter Event="PreviewMouseDown" Handler="NestingTab_Click"/>
</Style>
</TabItem.Style>
</TabItem>
<TabItem Header="{Binding MachiningTabMsg}" IsEnabled="{Binding MachTabIsEnabled}">
<TabItem.Content>
<OmagOFFICE:MachiningTabV DataContext="{StaticResource MachiningTabVM}"/>
</TabItem.Content>
</TabItem>
<TabItem Header="{Binding SimulTabMsg}" IsEnabled="{Binding SimulTabIsEnabled}">
<TabItem.Content>
<OmagOFFICE:SimulTabV DataContext="{StaticResource SimulTabVM}"/>
</TabItem.Content>
</TabItem>
</TabControl>
</EgtFloating:EgtFloatingPanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TabControl Name="Tabs" SelectedIndex="{Binding SelItem}" Background="Transparent"
Padding="0,0,0,0"
Margin="5,0.5,5,0"
Style="{StaticResource TabControlOptinPanel}">
<TabItem ToolTip="{Binding RawPartTabMsg}" IsEnabled="{Binding RawTabIsEnabled}"
Margin="0,0,0,0"
Style="{StaticResource TabItemOptinPanel}">
<TabItem.Header>
<StackPanel Orientation="Horizontal" Width="35" Height="35">
<Image Source="/Resources/NewIcons/icone-tagli-5.png" Stretch="UniformToFill"/>
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<OmagOFFICE:RawPartTabV DataContext="{StaticResource RawPartTabVM}"/>
</TabItem.Content>
</TabItem>
<TabItem ToolTip="{Binding NestingTabMsg}" IsEnabled="{Binding NestTabIsEnabled}"
Margin="0,0,0,0"
Style="{StaticResource TabItemOptinPanel}">
<TabItem.Header>
<StackPanel Orientation="Horizontal" Width="35" Height="35">
<Image Source="/Resources/NewIcons/Nest.png" Stretch="Uniform" />
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<OmagOFFICE:NestingTabV DataContext="{StaticResource NestingTabVM}"/>
</TabItem.Content>
<!--<TabItem.Style>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource TabItemOptinPanel}">
<EventSetter Event="PreviewMouseDown" Handler="NestingTab_Click"/>
</Style>
</TabItem.Style>-->
</TabItem>
<TabItem ToolTip="{Binding MachiningTabMsg}" IsEnabled="{Binding MachTabIsEnabled}"
Margin="0,0,0,0"
Style="{StaticResource TabItemOptinPanel}">
<TabItem.Header>
<StackPanel Orientation="Horizontal" Width="35" Height="35">
<Image Source="/Resources/NewIcons/Split.png" Stretch="Uniform" />
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<OmagOFFICE:MachiningTabV DataContext="{StaticResource MachiningTabVM}"/>
</TabItem.Content>
</TabItem>
<TabItem ToolTip="{Binding SimulTabMsg}" IsEnabled="{Binding SimulTabIsEnabled}"
Margin="0,0,0,0"
Style="{StaticResource TabItemOptinPanel}">
<TabItem.Header>
<StackPanel Orientation="Horizontal" Width="35" Height="35">
<Image Source="/Resources/NewIcons/Simula.png" Stretch="Uniform" />
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<OmagOFFICE:SimulTabV DataContext="{StaticResource SimulTabVM}"/>
</TabItem.Content>
</TabItem>
</TabControl>
<!--Se click + Key Shift sopra Label apertura dellì file Log-->
<Label Grid.Row="1"
Background="Transparent"
MouseLeftButtonDown="Label_MouseLeftButtonDown"/>
</Grid>
</UserControl>
+33 -1
View File
@@ -1,4 +1,7 @@
Public Class OptionPanelV
Imports System.IO
Imports EgtUILib
Public Class OptionPanelV
Private m_OptionPanelVM As OptionPanelVM
@@ -24,6 +27,35 @@
If Not OmagOFFICEMap.refOptionPanelVM.NestTabIsEnabled Then e.Handled = True
End Sub
Private Sub Label_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
If Not (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then Return
Dim sTmpDir As String = String.Empty
If Not EgtInterface.EgtGetTempDir(sTmpDir) Then Return
' Genero file CNC (lancio anche se errore in precedenza)
Dim sLog1 As String = sTmpDir & "\OmagOFFICELog1.txt"
Dim sLog2 As String = sTmpDir & "\OmagOFFICELog2.txt"
Dim sLog As String = ""
If File.Exists(sLog1) AndAlso File.Exists(sLog2) Then
If File.GetLastAccessTimeUtc(sLog1) > File.GetLastAccessTimeUtc(sLog2) Then
sLog = sLog1
Else
sLog = sLog2
End If
ElseIf File.Exists(sLog1) AndAlso Not File.Exists(sLog2) Then
sLog = sLog1
ElseIf File.Exists(sLog2) AndAlso Not File.Exists(sLog1) Then
sLog = sLog2
End If
Try
Process.Start("Notepad.exe", sLog)
Catch ex As Exception
ex.ToString()
End Try
'End If
End Sub
#End Region ' EVENTS
End Class
+1
View File
@@ -5,6 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtPHOTOLib="clr-namespace:EgtPHOTOLib;assembly=EgtPHOTOLib"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="OmagPHOTO"
+146 -107
View File
@@ -5,176 +5,215 @@
xmlns:EgtPHOTOLib="clr-namespace:EgtPHOTOLib;assembly=EgtPHOTOLib"
Margin="5,5,5,0">
<Border Style="{StaticResource DefaultBorder}"
Padding="5,5,5,0">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource OptionPanel_Button}"
Grid.Column="0"
<StackPanel>
<GroupBox Header="Photo" Style="{StaticResource GroupBoxRow}">
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="0,2.5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource OptionPanelRaw_Button}"
Grid.Column="0" Grid.Row="0"
Visibility="{Binding SlabIdVisibility}"
IsEnabled="{Binding SlabIdIsEnabled}"
Command="{Binding SlabIdCommand}"
Width="30" Height="30"
Margin="0,0,0,5" >
<Image Source="/Resources/RawPartTab/SlabId.png" Stretch="Uniform"/>
</Button>
<Button Style="{StaticResource OptionPanel_Button}"
Grid.Column="1"
Margin="0,0,0,0" >
<Image Source="/Resources/RawPartTab/SlabId.png" Stretch="Uniform"/>
</Button>
<Button Style="{StaticResource OptionPanelRaw_Button}"
Grid.Column="2" Grid.Row="0"
Command="{Binding PhotoCommand}"
Margin="0,0,0,5" >
<Image Source="/Resources/RawPartTab/Photo.png" Stretch="Uniform"/>
</Button>
<ToggleButton Style="{StaticResource OptionPanel_ToggleButton}"
Grid.Column="2"
Margin="0,0,0,0" >
<Image Source="/Resources/RawPartTab/Photo.png" Stretch="Uniform"/>
</Button>
<ToggleButton Style="{StaticResource OptionPanelRaw_ToggleButton}"
Grid.Column="4" Grid.Row="0"
IsChecked="{Binding PhotoWithMouse}"
Width="30"
Margin="0,0,0,5" >
<Image Source="/Resources/RawPartTab/Mouse.png" Stretch="Uniform"/>
</ToggleButton>
</Grid>
Margin="0,0,0,0" >
<Image Source="/Resources/RawPartTab/MovePhoto.png" Stretch="Uniform" Width="40"/>
</ToggleButton>
</Grid>
</GroupBox>
<UniformGrid Columns="2" Rows="3" Margin="0,0,0,0">
<GroupBox Header="Offset photo" Style="{StaticResource GroupBoxRow}">
<UniformGrid Columns="2" Rows="3" Margin="0,0,0,0">
<TextBlock Text="{Binding OffsetXMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoOffsetX}"
Margin="13,0,0,5"
<TextBlock Text="{Binding OffsetXMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoOffsetX}"
BorderThickness="0"
Margin="0,0,0,5"
TextAlignment="Right"/>
<TextBlock Text="{Binding OffsetYMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoOffsetY}"
Margin="13,0,0,5"
<TextBlock Text="{Binding OffsetYMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoOffsetY}"
Margin="0,0,0,5"
TextAlignment="Right"/>
<TextBlock Text="{Binding PhotoRotMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoRot}"
Margin="13,0,0,5"
<TextBlock Text="{Binding PhotoRotMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding PhotoRot}"
Margin="0,0,0,5"
TextAlignment="Right"/>
</UniformGrid>
</StackPanel>
</Border>
</UniformGrid>
</GroupBox>
</StackPanel>
<!-- Definizione della Grid per il materiale -->
<GroupBox Header="{Binding MaterialMsg}" Margin="0,0,0,5">
<!-- Definizione della Grid per il materiale -->
<GroupBox Header="{Binding MaterialMsg}" Style="{StaticResource GroupBoxRow}">
<StackPanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ComboBox ItemsSource="{Binding MaterialList}"
DisplayMemberPath="sName"
SelectedItem="{Binding SelMaterial}"/>
<TextBlock Grid.Row="1" Text="{Binding MaterialFromDB}"
<ComboBox ItemsSource="{Binding MaterialList}"
Style="{DynamicResource Raw_ComboBox}"
DisplayMemberPath="sName"
SelectedItem="{Binding SelMaterial}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="150" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
<TextBlock Grid.Row="1" Text="{Binding MaterialFromDB}"
Style="{StaticResource RawTextBlock}"
Visibility="{Binding VisibilityMaterialFromDB}"
Margin="0,5,0,0"/>
</Grid>
</StackPanel>
</GroupBox>
<UniformGrid Columns="2" Margin="0,0,0,0">
<TextBlock Text="{Binding HeightMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Height}"
Margin="13,0,0,5"
IsEnabled="{Binding HeightIsEnabled}" TextAlignment="Right"/>
</UniformGrid>
<Button Content="{Binding CurrMachMsg}"
<Button Content="{Binding CurrMachMsg}"
Command="{Binding CurrMachCommand}"
Background="{Binding CurrMach_Background}"
Style="{StaticResource OptionPanel_TextButton}"
Margin="0,0,0,5"/>
Margin="0,5,0,0"/>
<UniformGrid Columns="2" Margin="0,0,0,5">
<GroupBox Header="Definizion grezzo" Style="{StaticResource GroupBoxRow}">
<StackPanel>
<RadioButton Content="{Binding OutlineMsg}"
<UniformGrid Columns="2" Margin="0,0,0,5">
<RadioButton Content="{Binding OutlineMsg}"
Style="{StaticResource OptionPanel_ToggleButton}"
IsChecked="{Binding OutlineIsChecked}"
Margin="0,0,2.5,0">
</RadioButton>
<RadioButton Content="{Binding DamagedAreaMsg}"
Margin="0,0,1,0">
</RadioButton>
<RadioButton Content="{Binding DamagedAreaMsg}"
Style="{StaticResource OptionPanel_ToggleButton}"
IsChecked="{Binding DAIsChecked}"
Margin="2.5,0,0,0">
</RadioButton>
Margin="1,0,0,0">
</RadioButton>
</UniformGrid>
</UniformGrid>
<ComboBox ItemsSource="{Binding TypeList}"
<ComboBox ItemsSource="{Binding TypeList}"
SelectedIndex="{Binding SelType}"
Style="{StaticResource Raw_ComboBox}"
Margin="0,0,0,5"
IsEnabled="{Binding TypeIsEnabled}"/>
IsEnabled="{Binding TypeIsEnabled}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="Height" Value="30"/>
<!-- Definizione della Grid per definizione grezzo -->
<UniformGrid Columns="2" Rows="5" Margin="0,0,0,0">
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
<TextBlock Text="{Binding LengthMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Length}"
Margin="13,0,0,5"
<!-- Definizione della Grid per definizione grezzo -->
<UniformGrid Columns="2" Rows="6" Margin="0,0,0,0">
<TextBlock Text="{Binding LengthMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Length}"
Margin="0,0,0,5"
IsEnabled="{Binding LengthIsEnabled}" TextAlignment="Right"/>
<TextBlock Text="{Binding WidthMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Width}"
Margin="13,0,0,5"
<TextBlock Text="{Binding WidthMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Width}"
Margin="0,0,0,5"
IsEnabled="{Binding WidthIsEnabled}" TextAlignment="Right"/>
<TextBlock Text="{Binding OffsetXMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding OffsetX}"
Margin="13,0,0,5"
<TextBlock Text="{Binding HeightMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Height}"
Margin="0,0,0,5"
IsEnabled="{Binding HeightIsEnabled}" TextAlignment="Right"/>
<TextBlock Text="{Binding OffsetXMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding OffsetX}"
Margin="0,0,0,5"
IsEnabled="{Binding OffsetXIsEnabled}" TextAlignment="Right"/>
<TextBlock Text="{Binding OffsetYMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding OffsetY}"
Margin="13,0,0,5"
<TextBlock Text="{Binding OffsetYMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding OffsetY}"
Margin="0,0,0,5"
IsEnabled="{Binding OffsetYIsEnabled}" TextAlignment="Right"/>
<TextBlock Text="{Binding KerfMsg}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Kerf}"
Margin="13,0,0,5"
<TextBlock Text="{Binding KerfMsg}" Style="{StaticResource RawTextBlock}"/>
<EgtWpfLib5:EgtTextBox Text="{Binding Kerf, UpdateSourceTrigger=PropertyChanged}"
Margin="0,0,0,5"
IsEnabled="{Binding KerfIsEnabled}" TextAlignment="Right"/>
</UniformGrid>
</UniformGrid>
<!-- Definizione della Grid per Punti -->
<GroupBox Header="{Binding PointsMsg}" Margin="0,0,0,5"
</StackPanel>
</GroupBox>
<!-- Definizione della Grid per Punti -->
<GroupBox Header="{Binding PointsMsg}" Style="{StaticResource GroupBoxRow}"
Visibility="{Binding PointsVisibility}">
<StackPanel>
<StackPanel>
<UniformGrid Columns="2">
<UniformGrid Columns="2">
<ToggleButton Content="{Binding AddMsg}"
<ToggleButton Content="{Binding AddMsg}"
IsChecked="{Binding AddPoint}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
<ToggleButton Content="{Binding RemoveMsg}" Grid.Column="1"
<ToggleButton Content="{Binding RemoveMsg}" Grid.Column="1"
IsChecked="{Binding RemovePoint}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
</UniformGrid>
</UniformGrid>
</StackPanel>
</StackPanel>
</GroupBox>
</GroupBox>
<!-- Definizione della Grid per Zona rovinata -->
<GroupBox Header="{Binding DamagedAreaMsg}" Margin="0,0,0,5"
<!-- Definizione della Grid per Zona rovinata -->
<GroupBox Header="{Binding DamagedAreaMsg}" Style="{StaticResource GroupBoxRow}"
Visibility="{Binding DAVisibility}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ToggleButton Content="{Binding NewMsg}"
<ToggleButton Content="{Binding NewMsg}"
IsChecked="{Binding NewDA}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
<ToggleButton Content="{Binding DeleteMsg}" Grid.Column="1"
<ToggleButton Content="{Binding DeleteMsg}" Grid.Column="1"
IsChecked="{Binding DeleteDA}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
</Grid>
</GroupBox>
</Grid>
</GroupBox>
<!-- Definizione della Grid per Punti Per il Registration -->
<GroupBox Header="{Binding PointsRegMsg}" Style="{StaticResource GroupBoxRow}"
Visibility="{Binding PointsRegVisibility}">
<StackPanel>
<UniformGrid Columns="3">
<ToggleButton Content="{Binding AddMsg}"
IsChecked="{Binding AddPointReg}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
<ToggleButton Content="{Binding ModMsg}"
IsChecked="{Binding ModPointReg}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
<ToggleButton Content="{Binding RemoveMsg}"
IsChecked="{Binding RemovePointReg}"
Style="{StaticResource OptionPanel_ToggleButton}"/>
</UniformGrid>
</StackPanel>
</GroupBox>
<Button Content="{Binding ConfirmPhotoMsg}"
Command="{Binding ConfirmPhotoCommand}"
@@ -183,5 +222,5 @@
Margin="0,0,0,5"/>
<!--<EgtPHOTOLib:ProjectSlabV DataContext="{StaticResource ProjectSlabVM}"/>-->
</StackPanel>
@@ -1,3 +1,5 @@
Public Class RawPartTabV
Private Sub ComboBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
End Sub
End Class
+422 -38
View File
@@ -1,4 +1,6 @@
Imports System.IO
Imports System.Threading
Imports System.Windows.Threading
Imports System.IO
Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports EgtPHOTOLib
@@ -7,6 +9,10 @@ Imports EgtUILib
Public Class RawPartTabVM
Inherits VMBase
' Timer
Private m_TimerIsBusy As Boolean = False
Private m_RefreshTimer As New DispatcherTimer
Friend OmagPhoto As OmagPhotoV
Private m_OmagPhotoVM As OmagPhotoVM
@@ -36,6 +42,17 @@ Public Class RawPartTabVM
' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL
' Layer per crocette dei punti REG
Private m_nRegGroupId As Integer = GDB_ID.NULL
' Numero di spot inseriti nel grezzo corrente
Private m_nCountSpot As Integer = 0
' Gruppo Spot attualmente selezionato
Private m_nCurrSpotRegId As Integer = GDB_ID.NULL
Private Const COUNTSPOT As String = "CountSpot"
Private Const REG As String = "Reg"
Private Const SPOTREG_ As String = "SpotReg_"
Private Const RADSPOT As Double = 20
' Costante minima dimensione del grezzo
Private Const MIN_RAW_DIM As Double = 10
' Costante distanza di sicurezza del grezzo dal bordo
@@ -223,6 +240,8 @@ Public Class RawPartTabVM
End Set
End Property
#Region "Parametri Grezzo"
Private m_dLength As Double
Public Property Length As String
Get
@@ -231,7 +250,7 @@ Public Class RawPartTabVM
Else
Return LenToString(m_dLength, 2)
End If
'Return LenToString(m_dLength, -2)
'Return LenToString(m_dLength, 2)
End Get
Set(value As String)
Dim dLength As Double = 0
@@ -335,9 +354,11 @@ Public Class RawPartTabVM
Dim dHeight As Double = 0
If StringToLen(value, dHeight) And dHeight > -EPS_ZERO Then
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
Dim dPrevHeight As Double = m_dHeight
m_dHeight = dHeight
UpdateRawPartHeight()
UpdateTabState()
MoveAllSpotRegistration(New Vector3d(0, 0, m_dHeight - dPrevHeight))
EstCalc.SetSlabHeight(dHeight)
OmagOFFICEMap.refMachGroupPanelVM.SelectedMachGroup.NotifyPropertyChanged("MachGroupToolTip")
Else
@@ -388,7 +409,7 @@ Public Class RawPartTabVM
RecalcRawPart()
ElseIf m_InvertKerf < 0 And dOffsetX >= 0 And dOffsetX < dMaxOffsetX + m_dKerf Then
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
m_dOffsetX = dOffsetX + m_dKerf
m_dOffsetX = dOffsetX
RecalcRawPart()
ElseIf dOffsetX <= dMinOffsetX - EPS_SMALL Then
NotifyPropertyChanged("OffsetX")
@@ -453,7 +474,7 @@ Public Class RawPartTabVM
RecalcRawPart()
ElseIf m_InvertKerf < 0 And dOffsetY >= 0 And dOffsetY < dMaxOffsetY + m_dKerf Then
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
m_dOffsetY = dOffsetY + m_dKerf
m_dOffsetY = dOffsetY
RecalcRawPart()
ElseIf dOffsetY <= dMinOffsetY - EPS_SMALL Then
NotifyPropertyChanged("OffsetY")
@@ -496,6 +517,7 @@ Public Class RawPartTabVM
End Set
End Property
Private m_PrecKerf As Double = 1
Private m_InvertKerf As Double = 1
Public ReadOnly Property InvertKerf As Double
Get
@@ -516,6 +538,12 @@ Public Class RawPartTabVM
Dim dKerf As Double = 0
Dim dMaxKerf As Double = Math.Min(Math.Min(m_dOffsetX, m_dOffsetY),
Math.Min(m_dTableLength - m_dLength - m_dOffsetX, m_dTableWidth - m_dWidth - m_dOffsetY))
' recuper il segno del valore del Kerf precedente
Dim dInvertKerf As Double = 1
EgtGetInfo(EgtGetFirstRawPart(), KEY_INVERT_KERF, dInvertKerf)
m_PrecKerf = Math.Abs(m_dKerf)
m_PrecKerf = m_PrecKerf * dInvertKerf
' carcio di dati della lastra letti da intrfaccia
Dim dRawLength, dRawWidth, dRawOffsetX, dRawOffsetY As Double
If Not StringToLen(Length, dRawLength) Then Return
@@ -526,9 +554,22 @@ Public Class RawPartTabVM
If Not StringToLen(value, dKerf) Then
Return
End If
' interrompo il processo di caricamento dati se il valore della TexBox è lo stesso della calsse
If dKerf * dInvertKerf = m_dKerf Then Return
If dKerf >= 0 And dKerf < dMaxKerf + EPS_SMALL Then
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
If GetRawMode() <> RAWMODE.FROM_PHOTO Then
If m_PrecKerf < 0 Then
' definsco la dimensione del grezzo pari a quella del kerf
m_dKerf = 0
AdjustRawPartNegativeKerf()
UpdateCircles()
UpdateRawPartKerf()
m_dKerf = dKerf
m_PrecKerf = 0
End If
' Specifico che si tratta di un Kerf negativo (per interfaccia grafica)
EgtSetInfo(EstCalc.GetRawId(), KEY_INVERT_KERF, 1)
SetInvertKerf(1)
@@ -554,14 +595,37 @@ Public Class RawPartTabVM
EgtSetInfo(EstCalc.GetRawId(), KEY_INVERT_KERF, -1)
SetInvertKerf(-1)
' aggiorno dati grezzo (partendo dalle dimensioni esterne del grezzo)
m_dLength = dRawLength + 2 * dKerf
m_dWidth = dRawWidth + 2 * dKerf
m_dOffsetX = dRawOffsetX - dKerf
m_dOffsetY = dRawOffsetY - dKerf
If m_PrecKerf >= 0 Then
m_dLength = dRawLength + 2 * dKerf
m_dWidth = dRawWidth + 2 * dKerf
m_dOffsetX = dRawOffsetX - dKerf
m_dOffsetY = dRawOffsetY - dKerf
End If
m_dKerf = -dKerf
If m_PrecKerf >= 0 Then
' definsco la dimensione del grezzo pari a quella del kerf
m_dKerf = 0
AdjustRawPartNegativeKerf(False)
EgtDraw()
UpdateCircles()
EgtDraw()
UpdateRawPartKerf()
EgtDraw()
m_dKerf = -dKerf
m_PrecKerf = 0
End If
If Not AdjustRawPartNegativeKerf() Then
' se fallisce la generazione (TEMPORANEAMENTE) ripristino l'ultimo valore inserito (vedi riga sopra)!
m_dKerf = 0
NotifyPropertyChanged("Kerf")
End If
EgtDraw()
UpdateCircles()
EgtDraw()
' RecalcRawPart()
'EstCalc.UpdateRawPart()
UpdateRawPartKerf()
'UpdateRawPartKerf()
' Recupero id contorno kerf
Dim nKerfId As Integer = EgtGetFirstNameInGroup(EstCalc.GetRawId(), NAME_KERF)
' Modifico il colore
@@ -601,6 +665,8 @@ Public Class RawPartTabVM
End Set
End Property
#End Region ' Parametri Grezzo
Public ReadOnly Property MaterialList As ObservableCollection(Of Material)
Get
Return CurrentMachine.Materials
@@ -688,6 +754,73 @@ Public Class RawPartTabVM
End Set
End Property
'-------------------- REGISTRATION '--------------------
Private m_AddPointReg As Boolean
Public Property AddPointReg As Boolean
Get
Return m_AddPointReg
End Get
Set(value As Boolean)
If value <> m_AddPointReg Then
If value Then
PhotoWithMouse = False
m_bDrag = False
End If
m_AddPointReg = value
NotifyPropertyChanged("AddPointReg")
m_ModPointReg = False
NotifyPropertyChanged("ModPointReg")
m_RemovePointReg = False
NotifyPropertyChanged("RemovePointReg")
End If
End Set
End Property
Private m_ModPointReg As Boolean
Public Property ModPointReg As Boolean
Get
Return m_ModPointReg
End Get
Set(value As Boolean)
If value <> m_ModPointReg Then
EgtDeselectAll()
EgtResetMark(m_nCurrSpotRegId)
EgtDraw()
If value Then
PhotoWithMouse = False
End If
m_ModPointReg = value
NotifyPropertyChanged("ModPointReg")
m_AddPointReg = False
NotifyPropertyChanged("AddPointReg")
m_RemovePointReg = False
NotifyPropertyChanged("RemovePointReg")
End If
End Set
End Property
Private m_RemovePointReg As Boolean
Public Property RemovePointReg As Boolean
Get
Return m_RemovePointReg
End Get
Set(value As Boolean)
If value <> m_RemovePointReg Then
If value Then
PhotoWithMouse = False
m_bDrag = False
End If
m_RemovePointReg = value
NotifyPropertyChanged("RemovePointReg")
m_AddPointReg = False
NotifyPropertyChanged("AddPointReg")
m_ModPointReg = False
NotifyPropertyChanged("ModPointReg")
End If
End Set
End Property
'-------------------- REGISTRATION '--------------------
Private m_PointsVisibility As Visibility
Public Property PointsVisibility As Visibility
Get
@@ -771,7 +904,7 @@ Public Class RawPartTabVM
End Set
End Property
Private m_CurrMach_Background As Brush = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
Private m_CurrMach_Background As Brush = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
Public Property CurrMach_Background As Brush
Get
Return m_CurrMach_Background
@@ -890,6 +1023,12 @@ Public Class RawPartTabVM
End Get
End Property
Public ReadOnly Property ModMsg As String
Get
Return "Modifica"
End Get
End Property
Public ReadOnly Property NewMsg As String
Get
Return EgtMsg(MSG_RAWPARTPAGEUC + 11)
@@ -914,6 +1053,12 @@ Public Class RawPartTabVM
End Get
End Property
Public ReadOnly Property PointsRegMsg As String
Get
Return "Registration"
End Get
End Property
#End Region ' Messages
#Region "ToolTip"
@@ -956,8 +1101,8 @@ Public Class RawPartTabVM
Friend Function InitRawPart() As Boolean
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
' Se abilitati, visualizzo bottone per dati lastra
Dim bSlabId As Boolean = ( GetMainPrivateProfileInt( S_RAWPART, K_SLABID, 0) <> 0)
SlabIdVisibility = If( bSlabId, Windows.Visibility.Visible, Windows.Visibility.Hidden)
Dim bSlabId As Boolean = (GetMainPrivateProfileInt(S_RAWPART, K_SLABID, 0) <> 0)
SlabIdVisibility = If(bSlabId, Windows.Visibility.Visible, Windows.Visibility.Hidden)
' Se disponibile, imposto possibilità di contorno da foto
If EstPhoto.GetContour() = GDB_ID.NULL Then
If m_TypeList.Count = 3 Then m_TypeList.RemoveAt(2)
@@ -1039,10 +1184,26 @@ Public Class RawPartTabVM
RecalcRawPart(True)
End If
' Abilitazione eventuale bottone per dati slab
SlabIdIsEnabled = ( EstCalc.GetRawId() <> GDB_ID.NULL)
SlabIdIsEnabled = (EstCalc.GetRawId() <> GDB_ID.NULL)
' Creo layer temporaneo per crocette
m_nTempLay = EgtCreateGroup(GDB_ID.ROOT)
EgtSetLevel(m_nTempLay, GDB_LV.TEMP)
' Veroifico se esiste il gruppo "REG"
Dim nIdRaws As Integer = EgtGetParent(EstCalc.GetRawId())
Dim nIdReg As Integer = EgtGetFirstNameInGroup(EgtGetParent(nIdRaws), "Reg")
If nIdReg <> GDB_ID.NULL Then
m_nRegGroupId = nIdReg
EgtGetInfo(m_nRegGroupId, COUNTSPOT, m_nCountSpot)
' Lo rendo visibile
EgtSetStatus(m_nRegGroupId, GDB_ST.ON_)
Else
' Creo layer per definire i punti di REG
m_nRegGroupId = EgtCreateGroup(EgtGetParent(nIdRaws))
EgtSetName(m_nRegGroupId, REG)
m_nCountSpot = 0
End If
' Determino modalità di definizione
OutlineIsChecked = True
If EgtExistsInfo(EstCalc.GetRawId(), KEY_RAWBYPOINTS) Then
@@ -1079,6 +1240,8 @@ Public Class RawPartTabVM
ElseIf dRawKerf > Math.Min(m_dTableLength, m_dTableWidth) / 5 Then
dRawKerf = Math.Min(m_dTableLength, m_dTableWidth) / 5
End If
' assegno il valore del Kerf corrente
m_PrecKerf = dRawKerf
If dRawLen < 0 Then
dRawLen = 100
ElseIf dRawLen > m_dTableLength - 2 * dRawKerf Then
@@ -1090,14 +1253,14 @@ Public Class RawPartTabVM
dRawWidth = m_dTableWidth - 2 * dRawKerf
End If
If dRawOffsX < dRawKerf Then dRawOffsX = dRawKerf
If dRawOffsX + dRawLen + dRawKerf > m_dTableLength Then
dRawOffsX = Math.Max(dRawKerf, m_dTableLength - dRawLen - dRawKerf)
dRawLen = Math.Min(dRawLen, m_dTableLength - dRawOffsX - dRawKerf)
If dRawOffsX + dRawLen + 2 * dRawKerf > m_dTableLength Then
dRawOffsX = Math.Max(dRawKerf, m_dTableLength - dRawLen - 2 * dRawKerf)
dRawLen = Math.Min(dRawLen, m_dTableLength - dRawOffsX - 2 * dRawKerf)
End If
If dRawOffsY < dRawKerf Then dRawOffsY = dRawKerf
If dRawOffsY + dRawWidth + dRawKerf > m_dTableWidth Then
dRawOffsY = Math.Max(dRawKerf, m_dTableWidth - dRawWidth - dRawKerf)
dRawWidth = Math.Min(dRawWidth, m_dTableWidth - dRawOffsY - dRawKerf)
If dRawOffsY + dRawWidth + 2 * dRawKerf > m_dTableWidth Then
dRawOffsY = Math.Max(dRawKerf, m_dTableWidth - dRawWidth - 2 * dRawKerf)
dRawWidth = Math.Min(dRawWidth, m_dTableWidth - dRawOffsY - 2 * dRawKerf)
End If
' Assegno i dati
SetLength(dRawLen)
@@ -1122,6 +1285,8 @@ Public Class RawPartTabVM
WriteMainPrivateProfileString(S_RAWPART, K_RAWOFFSX, DoubleToString(m_dOffsetX, 2))
WriteMainPrivateProfileString(S_RAWPART, K_RAWOFFSY, DoubleToString(m_dOffsetY, 2))
WriteMainPrivateProfileString(S_RAWPART, K_RAWKERF, DoubleToString(m_dKerf, 2))
' Nascondo il gruppo dei punti Reg
EgtSetStatus(m_nRegGroupId, GDB_ST.OFF)
' Se ci sono pezzi nel grezzo
If EgtGetFirstPartInRawPart(EstCalc.GetRawId()) <> GDB_ID.NULL Then
' Cancello tutte le lavorazioni
@@ -1255,7 +1420,7 @@ Public Class RawPartTabVM
AdjustRawPartPosition()
End If
' Abilitazione eventuale bottone per dati slab
SlabIdIsEnabled = ( EstCalc.GetRawId() <> GDB_ID.NULL)
SlabIdIsEnabled = (EstCalc.GetRawId() <> GDB_ID.NULL)
' Aggiorno visualizzazione
EgtDraw()
End Sub
@@ -1307,6 +1472,51 @@ Public Class RawPartTabVM
Return True
End Function
' -------------------------------- INIZIO Nuove funzioni per la gestione del Kerf negativo --------------------------------
Private Function AdjustRawPartNegativeKerf(Optional NegativeOffset As Boolean = True) As Boolean
' Se non c'è il grezzo, esco
If EstCalc.GetRawId() = GDB_ID.NULL Then Return False
' Cancello eventuale vecchio contorno di kerf
Dim nKerfId As Integer = EgtGetFirstNameInGroup(EstCalc.GetRawId(), NAME_KERF)
Dim nInvert As Double = 1
If Not NegativeOffset Then
nInvert = -1
End If
Dim dOffset As Double = (-m_dKerf - m_PrecKerf) * nInvert
Dim nCount As Integer = 0
Dim bOK As Boolean = EgtOffsetCurve(nKerfId, dOffset, OFF_TYPE.EXTEND)
EgtSetColor(nKerfId, m_KerfCol)
' ------ Gestione corretta dei kerf ------
'Dim nNewKerfId As Integer = EgtOffsetCurveAdv(nKerfId, dOffset, OFF_TYPE.EXTEND, nCount)
'EgtSetColor(nNewKerfId, m_KerfCol)
'EgtSetName(nNewKerfId, "Kerf")
'EgtErase(nKerfId)
'-----------------------------------------
' Salvo il valore del kerf (sempre in mm)
EgtSetInfo(EstCalc.GetRawId(), KEY_KERF, m_dKerf)
Return bOK
End Function
Private Function AdjustRawPartPositionNegativeKerf() As Boolean
' Sistemo la posizione
Dim ptRef As New Point3d(m_dOffsetX, m_dOffsetY, CurrentMachine.dAdditionalTable)
If EgtMoveToCornerRawPart(EstCalc.GetRawId(), ptRef, MCH_CR.BL) Then
' Parametro ereditato da OmagCUT
' OkBtn.IsEnabled = True
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
Else
' OkBtn.IsEnabled = False
Dim sMsg As String = EgtMsg(MSG_RAWPARTPAGEUC + 47)
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(sMsg, 3, MSG_TYPE.ERROR_) ' Errore nella posizione o dimensione del grezzo
End If
' Aggiorno visualizzazione
EgtZoom(ZM.ALL)
Return True
End Function
' -------------------------------- FINE Nuove funzioni per la gestione del Kerf negativo --------------------------------
Private Sub UpdateRawPartHeight()
' Se da creare
If EstCalc.GetRawId() = GDB_ID.NULL Then
@@ -1367,7 +1577,7 @@ Public Class RawPartTabVM
EstPhoto.UpdateContour()
End If
' Abilitazione eventuale bottone per dati slab
SlabIdIsEnabled = ( EstCalc.GetRawId() <> GDB_ID.NULL)
SlabIdIsEnabled = (EstCalc.GetRawId() <> GDB_ID.NULL)
' Aggiorno visualizzazione
EgtDraw()
End Sub
@@ -1475,6 +1685,10 @@ Public Class RawPartTabVM
' Muovo eventuali cerchietti alle estremità della curva di contorno
MoveCircles(vtMove)
End If
' Muovo eventuali punti SpotReg
If m_nRegGroupId <> GDB_ID.NULL Then
MoveAllSpotRegistration(vtMove)
End If
' Incremento opportunamente l'offset della fotografia
Dim dPhotoOffsetX As Double = m_dPhotoOffsetX + vtMove.x
Dim dPhotoOffsetY As Double = m_dPhotoOffsetY + vtMove.y
@@ -1583,8 +1797,11 @@ Public Class RawPartTabVM
End Sub
Private Sub AdjustRawPartOnExit()
' Se non c'è il grezzo, esco
If EstCalc.GetRawId() = GDB_ID.NULL Then Return
' Se non c'è il grezzo, esco dopo aver nascosto eventuale foto
If EstCalc.GetRawId() = GDB_ID.NULL Then
ShowPhoto(False)
Return
End If
' Disabilito impostazione modificato
Dim bOldEnMod = EgtGetEnableModified()
If bOldEnMod Then EgtDisableModified()
@@ -1727,6 +1944,106 @@ Public Class RawPartTabVM
Return True
End Function
Private Function MoveSpotRegistration(nIdGroup As Integer, vtMove As Vector3d) As Boolean
If nIdGroup = GDB_ID.NULL Then Return False
' Non ci deve essere movimento in Z
vtMove.z = 0
' Recupero il cercio di riferimento
Dim nArcId As Integer = EgtGetFirstInGroup(nIdGroup)
Dim b3Crv As New BBox3d
EgtGetBBoxGlob(nArcId, GDB_BB.STANDARD, b3Crv)
b3Crv.Move(vtMove)
If b3Crv.Min().x < m_ptTableMin.x + 10 * EPS_SMALL Then
vtMove.x += m_ptTableMin.x + 10 * EPS_SMALL - b3Crv.Min().x
ElseIf b3Crv.Max().x > m_ptTableMin.x + m_dTableLength + 10 * EPS_SMALL Then
vtMove.x += m_ptTableMin.x + m_dTableLength - 10 * EPS_SMALL - b3Crv.Max().x
End If
If b3Crv.Min().y < m_ptTableMin.y + 10 * EPS_SMALL Then
vtMove.y += m_ptTableMin.y + 10 * EPS_SMALL - b3Crv.Min().y
ElseIf b3Crv.Max().y > m_ptTableMin.y + m_dTableWidth + 10 * EPS_SMALL Then
vtMove.y += m_ptTableMin.y + m_dTableWidth - 10 * EPS_SMALL - b3Crv.Max().y
End If
' muovo il gruppo
EgtMove(nIdGroup, vtMove)
EgtDraw()
Return True
End Function
Private Sub MoveAllSpotRegistration(vtMove As Vector3d)
Dim nId As Integer = EgtGetFirstInGroup(m_nRegGroupId)
While nId <> GDB_ID.NULL
EgtMove(nId, vtMove)
nId = EgtGetNext(nId)
End While
EgtDraw()
End Sub
Private Function CreateSpotRegistration(nLayerIdReg As Integer, ptP As Point3d, nIndexSpot As Integer) As Boolean
' creo uno specifico layer per ogni spot (definito da una croce inscritta in un cerchio)
Dim nIdSpotLay As Integer = EgtCreateGroup(nLayerIdReg)
' Aggiungo cerchio
Dim nCircId As Integer = EgtCreateCircle(nIdSpotLay, ptP, RADSPOT)
' Inserisco una croce all'interno del
Dim nLineVId As Integer = EgtCreateLinePVL(nIdSpotLay, ptP, Vector3d.Y_AX, RADSPOT)
EgtExtendCurveStartByLen(nLineVId, RADSPOT)
Dim nLineHId As Integer = EgtCreateLinePVL(nIdSpotLay, ptP, Vector3d.X_AX, RADSPOT)
EgtExtendCurveStartByLen(nLineHId, RADSPOT)
Dim nTextId As Integer = EgtCreateText(nIdSpotLay, ptP + New Vector3d(1, 1, 0), nIndexSpot.ToString, 10)
' coloro gli oggetti appena creati ed assegno il nome
Dim bOk As Boolean = EgtSetColor(nCircId, New Color3d(0, 0, 0))
bOk = bOk And EgtSetName(nCircId, SPOTREG_ & "Arc")
bOk = bOk And EgtSetColor(nLineVId, New Color3d(0, 0, 0))
bOk = bOk And EgtSetName(nLineVId, SPOTREG_ & "LineV")
bOk = bOk And EgtSetColor(nLineHId, New Color3d(0, 0, 0))
bOk = bOk And EgtSetName(nLineHId, SPOTREG_ & "LineH")
bOk = bOk And EgtSetColor(nTextId, New Color3d(255, 0, 0))
bOk = bOk And EgtSetName(nTextId, SPOTREG_ & "Text")
' assegno il nome del gruppo corrente
bOk = bOk And EgtSetName(nIdSpotLay, SPOTREG_ & nIndexSpot.ToString)
If bOk Then
' Aggiorno il contatore degli Spot
EgtSetInfo(nLayerIdReg, COUNTSPOT, nIndexSpot)
m_nCountSpot = nIndexSpot
End If
Return bOk
End Function
Private Function RemoveSpotRegistration(nSpotRegId As Integer) As Boolean
Dim nIndSpotReg As Integer = GetIndexGroupSpotReg(nSpotRegId)
If Not EgtErase(nSpotRegId) Then Return False
' faccio scorrere tutti i gruppi ed eventualmente li rinomino
Dim n_IdSR As Integer = EgtGetFirstInGroup(m_nRegGroupId)
m_nCountSpot -= 1
EgtSetInfo(m_nRegGroupId, COUNTSPOT, m_nCountSpot)
While n_IdSR <> GDB_ID.NULL
Dim nCurrIndSpotReg As Integer = GetIndexGroupSpotReg(n_IdSR)
If nCurrIndSpotReg > nIndSpotReg Then
' Recupero il testo
Dim nIdtext As Integer = EgtGetFirstNameInGroup(n_IdSR, SPOTREG_ & "Text")
nCurrIndSpotReg -= 1
EgtModifyText(nIdtext, nCurrIndSpotReg.ToString)
EgtSetName(n_IdSR, SPOTREG_ & nCurrIndSpotReg.ToString)
End If
n_IdSR = EgtGetNext(n_IdSR)
End While
EgtDraw()
Return True
End Function
Private Function GetIndexGroupSpotReg(nSpotRegId As Integer) As Integer
Dim sNameParent As String = String.Empty
EgtGetName(nSpotRegId, sNameParent)
' Ricavo l'indice dal nome
Dim sItems As String() = sNameParent.Split("_"c)
Dim nCurrIndex As Integer = 0
If sItems.Count = 2 Then
If Not Integer.TryParse(sItems(1), nCurrIndex) Then
nCurrIndex = -1
End If
End If
Return nCurrIndex
End Function
Private Function ValidateCurrMachMatThick() As Boolean
' Verifico che le lavorazioni correnti siano compatibili con materiale e spessore
' Lama
@@ -1777,7 +2094,7 @@ Public Class RawPartTabVM
OmagOFFICEMap.refOptionPanelVM.MachTabIsEnabled = True
OmagOFFICEMap.refOptionPanelVM.SimulTabIsEnabled = True
OmagOFFICEMap.refOptionPanelVM.RawPart_Background = OmagOFFICEDictionary.TabControl_Header_Background
CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
CurrMach_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
Else
OmagOFFICEMap.refOptionPanelVM.NestTabIsEnabled = False
OmagOFFICEMap.refOptionPanelVM.MachTabIsEnabled = False
@@ -1788,7 +2105,7 @@ Public Class RawPartTabVM
If Not ValidateCurrMachToolIsInSetUp() Then
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = Brushes.Red
Else
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#FFDDDDDD"), SolidColorBrush)
OmagOFFICEMap.refMachinePanelVM.SetUp_Background = DirectCast(New BrushConverter().ConvertFrom("#1C1D22"), SolidColorBrush)
End If
If String.IsNullOrWhiteSpace(CurrentMachine.sCurrSawing) And String.IsNullOrWhiteSpace(CurrentMachine.sCurrWaterJetting) Then
CurrMach_Background = Brushes.Red
@@ -1841,32 +2158,32 @@ Public Class RawPartTabVM
End Property
Public Sub SlabId(ByVal param As Object)
Dim nRawId As Integer = EstCalc.GetRawId()
Dim nRawId As Integer = EstCalc.GetRawId()
If nRawId = GDB_ID.NULL Then Return
' Finestra input dati
Dim DlgSlabIdVM As New SlabIdWindowVM()
Dim DlgSlabIdV As New SlabIdWindowV(Application.Current.MainWindow, DlgSlabIdVM)
' Recupero eventuali vecchi dati della lastra
Dim sBlockName As String = "" : Dim sSlabNbr As String = ""
EgtGetInfo( nRawId, INFO_RAW_BLOCK, sBlockName)
EgtGetInfo( nRawId, INFO_RAW_SLABNBR, sSlabNbr)
DlgSlabIdVM.SetData( sBlockName, sSlabNbr)
EgtGetInfo(nRawId, INFO_RAW_BLOCK, sBlockName)
EgtGetInfo(nRawId, INFO_RAW_SLABNBR, sSlabNbr)
DlgSlabIdVM.SetData(sBlockName, sSlabNbr)
' Visualizzo finestra richiesta dati
If DlgSlabIdV.ShowDialog() Then
DlgSlabIdVM.GetData( sBlockName, sSlabNbr)
DlgSlabIdVM.GetData(sBlockName, sSlabNbr)
' Assegno info
EgtSetInfo( nRawId, INFO_RAW_BLOCK, sBlockName)
EgtSetInfo( nRawId, INFO_RAW_SLABNBR, sSlabNbr)
EgtSetInfo(nRawId, INFO_RAW_BLOCK, sBlockName)
EgtSetInfo(nRawId, INFO_RAW_SLABNBR, sSlabNbr)
' Aggiorno nome lastra
If Not String.IsNullOrWhiteSpace( sBlockName) And Not String.IsNullOrWhiteSpace( sBlockName) Then
If Not String.IsNullOrWhiteSpace(sBlockName) And Not String.IsNullOrWhiteSpace(sBlockName) Then
Dim sSlabName = sBlockName & "-" & sSlabNbr
EstCalc.SetSlabName( sSlabName)
EstCalc.SetSlabName(sSlabName)
' notifico il MachGroup Corrente
OmagOFFICEMap.refMachGroupPanelVM.SelectedMachGroup.NotifyPropertyChanged("MachGroupToolTip")
End If
' Cancello vecchio BarCode e se definito inserisco nuovo
Dim sBarCode As String = sBlockName & " - " & sSlabNbr
ShowBarCode( nRawId, sBarCode)
ShowBarCode(nRawId, sBarCode)
' Aggiorno visualizzazione
EgtDraw()
End If
@@ -1936,11 +2253,17 @@ Public Class RawPartTabVM
' inserisco in elenco solo i materiali della macchina corrente
AddHandler PhotoMap.refOptionPanelVM.SlabIsSelectedOFFICE, AddressOf OmagOFFICEMap.refRawPartTabVM.ClosePhotoWnd
' Dim OmagPhotoWnd As New OmagPhotoV(Application.Current.MainWindow(), New OmagPhotoVM)
'OmagPhotoWnd.ShowDialog()
' lancio il timer di aggiornamento dell'interfaccia, per la gestione di due OmagPHOTO che accedono allo stesso SQL
AddHandler m_RefreshTimer.Tick, AddressOf RefreshTimer_Tick
m_RefreshTimer.Interval = TimeSpan.FromMilliseconds(2000)
m_RefreshTimer.Start()
' apro la finestra per accedere al DB delle lastre
Me.OmagPhoto = New OmagPhotoV
OmagPhoto.ShowDialog()
m_RefreshTimer.Stop()
EgtSetCurrentContext(EgtPHOTOLib.MainData.PreviousContext)
EgtSetCurrentContext(OmagOFFICEMap.refSceneHostVM.MainScene.GetCtx())
@@ -2031,7 +2354,7 @@ Public Class RawPartTabVM
EstCalc.SetSlabHeight(m_dHeight)
' Visualizzo eventuale codice
Dim sBarCode As String = sBlockCode & " - " & sSlabCode
ShowBarCode( EstCalc.GetRawId(), sBarCode)
ShowBarCode(EstCalc.GetRawId(), sBarCode)
' notifico il MachGroup Corrente
OmagOFFICEMap.refMachGroupPanelVM.SelectedMachGroup.NotifyPropertyChanged("MachGroupToolTip")
' Carico contorno
@@ -2058,6 +2381,17 @@ Public Class RawPartTabVM
EgtDraw()
End Sub
' per la gestione di due OmagPHOTO che accedono allo stesso SQL
Private Sub RefreshTimer_Tick()
If Not m_TimerIsBusy And PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST Then
m_TimerIsBusy = True
m_RefreshTimer.Stop()
EgtPHOTOLib.PhotoMap.refListPageVM.RefreshLisPage()
m_TimerIsBusy = False
m_RefreshTimer.Start()
End If
End Sub
#End Region ' PhotoCommand
#Region "ConfirmPhotoCommand"
@@ -2106,6 +2440,52 @@ Public Class RawPartTabVM
m_dDragPar = -1
Exit While
End If
' ---------- SELEZIONE SpotReg ----------
ElseIf m_AddPointReg Then
' Acquisisco punto da disegno
EgtUnProjectPoint(e.Location, m_ptPrev)
Dim ptRawMax As Point3d = GetRawPtMax()
m_ptPrev.z = ptRawMax.z + 0.1
' Inserisco un nuovo punto registrazione
CreateSpotRegistration(m_nRegGroupId, m_ptPrev, m_nCountSpot + 1)
EgtDraw()
' disattivo il comando di inserimento
m_AddPointReg = False
NotifyPropertyChanged("AddPointReg")
Return
ElseIf m_ModPointReg Then
If sName.StartsWith(SPOTREG_) Then
EgtDeselectAll()
EgtResetMark(m_nCurrSpotRegId)
' recupero recupero il centro della prima curva
Dim nArcId As Integer = EgtGetFirstInGroup(nSelId)
Dim nIdParent As Integer = EgtGetParent(nSelId)
EgtSelectGroupObjs(nIdParent)
EgtSetMark(nIdParent)
EgtDraw()
' Acquisisco punto da disegno
EgtUnProjectPoint(e.Location, m_ptPrev)
m_bDrag = True
m_nDragEnt = nIdParent
' Salvo l'Id del punto SpotReg da spostare
m_nCurrSpotRegId = nIdParent
' esco dal ciclo
Return
End If
ElseIf m_RemovePointReg Then
If sName.StartsWith(SPOTREG_) Then
' recupero recupero il centro della prima curva
Dim nIdParent As Integer = EgtGetParent(nSelId)
RemoveSpotRegistration(nIdParent)
EgtDraw()
EgtErase(nIdParent)
m_RemovePointReg = False
NotifyPropertyChanged("RemovePointReg")
' esco dal ciclo
Return
End If
' ---------- SELEZIONE SpotReg ----------
ElseIf sName = NAME_RAW_SOLID Then
m_bDrag = EgtUnProjectPoint(e.Location, m_ptPrev)
m_nDragEnt = -1
@@ -2256,6 +2636,8 @@ Public Class RawPartTabVM
' Eseguo modifica
If m_PhotoWithMouse Then
ModifyPhoto(ptCurr)
ElseIf m_ModPointReg Then
MoveSpotRegistration(m_nDragEnt, ptCurr - m_ptPrev)
Else
Select Case GetRawMode()
Case RAWMODE.RECTANGLE
@@ -2268,6 +2650,8 @@ Public Class RawPartTabVM
End If
' 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 ModifyPhoto(ptCurr As Point3d)
+2 -2
View File
@@ -101,9 +101,9 @@ Public Class MachineAxis
EgtSetAxisPos(m_Name, dVal)
EgtGetAxisPos(m_Name, dVal)
If m_Linear Then
Value = LenToString(dVal, -3)
Value = LenToString(dVal, 3)
Else
Value = DoubleToString(dVal, -3)
Value = DoubleToString(dVal, 3)
End If
EgtDraw()
End Sub
+43 -40
View File
@@ -3,31 +3,32 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Margin="5,5,5,0">
<GroupBox Header="{Binding MachViewMsg}" Margin="0,0,0,5">
<GroupBox Header="{Binding MachViewMsg}" Style="{StaticResource GroupBoxRow}">
<UniformGrid Columns="3">
<Button Command="{Binding ToolModeCommand}"
Style="{StaticResource OptionPanel_NestingButton}">
Style="{StaticResource Simul_Button_Img}">
<Image Source="/Resources/SimulTab/ToolMode.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding HeadModeCommand}"
Style="{StaticResource OptionPanel_NestingButton}">
<Button Command="{Binding Simul_Button_Img}"
Style="{StaticResource Simul_Button_Img}">
<Image Source="/Resources/SimulTab/HeadMode.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding MachModeCommand}"
Style="{StaticResource OptionPanel_NestingButton}">
Style="{StaticResource Simul_Button_Img}">
<Image Source="/Resources/SimulTab/MachMode.png" Stretch="Uniform"/>
</Button>
</UniformGrid>
</GroupBox>
<GroupBox BorderThickness="0">
<Border Style="{StaticResource Border}" Margin="0,5,0,0">
<StackPanel DataContext="{Binding MySimul}">
<UniformGrid Columns="3" Margin="0,10,0,5">
<Button Command="{Binding StepCommand}" Grid.Column="0" Grid.Row="3"
Style="{StaticResource OptionPanel_NestingButton}"
Style="{StaticResource Simul_Button_Img}"
ToolTip="{Binding OneStepToolTip}" Margin="0,0,2.5,0">
<Image Source="/Resources/SimulTab/PlayStep.png"
HorizontalAlignment="Center" VerticalAlignment="Center"
@@ -35,14 +36,14 @@
</Button>
<Button Command="{Binding PlayPauseCommand}" Grid.Column="1" Grid.Row="3"
Style="{StaticResource OptionPanel_NestingButton}"
Style="{StaticResource Simul_Button_Img}"
ToolTip="{Binding PlayPauseToolTip}" Margin="2.5,0,2.5,0">
<Image Source="{Binding PlayPauseImage}" HorizontalAlignment="Center"
VerticalAlignment="Center" Height="50" Width="50"/>
</Button>
<Button Command="{Binding StopCommand}" Grid.Column="2" Grid.Row="3"
Style="{StaticResource OptionPanel_NestingButton}"
Style="{StaticResource Simul_Button_Img}"
ToolTip="{Binding StopHomeToolTip}" Margin="2.5,0,0,0">
<Image Source="/Resources/SimulTab/Stop.png"
HorizontalAlignment="Center" VerticalAlignment="Center"
@@ -50,35 +51,41 @@
</Button>
</UniformGrid>
<TextBlock Text="{Binding StatusMsg}" FontSize="15" TextAlignment="Center" Margin="10,5,10,0"/>
<TextBlock Text="{Binding StatusMsg}" FontSize="15" TextAlignment="Center" Margin="10,5,10,0"
Style="{StaticResource SimulTextBlock}"/>
<Slider Name="SpeedSlider" Grid.Row="5" Grid.ColumnSpan="3" Height="30"
Minimum="1" Maximum="100" TickPlacement="BottomRight" TickFrequency="10"
Margin="0,5,0,0" Value="{Binding SliderValue}"/>
<Grid Margin="0,0,0,5">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding TName}" Grid.Row="0" FontSize="15" HorizontalAlignment="Center"
VerticalAlignment="Center" TextAlignment="Center" Margin="5,5,5,0" Grid.ColumnSpan="2" />
VerticalAlignment="Center" TextAlignment="Center" Margin="5,5,5,0" Grid.ColumnSpan="2"
Style="{StaticResource SimulTextBlock}"/>
<TextBlock Text="{Binding SValue}" Grid.Row="0" Grid.Column="2" FontSize="15" HorizontalAlignment="Center"
VerticalAlignment="Center" TextAlignment="Right" Margin="0,5,5,5" />
VerticalAlignment="Center" TextAlignment="Right" Margin="0,5,5,5"
Style="{StaticResource SimulTextBlock}"/>
<TextBlock Text="{Binding GCode}" Grid.Row="1" FontSize="15" HorizontalAlignment="Center"
VerticalAlignment="Center" TextAlignment="Center" Margin="5,5,5,0" Grid.ColumnSpan="2" />
VerticalAlignment="Center" TextAlignment="Center" Margin="5,5,5,0" Grid.ColumnSpan="2"
Style="{StaticResource SimulTextBlock}"/>
<TextBlock Text="{Binding FValue}" Grid.Row="1" Grid.Column="2" FontSize="15" HorizontalAlignment="Center"
VerticalAlignment="Center" TextAlignment="Right" Margin="0,5,5,5" />
</Grid>
<ItemsControl ItemsSource="{Binding MachineAxisList}" Margin="0,0,0,5">
VerticalAlignment="Center" TextAlignment="Right" Margin="0,5,5,5"
Style="{StaticResource SimulTextBlock}"/>
</Grid>
<ItemsControl ItemsSource="{Binding MachineAxisList}" Margin="0,0,0,5">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,5">
@@ -89,11 +96,12 @@
<TextBlock Text="{Binding Token}" FontSize="15"
HorizontalAlignment="Center" VerticalAlignment="Center"
TextWrapping="Wrap" TextAlignment="Center"/>
TextWrapping="Wrap" TextAlignment="Center"
Style="{StaticResource SimulTextBlock}"/>
<TextBox Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1"
IsReadOnly="{Binding IsReadOnlyAxesValue}"
IsEnabled="{Binding IsEnabledAxesValue}"
TextAlignment="Right">
Style="{StaticResource AxisTextBox}">
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding ManualAxisModifyCommand}"/>
</TextBox.InputBindings>
@@ -104,10 +112,9 @@
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</GroupBox>
</Border>
<GroupBox Header="{Binding EstimationMsg}"
IsEnabled="{Binding Estimation_IsEnabled}"
<GroupBox Header="{Binding EstimationMsg}" Style="{StaticResource GroupBoxRow}"
DataContext="{Binding MyEstim}">
<StackPanel Margin="2,2,2,0">
@@ -116,8 +123,7 @@
<TextBlock Text="{Binding TimeMsg}"/>
<TextBox Text="{Binding Time, Mode=OneWay}"
IsReadOnly="True"
TextAlignment="Right"/>
Style="{StaticResource EstimateTextBox}"/>
</UniformGrid>
@@ -125,28 +131,25 @@
<TextBlock Text="{Binding CutLenMsg}"/>
<TextBox Text="{Binding CutLen, Mode=OneWay}"
IsReadOnly="True"
TextAlignment="Right"/>
Style="{StaticResource EstimateTextBox}"/>
</UniformGrid>
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Text="{Binding NetAreaMsg}"/>
<TextBox Text="{Binding NetArea, Mode=OneWay}"
IsReadOnly="True"
TextAlignment="Right"/>
Style="{StaticResource EstimateTextBox}"/>
</UniformGrid>
<UniformGrid Columns="2" Margin="0,0,0,5">
<TextBlock Text="{Binding UsageMsg}"/>
<TextBox Text="{Binding Usage, Mode=OneWay}"
IsReadOnly="True"
TextAlignment="Right"/>
Style="{StaticResource EstimateTextBox}"/>
</UniformGrid>
<Button Content="{Binding DetailsMsg}" Height="30"
<Button Content="{Binding DetailsMsg}" Style="{StaticResource SimulPanel_TextButton}"
Command="{Binding Details_Command}"
Margin="0,0,0,2"/>
+4 -4
View File
@@ -137,10 +137,10 @@ Public Class SimulTabVM
MyEstim.Estimation_IsEnabled = False
End If
' Impostazioni box stime
NotifyPropertyChanged("Time")
NotifyPropertyChanged("CutLen")
NotifyPropertyChanged("NetArea")
NotifyPropertyChanged("Usage")
MyEstim.NotifyPropertyChanged("Time")
MyEstim.NotifyPropertyChanged("CutLen")
MyEstim.NotifyPropertyChanged("NetArea")
MyEstim.NotifyPropertyChanged("Usage")
' Nascondo eventuali pezzi in parcheggio
HideParkedParts()
' Nascondo eventuale contorno da foto
+11 -1
View File
@@ -21,9 +21,11 @@
</Grid.RowDefinitions>
<GroupBox Header="{Binding CurrentLanguageMsg}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Column="0" Margin="0,0,5,5">
<UniformGrid Rows="2">
<ComboBox ItemsSource="{Binding LanguageList, Mode=OneWay}" Height="25"
Style="{DynamicResource OptionWnd_ComboBox}"
SelectedItem="{Binding SelLanguage}" DisplayMemberPath="Name"/>
<TextBlock Text="{Binding LanguageAdvertMsg}" TextWrapping="Wrap"
TextAlignment="Center"/>
@@ -31,20 +33,25 @@
</GroupBox>
<GroupBox Header="{Binding MeasureUnitMsg}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Column="1" Margin="0,0,5,5">
<ComboBox ItemsSource="{Binding MeasureUnitList, Mode=OneWay}"
Style="{DynamicResource OptionWnd_ComboBox}"
SelectedIndex="{Binding SelMeasureUnit}"
Height="25" Width="60"/>
</GroupBox>
<GroupBox Header="{Binding SideAngleHdr}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Row="1" Margin="0,0,5,5">
<ComboBox ItemsSource="{Binding SideModeList, Mode=OneWay}"
Style="{DynamicResource OptionWnd_ComboBox}"
SelectedIndex="{Binding SelSideModeIndex}"
Height="25"/>
</GroupBox>
<GroupBox Header="{Binding DirectInsertHdr}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Row="2" Margin="0,0,5,5">
<UniformGrid Rows="2">
<Grid>
@@ -63,7 +70,8 @@
</GroupBox>
<GroupBox Header="{Binding TextColorMsg}"
Grid.Column="1" Grid.Row="1" Margin="0,0,5,5">
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Column="1" Grid.Row="1" Margin="0,0,5,5">
<Button Height="25" Width="60" Margin="0,5,0,0" Background="{Binding TextColorBackground}"
Command="{Binding ChangeColorCommand}" IsEnabled="{Binding bSelOk}" Style="{StaticResource Option_ColorButton}">
</Button>
@@ -71,6 +79,7 @@
<!--SideAngle from color-->
<GroupBox Name="ColorToSideAngGpBx" Header="{Binding ColorToSideAngMsg}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Column="0" Grid.Row="3" Margin="0,0,5,5" >
<Grid>
@@ -146,6 +155,7 @@
<!--Engrave from color-->
<GroupBox Name="ColorToEngraveGpBx" Header="{Binding ColorToEngraveMsg}"
Style="{StaticResource GroupBoxOptionWnd}"
Grid.Column="1" Grid.Row="3" Margin="0,0,5,5" >
<Grid>
+1 -1
View File
@@ -71,7 +71,7 @@ Public Class OptionWindowVM
OmagOFFICEMap.refRawPartTabVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refNestingTabVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refMoveRawModeVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refSimulTabVM.MySimul.Refresh(PrevMeasureUnit)
If Not IsNothing(OmagOFFICEMap.refSimulTabVM.MySimul) Then OmagOFFICEMap.refSimulTabVM.MySimul.Refresh(PrevMeasureUnit)
End If
End Set
End Property
+32 -27
View File
@@ -1,35 +1,40 @@
<EgtFloating:EgtFloatingManager x:Class="ProjectV"
<DockPanel x:Class="ProjectV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE">
<EgtFloating:EgtFloatingTray x:Name="LEFTTRAY" DockPanel.Dock="Left">
<OmagOFFICE:OptionPanelV DataContext="{StaticResource OptionPanelVM}"
xmlns:OmagOFFICE="clr-namespace:OmagOFFICE"
Background="{StaticResource Omag_DarkGray}">
<DockPanel x:Name="LEFTTRAY" DockPanel.Dock="Left" Background="Transparent">
<OmagOFFICE:OptionPanelV DataContext="{StaticResource OptionPanelVM}"
Height="{Binding MaxHeight,ElementName=LEFTTRAY}"/>
</EgtFloating:EgtFloatingTray>
<EgtFloating:EgtFloatingTray x:Name="TOPTRAY" DockPanel.Dock="Top">
<OmagOFFICE:ShowPanelV DataContext="{StaticResource ShowPanelVM}"/>
<OmagOFFICE:ViewPanelV DataContext="{StaticResource ViewPanelVM}"/>
<OmagOFFICE:InstrumentPanelV DataContext="{StaticResource InstrumentPanelVM}"/>
<OmagOFFICE:VeinMatchPanelV DataContext="{StaticResource VeinMatchPanelVM}"/>
<OmagOFFICE:MachinePanelV DataContext="{StaticResource MachinePanelVM}"/>
</EgtFloating:EgtFloatingTray>
<EgtFloating:EgtFloatingTray x:Name="BOTTOMTRAY" DockPanel.Dock="Bottom">
<EgtWPFLib5:EgtMachGroupPanelV DataContext="{StaticResource MachGroupPanelVM}"
Background="{StaticResource Omag_Gray}"
BorderBrush="{StaticResource Omag_Gray}"
</DockPanel>
<DockPanel x:Name="TOPTRAY" DockPanel.Dock="Top" Background="Transparent">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Width="{Binding}">
<OmagOFFICE:ShowPanelV DataContext="{StaticResource ShowPanelVM}"/>
<OmagOFFICE:ViewPanelV DataContext="{StaticResource ViewPanelVM}"/>
<OmagOFFICE:InstrumentPanelV DataContext="{StaticResource InstrumentPanelVM}"/>
<OmagOFFICE:PrintPanelV DataContext="{StaticResource PrintPanelVM}"/>
<OmagOFFICE:VeinMatchPanelV DataContext="{StaticResource VeinMatchPanelVM}"/>
<OmagOFFICE:MachinePanelV DataContext="{StaticResource MachinePanelVM}"/>
</StackPanel>
</DockPanel>
<DockPanel x:Name="BOTTOMTRAY" DockPanel.Dock="Bottom" Background="Transparent">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="{Binding}">
<OmagOFFICE:MyMachGroupPanelV DataContext="{StaticResource MachGroupPanelVM}"/>
<!--<EgtWPFLib5:EgtMachGroupPanelV DataContext="{StaticResource MachGroupPanelVM}"
Background="Transparent"
BorderBrush="Transparent"
RepaetButtonStyle="{StaticResource CustomScrollBarButton}"
MachGroupButtonStyle="{StaticResource {x:Type ToggleButton}}"
IsToolBar="False"
IsTopDockable="False" IsBottomDockable="True" IsLeftDockable="False"
IsRightDockable="False"/>
</EgtFloating:EgtFloatingTray>
IsTopDockable="False" IsBottomDockable="false" IsLeftDockable="False"
IsRightDockable="False"/>-->
</StackPanel>
</DockPanel>
<OmagOFFICE:SceneHostV />
<!--Scena restituita sotto forma di WindowsFormsHost-->
<OmagOFFICE:SceneHostV/>
</EgtFloating:EgtFloatingManager>
</DockPanel>
+4
View File
@@ -1,3 +1,7 @@
Public Class ProjectV
Private Sub LoadPage() Handles Me.Loaded
OmagOFFICEMap.SetRefProjectV(Me)
End Sub
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 3.3 KiB

Some files were not shown because too many files have changed in this diff Show More