Compare commits

...

368 Commits

Author SHA1 Message Date
Nicola Pievani ab8051275b Aggiornamento versione 2025-05-06 16:08:30 +02:00
Nicola Pievani 18edeb5ee0 Merge branch 'master' into Features/Set_Machining 2025-05-06 16:02:58 +02:00
Nicola Pievani 471ba49732 Gestione speciale tagli inclinati e cambio lama 2025-05-06 16:02:38 +02:00
Nicola Pievani fd6e15be1e Migliorata gestione uscita simulazione 2025-04-18 13:00:27 +02:00
Nicola Pievani a2bb9e250c Correzione uscita dalla seconda pagina dei tagli diretti 2025-04-08 14:50:30 +02:00
Nicola Pievani 2673d51008 Merge commit '1d5cce387f5490da659622b259ebba41287839a0' 2025-04-04 12:44:34 +02:00
Nicola Pievani 1d5cce387f Ottiimizzata disposizione pezzi DXF in parcheggio 2025-04-04 12:44:10 +02:00
Nicola Pievani 07e5756793 Merge branch 'master' into develop 2025-04-04 11:34:23 +02:00
Nicola Pievani e5e80e9a55 Correzione/miglioramento gestione offset spostamento 2025-04-02 16:09:35 +02:00
Nicola Pievani 233a63b95b Correzione avvio gestione simulazione 2025-04-02 14:49:36 +02:00
Nicola Pievani cd0388b970 Merge commit '135be5f104c891b92201b98e3855117851ed42d5' into develop 2025-03-26 11:26:41 +01:00
Nicola Pievani 135be5f104 Modifica lettura Feed per controllo FANUC 2025-03-24 19:14:54 +01:00
Nicola Pievani 2f116ba3fe Gestione più di un riferimento del grezzo 2025-03-24 15:01:43 +01:00
Nicola Pievani 96ee5b5172 Correzione gestione lama test 2025-03-19 18:32:45 +01:00
Nicola Pievani b1367d543f Merge branch 'develop' into Features/Set_Machining 2025-03-18 18:12:21 +01:00
Nicola Pievani 484f7eb410 Merge branch 'develop' 2025-03-13 17:58:13 +01:00
Nicola Pievani c1eb839fe8 Nascondo le pareti dell'area sicura quando esco dal grezzo 2025-03-13 17:58:01 +01:00
Nicola Pievani f3b1d80de7 Merge branch 'master' into develop 2025-03-13 11:18:49 +01:00
Nicola Pievani 14b4897575 Migliorata gestione movimento grezzo nell'area sicura 2025-03-12 17:29:04 +01:00
Nicola Pievani 213a66d916 Migliorata gestione grezzo per tagli OverZ 2025-03-12 14:45:19 +01:00
Nicola Pievani c9c7aeafae Gestione Warning da CamAuto 2025-03-11 12:09:26 +01:00
Nicola Pievani 07d54499b7 Correzione gestione cambio modo da pagina Grezzo 2025-03-10 17:58:42 +01:00
Nicola Pievani 9f266f1c56 Correzione gestione comando Manual da pagina tagli diretti 2025-03-10 16:13:36 +01:00
Nicola Pievani 0362f77f23 Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Set_Machining 2025-03-10 14:47:03 +01:00
Nicola Pievani fd28e2f971 Creazione file setup per programmi OFFICE e CAM5 della macchina corrente 2025-03-10 14:46:54 +01:00
Demetrio Cassarino 31264a20a0 -recuperati messagi da file messages 2025-03-07 16:28:30 +01:00
Nicola Pievani bee2c44ba7 Aggiunto un commento all'avvio della simulazione 2025-03-07 16:01:51 +01:00
Demetrio Cassarino 65652f468c -aggiunto colore lavorazione in ChangeWD 2025-03-06 16:16:11 +01:00
Demetrio Cassarino 2236eb12c7 -aggiunto tasto destro su lista apertura ChangeWD 2025-03-06 12:38:51 +01:00
Demetrio Cassarino e48837836b Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egalware-cadcam/interfacce/OmagCUT into Features/Set_Machining 2025-03-06 11:35:18 +01:00
Demetrio Cassarino d05fe9c6b2 -aggiunto messaggio di errore
-aggiunto tooltip
2025-03-06 11:34:40 +01:00
Nicola Pievani 8c8a26b692 Pulizia codice 2025-03-06 10:24:45 +01:00
Nicola Pievani 0b1a39704c Riordinate alcune funzioni 2025-03-05 15:39:35 +01:00
Nicola Pievani 8d1b1adaa9 Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Set_Machining 2025-03-05 11:39:27 +01:00
Nicola Pievani eb881155d9 Migliorata gestione colorazione lavorazione 2025-03-05 11:39:07 +01:00
Demetrio Cassarino 8c0d5a651d Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egalware-cadcam/interfacce/OmagCUT into Features/Set_Machining 2025-03-05 11:38:11 +01:00
Demetrio Cassarino 10655893e4 -introdotto gestione visibilità rettangolo colore lavorazione 2025-03-05 11:38:09 +01:00
Nicola Pievani ec1af67d5b Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Set_Machining 2025-03-05 10:27:55 +01:00
Nicola Pievani e103aa753f Aggiorno il valore di numerazione del taglio 2025-03-05 10:27:50 +01:00
Demetrio Cassarino ecacf89e93 -gestione visibilità pulsante colore lavorazioni 2025-03-05 10:07:08 +01:00
Demetrio Cassarino 7e5b813df1 -gestione pulsante color visibilità 2025-03-05 10:01:11 +01:00
Demetrio Cassarino 108048b559 Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egalware-cadcam/interfacce/OmagCUT into Features/Set_Machining 2025-03-05 09:38:24 +01:00
Demetrio Cassarino 0086345f64 -cambio label con rettangolo per lavorazioni 2025-03-05 09:38:22 +01:00
Nicola Pievani a5cc976810 Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Set_Machining 2025-03-04 17:18:17 +01:00
Nicola Pievani 5bdc4c46bc Gestione colore da lama lavorazioni 2025-03-04 17:18:00 +01:00
Demetrio Cassarino 6e8154d29a -piccola modifica a MachiningLsBx 2025-03-04 17:10:22 +01:00
Demetrio Cassarino c8614fe52d -aggiunto label colore lavorazione 2025-03-04 16:54:25 +01:00
Demetrio Cassarino f420926e3e Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egalware-cadcam/interfacce/OmagCUT into Features/Set_Machining 2025-03-04 15:52:57 +01:00
Demetrio Cassarino 794c5da9e6 -sistemata grafica grid machining 2025-03-04 15:52:54 +01:00
Nicola Pievani 9d58cec30e Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egaltech/OmagCUT into Features/Set_Machining 2025-03-04 15:47:28 +01:00
Nicola Pievani e54c5f006e Migliorate alcune funzioni 2025-03-04 15:47:07 +01:00
Demetrio Cassarino 4a0a398e9f -funzione per la visualizzazione delle lavorazioni 2025-03-04 15:30:25 +01:00
Demetrio Cassarino 778219da1e -gestione colore lavorazione tooldb 2025-03-04 12:28:05 +01:00
Demetrio Cassarino 4ac506fbf0 Merge branch 'Features/Set_Machining' of https://gitlab.steamware.net/egalware-cadcam/interfacce/OmagCUT into Features/Set_Machining 2025-03-04 11:20:50 +01:00
Demetrio Cassarino 9616e211e5 -aggiunto seleziona colore lavorazione 2025-03-04 11:20:46 +01:00
Nicola Pievani 61b16af746 Lettura colore lavorazione da SystemNotes 2025-03-04 11:19:42 +01:00
Nicola Pievani 7d010be835 Prima gestione cambio lavorazione in Splitting 2025-03-04 09:44:18 +01:00
Nicola Pievani 48e523ce26 Merge commit 'a73b45d23ec23ddf0120a92ec35d85440229ffd0' 2025-02-24 15:33:53 +01:00
Nicola Pievani a73b45d23e Nuova gestione interasse cornici 2025-02-24 15:33:09 +01:00
Nicola Pievani 8ea607611c Gestione attesa per scatto fotografia (EnableGoHome) 2025-02-17 15:01:33 +01:00
Nicola Pievani bdf0971c20 Gestione apertura/salvataggio porgetti con multiparcheggio 2025-02-17 13:10:30 +01:00
Nicola Pievani 7d77297695 Merge branch 'develop' 2025-02-13 11:10:48 +01:00
Nicola Pievani bdcdcaecf0 Gestione sfondo dinamico PopUp viste 2025-02-12 17:51:09 +01:00
Nicola Pievani 44011c5775 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/OmagCUT into develop 2025-02-12 17:39:10 +01:00
Nicola Pievani cba095188e Migliorata gestione parcheggi in fase creazione nuovo progetto 2025-02-12 17:37:54 +01:00
Demetrio Cassarino ebedccf46a Aggiunto popup viste 2025-02-12 12:33:18 +01:00
Nicola Pievani 8bd7d9e3fa Merge branch 'develop' 2025-02-06 16:14:46 +01:00
Nicola Pievani 8dfa932bd7 Gestione SQUARING con lama 2025-02-06 16:13:33 +01:00
Nicola Pievani 5422e905e7 Aggiornamento lista materiali da DB waterjet 2025-02-06 15:59:03 +01:00
Nicola Pievani da396cc82e Merge branch 'Features/Read_C_Step' into develop 2025-02-06 15:01:08 +01:00
Nicola Pievani da8e7a9e42 Aggiornamento logo 2.7 2025-02-06 15:00:57 +01:00
Nicola Pievani d8cbe1a2c6 Aggiunto comando diretto per selezione modalità Manual 2025-02-03 11:23:40 +01:00
Nicola Pievani 79c2c17d6b Gestione taglio speciali per pezzi oltre il limite corsa in Z 2025-01-31 17:37:05 +01:00
Nicola Pievani ccb8945a4f Lettura posizione asse C da variabile PLC 2025-01-22 15:07:12 +01:00
Nicola Pievani 842ab19e8b Merge commit '5cfc72be27681812199b9ba326f0b285d6d93906' into develop 2025-01-17 16:55:55 +01:00
Nicola Pievani 5cfc72be27 Gestione PNG/SVG da variabile MainWindow 2025-01-17 16:25:51 +01:00
Nicola Pievani 45d3f5c7d8 Gestione lista dei parcheggi con file SVG 2025-01-16 17:48:05 +01:00
Nicola Pievani ac67a14fea Gestione lista parcheggi come UserControl 2025-01-14 14:29:23 +01:00
Nicola Pievani 1df823cdec Gestione estesa dei pezzi in parcheggio 2025-01-10 20:46:47 +01:00
Nicola Pievani be29ea050d Gestione visualizzazione di pezzi sovrapposti 2025-01-02 19:26:45 +01:00
Nicola Pievani cd4d2b1ccb Merge branch 'master' into Features/Import_DXF_In_Parck 2025-01-02 10:17:47 +01:00
Nicola Pievani c730513f27 Configurazione finestra licenza 2024-12-30 09:02:50 +01:00
Nicola Pievani 9f3920a2b2 Nuova gestione visualizzazione layer info lavorazioni 2024-12-24 14:39:09 +01:00
Nicola Pievani f388dc0c50 Merge commit '6613b3d551b2f06a1940fcd7b1c2dd9ca6743bd5' 2024-12-23 13:28:25 +01:00
Nicola Pievani 6613b3d551 Nuovi messaggi per assistenza 2024-12-23 12:33:19 +01:00
Nicola Pievani 615d6d2652 Nuova gestione tagli parziali Saw&Waterjet 2024-12-23 11:23:53 +01:00
Nicola Pievani 3ea8335357 Gestione parcheggio per scatto foto 2024-12-16 15:40:03 +01:00
Nicola Pievani bbdac91894 Migliorata gestione tempi comunicazione NUM_old 2024-12-13 17:04:55 +01:00
Nicola Pievani c424ff6661 Migliorata gestione tempi comunicazione NUM_old 2024-12-13 17:04:37 +01:00
Nicola Pievani 4d64328b1b Merge commit '10c4c7ecc1ba0521ad4c251fce28268d7f0dd6e8' into Features/Import_DXF_In_Parck 2024-11-28 08:38:56 +01:00
Nicola Pievani 10c4c7ecc1 Reimpostato logo OmagCut 2024-11-11 11:51:07 +01:00
Nicola Pievani 03def4b530 Merge commit '4ab7811b50e72cb716abfca74c60e4f3c586d6f5' into develop 2024-11-11 11:45:00 +01:00
Nicola Pievani a3b56444f6 Correzione altezza posizionamento per Test taglio 2024-11-11 11:40:05 +01:00
Nicola Pievani 837380226a Merge commit 'f15935ecbc2c3b1994f8684ea5511d32382fefde' into develop 2024-11-04 15:12:09 +01:00
Dario Sassi f15935ecbc OmagCUT 2.6k1 :
- piccola modifica di testa per tagli di separazione lastra prolungabili da un solo lato.
2024-11-04 08:38:45 +01:00
Nicola Pievani 00360013e3 Merge commit '9c267aacf77c6517f98ba584c5d945bae21bc656' into develop 2024-10-30 11:25:34 +01:00
Nicola Pievani 0010deb7fc Inizio gestione disoposizione DXF in parcheggio 2024-10-29 15:23:57 +01:00
Demetrio Cassarino 9c267aacf7 -modifica grafica treeview cvs 2024-10-29 11:57:05 +01:00
Nicola Pievani 311cf40a8e Allungo lato libero di tagli ridotti 2024-10-29 11:52:44 +01:00
Nicola Pievani 4c34b62e65 Inserito comando Righello nella pagina VeinMatch 2024-10-29 09:54:01 +01:00
Nicola Pievani 87037b6c6a Migliorata gestione selezione OnOff da lista lavorazioni 2024-10-28 12:09:15 +01:00
Nicola Pievani 74c479d17d Gestione attivazione comando modifica 2024-10-28 11:23:53 +01:00
Nicola Pievani ee6c0ad146 Merge branch 'develop' 2024-10-09 16:34:24 +02:00
Nicola Pievani ead6bcec6d Gestione deselezione tagli in pagina split 2024-10-09 16:33:45 +02:00
Nicola Pievani a1ad658f27 Correzione DoubleClick OnOff scena 2024-10-09 15:54:47 +02:00
Nicola Pievani 4ab7811b50 Correzione DoubleClick OnOff scena 2024-10-08 18:28:48 +02:00
Nicola Pievani 1899c9a735 Merge branch 'develop' into Features/Dimostration_Program 2024-09-27 10:54:06 +02:00
Nicola Pievani 3f769c49da Correzione visualizzazione pezzi in parcheggio dopo reset in VeinMatch3D 2024-09-25 12:25:34 +02:00
Nicola Pievani da4ddb2a7f Inserito valore default in configurazione parametri booleani SiemensOne 2024-09-12 16:47:36 +02:00
Nicola Pievani 3667ecb3b7 KeyDown Cancel per rimozione pezzi in RawMove 2024-09-05 19:33:04 +02:00
Nicola Pievani 206af48539 Correzione corse asse Z laser 2024-09-05 11:35:48 +02:00
Nicola Pievani 253e92b111 Aggiorno disegno della fase corrente nella pagina Vacuum 2024-09-04 16:12:12 +02:00
Nicola Pievani 123d6118e9 Correzione gestion uscita in caso di errore 2024-08-21 16:11:33 +02:00
Nicola Pievani a2104eaa03 Nuovi messaggi e CMD.TABLE in lua script 2024-08-19 10:21:01 +02:00
Nicola Pievani 65b9bfdcdb Migliorati messaggi comunicazione CN 2024-08-06 15:48:49 +02:00
Nicola Pievani 004591896c Messaggio di Kill Process per SiemensComm 2024-08-01 10:57:59 +02:00
Nicola Pievani 02af01052b Gestione invio programmi doppia tavola 2024-07-31 18:31:32 +02:00
Nicola Pievani 2bc386807f Merge branch 'master' into develop 2024-07-31 10:25:02 +02:00
Nicola Pievani 82af1baae3 Merge branch 'develop' 2024-07-31 10:24:33 +02:00
Nicola Pievani 68b4dfed80 Correzzione numero di versione 2.6g7 2024-07-31 10:24:20 +02:00
Nicola Pievani ffc7536177 Merge branch 'master' into develop 2024-07-31 10:08:29 +02:00
Nicola Pievani 70368b73be Aggiornamento versione 2.6h1 2024-07-31 10:08:05 +02:00
Nicola Pievani 05b4e2e95a Merge branch 'develop' 2024-07-30 14:31:20 +02:00
Nicola Pievani 1d7cdf8fa0 Merge branch 'Features/Manage_SimensOne' into develop 2024-07-30 14:31:09 +02:00
Nicola Pievani 5190a41470 Lettura degli interi Bit a Bit 2024-07-30 14:30:53 +02:00
Nicola Pievani 3afe6bb35b Migliorata stampa dei messaggi OutLog comunicazione 2024-07-29 13:54:57 +02:00
Nicola Pievani c546df45ca Aggiornamento versione 2.6g6 (nuove DLL) 2024-07-29 11:11:42 +02:00
Nicola Pievani 554ae16e48 Merge branch 'develop' into Features/Manage_SimensOne 2024-07-26 18:35:54 +02:00
Nicola Pievani 1b4d239202 OnOff lavorazioni elezione lavorazioni con DoppioClick 2024-07-26 14:30:35 +02:00
Nicola Pievani 3b2d15703a Lettura bit a bit Siemens 2024-07-25 15:20:47 +02:00
Nicola Pievani 8e5a4d4ac5 Merge branch 'develop' into Features/Manage_SimensOne 2024-07-24 08:51:27 +02:00
Nicola Pievani ef621a340a Merge branch 'develop' 2024-07-17 13:03:04 +02:00
Nicola Pievani f2ce55ff27 Nuova versione programma ver 2.6g1 2024-07-17 13:01:48 +02:00
Nicola Pievani ae3b16b715 Merge branch 'Features/Imports_Engrave_Btn' into develop 2024-07-17 12:32:39 +02:00
Nicola Pievani 8ff4b74725 Nuovo parametro MachDb Waterjet (Full Slow) 2024-07-17 12:32:25 +02:00
Nicola Pievani 18fb37b497 Inserito comando per gestione Engrave nella pagina IMPORT 2024-06-26 12:30:04 +02:00
Nicola Pievani 246e55f733 Gestione comandi di taglio in SplitPage per tagli piccoli 2024-06-24 16:10:33 +02:00
Nicola Pievani e7e1946230 Cambio versione 2.6f3 2024-06-18 18:06:24 +02:00
Nicola Pievani 8dc6b63801 Merge branch 'develop' 2024-06-18 18:05:23 +02:00
Nicola Pievani 9b29b16a33 Merge branch 'Features/ZigZan_In_XY_Plane' into develop 2024-06-18 18:05:01 +02:00
Nicola Pievani 1debeab653 Gestione spianatura con fresa e lama 2024-06-18 18:04:44 +02:00
Nicola Pievani 63c3a4e085 Inizio spianatura a ZigZag in XY 2024-06-13 18:32:09 +02:00
Nicola Pievani 7830105bc4 Merge branch 'Features/Raw_From_Diagonal' into develop 2024-06-13 16:20:09 +02:00
Nicola Pievani 8a11051575 Gestione grezzo definito con due punti 2024-06-13 16:18:10 +02:00
Nicola Pievani 0b50832b4e Correzione gestione StepType in spianatura 2024-06-13 10:09:29 +02:00
Nicola Pievani 7f548e5ba6 Merge branch 'develop' 2024-06-11 17:35:07 +02:00
Nicola Pievani 40bdcec46e Miglioramenti genarali programma 2024-06-11 17:34:13 +02:00
Nicola Pievani 2cf1be7348 Aggiornate info copyright 2024-06-03 18:08:15 +02:00
Nicola Pievani bb932788f9 Aggiornamento versione 2.6f1 2024-06-03 13:11:25 +02:00
Nicola Pievani 4c0da9af53 Merge branch 'develop' 2024-06-03 13:00:43 +02:00
Nicola Pievani 9eaca47566 Merge branch 'Features/Select_Test_Work_Tool' into develop 2024-06-03 12:45:45 +02:00
Nicola Pievani 7c53ecceb4 Correzione lettura punto da laser/lama SingleCut 2024-06-03 12:44:47 +02:00
Nicola Pievani 9a6f6ad37e Migliorata grafica per utensile/lavorazione corrente 2024-05-16 15:17:14 +02:00
Nicola Pievani 8174c6137a Visualizzazione aggiornata utesnile selezionato 2024-05-16 12:52:11 +02:00
Nicola Pievani b84699e3c1 Selezione utensile eseguire posizionamento di test 2024-05-15 17:23:07 +02:00
Nicola Pievani 5101c1cca9 Migliorata comunizione Fanuc per AxisMove 2024-05-10 17:22:42 +02:00
Nicola Pievani 3ad3694454 Migliorata gestione lettura chiave di protezione 2024-05-09 15:41:28 +02:00
Nicola Pievani 9d9e184efa Modifiche per lettura variabili Sinumerik 2024-05-09 14:43:43 +02:00
Nicola Pievani cf3f756683 Inizio nuova gestione controllo Sinumerik 2024-05-07 16:15:14 +02:00
Nicola Pievani 72544190cc Inserito logo Egalware nelle risosre 2024-04-23 10:07:03 +02:00
Nicola Pievani 2ce454ad0a Merge commit '5a3ad4356f966042e7a5de83531dc52ab1e18135' 2024-04-12 16:04:48 +02:00
Nicola Pievani 5a3ad4356f Correzione lettura data progetti 2024-04-12 16:04:19 +02:00
Nicola Pievani ba4414c9f6 Migliorata gestione tagli diretti da posizione Lama 2024-04-02 15:48:37 +02:00
Nicola Pievani aa29e4106d Cambio versione 2.6d1 2024-04-02 14:08:19 +02:00
Nicola Pievani 76eb17868c Gestione 3 assi rotanti nei tagli diretti 2024-04-02 10:01:58 +02:00
Nicola Pievani 829b58a0e5 Gestione fotocamera HQ per macchine MultiCut 2024-04-02 09:23:59 +02:00
Nicola Pievani 79847e3cce Migliorata gestione REG 2024-03-28 17:38:57 +01:00
Nicola Pievani 59be071d12 Merge Manuale! 2024-03-28 17:13:38 +01:00
Nicola Pievani d9150c75f4 Merge commit 'e12a310010d820b98d9c610696393b0cea72477a' into develop 2024-03-28 17:08:54 +01:00
Nicola Pievani 00088315cd Inseriti commenti in MMFile 2024-03-28 17:06:47 +01:00
Dario Sassi e12a310010 OmagCUT :
- modifica a taglio singolo per acquisizione punto da macchina tipo MultiCut.
2024-03-27 16:44:43 +01:00
Nicola Pievani 449fe3ad57 Taglio diretto macchina con tavola rotante 2024-03-25 11:29:23 +01:00
Nicola Pievani e8d8637832 Gestione avvio finestra VeinMatch 2024-03-13 17:52:51 +01:00
Nicola Pievani 6671f2269e Nuova gestione verifica interferenze MoveRaw 2024-03-13 13:31:46 +01:00
Nicola Pievani 26ef6b2d3b Migliorata gestione SiemensCommand 2024-03-13 11:26:33 +01:00
Nicola Pievani b5e9686da2 Merge commit 'f57410dffbe15412a836ca2e69677386dc887aff' into develop 2024-03-12 12:20:14 +01:00
Nicola Pievani f57410dffb Correzione gestione chiave Omag_LIGHT 2024-03-12 12:19:53 +01:00
Nicola Pievani 346c452546 Merge commit '2eff34e8b63ed82995a0aeb88bb86f88da218f93' 2024-03-04 09:41:27 +01:00
Nicola Pievani 2eff34e8b6 Correzione gestione uscita pagina DrawPage 2024-03-04 09:41:06 +01:00
Nicola Pievani 7c3a107c31 Merge commit 'e119e9673af709d2122dad70a6838a7d1f05dd94' 2024-03-01 13:01:18 +01:00
Nicola Pievani e119e9673a Aggiornamento versione e logo 2024-03-01 13:01:01 +01:00
Nicola Pievani 2407d3a0ae Merge commit 'fd32ba3ea1abfbb6c7518448ce3aa0d91b5a9ccc' 2024-02-23 16:37:30 +01:00
Nicola Pievani fd32ba3ea1 Gestione risoluzione immagini VeinMatch 2024-02-23 14:57:21 +01:00
Nicola Pievani 9045469c0d Merge commit '10972a466df3452dcb100da879c9214262a5dd44' 2024-02-20 17:21:27 +01:00
Nicola Pievani 10972a466d Correzione gestione visualizzazione Tool Probe 2024-02-20 17:21:11 +01:00
Nicola Pievani e6b674ec46 Merge commit '68cdd41b2080ce172453d14f0c069730659d3972' 2024-02-13 15:34:19 +01:00
Nicola Pievani 68cdd41b20 Aggiornamento versione 2.6b1 2024-02-13 15:34:05 +01:00
Nicola Pievani cf23a2b7c2 Merge commit '67c2a9d0ec787dbe69b7e36ba77f316574a72c7e' into develop 2024-02-09 18:14:06 +01:00
Nicola Pievani 67c2a9d0ec Aggiunti messaggi per gestione CUT_LIGHT 2024-02-09 18:13:54 +01:00
Nicola Pievani 7b70a27ff4 Merge commit '00c37ad74f982da20d512b6f173ac4ea7308949e' 2024-02-09 18:10:07 +01:00
Nicola Pievani 00c37ad74f Merge commit 'fcca1ed72ccbddf31f0f4d82d40720d7b9fea51a' into develop 2024-02-09 18:09:40 +01:00
Nicola Pievani 18e079d235 Merge commit 'f734885de5ac88be73e5c6ecd55640e04308453f' 2024-02-09 17:59:18 +01:00
Nicola Pievani f734885de5 Merge commit '0cc673b047f4bcde9413f53ae38ce926fa64bded' into develop 2024-02-09 17:59:06 +01:00
Nicola Pievani 0cc673b047 Nuova gestione chiave di protezione CUT_LIGHT 2024-02-09 17:58:33 +01:00
Nicola Pievani acc1365fd2 Correzione init chiave per CUT_LIGHT 2024-02-09 15:38:37 +01:00
Nicola Pievani 7dcf1fe8dc Inserita lettura Flag CUT_LIGHT 2024-02-09 15:09:53 +01:00
Nicola Pievani fcca1ed72c - Inseriti commenti per lettura variabili CurrPhase - Definizione nome programma tagli diretti 2024-02-08 18:12:46 +01:00
Nicola Pievani 03ecf3493b Inseriti messaggi per assistenza 2024-02-08 12:46:52 +01:00
Nicola Pievani 36b667fcc5 Lettura variabile opzionale della fase corrente 2024-02-08 12:18:00 +01:00
Nicola Pievani cd748dea7a Cambio nome variabile 2024-02-08 09:32:02 +01:00
Nicola Pievani c2f03a883a Inserito commeto per gestione chiave di protezione 2024-02-07 18:11:40 +01:00
Nicola Pievani 9b09eeaa9c Aggiunta variabile per gestione OnlyFrame 2024-02-07 18:04:59 +01:00
Nicola Pievani 919890e68d - Nascondo utensile PROBE - Pagina ASSISTENZA in scandeza - Correzione Text per spostamenti 2024-02-06 15:04:00 +01:00
Nicola Pievani fa0bc2ffdd Merge commit 'b8143b0ff5bb39b67934a00be673c1f13f151897' 2024-01-11 19:29:40 +01:00
Nicola Pievani b8143b0ff5 Cambio versione 2024-01-11 19:29:27 +01:00
Nicola Pievani 085975338a Merge commit '53fc2694a34f89878a5d9821387894adcfa808d2' into develop 2023-12-20 11:47:19 +01:00
Nicola Pievani 53fc2694a3 Aggiornamento versione 2.5l1 2023-12-20 11:46:48 +01:00
Nicola Pievani 9c8563f5c3 Merge commit '2f78dd796d946b2622a93aa975fa1e7df4407eaa' 2023-12-19 20:17:23 +01:00
Nicola Pievani 2f78dd796d Gestione OffsetLama tagli diretti MULTIPI e GRIGLIA 2023-12-19 20:16:57 +01:00
Nicola Pievani 378369d3d5 Merge commit '656c5a7d54504095793cba103234ee49403c7fee' into develop 2023-12-19 15:24:36 +01:00
Nicola Pievani 656c5a7d54 Migliorata importazione DXF 2023-11-28 09:35:09 +01:00
Nicola Pievani c40bc508d0 Merge commit 'de2234387d145276935dd44369dcb4989bbbb6bc' 2023-11-14 11:27:19 +01:00
Nicola Pievani de2234387d Merge commit 'd7c1ecacc2d11234a0ddbdfb38d2bc3fdfb2af2a' into develop 2023-11-14 11:27:03 +01:00
Nicola Pievani d7c1ecacc2 Correzione gestione Flattening (CamAuto) 2023-11-14 11:26:51 +01:00
Nicola Pievani ec813beae5 Reset dei tagli di separazione inseriti in OFFICE 2023-10-12 16:13:27 +02:00
Nicola Pievani 7a9faf537f Merge branch 'develop' 2023-10-10 18:56:56 +02:00
Nicola Pievani 6f58b6f090 Correzione NextBtn in spostamento grezzi 2023-10-10 18:56:16 +02:00
Nicola Pievani 529fb6d3a6 Inserito Logo Egalware nel programma 2023-10-10 11:26:03 +02:00
Nicola Pievani 53d06d6098 Inserita immagine logo Egalware 2023-10-06 14:51:16 +02:00
Nicola Pievani eb571bf5fd Merge commit '3d11abfa314f94573451e994c53a8aa19302d5a0' 2023-09-11 12:45:54 +02:00
Nicola Pievani 3d11abfa31 Aggiunta gestione bottoni EnableZone/EnablePC per macchina con due tavole 2023-09-11 12:45:13 +02:00
Nicola Pievani b1f8d21cc5 Merge commit 'ec8fbd3297eb42576e0a949ae749830551cba528' 2023-09-01 18:34:53 +02:00
Nicola Pievani ec8fbd3297 Merge commit 'f41b8f1409c1cafab3fee1d1cc4581410582d9b3' into develop 2023-09-01 18:34:06 +02:00
Nicola Pievani fdd3342492 Lettura info SlabDxf 2023-09-01 18:33:46 +02:00
Nicola Pievani f41b8f1409 Merge commit '5edd5300cdce93c5d0eb62cfd79215216586b52f' 2023-08-11 16:18:43 +02:00
Nicola Pievani 5edd5300cd Merge commit '92be9189c689ff507b4c99ac98fa477edc6b9689' into develop 2023-08-11 11:47:30 +02:00
Dario Sassi 92be9189c6 OmagCUT :
- disabilitato notifica progetto cambiato su alcune operazioni che non cambiano realmente i dati al carico.
2023-08-10 20:24:36 +02:00
Nicola Pievani 6c0bb175d9 Migliorata gestione uscita dalla pagina DrawImport 2023-08-09 13:07:20 +02:00
Nicola Pievani a079596aed Nuova gestione uscita dalla pagina DrawImport 2023-08-08 18:59:51 +02:00
Nicola Pievani 60da7384a2 Migliorata gestione parametro Width per spianatura 2023-08-08 18:15:33 +02:00
Nicola Pievani 761842bf45 Merge commit '32cfbfbeec30a6c8f173c01062978fdaf76414f4' into develop 2023-08-07 10:01:12 +02:00
Nicola Pievani 32cfbfbeec Aggiunte icone nuove per REG 2023-08-07 10:00:58 +02:00
Nicola Pievani 2ff2e6ffc4 Merge commit '0c7c729914506c957c2ebf89d7b0df45303aa1c0' 2023-08-03 19:29:21 +02:00
Nicola Pievani 0c7c729914 Migliorata visualizzazione Compo Frame 2023-08-03 18:48:40 +02:00
Nicola Pievani 7195e16c37 Aggiunti messaggi di Log per nuova gestione SpotReg 2023-08-03 16:53:23 +02:00
Nicola Pievani 42b0622bdf Miglioramento gestione Nuovo REG 2023-08-03 16:08:06 +02:00
Nicola Pievani bcdb79e796 Modificata versione 2.5h1 2023-08-03 15:26:02 +02:00
Nicola Pievani d7aa8902d9 Merge branch 'Featurese/New_Registration' into develop 2023-08-03 15:22:51 +02:00
Nicola Pievani 9d7fb9ab99 Gestione punti SpotReg 2023-08-03 15:22:31 +02:00
Nicola Pievani 8419659647 Merge branch 'develop' 2023-07-27 19:05:07 +02:00
Nicola Pievani 8becdfb219 Gestione profondità tagli singoli e gestione Scrap su linea. 2023-07-27 19:04:51 +02:00
Nicola Pievani 7c6b18d996 Correzione lettura assi per verifica finecorsa 2023-07-27 12:54:43 +02:00
Nicola Pievani 44e9a448fe Merge commit '5740820eedd1be0eab9bebb88cfd8f15c72e9a74' into develop 2023-07-26 12:18:47 +02:00
Nicola Pievani 5740820eed Merge commit '1c861ee7e3bcd1425ff12de2d2806a5014effd41' 2023-07-26 12:12:12 +02:00
DarioS 3202993a3e OmagCUT :
- inibita la generazione CN in simulazione se versione ufficio.
2023-07-26 11:10:25 +02:00
DarioS b293156a30 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2023-07-25 19:17:16 +02:00
DarioS dfe876638f OmagCUT :
- semplificata e migliorata generazione CN da pagina di simulazione.
2023-07-25 19:14:13 +02:00
Nicola Pievani 1c861ee7e3 Merge commit '5da026accb291341ce8e05d082d951f3a0d9d554' into develop 2023-07-25 17:03:38 +02:00
Nicola Pievani 5da026accb Gestione doppia fotocamera (rulliera-tavolo) 2023-07-25 17:03:26 +02:00
Nicola Pievani 5396796d28 Merge commit 'ae18c7f027cc2408ed5f4adb03903ff9521da07d' into develop 2023-07-25 12:51:17 +02:00
Nicola Pievani ae18c7f027 Merge commit '54122d82e6f5179fe8dcfe0a6a907ed15a0c1a43' 2023-07-25 12:50:31 +02:00
DarioS 54122d82e6 OmagCUT 2.5g2 :
- migliorie varie alla gestione spostamento pezzi con due teste su macchine di linea
- disabilitati attese di comunicazione in modalità demo.
2023-07-25 08:33:05 +02:00
Nicola Pievani f85e97a126 Aggiunti commenti e apertura file Log 2023-07-24 18:40:18 +02:00
DarioS 06654d923c OmagCUT :
- in chiusura si aspetta chiusura DreepFeed solo se NUM_OLD (Axium).
2023-07-24 08:29:53 +02:00
Nicola Pievani ce1c6fcf02 Merge commit 'da11ec0a11faa5e6e59cee2171b222747faec822' 2023-07-21 17:31:58 +02:00
Nicola Pievani da11ec0a11 Merge commit '52688ed0dafd532cfca811a82f0c7c32b057cfb4' into develop 2023-07-21 17:31:38 +02:00
Nicola Pievani 52688ed0da Inizio gestione Vaccum due teste 2023-07-21 14:31:25 +02:00
Nicola Pievani 60eda04669 Correzione creazione file NewClick,txt 2023-07-17 09:51:25 +02:00
Nicola Pievani b95dd8f41d Gestione estensione file inviato al CN 2023-07-13 10:42:42 +02:00
Nicola Pievani 4b2351c20a Cambio versione 2.5g1 2023-07-11 16:02:51 +02:00
Nicola Pievani 988743187b Merge commit '2c0afccbe3b165a9d3c82b57d7328409ba334513' into develop 2023-07-10 14:59:29 +02:00
Nicola Pievani 2c0afccbe3 Avvio lo scatto automatico per OmagPHOTO 2023-07-10 14:58:14 +02:00
Nicola Pievani a5d6d34664 Merge commit '27b13292cf73a4d6b5ecfbaf614d5eaf6eaa1d54' 2023-06-26 18:32:42 +02:00
Nicola Pievani 27b13292cf Merge commit '7b9d99a9c66d353a869c189f7d348db75b489bf5' into develop 2023-06-26 18:30:43 +02:00
Nicola Pievani 7b9d99a9c6 Correzione gestione FeedSideAng, chiave di protezione CompoFrame 2023-06-26 18:30:16 +02:00
Nicola Pievani 1e2b4bed27 Aggiornamento Feed (Reset + Ctrl) 2023-06-15 17:33:25 +02:00
Nicola Pievani 4ecf7980ce Merge commit '82157d3b6e2e25c8257612d6b026a6b8ef10304c' into develop 2023-06-15 12:27:28 +02:00
Nicola Pievani 82157d3b6e Abilitato inversione tagli waterjet verticali 2023-06-14 20:03:37 +02:00
Nicola Pievani 10cb8f64f5 Merge commit '6dbf4f5ccbeb207f8df7d69550dd6d8bf6d06b89' 2023-06-13 18:34:25 +02:00
Nicola Pievani 6dbf4f5ccb Gestione multi inserimento e interasse Frame 2023-06-13 18:29:39 +02:00
Nicola Pievani 4ba0fe2520 Merge commit 'a55ab4f83d56dc7237f70ed32fd7aba08221c063' 2023-06-08 17:14:51 +02:00
Nicola Pievani a55ab4f83d Correzione importazione DXF 2023-06-07 12:53:57 +02:00
Nicola Pievani 419776c89f Merge commit 'fd89a6cf3b31ca241a41a8fc450fca9dbdc3f4aa' 2023-06-05 10:33:36 +02:00
Nicola Pievani fd89a6cf3b Gestione interruzione simulazione in TagliDiretti 2023-05-31 12:32:48 +02:00
Nicola Pievani b505b79d9a Correzione gestione apertura CN per Tagli Diretti 2023-05-31 12:29:08 +02:00
Nicola Pievani b1313ddb55 Modificata disosizione pulsanti 2023-05-31 11:50:44 +02:00
Nicola Pievani f3889ede24 Cambio versione 2.5f1 2023-05-31 10:53:33 +02:00
Nicola Pievani 5ca010ae4a Merge branch 'Features/Rectification_SideAng_WJ' into develop 2023-05-31 10:51:09 +02:00
Nicola Pievani 391d25507e Inserita gestione Flag per Rettificata tagli inclinati 2023-05-30 19:27:14 +02:00
Nicola Pievani c954f364e3 Modifica gestione FEED per controllo FANUC 2023-05-26 17:35:18 +02:00
Nicola Pievani 1ab6d2746f Correzione disabilitazione NuovoRiferimento 2023-05-25 12:48:26 +02:00
Nicola Pievani 41de0516c8 Merge branch 'Features/New_Front_Unloading' into develop 2023-05-24 12:01:26 +02:00
Nicola Pievani dec4c0d312 Migliorata abilitazione comando Next in MoveRaw 2023-05-24 12:00:11 +02:00
Nicola Pievani 834f3afe1c Correzione pulsante bottone HOME in MachButtons 2023-05-23 18:40:38 +02:00
Nicola Pievani e6c95323fb Aggiunto controllo stato pulsante bottone HOME in MachButtons 2023-05-23 18:32:22 +02:00
Nicola Pievani fa6e5b520f Merge branch 'master' into develop 2023-05-23 16:18:53 +02:00
Nicola Pievani aefc037cd9 Correzione apertura programma da progetto 2023-05-23 16:18:13 +02:00
Nicola Pievani c475f7dc12 Miglioramento gestione scarico frontale 2023-05-23 15:13:41 +02:00
Nicola Pievani c5f3d4fcfb Merge branch 'develop' 2023-05-18 15:33:23 +02:00
Nicola Pievani a04e2cbe62 Gestione avanzata posizionamento pezzi VeinMatch 2023-05-18 14:43:03 +02:00
Nicola Pievani da980a649e Merge branch 'Features/Compo_Frames' into develop 2023-05-18 11:18:14 +02:00
Nicola Pievani 4c282d7531 Abilito visualizzazione pulsante per inserimento FrameCompo 2023-05-18 11:13:40 +02:00
Nicola Pievani a941f963c2 Disabilito i comandi dei compo piani 2023-05-16 10:31:58 +02:00
Nicola Pievani eab341d7fe Importazione FrameCompo 2023-05-15 19:37:31 +02:00
Nicola Pievani 9c7d60d307 Aggiornati i messaggi 2023-05-15 14:57:25 +02:00
Nicola Pievani a7adcdcaca Correzione visualizzazione Pagine componenti 2023-05-15 12:14:54 +02:00
Nicola Pievani acb8ceed4d Merge branch 'Features/Other_Ref_On_Table' into develop 2023-05-09 17:15:22 +02:00
Nicola Pievani 65d8f58b45 Migliorata impaginazione dati e disegno RefTab 2023-05-09 17:15:10 +02:00
Nicola Pievani 07cf7ced42 Definizione nuovp roferimento su stavola 2023-05-08 20:04:56 +02:00
Nicola Pievani b1410ca11c Aggiunti parametri TCPOS e DIAM per comandi diretti 2023-05-05 13:12:15 +02:00
Nicola Pievani 1975f46995 Merge branch 'Features/Probing_Polishing_Tool' into develop 2023-05-04 14:55:56 +02:00
Nicola Pievani 6863186e07 Aggiunto nuovo parametro per tastatura 2023-05-04 14:37:17 +02:00
Nicola Pievani b434f80030 Correzione gestione Z safe, cambio versione 2.5e1 2023-05-03 18:09:58 +02:00
Nicola Pievani 0151cd8f9e Eliminazio grezzi non appartenetent alla fase 1 comando Reset 2023-05-03 10:02:17 +02:00
Nicola Pievani 75e3729216 Merge branch 'develop' into Features/New_Front_Unloading 2023-05-02 17:57:33 +02:00
Nicola Pievani ef1aef12ed Merge branch 'develop' 2023-04-28 13:24:04 +02:00
Nicola Pievani 959fb2e44f Aggiornamento versione 2.5d3 2023-04-28 12:43:13 +02:00
Nicola Pievani 59e3ae5841 Aggiornamento versione 2.5d3 2023-04-28 12:41:44 +02:00
Nicola Pievani 941e7837be Aggiunta variabile DripFeed al CN_generico per NumOld 2023-04-28 12:16:28 +02:00
Nicola Pievani 58de5d4077 Gestione scarico+movimento/movimento+scarico 2023-04-28 11:01:12 +02:00
Nicola Pievani b6beef668d Unificato fase di Moviment e Scarico (deve essere gestito l'inverso) 2023-04-27 17:42:08 +02:00
Nicola Pievani 680505af10 Merge branch 'Features/CN_Fanuc' into develop 2023-04-19 16:44:38 +02:00
Nicola Pievani b0bfa67d2a Aggiornamento assi macchina in taglio singolo 2023-04-19 16:44:04 +02:00
Nicola Pievani 29d8c1e29b Nascondo pezzi in parcheggio dopo ripristino fase 1 2023-04-19 13:20:45 +02:00
Nicola Pievani e5d4f223f8 Gestione generazione CN durante simulazione 2023-04-18 18:08:03 +02:00
Nicola Pievani 3cfc7276c9 Gestione scrittura valore FeedHold letto da configurazione 2023-04-18 15:53:28 +02:00
Nicola Pievani 0c0233b27e Correzione generazione CN in simulazione 2023-04-18 15:12:07 +02:00
Nicola Pievani 4e8925515d Corretto il valore di ritorno di alcune funzioni 2023-04-18 12:37:42 +02:00
Nicola Pievani 3b552b2f4e Disabilito inversione tagli diretti 2023-04-17 18:27:38 +02:00
Nicola Pievani 3fae33404b Gestione navigazione Split Phase 2023-04-17 15:58:52 +02:00
Nicola Pievani 0d4d853834 Salvataggio nelle info progetto C axes home 2023-04-13 15:13:08 +02:00
Nicola Pievani 37fcbe8240 Aggiornato disegno ToolChangerPos 2023-04-13 11:14:27 +02:00
Nicola Pievani 4393f282b7 Aggiornamento di versione 2.5d2 2023-04-12 12:09:23 +02:00
Nicola Pievani 6844a8c77c Merge branch 'Features/CN_Fanuc' into develop 2023-04-12 12:07:41 +02:00
Nicola Pievani 659405c52f Testato codice con controllo FANUC 2023-04-12 12:07:04 +02:00
Nicola Pievani efafacf6ca Merge branch 'develop' 2023-04-07 10:01:54 +02:00
Nicola Pievani 6905a8d6dc Aggiornamento versione 2023-04-07 10:01:07 +02:00
Nicola Pievani d8ba23894e Merge branch 'Features/CN_Fanuc' into develop 2023-04-07 09:55:49 +02:00
Nicola Pievani aba1572f95 Gestione comunicazione FANUC 2023-04-07 09:55:29 +02:00
Nicola Pievani fdb0ed598b Aggiunto commento 2023-03-27 18:51:22 +02:00
Nicola Pievani 4cb3518346 Gestione lettura variabili Vacuum 2023-03-27 18:50:33 +02:00
Nicola Pievani 56b8ee88d3 Inseriti commenti nella nuove classi Fanuc 2023-03-27 15:38:27 +02:00
Nicola Pievani d0439f2b05 Configurazione cn FANUC 2023-03-27 11:40:36 +02:00
Nicola Pievani 07d8145d57 Iniziata gestione navigazione all'interno delle fasi 2023-03-20 20:15:31 +01:00
Nicola Pievani 652c396933 Merge branch 'develop' 2023-03-20 15:37:52 +01:00
Nicola Pievani 997e8c380d Migliorata gestione pulsantiera comandi diretti 2023-03-20 14:52:28 +01:00
Nicola Pievani 8d363b8b06 Inizio creazione nuova fase scarico durante lavorazioni 2023-03-17 18:20:27 +01:00
Nicola Pievani 7ecad4c218 Merge branch 'develop' 2023-03-13 10:45:46 +01:00
Nicola Pievani d49c231541 Cambio versione 2.5c1 2023-03-13 10:45:21 +01:00
Nicola Pievani 8d82058e49 Merge branch 'Features/Assistance_Axium_PLC' into develop 2023-03-13 10:40:05 +01:00
Nicola Pievani d6a9cac6b4 Gestione modo Auto in caso per DripFeed 2023-03-13 10:34:23 +01:00
Nicola Pievani 4ce898c25c Attivazione modalità auto prima di DripFeed 2023-03-10 16:27:48 +01:00
Nicola Pievani 6f59cddd80 Migliorata gestione messaggi durante DripFeed 2023-03-10 14:56:24 +01:00
Nicola Pievani c8b018f6df Comunicazione DripFeed funzionante 2023-03-10 12:13:22 +01:00
Nicola Pievani 36a1ecb509 Merge branch 'develop' 2023-03-09 12:53:18 +01:00
Nicola Pievani e287e827c4 Aggiunti messaggi (MsgBox per Debug) e corretti valori di controllo 2023-03-09 12:50:42 +01:00
Nicola Pievani 68e9a9201d Comunicazione con PPFile2 2 modifica delle costanti 2023-03-08 13:08:53 +01:00
Nicola Pievani 0eaebd5aad Inserito comando per passare alla pagina di scarico frontale 2023-03-08 11:49:52 +01:00
Nicola Pievani 8946bf3a00 Sostituita funzione HSL con funzione Asyn 2023-03-01 14:40:39 +01:00
Nicola Pievani aeb0be0590 Gestione sempre decimale poszione macchina 2023-02-28 18:00:33 +01:00
Nicola Pievani a15acb6528 Inizio scrittura funzione per DripFeed 2023-02-28 17:26:37 +01:00
Nicola Pievani e7e9d26b75 Aggiunte funzioni per gestione CN Axium DripFeed 2023-02-27 19:28:46 +01:00
NicolaP b48d4900ea Merge branch 'develop' 2023-02-10 13:20:23 +01:00
NicolaP d9de23daca Correzione gestione pezzi in parcheggio 2023-02-10 13:19:42 +01:00
NicolaP ad5c9331ba Merge branch 'master' into develop 2023-02-10 11:54:26 +01:00
DarioS b67330b509 OmagCUT :
- in VerifyOutOfStrokes prima di controllare il valore dell'asse C si cerca di riportarlo nel range ammesso (modulo 360 gradi).
2023-02-10 11:30:20 +01:00
DarioS ca66108145 Merge branch 'master' of https://gitlab.steamware.net/egaltech/OmagCUT 2023-02-09 19:04:42 +01:00
NicolaP 379ccc7519 Merge branch 'develop' 2023-02-08 19:03:19 +01:00
NicolaP b751c27773 Merge branch 'Features/Manage_Offset_Saw_On_SingleCut' into develop 2023-02-08 19:03:04 +01:00
NicolaP 14e1c254f0 Nuova gestione OffsetLama per tagli diretti 2023-02-08 19:02:46 +01:00
NicolaP 6f08e5f520 Merge branch 'master' into develop 2023-02-08 18:18:35 +01:00
NicolaP 7d8933cc39 Merge remote-tracking branch 'origin/HEAD' 2023-02-08 12:16:42 +01:00
NicolaP 2179996bff Merge branch 'develop' 2023-02-08 12:16:09 +01:00
NicolaP 316bcc89ea Merge branch 'Features/Fix_Front_Unloading' into develop 2023-02-08 12:15:53 +01:00
DarioS ce151e5db7 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/OmagCUT 2023-02-06 18:36:57 +01:00
DarioS b303fe2615 OmagCUT :
- aggiornamento logo a 2.5.
2023-02-06 18:32:32 +01:00
NicolaP 3e0d43c1d8 Aggiornamento versione 2.5b1 2023-02-03 16:24:09 +01:00
NicolaP 70b1822446 Merge branch 'develop' 2023-02-03 16:04:31 +01:00
127 changed files with 27671 additions and 4134 deletions
+10 -5
View File
@@ -21,6 +21,7 @@
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.25*"/> <RowDefinition Height="0.25*"/>
@@ -35,7 +36,7 @@
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Border Name="LogoBrd" Grid.Column="1"> <Border Name="LogoBrd" Grid.Column="1">
<Image Source="../Resources/AboutBoxImage.png" Stretch="Uniform"/> <Image Source="../Resources/NewIcons/Logo-Egalware (3).png" Stretch="Uniform"/>
</Border> </Border>
</Grid> </Grid>
<TextBlock Name="DescriptionLbl" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Center" <TextBlock Name="DescriptionLbl" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Center"
@@ -44,13 +45,17 @@
VerticalAlignment="Center" FontSize="18"/> VerticalAlignment="Center" FontSize="18"/>
<TextBlock Name="KeyLbl" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Center" <TextBlock Name="KeyLbl" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="18"/> VerticalAlignment="Center" FontSize="18"/>
<TextBlock Name="MachineLbl" Grid.Column="1" Grid.Row="6" HorizontalAlignment="Center"
<TextBlock Name="AssStatusLbl" Grid.Column="1" Grid.Row="6" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="18"/> VerticalAlignment="Center" FontSize="18"/>
<TextBlock Name="ProjectLbl" Grid.Column="1" Grid.Row="7" HorizontalAlignment="Center"
<TextBlock Name="MachineLbl" Grid.Column="1" Grid.Row="7" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="18"/> VerticalAlignment="Center" FontSize="18"/>
<TextBlock Name="CopyrightLbl" Grid.Column="1" Grid.Row="8" HorizontalAlignment="Center" <TextBlock Name="ProjectLbl" Grid.Column="1" Grid.Row="8" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="18"/>
<TextBlock Name="CopyrightLbl" Grid.Column="1" Grid.Row="9" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="15" /> VerticalAlignment="Center" FontSize="15" />
<Button Name="ExitBtn" Grid.Column="1" Grid.Row="10" IsCancel="True" <Button Name="ExitBtn" Grid.Column="1" Grid.Row="11" IsCancel="True"
Style="{DynamicResource OmagCut_WindowGrayTextButton}" Margin="1,0"/> Style="{DynamicResource OmagCut_WindowGrayTextButton}" Margin="1,0"/>
</Grid> </Grid>
+13
View File
@@ -33,6 +33,19 @@ Public Class AboutBoxWD
#Else #Else
KeyLbl.Text = sKey & " - " & sOpts KeyLbl.Text = sKey & " - " & sOpts
#End If #End If
' COPIATO da codice CAM5
Dim sAssStatus As String = " discontinued"
Dim nAssLeftDays As Integer
If EgtGetKeyAssLeftDays(nAssLeftDays) And nAssLeftDays >= 0 Then
If nAssLeftDays > 30 Then
sAssStatus = "expires within " & nAssLeftDays.ToString() & " days"
ElseIf nAssLeftDays > 0 Then
sAssStatus = "to be renewed within " & nAssLeftDays.ToString() & " days"
Else
sAssStatus = "to be renewed by today"
End If
End If
AssStatusLbl.Text = sAssStatus
CopyrightLbl.Text = My.Application.Info.Copyright.ToString() CopyrightLbl.Text = My.Application.Info.Copyright.ToString()
MachineLbl.Text = "Machine : " & m_MainWindow.m_CurrentMachine.sMachineName MachineLbl.Text = "Machine : " & m_MainWindow.m_CurrentMachine.sMachineName
ProjectLbl.Text = "Project : " & m_MainWindow.m_CurrentProjectPageUC.GetCurrentProjectName() ProjectLbl.Text = "Project : " & m_MainWindow.m_CurrentProjectPageUC.GetCurrentProjectName()
+251 -38
View File
@@ -1,4 +1,6 @@
Imports EgtUILib Imports System.Windows.Forms.Integration
Imports EgtUILib
Imports EgtWPFLib5
Friend Module CamAuto Friend Module CamAuto
@@ -21,15 +23,55 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.Add") bOk = bOk AndAlso EgtLuaCallFunction("CAM.Add")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
m_MainWindow.m_CurrentProjectPageUC.SetWarningMessage(EgtMsg(91017))
End If End If
m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag() m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag()
Return bOk Return bOk
End Function End Function
Friend Function AddWaterJetMachining( nOperId As Integer, ByRef nWarn As Integer) As Boolean Friend Function AddSawMachining(nOperId As Integer, ByRef nNewOperation As Integer) As Boolean
EgtLuaCreateGlobTable("CAM")
SetLuaStandardCamParams()
EgtLuaSetGlobIntVar("CAM.OPERID", nOperId)
Dim nErr As Integer = 999
Dim bOk As Boolean = EgtLuaExecFile(m_MainWindow.GetCamAutoDir() & "\CamAuto.lua")
bOk = bOk AndAlso EgtLuaGetGlobIntVar("CAM.ERR", nErr) AndAlso nErr = 0
bOk = bOk AndAlso EgtLuaCallFunction("CAM.UpdateSawing")
EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaGetGlobIntVar("CAM.NEW_OPERATION", nNewOperation)
EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then
bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString())
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
End If
Return bOk
End Function
Friend Function ChangePvColor(nOperId As Integer, colCut As Color3d)
EgtLuaCreateGlobTable("CAM")
SetLuaStandardCamParams()
EgtLuaSetGlobIntVar("CAM.OPERID", nOperId)
Dim nErr As Integer = 999
Dim bOk As Boolean = EgtLuaExecFile(m_MainWindow.GetCamAutoDir() & "\CamAuto.lua")
bOk = bOk AndAlso EgtLuaGetGlobIntVar("CAM.ERR", nErr) AndAlso nErr = 0
bOk = bOk AndAlso EgtLuaExecLine("CAM.ChangePvColor( " & nOperId.ToString & ",Color3d(" & colCut.R.ToString & "," & colCut.G.ToString & "," & colCut.B.ToString & "))")
EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then
bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString())
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
End If
Return bOk
End Function
Friend Function AddWaterJetMachining(nOperId As Integer, ByRef nWarn As Integer) As Boolean
EgtLuaCreateGlobTable("CAM") EgtLuaCreateGlobTable("CAM")
SetLuaStandardCamParams() SetLuaStandardCamParams()
EgtLuaSetGlobIntVar("CAM.OPERID", nOperId) EgtLuaSetGlobIntVar("CAM.OPERID", nOperId)
@@ -39,9 +81,34 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.AddWaterJet") bOk = bOk AndAlso EgtLuaCallFunction("CAM.AddWaterJet")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If
Return bOk
End Function
' versione CamAuto 2.6l1: gestione tagli con ridotto affondamento
Friend Function AddWaterJetMachining(LocaList As List(Of Integer), ByRef nWarn As Integer) As Boolean
EgtLuaCreateGlobTable("CAM")
SetLuaStandardCamParams()
For i As Integer = 0 To LocaList.Count - 1
EgtLuaSetGlobIntVar("CAM.TAB_OPERID." & (i + 1).ToString, LocaList(i))
Next
Dim nErr As Integer = 999
Dim bOk As Boolean = EgtLuaExecFile(m_MainWindow.GetCamAutoDir() & "\CamAuto.lua")
bOk = bOk AndAlso EgtLuaGetGlobIntVar("CAM.ERR", nErr) AndAlso nErr = 0
bOk = bOk AndAlso EgtLuaCallFunction("CAM.AddWaterJets")
EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM")
If nErr > 0 Then
bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
Return bOk Return bOk
End Function End Function
@@ -55,9 +122,11 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.Erase") bOk = bOk AndAlso EgtLuaCallFunction("CAM.Erase")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag() m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag()
m_MainWindow.m_CurrentProjectPageUC.ResetProjectNcRestart() m_MainWindow.m_CurrentProjectPageUC.ResetProjectNcRestart()
@@ -73,9 +142,11 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.InvertVerticalCut") bOk = bOk AndAlso EgtLuaCallFunction("CAM.InvertVerticalCut")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
Return bOk Return bOk
End Function End Function
@@ -101,6 +172,63 @@ Friend Module CamAuto
Return True Return True
End Function End Function
Friend Function RestoreDef_Machinig(Optional bOnlySideAng As Boolean = True)
Dim sSawingTilted As String = m_MainWindow.m_CurrentMachine.sCurrSawingTilted
Dim bApplySawingTilted As Boolean = m_MainWindow.m_CurrentMachine.bApplySawingTilted
Dim bOk As Boolean = True
Dim nIdPart As Integer = EgtGetFirstPart()
While nIdPart <> GDB_ID.NULL
' accedo al Layer OutLoop dei pezzi nel grezzo
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
Dim nEntId As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
SetResetDef_Machining(nEntId, sSawingTilted, bApplySawingTilted, bOnlySideAng)
nIdPart = EgtGetNextPart(nIdPart)
End While
Dim nRawId As Integer = CamAuto.GetCurrentRaw()
nIdPart = EgtGetFirstPartInRawPart(nRawId)
While nIdPart <> GDB_ID.NULL
' accedo al Layer OutLoop dei pezzi in parcheggio
Dim nIdLayerOutLoop As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_OUTLOOP)
Dim nEntId As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
SetResetDef_Machining(nEntId, sSawingTilted, bApplySawingTilted, bOnlySideAng)
nIdPart = EgtGetNextPartInRawPart(nIdPart)
End While
Return bOk
End Function
' ripristina la lavorazone indicata di default per i tagli inclinati
Private Sub SetResetDef_Machining(nEntId As Integer, sSawingTilted As String, bApplySawingTilted As Boolean, bOnlySideAng As Boolean)
While nEntId <> GDB_ID.NULL
Dim sInfoSIdeAng As String = String.Empty
EgtGetInfo(nEntId, INFO_SIDE_ANGLE, sInfoSIdeAng)
' Se è un'entità associata ad una lavorazione inclinata
If Not String.IsNullOrEmpty(sInfoSIdeAng) Then
If bApplySawingTilted Then
' forzo la lavorazione inclinata
If String.IsNullOrEmpty(sSawingTilted) Then
' ma se non esiste nessuna lavorezione specifica applico qualla standard
EgtRemoveInfo(nEntId, DEF_MACHINING)
Else
' Applico quella specificata
EgtSetInfo(nEntId, DEF_MACHINING, sSawingTilted)
End If
Else
' Rimuovo la lavorazione e applico quella standard
EgtRemoveInfo(nEntId, DEF_MACHINING)
End If
ElseIf Not bOnlySideAng Then
Dim sInfo As String = String.Empty
EgtGetInfo(nEntId, DEF_MACHINING, sInfo)
If Not String.IsNullOrEmpty(sInfo) Then
' se esiste una lavorazione specificata allora la rimuovo
EgtRemoveInfo(nEntId, DEF_MACHINING)
End If
End If
nEntId = EgtGetNext(nEntId)
End While
End Sub
Friend Function ResetAllSplitCurv() As Boolean Friend Function ResetAllSplitCurv() As Boolean
Dim bOk As Boolean = True Dim bOk As Boolean = True
Dim nIdPart As Integer = EgtGetFirstPart() Dim nIdPart As Integer = EgtGetFirstPart()
@@ -163,6 +291,61 @@ Friend Module CamAuto
Return bOk Return bOk
End Function 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 ResetAllRawPart() As Boolean
Dim nPhase As Integer = 1
Dim nOtherRaw As Integer = EgtGetFirstRawPart()
While nOtherRaw <> GDB_ID.NULL
' se il pezzo non appartiene alla prima fase allora viene eliminato
If Not EgtVerifyRawPartPhase(nOtherRaw, nPhase) Then
Dim NextRaw As Integer = EgtGetNextRawPart(nOtherRaw)
EgtRemoveRawPart(nOtherRaw)
nOtherRaw = NextRaw
Else
nOtherRaw = EgtGetNextRawPart(nOtherRaw)
End If
End While
Return True
End Function
' verifico che il contorno passato non sia stato separato ' verifico che il contorno passato non sia stato separato
Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer) Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer)
Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop) Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
@@ -215,9 +398,11 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.UpdateAllTp") bOk = bOk AndAlso EgtLuaCallFunction("CAM.UpdateAllTp")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
Return bOk Return bOk
End Function End Function
@@ -231,9 +416,11 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.Sort") bOk = bOk AndAlso EgtLuaCallFunction("CAM.Sort")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
Return bOk Return bOk
End Function End Function
@@ -248,9 +435,11 @@ Friend Module CamAuto
bOk = bOk AndAlso EgtLuaCallFunction("CAM.SpecApplyDisp") bOk = bOk AndAlso EgtLuaCallFunction("CAM.SpecApplyDisp")
EgtLuaGetGlobIntVar("CAM.ERR", nErr) EgtLuaGetGlobIntVar("CAM.ERR", nErr)
EgtLuaResetGlobVar("CAM") EgtLuaResetGlobVar("CAM")
If nErr <> 0 Then If nErr > 0 Then
bOk = False bOk = False
EgtOutLog("Error in CamAuto : " & nErr.ToString()) EgtOutLog("Error in CamAuto : " & nErr.ToString())
ElseIf nErr < 0 Then
EgtOutLog("Warning in CamAuto : " & nErr.ToString())
End If End If
If ResetOrderMachiningFlag Then If ResetOrderMachiningFlag Then
m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag() m_MainWindow.m_CurrentProjectPageUC.ResetOrderMachiningFlag()
@@ -393,6 +582,7 @@ Friend Module CamAuto
Return EgtRemoveOperationHome(nId) Return EgtRemoveOperationHome(nId)
End Function End Function
' Verifico che per tutte le lavorazioni sia attrezzato l'utensile
Friend Function VerifySetup(ByRef sMissingTools As String) As Boolean Friend Function VerifySetup(ByRef sMissingTools As String) As Boolean
Dim bOk As Boolean = True Dim bOk As Boolean = True
Dim bIsMultiCut = (EgtGetHeadId("H101") <> GDB_ID.NULL) Dim bIsMultiCut = (EgtGetHeadId("H101") <> GDB_ID.NULL)
@@ -407,9 +597,9 @@ Friend Module CamAuto
Dim sTool2 As String = String.Empty Dim sTool2 As String = String.Empty
EgtGetMachiningParam(MCH_MP.TUUID, sTuuid) EgtGetMachiningParam(MCH_MP.TUUID, sTuuid)
EgtTdbGetToolFromUUID(sTuuid, sTool) EgtTdbGetToolFromUUID(sTuuid, sTool)
If String.IsNullOrWhiteSpace( sTool) Then If String.IsNullOrWhiteSpace(sTool) Then
Dim sMchTool As String = "" Dim sMchTool As String = ""
EgtGetMachiningParam( MCH_MP.TOOL, sMchTool) EgtGetMachiningParam(MCH_MP.TOOL, sMchTool)
bOk = False bOk = False
If sMissingTools.IndexOf(sMchTool) = -1 Then If sMissingTools.IndexOf(sMchTool) = -1 Then
sMissingTools = sMissingTools & sMchTool & ", " sMissingTools = sMissingTools & sMchTool & ", "
@@ -422,8 +612,24 @@ Friend Module CamAuto
End If End If
sTool2 = sTool & "-2" sTool2 = sTool & "-2"
End If End If
If String.Compare(sTool, m_MainWindow.m_CurrentMachine.sCurrSaw) <> 0 AndAlso If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
( String.IsNullOrWhiteSpace( sTool2) OrElse String.Compare(sTool2, m_MainWindow.m_CurrentMachine.sCurrSaw) <> 0) AndAlso Dim bOnHolder As Boolean = False
For Each ToolPosition As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If ToolPosition.sTool <> String.Empty Then
If sTool = ToolPosition.sTool Then
bOnHolder = True
Exit For
End If
End If
Next
If Not bOnHolder Then
bOk = False
If sMissingTools.IndexOf(sTool) = -1 Then
sMissingTools = sMissingTools & sTool & ", "
End If
End If
ElseIf String.Compare(sTool, m_MainWindow.m_CurrentMachine.sCurrSaw) <> 0 AndAlso
(String.IsNullOrWhiteSpace(sTool2) OrElse String.Compare(sTool2, m_MainWindow.m_CurrentMachine.sCurrSaw) <> 0) AndAlso
String.Compare(sTool, m_MainWindow.m_CurrentMachine.sCurrDripSaw) <> 0 Then String.Compare(sTool, m_MainWindow.m_CurrentMachine.sCurrDripSaw) <> 0 Then
bOk = False bOk = False
If sMissingTools.IndexOf(sTool) = -1 Then If sMissingTools.IndexOf(sTool) = -1 Then
@@ -461,6 +667,8 @@ Friend Module CamAuto
End If End If
nId = EgtGetNextOperation(nId) nId = EgtGetNextOperation(nId)
End While End While
Dim index As Integer = sMissingTools.LastIndexOf(","c)
sMissingTools = If(index >= 0, sMissingTools.Remove(index, 1), sMissingTools)
Return bOk Return bOk
End Function End Function
@@ -487,9 +695,10 @@ Friend Module CamAuto
Dim dReducedDepth As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_REDUCEDDEPTH, 1, m_MainWindow.GetMachIniFile()) Dim dReducedDepth As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_REDUCEDDEPTH, 1, m_MainWindow.GetMachIniFile())
' Ciclo sulle lavorazioni ' Ciclo sulle lavorazioni
Dim nOperId As Integer = EgtGetFirstOperation() Dim nOperId As Integer = EgtGetFirstOperation()
Dim LocalListOperId As New List(Of Integer)
While nOperId <> GDB_ID.NULL While nOperId <> GDB_ID.NULL
' verifico sia una lavorazione valida di taglio con lama ' 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 ' verifica interferenza
Dim nFlag As Integer = FMI_TYPE.NONE Dim nFlag As Integer = FMI_TYPE.NONE
If Not VerifyComposedMachining(nOperId, nFlag) Then If Not VerifyComposedMachining(nOperId, nFlag) Then
@@ -501,12 +710,14 @@ Friend Module CamAuto
' se abilitato e attivo waterjet, lo aggiungo per completare il taglio ' se abilitato e attivo waterjet, lo aggiungo per completare il taglio
If m_MainWindow.m_CurrentMachine.WaterJettingActive Then If m_MainWindow.m_CurrentMachine.WaterJettingActive Then
Dim nWarn As Integer = 0 Dim nWarn As Integer = 0
AddWaterJetMachining(nOperId, nWarn) LocalListOperId.Add(nOperId)
'AddWaterJetMachining(nOperId, nWarn)
End If End If
End If End If
End If End If
nOperId = EgtGetNextOperation(nOperId) nOperId = EgtGetNextOperation(nOperId)
End While End While
If LocalListOperId.Count > 0 Then AddWaterJetMachining(LocalListOperId, 0)
Return bModified Return bModified
End Function End Function
@@ -610,8 +821,8 @@ Friend Module CamAuto
If nOriLeadIn <> MCH_SAW_LI.STRICT Then If nOriLeadIn <> MCH_SAW_LI.STRICT Then
EgtSetMachiningParam(MCH_MP.LEADINTYPE, MCH_SAW_LI.STRICT) EgtSetMachiningParam(MCH_MP.LEADINTYPE, MCH_SAW_LI.STRICT)
Dim dUserAddLen As Double = 0 Dim dUserAddLen As Double = 0
EgtGetInfo( nMchId, INFO_MCH_USER_SAL, dUserAddLen) EgtGetInfo(nMchId, INFO_MCH_USER_SAL, dUserAddLen)
EgtRemoveInfo( nMchId, INFO_MCH_USER_SAL) EgtRemoveInfo(nMchId, INFO_MCH_USER_SAL)
Dim dAddLen As Double = 0 Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.STARTADDLEN, dAddLen) EgtGetMachiningParam(MCH_MP.STARTADDLEN, dAddLen)
EgtSetMachiningParam(MCH_MP.STARTADDLEN, dAddLen - dUserAddLen - dSafeLen) EgtSetMachiningParam(MCH_MP.STARTADDLEN, dAddLen - dUserAddLen - dSafeLen)
@@ -630,8 +841,8 @@ Friend Module CamAuto
If nOriLeadOut <> MCH_SAW_LO.STRICT Then If nOriLeadOut <> MCH_SAW_LO.STRICT Then
EgtSetMachiningParam(MCH_MP.LEADOUTTYPE, MCH_SAW_LO.STRICT) EgtSetMachiningParam(MCH_MP.LEADOUTTYPE, MCH_SAW_LO.STRICT)
Dim dUserAddLen As Double = 0 Dim dUserAddLen As Double = 0
EgtGetInfo( nMchId, INFO_MCH_USER_EAL, dUserAddLen) EgtGetInfo(nMchId, INFO_MCH_USER_EAL, dUserAddLen)
EgtRemoveInfo( nMchId, INFO_MCH_USER_EAL) EgtRemoveInfo(nMchId, INFO_MCH_USER_EAL)
Dim dAddLen As Double = 0 Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.ENDADDLEN, dAddLen) EgtGetMachiningParam(MCH_MP.ENDADDLEN, dAddLen)
EgtSetMachiningParam(MCH_MP.ENDADDLEN, dAddLen - dUserAddLen - dSafeLen) EgtSetMachiningParam(MCH_MP.ENDADDLEN, dAddLen - dUserAddLen - dSafeLen)
@@ -788,9 +999,9 @@ Friend Module CamAuto
Friend Function RemoveAllExitPreCuts() As Boolean Friend Function RemoveAllExitPreCuts() As Boolean
Dim nOperId As Integer = EgtGetFirstOperation() Dim nOperId As Integer = EgtGetFirstOperation()
While nOperId <> GDB_ID.NULL While nOperId <> GDB_ID.NULL
Dim nNextOperId As Integer = EgtGetNextOperation( nOperId) Dim nNextOperId As Integer = EgtGetNextOperation(nOperId)
If EgtGetType( nOperId) <> MCH_OY.DISP AndAlso EgtExistsInfo(nOperId, INFO_MCH_EPC) Then If EgtGetType(nOperId) <> MCH_OY.DISP AndAlso EgtExistsInfo(nOperId, INFO_MCH_EPC) Then
EgtRemoveOperation( nOperId) EgtRemoveOperation(nOperId)
End If End If
nOperId = nNextOperId nOperId = nNextOperId
End While End While
@@ -800,6 +1011,7 @@ Friend Module CamAuto
Private Function SetLuaStandardCamParams(Optional bDripOk As Boolean = True) As Boolean Private Function SetLuaStandardCamParams(Optional bDripOk As Boolean = True) As Boolean
Dim sMaterial As String = m_MainWindow.m_CurrentMachine.CurrMat.sName Dim sMaterial As String = m_MainWindow.m_CurrentMachine.CurrMat.sName
Dim sSawMch As String = m_MainWindow.m_CurrentMachine.sCurrSawing Dim sSawMch As String = m_MainWindow.m_CurrentMachine.sCurrSawing
Dim sSawTiltedMch As String = m_MainWindow.m_CurrentMachine.sCurrSawingTilted
Dim sMillMch As String = m_MainWindow.m_CurrentMachine.sCurrMilling Dim sMillMch As String = m_MainWindow.m_CurrentMachine.sCurrMilling
Dim sDrillMch As String = m_MainWindow.m_CurrentMachine.sCurrDrilling Dim sDrillMch As String = m_MainWindow.m_CurrentMachine.sCurrDrilling
Dim sWaterJetMch As String = m_MainWindow.m_CurrentMachine.sCurrWaterJetting Dim sWaterJetMch As String = m_MainWindow.m_CurrentMachine.sCurrWaterJetting
@@ -818,6 +1030,7 @@ Friend Module CamAuto
Dim dMillingShort As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, m_MainWindow.GetMachIniFile()) Dim dMillingShort As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, m_MainWindow.GetMachIniFile())
EgtLuaSetGlobStringVar("CAM.MATERIAL", sMaterial) EgtLuaSetGlobStringVar("CAM.MATERIAL", sMaterial)
EgtLuaSetGlobStringVar("CAM.SAWMCH", sSawMch) EgtLuaSetGlobStringVar("CAM.SAWMCH", sSawMch)
EgtLuaSetGlobStringVar("CAM.SAWTILTEDMCH", sSawTiltedMch)
EgtLuaSetGlobStringVar("CAM.MILLMCH", sMillMch) EgtLuaSetGlobStringVar("CAM.MILLMCH", sMillMch)
EgtLuaSetGlobStringVar("CAM.DRILLMCH", sDrillMch) EgtLuaSetGlobStringVar("CAM.DRILLMCH", sDrillMch)
EgtLuaSetGlobStringVar("CAM.POCKETMCH", sPocketMch) EgtLuaSetGlobStringVar("CAM.POCKETMCH", sPocketMch)
@@ -977,13 +1190,13 @@ Friend Module CamAuto
Dim nRawId As Integer = GetCurrentRaw() Dim nRawId As Integer = GetCurrentRaw()
If nRawId = GDB_ID.NULL Then Return False If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco ' 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 If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva ' Verifico se cornice curva
Dim nDir As Integer = 0 Dim nDir As Integer = 0
EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir) EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0) Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2) Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di sgrossatura con lama ' Recupero la lavorazione corrente di sgrossatura con lama
Dim sCurrSawRoughing = m_MainWindow.m_CurrentMachine.sCurrSawRoughing Dim sCurrSawRoughing = m_MainWindow.m_CurrentMachine.sCurrSawRoughing
If String.IsNullOrEmpty(sCurrSawRoughing) Then Return True If String.IsNullOrEmpty(sCurrSawRoughing) Then Return True
@@ -1010,8 +1223,8 @@ Friend Module CamAuto
' Imposto la geometria ' Imposto la geometria
EgtSetMachiningGeometry(vId) EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale ' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart)) EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd)) EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC ' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR) If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione ' Applico la lavorazione
@@ -1026,13 +1239,13 @@ Friend Module CamAuto
Dim nRawId As Integer = GetCurrentRaw() Dim nRawId As Integer = GetCurrentRaw()
If nRawId = GDB_ID.NULL Then Return False If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco ' 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 If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva ' Verifico se cornice curva
Dim nDir As Integer = 0 Dim nDir As Integer = 0
EgtGetInfo( nPart1Id, INFO_FRAME_DIR, nDir) EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0) Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2) Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di finitura con lama ' Recupero la lavorazione corrente di finitura con lama
Dim sCurrSawFinishing = m_MainWindow.m_CurrentMachine.sCurrSawFinishing Dim sCurrSawFinishing = m_MainWindow.m_CurrentMachine.sCurrSawFinishing
If String.IsNullOrEmpty(sCurrSawFinishing) Then Return True If String.IsNullOrEmpty(sCurrSawFinishing) Then Return True
@@ -1069,8 +1282,8 @@ Friend Module CamAuto
' Imposto la geometria ' Imposto la geometria
EgtSetMachiningGeometry(vId) EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale ' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart)) EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd)) EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC ' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR) If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione ' Applico la lavorazione
@@ -1085,13 +1298,13 @@ Friend Module CamAuto
Dim nRawId As Integer = GetCurrentRaw() Dim nRawId As Integer = GetCurrentRaw()
If nRawId = GDB_ID.NULL Then Return False If nRawId = GDB_ID.NULL Then Return False
' Se non ci sono pezzi, esco ' 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 If nPart1Id = GDB_ID.NULL Then Return True
' Verifico se cornice curva ' Verifico se cornice curva
Dim nDir As Integer = 0 Dim nDir As Integer = 0
EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir) EgtGetInfo(nPart1Id, INFO_FRAME_DIR, nDir)
Dim bSwap As Boolean = ( nDir = 0) Dim bSwap As Boolean = (nDir = 0)
Dim bCurved As Boolean = ( nDir >= 2) Dim bCurved As Boolean = (nDir >= 2)
' Recupero la lavorazione corrente di spatolatura con lama ' Recupero la lavorazione corrente di spatolatura con lama
Dim sCurrSawSideFinishing = m_MainWindow.m_CurrentMachine.sCurrSawSideFinishing Dim sCurrSawSideFinishing = m_MainWindow.m_CurrentMachine.sCurrSawSideFinishing
If String.IsNullOrEmpty(sCurrSawSideFinishing) Then Return True If String.IsNullOrEmpty(sCurrSawSideFinishing) Then Return True
@@ -1112,8 +1325,8 @@ Friend Module CamAuto
' Imposto la geometria ' Imposto la geometria
EgtSetMachiningGeometry(vId) EgtSetMachiningGeometry(vId)
' Imposto trim iniziale e finale ' Imposto trim iniziale e finale
EgtSetMachiningParam(MCH_MP.STARTADDLEN, If( bSwap, -dTrimEnd, -dTrimStart)) EgtSetMachiningParam(MCH_MP.STARTADDLEN, If(bSwap, -dTrimEnd, -dTrimStart))
EgtSetMachiningParam(MCH_MP.ENDADDLEN, If( bSwap, -dTrimStart, -dTrimEnd)) EgtSetMachiningParam(MCH_MP.ENDADDLEN, If(bSwap, -dTrimStart, -dTrimEnd))
' Se cornice curva, imposto SCC ' Se cornice curva, imposto SCC
If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR) If bCurved Then EgtSetMachiningParam(MCH_MP.SOLCHOICETYPE, MCH_SCC.ADIR_NEAR)
' Applico la lavorazione ' Applico la lavorazione
+17 -7
View File
@@ -49,7 +49,7 @@
<Label Name="CsvPathTxBl" Grid.Row="1" Background="White" FontSize="16" VerticalAlignment="Center" Padding="2,5,0,5"/> <Label Name="CsvPathTxBl" Grid.Row="1" Background="White" FontSize="16" VerticalAlignment="Center" Padding="2,5,0,5"/>
<TreeView Name="PartsTreeView" Grid.Row="2" Background="{DynamicResource OmagCut_TreeViewBackGroundColor}"> <TreeView Name="PartsTreeView" Grid.Row="2" Background="{StaticResource OmagCut_TreeViewGradientGray}">
<TreeView.Resources> <TreeView.Resources>
<!--Modifico HierarchicalDataTemplate del CathegoryItem per poter inserire immagine e testo e per --> <!--Modifico HierarchicalDataTemplate del CathegoryItem per poter inserire immagine e testo e per -->
<!--renderlo apribile con un solo click --> <!--renderlo apribile con un solo click -->
@@ -62,7 +62,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding PictureString}" Height="32" Width="32" Margin="0,8,6,4" /> <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" /> <TextBlock Grid.Column="1" Text="{Binding Name}" FontSize="15" Margin="10" Foreground="Black" />
</Grid> </Grid>
@@ -123,7 +123,10 @@
</Setter> </Setter>
<Style.Triggers> <Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False"> <DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="Foreground" Value="{StaticResource OmagCut_LightGray}"/> <Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding bIsActive}" Value="True">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger> </DataTrigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>
@@ -131,18 +134,25 @@
</HierarchicalDataTemplate> </HierarchicalDataTemplate>
<!--Modifico DataTemplate del ToolItem per poter inserire immagine e testo--> <!--Modifico DataTemplate del ToolItem per poter inserire immagine e testo-->
<DataTemplate DataType="{x:Type self:PartCustomItem}"> <DataTemplate DataType="{x:Type self:PartCustomItem}">
<Grid Width="246" Margin="0,5,0,5" HorizontalAlignment="Right"> <Grid Width="234.8" Margin="0,5,0,5" HorizontalAlignment="Right">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="60"/> <ColumnDefinition Width="60"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Name}" Height="18" FontSize="14" HorizontalAlignment="Right"/> <TextBlock x:Name="TbName" 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 x:Name="TbText1" 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 x:Name="TbText2" Grid.Column="2" Text="{Binding sText2}" Height="18" FontSize="14" HorizontalAlignment="Left"/>
</Grid> </Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter TargetName="TbName" Property="TextDecorations" Value="Strikethrough" />
<Setter TargetName="TbText1" Property="TextDecorations" Value="Strikethrough" />
<Setter TargetName="TbText2" Property="TextDecorations" Value="Strikethrough" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate> </DataTemplate>
</TreeView.Resources> </TreeView.Resources>
+1 -1
View File
@@ -30,7 +30,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Name="PhotoBtn" Grid.Column="0" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}"> <Button Name="PhotoBtn" Grid.Column="0" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource PhotoImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Name="PhotoIMG" Source="{DynamicResource PhotoImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button> </Button>
<Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}"> <Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
+1
View File
@@ -2,6 +2,7 @@
Imports EgtWPFLib Imports EgtWPFLib
Imports System.Reflection Imports System.Reflection
Imports System.Globalization Imports System.Globalization
Imports EgtWPFLib5
Public Class CadCutPageUC Public Class CadCutPageUC
+92
View File
@@ -0,0 +1,92 @@
<Window x:Class="ChangeToolWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="ChooseTool" Height="382.6" Width="426.6" WindowStyle="None"
ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True"
Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Name="FilePathTxBl" Grid.Column="1" Grid.Row="0" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<!--TextAlignment="Center"
FontSize="20"
VerticalAlignment="Center"-->
<Grid Grid.Column="1" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="MACHINING" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Grid.Column="1" Text="TOOL" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<TextBlock Grid.Column="2" Text="TC" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
</Grid>
<ListBox Name="SetUpToolListBox" Grid.Column="1" Grid.Row="2"
ItemsSource="{Binding ItemList}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth, ElementName=SetUpToolListBox}" Margin="0,0,-40,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.6*"/>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.005*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Machining}" Style="{StaticResource OmagCut_ListBoxTextBlock}"/>
<TextBlock Grid.Column="1" Text="{Binding ToolName}" Style="{StaticResource OmagCut_ListBoxTextBlock}" />
<TextBlock Grid.Column="2" Text="{Binding ToolPos}" Style="{StaticResource OmagCut_ListBoxTextBlock}"/>
<Rectangle Grid.Column="2" Style="{DynamicResource Rect_SplitPage}"/>
<Grid.ToolTip>
<StackPanel>
<TextBlock Text="{Binding Machining}" Style="{StaticResource OmagCut_ListBoxTextBlock}"/>
<TextBlock Text="{Binding ToolName}" Style="{StaticResource OmagCut_ListBoxTextBlock}" />
<TextBlock Text="{Binding ToolPos}" Style="{StaticResource OmagCut_ListBoxTextBlock}"/>
</StackPanel>
</Grid.ToolTip>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Name="ErrorTxBl" Grid.Column="1" Grid.Row="3"
Style="{DynamicResource OmagCut_ErrorTextBlock}"/>
<Grid Grid.Column="1" Grid.Row="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" >
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Column="3" Style="{DynamicResource OmagCut_GradientBlueIconButton}" IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+376
View File
@@ -0,0 +1,376 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Public Class ChangeToolWD
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_SetUpMachiningList As New ObservableCollection(Of ItemMachining)
Sub New(Owner As Window)
Me.Owner = Owner
InitializeComponent()
End Sub
' Parametri della lama impostata correntemente in macchina
Private m_DefaultSaw_Name As String = String.Empty
Private m_DefaultSaw_Diam As Double = 0
Private m_DefaultSaw_Thick As Double = 0
Private m_DefaultSaw_Exists As Boolean = False
' Il nome della lavorazione restituito dalla selezione
Private m_NewSawing As String = String.Empty
Public ReadOnly Property NewSawing As String
Get
Return m_NewSawing
End Get
End Property
' Il colore della lavorazione
Private m_EgtColor As New Color3d
Public ReadOnly Property EgtColor As Color3d
Get
Return m_EgtColor
End Get
End Property
' Il nome della posizione sulla rulliera
Private m_TCPos As String = String.Empty
Public ReadOnly Property TCPos As String
Get
Return m_TCPos
End Get
End Property
' Nome della lavorazione corrente
Private m_CurrSawing As String = String.Empty
Public Property CurrSawing As String
Get
Return m_CurrSawing
End Get
Set(value As String)
m_CurrSawing = value
End Set
End Property
Private Sub GetDiamAndThickDefaultSaw()
m_DefaultSaw_Name = m_MainWindow.m_CurrentMachine.sCurrSaw
If EgtTdbSetCurrTool(m_DefaultSaw_Name) Then
' Diametro lama lavorazione
EgtTdbGetCurrToolParam(MCH_TP.DIAM, m_DefaultSaw_Diam)
' Spessore lama corrente
EgtTdbGetCurrToolParam(MCH_TP.THICK, m_DefaultSaw_Thick)
m_DefaultSaw_Exists = True
End If
End Sub
Private Sub OpenFile_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Posizione finestra
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
' Definizione del collegamento tra ItemList e ListBox1
SetUpToolListBox.ItemsSource = m_SetUpMachiningList
' 90378=Seleziona lavorazione
FilePathTxBl.Text = EgtMsg(90378)
End Sub
Private Sub OpenFile_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded
If String.IsNullOrEmpty(m_CurrSawing) Then
m_CurrSawing = m_MainWindow.m_CurrentMachine.sCurrSawing
End If
' carico elenco degli utensili impostati attualmente in macchina (anche il laser!)
LoadSetUpMachining()
' ricerco la lavorazione corrente
Dim Item As ItemMachining = m_SetUpMachiningList.FirstOrDefault(Function(x) x.Machining = m_CurrSawing)
Dim Index As Integer = m_SetUpMachiningList.IndexOf(Item)
If Index < 0 Then
' Imposto lavorazione di default
EgtMdbSetCurrMachining(m_CurrSawing)
Dim sTool As String = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.TOOL, sTool)
' ⚠️ Utensile {0} non attrezzato
ErrorTxBl.Text = String.Format(EgtMsg(90377), sTool)
Index = 0
End If
' se presente seleziono il primo elemento
If m_SetUpMachiningList.Count > 0 Then
SetUpToolListBox.SelectedItem = m_SetUpMachiningList(Index)
OkBtn.IsEnabled = True
Else
OkBtn.IsEnabled = False
End If
End Sub
#Region "SET UP MACHINING"
' Creo le liste da mostrare nella lista
Private Function LoadSetUpMachining() As Boolean
Dim sNameTool As String = String.Empty
Dim nType As Integer = 0
Dim sHeadTool As String = String.Empty
Dim nExitTool As Integer = 0
' Imposto il contesto corrente
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' Recupero la lista di tutte le lavorazioni di lama
Dim local_Sawing As TreeViewItem.CathegoryItem = GetAllSwaing()
' Se non ci sono lavorazioni di lama allora esco
If IsNothing(local_Sawing) Then Return False
' Ripulisco la lista degli utensili
m_SetUpMachiningList.Clear()
CreateSawingList(local_Sawing)
Return True
End Function
' Creo la lista delle delle lavorazioni di lama da proporre
Private Sub CreateSawingList(SawingFam As TreeViewItem.CathegoryItem)
' Recupero le info della lama montata di default
GetDiamAndThickDefaultSaw()
' recupero la prima lavorazione
For Each Item As TreeViewItem.CustomItem In SawingFam.Items
Dim sNameTool As String = String.Empty
' Imposto la lavorazione corrente
EgtMdbSetCurrMachining(Item.Name)
' Recupero il nome dell'utensile della lavorazione
EgtMdbGetCurrMachiningParam(MCH_MP.TOOL, sNameTool)
If Not String.IsNullOrEmpty(sNameTool) And VerifyCurrSawTollerance(sNameTool) Then
' Verifico che sia montata su un portautensile
EgtTdbSetCurrTool(sNameTool)
Dim sTCPos As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sTCPos)
If Not String.IsNullOrEmpty(sTCPos) Then
' Cerco nel porta utensili automaitico
For Each ToolPosition As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If ToolPosition.sTool <> String.Empty Then
If sNameTool = ToolPosition.sTool Then
' Verifico che il materiale e lo spessore
If VerifyCurrMachiningMaterial() Then
m_SetUpMachiningList.Add(New ItemMachining(Item.Name, sNameTool, sTCPos, Utility.GetColorPV()))
End If
Exit For
End If
End If
Next
End If
End If
Next
' reimposto la lavorazione di lama e la lama impostate in macchina
EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw)
EgtMdbSetCurrMachining(m_MainWindow.m_CurrentMachine.sCurrSawing)
End Sub
' verifico l'utensile corrente (impostato nella funzione chiamante) se può lavorare il grezzo corrente
Private Function VerifyCurrMachiningMaterial() As Boolean
Dim m_MaterialsList As New ObservableCollection(Of MachiningMaterial)
For Each Material As Material In m_MainWindow.m_CurrentMachine.Materials
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
m_MaterialsList.Add(New MachiningMaterial(Material.nId, Material.sName, Material.SubId))
Else
m_MaterialsList.Add(New MachiningMaterial(Material.nId, Material.sName))
End If
Next
Dim ToolString As String = String.Empty
EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, ToolString)
If ToolString <> String.Empty Then
Dim sItems() = ToolString.Split(";".ToCharArray)
Dim Index As Integer = 0
For Each Material As MachiningMaterial In m_MaterialsList
Dim Param() As String = sItems(Index).Split(",".ToCharArray)
Dim SubParam() As String = Param(0).Split(".".ToCharArray)
Dim nParId As Integer = 0
Dim nSubParId As Integer = 0
If m_MainWindow.m_CurrentMachine.bWaterJet And m_MainWindow.m_CurrentMachine.bFromDBWaterJet Then
If StringToInt(SubParam(0), nParId) AndAlso nParId = m_MainWindow.m_CurrentMachine.CurrMat.nId AndAlso SubParam.Count > 1 AndAlso
StringToInt(SubParam(1), nSubParId) AndAlso nSubParId = Material.nSubId Then
StringToDouble(Param(1), Material.dMinThickness)
StringToDouble(Param(2), Material.dMaxThickness)
Material.VerifyIfActive()
Else
Material.VerifyIfActive()
End If
Else
If StringToInt(Param(0), nParId) AndAlso nParId = m_MainWindow.m_CurrentMachine.CurrMat.nId Then
StringToDouble(Param(1), Material.dMinThickness)
StringToDouble(Param(2), Material.dMaxThickness)
Material.VerifyIfActive()
If m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight > Material.dMinThickness And m_MainWindow.m_CurrentProjectPageUC.m_dRawHeight < Material.dMaxThickness Then
Return True
End If
End If
End If
Index += 1
Next
End If
Return False
End Function
' verifico l'utensile corrente (impostato nella funzione chiamante) se ha le stesse dimensioni della lama di default
Private Function VerifyCurrSawTollerance(sNameTool As String) As Boolean
If m_DefaultSaw_Exists Then
If EgtTdbSetCurrTool(sNameTool) Then
' Diametro nuova lama
Dim NewDiam As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.DIAM, NewDiam)
' Spessore lama
Dim NewThick As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.THICK, NewThick)
' Verifico che la nuova lama possa essere applicata: diametro minore, uguale spessore
Dim Delta_Diam As Double = NewDiam - m_DefaultSaw_Diam
Dim Delta_Thick As Double = Math.Abs(NewThick - m_DefaultSaw_Thick)
If Delta_Diam < EPS_SMALL And Delta_Thick < EPS_SMALL Then
Return True
Else
EgtOutLog(String.Format("New saw {0} can not repalce the current {1}; Delta_Diam={2}, |Delta_Thick|={3} ", sNameTool, m_DefaultSaw_Name, Delta_Diam, Delta_Thick))
End If
Else
EgtOutLog("Impossible to find in tooldb SAW: " & sNameTool)
End If
Else
If String.IsNullOrEmpty(m_DefaultSaw_Name) Then
EgtOutLog("There is no currsaw setted in machine!")
Else
EgtOutLog("Impossible to find in tooldb currsaw setted in machine: " & m_DefaultSaw_Name)
End If
End If
Return False
End Function
' Restituisce tutto l'elenco delle lavorazioni disponibili in macchina
Private Function GetAllSwaing() As TreeViewItem.CathegoryItem
Dim sFName As String = EgtMsg(MSG_MACHININGSDBPAGEUC + 31)
Dim nFType As Integer = MCH_MY.SAWING
If Not m_MainWindow.m_CurrentMachine.bSawing Then Return Nothing
' Inserisco categoria ed eventuali elementi
Dim MachiningCathegory As New TreeViewItem.CathegoryItem(sFName, nFType)
Dim MachiningName As String = String.Empty
If EgtMdbGetFirstMachining(nFType, MachiningName) Then
MachiningCathegory.Items.Add(New TreeViewItem.CustomItem(MachiningName, nFType))
While EgtMdbGetNextMachining(nFType, MachiningName)
MachiningCathegory.Items.Add(New TreeViewItem.CustomItem(MachiningName, nFType))
End While
End If
Return MachiningCathegory
End Function
#End Region ' Set up machinining
Private Sub SetUpToolListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles SetUpToolListBox.PreviewMouseUp
' Disabilito Ok
OkBtn.IsEnabled = False
' Recupero item selezionato
If SetUpToolListBox.SelectedItems.Count() = 0 Then
Return
End If
m_NewSawing = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).Machining
m_EgtColor = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).PrintFootToolColor
m_TCPos = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).ToolPos
' A seconda del tipo
OkBtn.IsEnabled = True
End Sub
Private Sub SetUpToolListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles SetUpToolListBox.SelectionChanged
' Disabilito Ok
OkBtn.IsEnabled = False
' Recupero item selezionato
If SetUpToolListBox.SelectedItems.Count() = 0 Then
Return
Else
m_NewSawing = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).Machining
m_EgtColor = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).PrintFootToolColor
m_TCPos = m_SetUpMachiningList(SetUpToolListBox.SelectedIndex).ToolPos
OkBtn.IsEnabled = True
End If
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
DialogResult = True
End Sub
End Class
Public Class ItemMachining
Private m_ToolPos As String = String.Empty
Private m_ToolName As String = String.Empty
Private m_Machining As String = String.Empty
Private m_ToolExit As Integer = 1
Private m_ToolType As Integer = -1
Private m_PrintFootToolColor As New Color3d(0, 255, 0, 100)
Private m_cSawColor As SolidColorBrush
' Posizione porta utensile
Public Property ToolPos As String
Get
Return m_ToolPos
End Get
Set(value As String)
m_ToolPos = value
End Set
End Property
' Nome utensile
Public Property ToolName As String
Get
Return m_ToolName
End Get
Set(value As String)
m_ToolName = value
End Set
End Property
' Nome della lavorazione
Public Property Machining As String
Get
Return m_Machining
End Get
Set(value As String)
m_Machining = value
End Set
End Property
Public Property ToolExit As Integer
Get
Return m_ToolExit
End Get
Set(value As Integer)
m_ToolExit = value
End Set
End Property
Public Property ToolType As Integer
Get
Return m_ToolType
End Get
Set(value As Integer)
m_ToolType = value
End Set
End Property
Public Property PrintFootToolColor As Color3d
Get
Return m_PrintFootToolColor
End Get
Set(value As Color3d)
m_PrintFootToolColor = value
End Set
End Property
Public Property SawColor As SolidColorBrush
Get
Return m_cSawColor
End Get
Set(value As SolidColorBrush)
m_cSawColor = value
End Set
End Property
Sub New(sMachining As String, sToolName As String, sToolPos As String, cColor As Color3d)
m_Machining = sMachining
m_ToolPos = sToolPos
m_ToolName = sToolName
m_PrintFootToolColor = cColor
m_cSawColor = New SolidColorBrush(Color.FromRgb(m_PrintFootToolColor.R, m_PrintFootToolColor.G, m_PrintFootToolColor.B))
End Sub
End Class
+61
View File
@@ -0,0 +1,61 @@
<Window x:Class="ChooseTestToolWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="OpenFile" Height="382.6" Width="426.6" WindowStyle="None"
ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True"
Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Name="FilePathTxBl" Grid.Column="1" Grid.Row="1" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" />
<!--TextAlignment="Center"
FontSize="20"
VerticalAlignment="Center"-->
<ListBox Name="SetUpToolListBox" Grid.Column="1" Grid.Row="2"
ItemsSource="{Binding ItemList}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ToolAlias}" Style="{StaticResource OmagCut_ListBoxTextBlock}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Column="1" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" >
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Column="3" Style="{DynamicResource OmagCut_GradientBlueIconButton}" IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+311
View File
@@ -0,0 +1,311 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Public Class ChooseTestToolWD
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_SetUpToolList As New ObservableCollection(Of TestTool)
Sub New(Owner As Window)
Me.Owner = Owner
InitializeComponent()
End Sub
Private Sub OpenFile_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Posizione finestra
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
' Definizione del collegamento tra ItemList e ListBox1
SetUpToolListBox.ItemsSource = m_SetUpToolList
FilePathTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 45) ' Selezionare l'utensile da tastare
End Sub
Private Sub OpenFile_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded
' carico elenco degli utensili impostati attualmente in macchina (anche il laser!)
LoadSetUpTool()
' ricerco l'utensile della lavorazione indicata
Dim Item As TestTool = m_SetUpToolList.FirstOrDefault(Function(x) x.ToolName = m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrToolFromSelectedSawCurv)
Dim Index As Integer = m_SetUpToolList.IndexOf(Item)
If Index < 0 Then
Index = 0
End If
' se presente seleziono il primo elemento
If m_SetUpToolList.Count > 0 Then
SetUpToolListBox.SelectedItem = m_SetUpToolList(Index)
OkBtn.IsEnabled = True
Else
OkBtn.IsEnabled = False
End If
End Sub
Private Function LoadSetUpTool() As Boolean
Dim sNameTool As String = String.Empty
Dim sHeadTool As String = String.Empty
Dim nExitTool As Integer = 0
'sNameTool = m_MainWindow.m_CurrentMachine.sCurrSaw
'If Not String.IsNullOrEmpty(sNameTool) Then
' ' Imposto la lama
' m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool, True))
'End If
'sNameTool = m_MainWindow.m_CurrentMachine.sCurrMill
'If Not String.IsNullOrEmpty(sNameTool) Then
' ' Imposto la fresa
' m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool, False))
'End If
'sNameTool = m_MainWindow.m_CurrentMachine.sCurrDrill
'If Not String.IsNullOrEmpty(sNameTool) Then
' ' Imposto il foretto
' m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool, False))
'End If
sNameTool = "Laser point"
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto laser di puntamento
m_SetUpToolList.Add(New TestTool(sNameTool, ""))
End If
sNameTool = m_MainWindow.m_CurrentMachine.sCurrWaterJet
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto WJ
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
Select Case m_MainWindow.m_CurrentMachine.MountedToolConfig
Case CurrentMachine.MountedToolConfigs.SAW
sNameTool = m_MainWindow.m_CurrentMachine.sCurrSaw
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL
sNameTool = m_MainWindow.m_CurrentMachine.sCurrSaw
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
sNameTool = m_MainWindow.m_CurrentMachine.sCurrMill
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la fresa
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
sNameTool = m_MainWindow.m_CurrentMachine.sCurrDrill
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto il foretto
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER
sNameTool = m_MainWindow.m_CurrentMachine.sCurrSaw
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
' Recupero tutti gli utensili attrezzati (nel ToolChanger e nel ManualToolChanger)
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger
'm_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
sNameTool = ToolChangerPos.sTool
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
Next
Return True
Case CurrentMachine.MountedToolConfigs.TOOLCHANGER
' Recupero tutti gli utensili attrezzati (nel ToolChanger e nel ManualToolChanger)
sNameTool = m_MainWindow.m_CurrentMachine.sCurrSaw
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
'm_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
sNameTool = ToolChangerPos.sTool
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
End If
Next
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
'm_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
sNameTool = ToolChangerPos.sTool
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
End If
Next
Return True
Case CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
'm_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
sNameTool = ToolChangerPos.sTool
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
End If
Next
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
'm_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
sNameTool = ToolChangerPos.sTool
If Not String.IsNullOrEmpty(sNameTool) Then
' Imposto la lama
m_SetUpToolList.Add(New TestTool(sNameTool, sNameTool))
End If
End If
Next
Return True
Case Else
Return False
End Select
Return True
End Function
Private Sub SetUpToolListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles SetUpToolListBox.PreviewMouseUp
' Disabilito Ok
OkBtn.IsEnabled = False
' Recupero item selezionato
If SetUpToolListBox.SelectedItems.Count() = 0 Then
Return
End If
' A seconda del tipo
OkBtn.IsEnabled = True
End Sub
Private Sub SetUpToolListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles SetUpToolListBox.SelectionChanged
' Disabilito Ok
OkBtn.IsEnabled = False
' Recupero item selezionato
If SetUpToolListBox.SelectedItems.Count() = 0 Then
Return
Else
OkBtn.IsEnabled = True
End If
End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
DialogResult = True
End Sub
' restituisce l'oggetto selezionato in elenco e lo imposta come attivo
Friend Function GetSelectedTool() As TestTool
Dim SelTestTool As TestTool = DirectCast(SetUpToolListBox.SelectedItem, TestTool)
If SelTestTool.ToolAlias = "Laser point" Then
SelTestTool.ToolHead = "H3"
SelTestTool.ToolExit = 1
SelTestTool.ToolIsSaw = False
SelTestTool.ToolIsLaser = True
Else
EgtTdbSetCurrTool(SelTestTool.ToolName)
Dim sHeadTool As String = String.Empty
Dim nExitTool As Integer = 0
Dim sTypeTool As String = String.Empty
Dim nTypeTool As Integer
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nTypeTool)
EgtTdbGetCurrToolParam(MCH_TP.HEAD, sHeadTool)
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExitTool)
EgtTdbGetCurrToolParam(MCH_TP.TYPE, sTypeTool)
SelTestTool.ToolHead = sHeadTool
SelTestTool.ToolExit = nExitTool
SelTestTool.ToolType = nTypeTool
SelTestTool.ToolIsSaw = (nTypeTool = MCH_TY.SAW_STD)
SelTestTool.ToolIsLaser = False
End If
Return SelTestTool
End Function
End Class
Public Class TestTool
Private m_ToolAlias As String = String.Empty
Private m_ToolName As String = String.Empty
Private m_ToolHead As String = "H1"
Private m_ToolExit As Integer = 1
Private m_ToolIsSaw As Boolean = False
Private m_ToolIsLaser As Boolean = False
Private m_ToolType As Integer = -1
Public Property ToolAlias As String
Get
Return m_ToolAlias
End Get
Set(value As String)
m_ToolAlias = value
End Set
End Property
Public Property ToolName As String
Get
Return m_ToolName
End Get
Set(value As String)
m_ToolName = value
End Set
End Property
Public Property ToolHead As String
Get
Return m_ToolHead
End Get
Set(value As String)
m_ToolHead = value
End Set
End Property
Public Property ToolExit As Integer
Get
Return m_ToolExit
End Get
Set(value As Integer)
m_ToolExit = value
End Set
End Property
Public Property ToolType As Integer
Get
Return m_ToolType
End Get
Set(value As Integer)
m_ToolType = value
End Set
End Property
Public Property ToolIsSaw As Boolean
Get
Return m_ToolIsSaw
End Get
Set(value As Boolean)
m_ToolIsSaw = value
End Set
End Property
Public Property ToolIsLaser As Boolean
Get
Return m_ToolIsLaser
End Get
Set(value As Boolean)
m_ToolIsLaser = value
End Set
End Property
Sub New(sToolAlias As String, sToolName As String)
m_ToolAlias = sToolAlias
m_ToolName = sToolName
End Sub
End Class
+4 -1
View File
@@ -132,13 +132,16 @@
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Button> </Button>
<!--Gestione sfridi-->
<Button Name="RemovePartBtn" Grid.ColumnSpan="2" Grid.Row="6" <Button Name="RemovePartBtn" Grid.ColumnSpan="2" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/> Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Button Name="ScrapsBtn" Grid.Column="3" Grid.Row="6" <Button Name="ScrapsBtn" Grid.Column="3" Grid.Row="6"
Style="{DynamicResource OmagCut_YellowTextButton}"/> Style="{DynamicResource OmagCut_YellowTextButton}"/>
<!--Gestione scarico pezzi-->
<Button Name="UnloadPartsBtn" Grid.ColumnSpan="2" Grid.Row="7"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Grid Grid.Row="7" Grid.ColumnSpan="3"> <Grid Grid.Row="7" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
+389 -59
View File
@@ -1,4 +1,5 @@
Imports EgtUILib Imports System.Windows.Forms.Integration
Imports EgtUILib
Public Class MoveRawPartPage Public Class MoveRawPartPage
' Riferimento alla MainWindow ' Riferimento alla MainWindow
@@ -35,12 +36,16 @@ Public Class MoveRawPartPage
Private m_ScrapsVisibility As Visibility = Visibility.Visible Private m_ScrapsVisibility As Visibility = Visibility.Visible
Private m_CurrRawOnVacuum As Integer = GDB_ID.NULL Private m_CurrRawOnVacuum As Integer = GDB_ID.NULL
' definisce se è stata inserito uno scarico
Private m_IsCurrPhaseUnloaded As Boolean = False
Private Sub MoveRawPartPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized Private Sub MoveRawPartPage_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Assegno testi ' Assegno testi
RemovePartBtn.Content = EgtMsg(MSG_MOVERAWPAGEUC + 1) 'Rimuovi RemovePartBtn.Content = EgtMsg(MSG_MOVERAWPAGEUC + 1) 'Rimuovi
ModifyBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 17) 'Modifica ModifyBtn.Content = EgtMsg(MSG_SPLITPAGEUC + 17) 'Modifica
ResetBtn.Content = EgtMsg(MSG_NESTPAGEUC + 6) 'Reset ResetBtn.Content = EgtMsg(MSG_NESTPAGEUC + 6) 'Reset
ScrapsBtn.Content = "Add Scraps" ScrapsBtn.Content = "Add Scraps"
UnloadPartsBtn.Content = "Move part"
End Sub End Sub
Private Sub MoveRawPartPage_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded Private Sub MoveRawPartPage_Loaded(sender As Object, e As EventArgs) Handles Me.Loaded
@@ -60,7 +65,12 @@ Public Class MoveRawPartPage
End If End If
' Deseleziono tutto ' Deseleziono tutto
EgtDeselectAll() EgtDeselectAll()
' Recupero i tagli allungati prima definiti ' resetto variabili di navigazione nelle fasi
m_bPrev = False
m_bToNext = False
'---------------------------- CREATE NEW PHASE ----------------------------
' Recupero i tagli ABILITATI prima definiti
Dim Cuts(0) As Integer Dim Cuts(0) As Integer
m_SplitPage.GetEnabledCuts(Cuts) m_SplitPage.GetEnabledCuts(Cuts)
' Fase precedente ' Fase precedente
@@ -69,11 +79,19 @@ Public Class MoveRawPartPage
Dim vNewRaws As New List(Of Integer) Dim vNewRaws As New List(Of Integer)
If Not m_SplitPage.m_bShow Then If Not m_SplitPage.m_bShow Then
SplitRawParts(nPrevPhase, Cuts, vNewRaws) SplitRawParts(nPrevPhase, Cuts, vNewRaws)
m_IsCurrPhaseUnloaded = False
Else Else
EgtSetCurrPhase(nPrevPhase + 1) nPrevPhase = nPrevPhase + 1
EgtSetCurrPhase(nPrevPhase)
HideAllMachinings() HideAllMachinings()
' verifico se la fase corrente è di tipo scarico frontale
m_nCurrDisposition = EgtGetPhaseDisposition(nPrevPhase)
If IsDispUnloadOnAuxTab(m_nCurrDisposition) Then
m_SplitPage.m_bOnAuxTab = True
End If
End If End If
m_nCurrPhase = EgtGetCurrPhase() m_nCurrPhase = EgtGetCurrPhase()
'---------------------------- CREATE NEW PHASE ----------------------------
'---------------------------- SCRAPS ---------------------------- '---------------------------- SCRAPS ----------------------------
' gestione visualizzazione del comando "Scraps" ' gestione visualizzazione del comando "Scraps"
@@ -101,19 +119,31 @@ Public Class MoveRawPartPage
End If End If
'---------------------------- SCRAPS ---------------------------- '---------------------------- SCRAPS ----------------------------
'---------------------------- AUX TABLE ----------------------------
' Se movimento pezzi finale, sistemazioni per tavolo ausiliario ' Se movimento pezzi finale, sistemazioni per tavolo ausiliario
If m_SplitPage.m_bOnAuxTab Then If m_SplitPage.m_bOnAuxTab And m_SplitPage.m_bEnableOnAuxTab Then
' assegnazione delle info tavola ausiliaria alla dispozione corrente ' assegnazione delle info tavola ausiliaria alla dispozione corrente (Spostato nella funzione Refresh)
SetAuxTabInCurrDisposition() SetAuxTabInCurrDisposition()
UnloadPartsBtn.Content = "Go to MOVE part"
' altrimenti, aggiorno visualizzazione ' altrimenti, aggiorno visualizzazione
Else ElseIf Not m_SplitPage.m_bOnAuxTab And m_SplitPage.m_bEnableOnAuxTab Then
EgtDraw() UnloadPartsBtn.Content = "Go to UNLOAD part"
End If End If
'---------------------------- AUX TABLE ----------------------------
EgtDraw()
' Carico i parametri di movimento ' Carico i parametri di movimento
m_dStep = GetPrivateProfileDouble(S_RAWMOVE, K_RAWSTEP, 50, m_MainWindow.GetIniFile()) m_dStep = GetPrivateProfileDouble(S_RAWMOVE, K_RAWSTEP, 50, m_MainWindow.GetIniFile())
' Carico il valore ci
Dim ExtraStep As Double = GetPrivateProfileDouble(S_RAWMOVE, K_EXTRASTEP, 1, m_MainWindow.GetIniFile())
' Ricavo la lunghezza del baffo di taglio ' Ricavo la lunghezza del baffo di taglio
m_dStep = SplitAuto.MaxCuttingMustache(m_dStep) m_dStep = SplitAuto.MaxCuttingMustache(m_dStep)
StepMoveTxBx.Text = LenToString(m_dStep, 1) & "+1" If ExtraStep < EPS_SMALL Then
StepMoveTxBx.Text = LenToString(m_dStep, 1)
Else
StepMoveTxBx.Text = LenToString(m_dStep, 1) & "+" & LenToString(ExtraStep, 1)
' Aggiorno il valore sommando l'extra
m_dStep = m_dStep + ExtraStep
End If
m_dRotation = GetPrivateProfileDouble(S_RAWMOVE, K_RAWROTATION, 30, m_MainWindow.GetIniFile()) m_dRotation = GetPrivateProfileDouble(S_RAWMOVE, K_RAWROTATION, 30, m_MainWindow.GetIniFile())
RotationAngleTxBx.Text = DoubleToString(m_dRotation, 3) RotationAngleTxBx.Text = DoubleToString(m_dRotation, 3)
' Se movimento manuale perpendicolare ' Se movimento manuale perpendicolare
@@ -167,6 +197,30 @@ Public Class MoveRawPartPage
' aggiorno il messaggio del comando per gestire gli sfridi ' aggiorno il messaggio del comando per gestire gli sfridi
VerifyIsNewScrap(m_CurrRawOnVacuum) VerifyIsNewScrap(m_CurrRawOnVacuum)
' aggiorno la visibilità dei comandi
RefreshVisibility()
' salvo l'idice della fase corrente
m_nCurrDisposition = EgtGetPhaseDisposition(m_nCurrPhase)
' Abilitazione bottone modifica
ModifyBtn.IsEnabled = m_SplitPage.m_bShow
' gestione abilitazione altri bottoni
EnableButtons()
End Sub
' Gestione di visualizzazione dei comandi per il movimento dei pezzi
Private Sub RefreshVisibility()
' Aggiorno visulizzazione comando per passare alla pagina di scarico
If Not m_SplitPage.m_bEnableOnAuxTab Then
UnloadPartsBtn.Visibility = Visibility.Hidden
Else
UnloadPartsBtn.Visibility = Visibility.Visible
If m_SplitPage.m_bOnAuxTab Then
UnloadPartsBtn.Content = "Go to MOVE part"
' altrimenti, aggiorno visualizzazione
Else
UnloadPartsBtn.Content = "Go to UNLOAD part"
End If
End If
' Aggiorno interfaccia per taglio perpendicolare ' Aggiorno interfaccia per taglio perpendicolare
If m_bByHand Then If m_bByHand Then
UpBtn.Visibility = Windows.Visibility.Visible UpBtn.Visibility = Windows.Visibility.Visible
@@ -222,12 +276,6 @@ Public Class MoveRawPartPage
ResetBtn.Visibility = Windows.Visibility.Visible ResetBtn.Visibility = Windows.Visibility.Visible
ScrapsBtn.Visibility = Windows.Visibility.Hidden ScrapsBtn.Visibility = Windows.Visibility.Hidden
End If End If
' salvo l'idice della fase corrente
m_nCurrDisposition = EgtGetPhaseDisposition(m_nCurrPhase)
' Abilitazione bottone modifica
ModifyBtn.IsEnabled = m_SplitPage.m_bShow
' gestione abilitazione altri bottoni
EnableButtons()
End Sub End Sub
Private Sub SetAuxTabInCurrDisposition() Private Sub SetAuxTabInCurrDisposition()
@@ -300,7 +348,6 @@ Public Class MoveRawPartPage
If Not m_bByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF) If Not m_bByHand Then EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
End If End If
Else Else
' verifico che il pezzo precedente possa essere depositato correttamente ' verifico che il pezzo precedente possa essere depositato correttamente
If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then If VerifyCollisionWithOtherRawPart(m_CurrRawOnVacuum) Then
' mantengo la selezione del pezzo ' mantengo la selezione del pezzo
@@ -310,6 +357,15 @@ Public Class MoveRawPartPage
' esco dal ciclo, prima devo depositare correttamente il pezzo ' esco dal ciclo, prima devo depositare correttamente il pezzo
Exit While Exit While
End If End If
' Verifico che il pezzo corrente sia prelevabile - versione 2.6c3 -
If VerifyCollisionWithOtherRawPart(nId, True) Then
' mantengo la selezione del pezzo
EgtSetStatus(m_CurrRawOnVacuum, GDB_ST.SEL)
m_CurrProjPage.SetErrorMessage("Collisione pezzi")
EgtDraw()
' esco dal ciclo, prima devo depositare correttamente il pezzo
Exit While
End If
' salvo l'indice del pezzo correntemente attaccato alle ventose ' salvo l'indice del pezzo correntemente attaccato alle ventose
m_CurrRawOnVacuum = nId m_CurrRawOnVacuum = nId
@@ -329,9 +385,15 @@ Public Class MoveRawPartPage
VacuumCups.SetWeightInformation(AverageDensity, MaxSinglePlugger, MaxDoublePlugger) VacuumCups.SetWeightInformation(AverageDensity, MaxSinglePlugger, MaxDoublePlugger)
VacuumCups.SetRotationForExtraStrokeY(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEY, 0, m_MainWindow.GetMachIniFile()) <> 0) VacuumCups.SetRotationForExtraStrokeY(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEY, 0, m_MainWindow.GetMachIniFile()) <> 0)
VacuumCups.SetRotationForExtraStrokeX(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEX, 0, m_MainWindow.GetMachIniFile()) <> 0) VacuumCups.SetRotationForExtraStrokeX(GetPrivateProfileInt(S_MACH_RAWMOVE, K_MACH_ROTATEVACUUMFOREXTRASTROKEX, 0, m_MainWindow.GetMachIniFile()) <> 0)
' se su scarico frontale allora devo modificare la scelta delle ventose
VacuumCups.bUnloadingOnAuxTab = m_SplitPage.m_bOnAuxTab VacuumCups.ResetHeadName()
If PutVacuumCupsOnRaw(nId, rmData) Then Dim bPutVacuum As Boolean = PutVacuumCupsOnRaw(nId, rmData)
If Not bPutVacuum Then
Dim bTwoHeadVac As Boolean = (EgtGetHeadId(VACUUM_HEAD_2) <> GDB_ID.NULL)
If bTwoHeadVac Then bPutVacuum = PutVacuumCupsOnRaw(nId, rmData)
End If
If bPutVacuum Then
' Visualizzo le ventose ' Visualizzo le ventose
EgtSetStatus(GetVacuumId(), GDB_ST.ON_) EgtSetStatus(GetVacuumId(), GDB_ST.ON_)
' Aggiorno i dati ' Aggiorno i dati
@@ -353,6 +415,8 @@ Public Class MoveRawPartPage
m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2)) 'Pezzo troppo piccolo : non si può muovere m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_MOVERAWPAGEUC + 2)) 'Pezzo troppo piccolo : non si può muovere
End If End If
End If End If
End If End If
End If End If
EgtDraw() EgtDraw()
@@ -372,7 +436,7 @@ Public Class MoveRawPartPage
End Sub End Sub
' Veririfica che il grezzo non entri in colliosione con altri pezzi ' Veririfica che il grezzo non entri in colliosione con altri pezzi
Private Function VerifyCollisionWithOtherRawPart(nIdOnVacumm As Integer) As Boolean Private Function VerifyCollisionWithOtherRawPart_0(nIdOnVacumm As Integer) As Boolean
' se movimento su tavola di scarico non eseguo il controllo (evito di segnalre errori per pezzi ricavati interni al grezzo...) ' se movimento su tavola di scarico non eseguo il controllo (evito di segnalre errori per pezzi ricavati interni al grezzo...)
If m_SplitPage.m_bOnAuxTab Then Return False If m_SplitPage.m_bOnAuxTab Then Return False
If nIdOnVacumm = GDB_ID.NULL Then Return False If nIdOnVacumm = GDB_ID.NULL Then Return False
@@ -406,6 +470,69 @@ Public Class MoveRawPartPage
Return False Return False
End Function End Function
' Veririfica che il grezzo non entri in colliosione con altri pezzi - versione 2.6c3 -
Private Function VerifyCollisionWithOtherRawPart(nIdOnVacumm As Integer, Optional IsTaking As Boolean = False) As Boolean
' se movimento su tavola di scarico non eseguo il controllo (evito di segnalre errori per pezzi ricavati interni al grezzo...)
If m_SplitPage.m_bOnAuxTab Then Return False
If nIdOnVacumm = GDB_ID.NULL Then Return False
' Creo gruppo temporaneo in cui generare le superfici per la veririfica di collisione
Dim m_nTempId As Integer = EgtCreateGroup(GDB_ID.ROOT)
If m_nTempId = GDB_ID.NULL Then Return False
EgtSetName(m_nTempId, "RawTemp")
' recupero il contorno del'ID attaccato alle ventose e da questo genero una superificie
Dim nIdUpRegionOnVac As Integer = EgtGetFirstNameInGroup(nIdOnVacumm, "RawUpReg")
Dim nIdDwnRegionOnVac As Integer = EgtGetFirstNameInGroup(nIdOnVacumm, "RawDwnReg")
' recupero gli ID di tutti i grezzi della fase corrente
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 e genero la sua sueperificie
Dim nIdUpRegion As Integer = EgtGetFirstNameInGroup(nIdRaw, "RawUpReg")
Dim nIdDwnRegion As Integer = EgtGetFirstNameInGroup(nIdRaw, "RawDwnReg")
' creo la copia delle superifici
Dim nCopy_IdDwnRegionOnVac As Integer = EgtCopyGlob(nIdDwnRegionOnVac, m_nTempId)
Dim nCopy_nIdUpRegion As Integer = EgtCopyGlob(nIdUpRegion, m_nTempId)
' PRELIEVO
If EgtSurfFrIntersect(nCopy_IdDwnRegionOnVac, nCopy_nIdUpRegion) Then
' se esite una superficie allora esiste un'intersezione
If EgtExistsObj(nCopy_IdDwnRegionOnVac) Then
EgtErase(m_nTempId)
' Esco: Intersezione TROVATA → true
Return True
End If
End If
If Not IsTaking Then
' DEPOSITO : devono essere esguiti due controlli ulteririori
Dim nCopy_IdUpRegionOnVac As Integer = EgtCopyGlob(nIdUpRegionOnVac, m_nTempId)
Dim nCopy_nIdDwnRegion As Integer = EgtCopyGlob(nIdDwnRegion, m_nTempId)
If EgtSurfFrIntersect(nCopy_IdDwnRegionOnVac, nCopy_nIdDwnRegion) Then
' se esite una superficie allora esiste un'intersezione
If EgtExistsObj(nCopy_IdDwnRegionOnVac) Then
EgtErase(m_nTempId)
' Esco: Intersezione TROVATA → true
Return True
End If
End If
If EgtSurfFrIntersect(nCopy_IdUpRegionOnVac, nCopy_nIdUpRegion) Then
' se esite una superficie allora esiste un'intersezione
If EgtExistsObj(nCopy_IdUpRegionOnVac) Then
EgtErase(m_nTempId)
' Esco: Intersezione TROVATA → true
Return True
End If
End If
End If
End If
nIdRaw = EgtGetNextRawPart(nIdRaw)
End While
EgtErase(m_nTempId)
Return False
End Function
Private Function VerifyIsNewScrap(nMyId As Integer) As Boolean Private Function VerifyIsNewScrap(nMyId As Integer) As Boolean
Dim nVal As Integer = 0 Dim nVal As Integer = 0
If EgtGetInfo(nMyId, K_ISNEWSCRAPS, nVal) Then If EgtGetInfo(nMyId, K_ISNEWSCRAPS, nVal) Then
@@ -740,6 +867,12 @@ Public Class MoveRawPartPage
Return bOk Return bOk
End Function End Function
Private Sub RemovePart_KeyCancel(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles m_CurrProjPage.OnKeyCancelDownScene
If e.KeyCode = System.Windows.Forms.Keys.Delete Then
RemovePartBtn_Click(Nothing, Nothing)
End If
End Sub
Private Sub RemovePartBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemovePartBtn.Click Private Sub RemovePartBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemovePartBtn.Click
Dim nRawId As Integer = EgtGetFirstSelectedObj() Dim nRawId As Integer = EgtGetFirstSelectedObj()
While nRawId <> GDB_ID.NULL While nRawId <> GDB_ID.NULL
@@ -782,6 +915,34 @@ Public Class MoveRawPartPage
End While End While
End Sub End Sub
' Passo dalla pagina di movimento dei pezzi alla pagina di scarico
Private Sub UnloadPartBtn_Click() Handles UnloadPartsBtn.Click
' forzo lo stato di scarico frontale oppure di movimento
m_SplitPage.m_bOnAuxTab = Not m_SplitPage.m_bOnAuxTab
' se rientro nella fase di spostamenti allora nascondo la tavola di scarico
If Not m_SplitPage.m_bOnAuxTab Then
' se ci sono pezzi sulla tavola di scarico non posso nasconderla
Dim LclLstOfUnldPart As New List(Of Integer)
If Not PartOnAuxTab(LclLstOfUnldPart, m_nCurrPhase) Then
EgtDisableModified()
' nascondo la tavola di scarico
EgtSetStatus(m_nAuxTabId, GDB_ST.OFF)
' Nascondo eventuali pezzi in parcheggio
HideParkedParts()
EgtEnableModified()
End If
Else
' Assegnazione delle info tavola ausiliaria alla dispozione corrente
SetAuxTabInCurrDisposition()
End If
' Mantengo la fase che è stata creata e passo a gestire solo la visualizzazione dei bottoni
RefreshVisibility()
EgtZoom(ZM.ALL, True)
End Sub
Private Sub StepMoveTxBx_EgtClosed(sender As Object, e As EventArgs) Handles StepMoveTxBx.EgtClosed Private Sub StepMoveTxBx_EgtClosed(sender As Object, e As EventArgs) Handles StepMoveTxBx.EgtClosed
Dim dStep As Double Dim dStep As Double
If StringToLen(StepMoveTxBx.Text, dStep) Then If StringToLen(StepMoveTxBx.Text, dStep) Then
@@ -823,8 +984,8 @@ Public Class MoveRawPartPage
Dim ptRef As Point3d Dim ptRef As Point3d
If Not EgtGetInfo(nRefId, "Pos", ptRef) Then Return If Not EgtGetInfo(nRefId, "Pos", ptRef) Then Return
Dim sCorn As String = "" Dim sCorn As String = ""
EgtGetInfo( nRefId, "COR", sCorn) EgtGetInfo(nRefId, "COR", sCorn)
Select sCorn Select Case sCorn
Case "TL" Case "TL"
nCorn = MCH_CR.TL nCorn = MCH_CR.TL
Case "TR" Case "TR"
@@ -1009,8 +1170,44 @@ Public Class MoveRawPartPage
End Function End Function
Private Sub PauseBtn_Click(sender As Object, e As RoutedEventArgs) Handles PauseBtn.Click Private Sub PauseBtn_Click(sender As Object, e As RoutedEventArgs) Handles PauseBtn.Click
' verifico la presenza di eventuali pezzi sulla tavola di scarico
Dim LclLstOfUnldPart As New List(Of Integer)
PartOnAuxTab(LclLstOfUnldPart, m_nCurrPhase)
If Not InsertPauseInCurrPhase() Then Return
AddNewPhase()
End Sub
' restituisce la lista dei pezzi che sono sulla tavola di scarico nella fase indicata
Private Function PartOnAuxTab(ByRef ListOfUnloadedPatr As List(Of Integer), nPhase As Integer) As Boolean
m_IsCurrPhaseUnloaded = False
' Area tavolo ausiliario
Dim b3AuxTab As New BBox3d
EgtGetBBoxGlob(EgtGetFirstNameInGroup(m_nAuxTabId, "A1"), GDB_BB.STANDARD, b3AuxTab)
' Area pezzi
Dim nOtherRaw As Integer = EgtGetFirstRawPart()
While nOtherRaw <> GDB_ID.NULL
If EgtVerifyRawPartPhase(nOtherRaw, nPhase) Then
Dim b3OtherRaw As New BBox3d
' EgtGetRawPartBBox(nOtherRaw, b3OtherRaw)
EgtGetBBoxGlob(nOtherRaw, GDB_BB.STANDARD, b3OtherRaw)
' se il centro del pezzo è sulla tavola di scarico
If b3OtherRaw.Center.y < b3AuxTab.Max().y Then
m_IsCurrPhaseUnloaded = True
ListOfUnloadedPatr.Add(nOtherRaw)
' salvo l'info che indica che il pezzo deve essere scaricato
EgtSetInfo(nOtherRaw, "Unloaded", 1)
'Exit While
End If
End If
nOtherRaw = EgtGetNextRawPart(nOtherRaw)
End While
Return m_IsCurrPhaseUnloaded
End Function
' inserisce una pausa nella fase corrente
Private Function InsertPauseInCurrPhase() As Boolean
' verifico che ci sia almeno un elemto selezionato (dati di aggancio pezzo) ' verifico che ci sia almeno un elemto selezionato (dati di aggancio pezzo)
If m_RawMoveDataList.Count = 0 Then Return If m_RawMoveDataList.Count = 0 Then Return False
' verifico che sia stato inseito almeno uno spostamento, altrimenti lo rimuovo ' verifico che sia stato inseito almeno uno spostamento, altrimenti lo rimuovo
Dim Index As Integer = 0 Dim Index As Integer = 0
For Index = m_RawMoveDataList.Count - 1 To 0 Step -1 For Index = m_RawMoveDataList.Count - 1 To 0 Step -1
@@ -1019,8 +1216,9 @@ Public Class MoveRawPartPage
End If End If
Next Next
' verifico che la lista non sia vuota ' verifico che la lista non sia vuota
If m_RawMoveDataList.Count = 0 Then Return If m_RawMoveDataList.Count = 0 Then
Return False
End If
' recupero disposizione fase corrente ' recupero disposizione fase corrente
Dim nDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase) Dim nDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
' imposto la pausa nella disposizione corrente ' imposto la pausa nella disposizione corrente
@@ -1028,30 +1226,22 @@ Public Class MoveRawPartPage
' aggiungo al gruppo disposizione dei sottogruppi con i dati di movimento dei grezzi spostati ' aggiungo al gruppo disposizione dei sottogruppi con i dati di movimento dei grezzi spostati
SaveMoveInfoInDisposition(nDispId, m_RawMoveDataList) SaveMoveInfoInDisposition(nDispId, m_RawMoveDataList)
' imposto eventuale movimento pezzi su tavola ausiliaria ' imposto eventuale movimento pezzi su tavola ausiliaria
SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab) SaveMovePartsOnAuxTable(nDispId, m_IsCurrPhaseUnloaded)
' SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab)
'' Eseguo calcolo speciale dei movimenti: per tavola multicut '' Eseguo calcolo speciale dei movimenti: per tavola multicut
'SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab) 'SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab)
SaveRemoveByHandInDisposition(nDispId, False)
Return True
End Function
' crea una nuvoa fase/disposizione, la rende corrente, ricalcolo i grezzi e le lavorazioni della nuova fase
Private Function AddNewPhase() As Boolean
' Creo nuova fase ' Creo nuova fase
Dim nNewPhase As Integer = EgtAddPhase() Dim nNewPhase As Integer = EgtAddPhase()
' Carico i grezzi rimasti sulla tavola nella nuova fase
' Eseguo eventuali spezzature dei grezzi e vi sposto i pezzi (i grezzi devono essere sempre copiati per Registrazione con rotazione) ChangePhaseRawPart(nNewPhase)
Dim nRawId As Integer = EgtGetFirstRawPart() ' Sposto le lavorazioni rimaste nella nuova fase
While nRawId <> GDB_ID.NULL ChangeOperationPhase(nNewPhase)
' se il grezzo è presente nella fase precedente e non è quello selezionato allora procedo a creare una copia nella nuova fase
If EgtVerifyRawPartPhase(nRawId, nNewPhase - 1) Then
Dim bKeepRawPart As Boolean = True
For Each RawOnAuxTabData As RawMoveData In m_RawMoveDataList
If nRawId = RawOnAuxTabData.m_nId Then
bKeepRawPart = False
Exit For
End If
Next
If bKeepRawPart Then EgtKeepRawPart(nRawId, nNewPhase - 1)
End If
' passo al successivo grezzo
nRawId = EgtGetNextRawPart(nRawId)
End While
Dim nCurrDisposition As Integer = EgtGetPhaseDisposition(nNewPhase) Dim nCurrDisposition As Integer = EgtGetPhaseDisposition(nNewPhase)
'SetPause(nCurrDisposition) 'SetPause(nCurrDisposition)
@@ -1062,8 +1252,43 @@ Public Class MoveRawPartPage
SetAuxTabInCurrDisposition() SetAuxTabInCurrDisposition()
' ripulisco la lista degli spostamenti ' ripulisco la lista degli spostamenti
m_RawMoveDataList.Clear() m_RawMoveDataList.Clear()
m_IsCurrPhaseUnloaded = False
' aggiorno la fase corrente ' aggiorno la fase corrente
m_nCurrPhase = EgtGetCurrPhase() m_nCurrPhase = EgtGetCurrPhase()
Return True
End Function
' Copio i grezzi rimasti sulla tavola nella fase successiva
Private Sub ChangePhaseRawPart(ByVal nNewPhase As Integer)
' recupero l'elenco dei pezzi che sono stati scaricati sulla tavola
Dim LocalLstOfUnldPart As New List(Of Integer)
PartOnAuxTab(LocalLstOfUnldPart, nNewPhase - 1)
' Eseguo eventuali spezzature dei grezzi e vi sposto i pezzi (i grezzi devono essere sempre copiati per Registrazione con rotazione)
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
' se il grezzo è presente nella fase precedente e non è quello selezionato allora procedo a creare una copia nella nuova fase
If EgtVerifyRawPartPhase(nRawId, nNewPhase - 1) Then
Dim bKeepRawPart As Boolean = True
For Each RawOnAuxTabData As RawMoveData In m_RawMoveDataList
If nRawId = RawOnAuxTabData.m_nId Then
' se il pezzo è stato scaricato allora non deve essere riportato nella fase successiva
For Each UnloadPart As Integer In LocalLstOfUnldPart
If nRawId = UnloadPart Then
' salvo l'info che indica che il pezzo deve essere scaricato
EgtSetInfo(nRawId, "Unloaded", 1)
bKeepRawPart = False
Exit For
End If
Next
'bKeepRawPart = False
Exit For
End If
Next
If bKeepRawPart Then EgtKeepRawPart(nRawId, nNewPhase - 1)
End If
' passo al successivo grezzo
nRawId = EgtGetNextRawPart(nRawId)
End While
End Sub End Sub
Private Sub ResetBtn_Click(sender As Object, e As RoutedEventArgs) Handles ResetBtn.Click Private Sub ResetBtn_Click(sender As Object, e As RoutedEventArgs) Handles ResetBtn.Click
@@ -1079,6 +1304,8 @@ Public Class MoveRawPartPage
EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAngRaw) EgtRotateRawPart(nRawId, Vector3d.Z_AX(), dAngRaw)
AddRawMoveData(nRawId, vtMove, m_RawMoveDataList) AddRawMoveData(nRawId, vtMove, m_RawMoveDataList)
RemoveRawMoveData(nRawId, m_RawMoveDataList) RemoveRawMoveData(nRawId, m_RawMoveDataList)
' elimino l'info che indica che il pezzo è scaricato sulla tavola
EgtRemoveInfo(nRawId, "Unloaded")
' Disabilito pezzo e nascondo le ventose ' Disabilito pezzo e nascondo le ventose
EgtSetStatus(nRawId, GDB_ST.ON_) EgtSetStatus(nRawId, GDB_ST.ON_)
EgtSetStatus(GetVacuumId(), GDB_ST.OFF) EgtSetStatus(GetVacuumId(), GDB_ST.OFF)
@@ -1111,6 +1338,14 @@ Public Class MoveRawPartPage
m_nCurrPhase -= 1 m_nCurrPhase -= 1
m_bPrev = False m_bPrev = False
m_SplitPage.m_bShow = True m_SplitPage.m_bShow = True
m_SplitPage.m_bOnAuxTab = True
' imposto la visibilità della tavola ausiliaria
SetAuxTabInCurrDisposition()
' carico le info di disposizione dei pezzi
m_RawMoveDataList.Clear()
m_bRemovedRaw = GetRemoveByHandInDisposition(m_nCurrDisposition)
GetMoveInfoInDisposition(m_nCurrDisposition, m_RawMoveDataList)
RefreshVisibility()
EgtDraw() EgtDraw()
Return Return
End If End If
@@ -1141,18 +1376,53 @@ Public Class MoveRawPartPage
Return Return
End If End If
' se la disposizione corrente è sulla tavola ausiliaria allora lo sarà anche quella successiva ' ------- VISUALIZZAZIONE (navigazione tra le fasi) -------
If IsDispUnloadOnAuxTab(m_nCurrDisposition) <> 0 Then If m_SplitPage.m_bShow Then
EgtSetCurrPhase(m_nCurrPhase + 1) ' verifico se la fase successiva è uno scarico frontale
m_nCurrDisposition = EgtGetNextOperation(m_nCurrDisposition) If NextOperationIsUnloading(m_nCurrDisposition) Then
m_nCurrPhase += 1 ' imposto la nuova fase (che è stata modificata all'interno della funzione di controllo)
m_bToNext = False EgtSetCurrPhase(m_nCurrPhase)
m_SplitPage.m_bShow = True ' carico i dati di movimento dei pezzi nella fase corrente
m_RawMoveDataList.Clear()
m_bRemovedRaw = GetRemoveByHandInDisposition(m_nCurrDisposition)
GetMoveInfoInDisposition(m_nCurrDisposition, m_RawMoveDataList)
EgtDraw() EgtDraw()
EnableButtons() EnableButtons()
Return Return
ElseIf IsDispUnloadOnAuxTab(m_nCurrDisposition) <> 0 AndAlso Not NextOperationIsUnloading(m_nCurrDisposition) Then
' imposto la nuova fase, al termine della Sub verrà caricata la pagina Split nella fase indicata ora
m_bToNext = True
m_nCurrPhase += 1
EgtSetCurrPhase(m_nCurrPhase)
EgtDraw()
End If
End If End If
' ------- MODIFICA -------
If Not m_SplitPage.m_bShow Then
' se la tavola di scarico presente oppure ci sono pezzi sulla tavola di scarico
Dim LclLstOfUnldPart As New List(Of Integer)
If m_SplitPage.m_bOnAuxTab Or PartOnAuxTab(LclLstOfUnldPart, m_nCurrPhase) Then
' se ci sono pezzi sulla tavola di scarico prima di procedere inserisco una pausa e creo una nuoava fase
If m_IsCurrPhaseUnloaded AndAlso InsertPauseInCurrPhase() Then AddNewPhase()
' nascondo la tavola di scarico
EgtDisableModified()
EgtSetStatus(m_nAuxTabId, GDB_ST.OFF)
EgtEnableModified()
End If
m_bToNext = True
'' se la disposizione corrente è sulla tavola ausiliaria allora lo sarà anche quella successiva
'If IsDispUnloadOnAuxTab(m_nCurrDisposition) <> 0 Then
' EgtSetCurrPhase(m_nCurrPhase + 1)
' m_nCurrDisposition = EgtGetNextOperation(m_nCurrDisposition)
' m_nCurrPhase += 1
' m_bToNext = False
' m_SplitPage.m_bShow = True
' EgtDraw()
' EnableButtons()
' Return
'End If
End If
' resetto l'inidice del pezzo da mnovimentare ' resetto l'inidice del pezzo da mnovimentare
m_CurrRawOnVacuum = GDB_ID.NULL m_CurrRawOnVacuum = GDB_ID.NULL
' Deseleziono tutto ' Deseleziono tutto
@@ -1195,7 +1465,7 @@ Public Class MoveRawPartPage
' disabilito bottone ' disabilito bottone
ModifyBtn.IsEnabled = False ModifyBtn.IsEnabled = False
' gestione abilitazione altri bottoni ' gestione abilitazione altri bottoni
EnableButtons() EnableButtons(MachiningList.Count > 0)
End Sub End Sub
' verifica se la disposizione indicata è uno scarico sulla tavola ausiliaria ' verifica se la disposizione indicata è uno scarico sulla tavola ausiliaria
@@ -1206,6 +1476,20 @@ Public Class MoveRawPartPage
Return bVal Return bVal
End Function End Function
' restituisce e attiva la successiva disposizione se è uno scarico frontale
Public Function NextOperationIsUnloading(nCurrDispId As Integer) As Boolean
' recupero la primo operazione successiva
Dim nNextIdOperation As Integer = EgtGetNextOperation(nCurrDispId)
' a partire da questa cerco la prima disposizione disponibile
Dim nNextIdDips As Integer = GetNextDisposition(nNextIdOperation)
If nNextIdDips = nNextIdOperation And IsDispUnloadOnAuxTab(nNextIdOperation) Then
m_nCurrPhase += 1
m_nCurrDisposition = nNextIdOperation
Return True
End If
Return False
End Function
' recupero la prima disposizione disponibile tra l'elenco delle operazioni presenti ' recupero la prima disposizione disponibile tra l'elenco delle operazioni presenti
Public Function GetNextDisposition(nCurrDisposId As Integer) As Integer Public Function GetNextDisposition(nCurrDisposId As Integer) As Integer
Dim nDispId As Integer = nCurrDisposId Dim nDispId As Integer = nCurrDisposId
@@ -1218,7 +1502,7 @@ Public Class MoveRawPartPage
Return GDB_ID.NULL Return GDB_ID.NULL
End Function End Function
Private Sub EnableButtons() Private Sub EnableButtons(Optional bExistsMachining As Boolean = False)
UpBtn.IsEnabled = Not m_SplitPage.m_bShow UpBtn.IsEnabled = Not m_SplitPage.m_bShow
LeftBtn.IsEnabled = Not m_SplitPage.m_bShow LeftBtn.IsEnabled = Not m_SplitPage.m_bShow
RightBtn.IsEnabled = Not m_SplitPage.m_bShow RightBtn.IsEnabled = Not m_SplitPage.m_bShow
@@ -1234,19 +1518,39 @@ Public Class MoveRawPartPage
BottomRBtn.IsEnabled = Not m_SplitPage.m_bShow BottomRBtn.IsEnabled = Not m_SplitPage.m_bShow
PauseBtn.IsEnabled = Not m_SplitPage.m_bShow PauseBtn.IsEnabled = Not m_SplitPage.m_bShow
ResetBtn.IsEnabled = Not m_SplitPage.m_bShow ResetBtn.IsEnabled = Not m_SplitPage.m_bShow
UnloadPartsBtn.IsEnabled = Not m_SplitPage.m_bShow
If m_SplitPage.m_bShow Then If m_SplitPage.m_bShow Then
' se ultima fase (e non sacrico su tavola)
If m_nCurrPhase = EgtGetPhaseCount() And m_SplitPage.m_bOnAuxTab Then
NextBtn.IsEnabled = (m_nCurrPhase < EgtGetPhaseCount()) NextBtn.IsEnabled = (m_nCurrPhase < EgtGetPhaseCount())
Else Else
NextBtn.IsEnabled = (m_nCurrPhase <= EgtGetPhaseCount())
End If
Else
' Se esistono delle lavorazioni allora abilito il pulsante per procedere
If Not bExistsMachining Then
NextBtn.IsEnabled = Not m_SplitPage.m_bOnAuxTab NextBtn.IsEnabled = Not m_SplitPage.m_bOnAuxTab
Else
NextBtn.IsEnabled = True
End If
End If End If
End Sub End Sub
' esco dalla pagina di scarico
Private Sub MoveRawPartPage_Unloaded(sender As Object, e As EventArgs) Handles Me.Unloaded Private Sub MoveRawPartPage_Unloaded(sender As Object, e As EventArgs) Handles Me.Unloaded
' verifico che la fase corrente non sia vuota ' verifico che la fase corrente non sia vuota
Dim nLastDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase) Dim nLastDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
If EgtIsOperationEmpty(nLastDispId) And m_SplitPage.m_bOnAuxTab And m_RawMoveDataList.Count = 0 Then
EgtErase(nLastDispId) '' se sono in visualizzazione allora non elimino essuna operazione
End If 'If Not m_SplitPage.m_bShow Then
' If EgtIsOperationEmpty(nLastDispId) And Not m_SplitPage.m_bOnAuxTab And m_RawMoveDataList.Count = 0 Then
' EgtErase(nLastDispId)
' ElseIf EgtIsOperationEmpty(nLastDispId) And m_SplitPage.m_bOnAuxTab And m_RawMoveDataList.Count = 0 Then
' ' Dichiaro pagina non attiva
' m_bActive = False
' Return
' End If
'End If
' Se movimento con ventose ' Se movimento con ventose
If Not m_bByHand Then If Not m_bByHand Then
@@ -1262,8 +1566,9 @@ Public Class MoveRawPartPage
SaveMoveInfoInDisposition(nDispId, m_RawMoveDataList) SaveMoveInfoInDisposition(nDispId, m_RawMoveDataList)
' imposto eventuale presenza rimozioni manuali ' imposto eventuale presenza rimozioni manuali
SaveRemoveByHandInDisposition(nDispId, m_bRemovedRaw) SaveRemoveByHandInDisposition(nDispId, m_bRemovedRaw)
' imposto eventuale movimento pezzi su tavola ausiliaria ' imposto eventuale movimento pezzi su tavola ausiliaria (se è realmente avvenuto)
SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab) 'SaveMovePartsOnAuxTable(nDispId, m_SplitPage.m_bOnAuxTab)
SaveMovePartsOnAuxTable(nDispId, m_IsCurrPhaseUnloaded)
' Eseguo calcolo speciale dei movimenti ' Eseguo calcolo speciale dei movimenti
SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab) SpecialApplyDisposition(nDispId, True, Not m_SplitPage.m_bOnAuxTab)
End If End If
@@ -1279,13 +1584,18 @@ Public Class MoveRawPartPage
SpecialApplyDisposition(nDispId, True) SpecialApplyDisposition(nDispId, True)
End If End If
End If End If
' Nascondo eventuale tavola ausiliaria ' Nascondo eventuale tavola ausiliaria
If m_SplitPage.m_bOnAuxTab Then If m_SplitPage.m_bOnAuxTab Then
EgtDisableModified() EgtDisableModified()
EgtSetStatus(m_nAuxTabId, GDB_ST.OFF) EgtSetStatus(m_nAuxTabId, GDB_ST.OFF)
EgtEnableModified() EgtEnableModified()
EgtZoom(ZM.ALL, False) ' se sto uscendo dalla pagina delle spezzature
If Not m_bPrev Then If Not m_bPrev And Not m_bToNext Then
Dim nDispId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
' se sto uscendo dalla pagina split (senza passare dal comando next)
Dim lclLstUnlPart As New List(Of Integer)
SaveMovePartsOnAuxTable(nDispId, PartOnAuxTab(lclLstUnlPart, m_nCurrPhase))
' Cancello eventuale manipolatore pezzi ' Cancello eventuale manipolatore pezzi
EgtDisableModified() EgtDisableModified()
RemoveVacuumCups() RemoveVacuumCups()
@@ -1302,10 +1612,30 @@ Public Class MoveRawPartPage
m_bPrev = False m_bPrev = False
m_SplitPage.m_bShow = True m_SplitPage.m_bShow = True
End If End If
Dim Ph As Integer = EgtGetCurrPhase()
' aggiorno il disegno
EgtZoom(ZM.ALL, False)
' Dichiaro pagina non attiva ' Dichiaro pagina non attiva
m_bActive = False m_bActive = False
End Sub End Sub
' ----------------- TEST funzione per debug operazioni -----------------
Private Sub SaveMyFileTest(sFilename As String)
LoadCurrPhaseMachining()
' salvo il file corrente per poterlo studiare e capire cosa è successo nella rappresentazione dei grezzi
EgtSaveFile("C:\EgtData\OmagCUT\MyProjects\" & sFilename & ".nge", NGE.BIN)
End Sub
Private Sub LoadCurrPhaseMachining()
Dim m_MachiningList As New List(Of SplitMach)
'm_SplitPage.ShowMachiningList()
'm_SplitPage.SaveOrderMachinig(m_nCurrPhase)
' Preparo la lista delle lavorazioni
CalculateSplitMachList(m_nCurrPhase, m_MachiningList)
Dim b As Boolean = False
End Sub
End Class End Class
+30 -3
View File
@@ -100,7 +100,32 @@
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Button> </Button>
<UniformGrid Name ="UG0" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="3" > <!--Comandi attivi solo in madalità REG-->
<UniformGrid Name ="UG0_Reg" Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="3" Columns="3" Visibility="Hidden">
<ToggleButton Name="AddPointRegBtn" Visibility="Hidden"
Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource RefTabImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
<ToggleButton Name="ModPointRegBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Move-Spot-RegImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
<ToggleButton Name="RemovePointRegBtn" Visibility="Hidden"
Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource RefTabImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid>
<!--Comandi attivi solo in madalità REG-->
<UniformGrid Name ="UG1_Reg" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="2" Visibility="Hidden">
<Button Name="AdjustPointRegBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Muovi-grezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button>
<ToggleButton Name="ActivatePointRegBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource ON_OFF-REGImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid>
<UniformGrid Name ="UG0" Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="3">
<Button Name="InsertPartBtn" Style="{DynamicResource OmagCut_YellowIconButton}"> <Button Name="InsertPartBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Inserisci-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/> <Image Source="{DynamicResource Inserisci-pezzoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button> </Button>
@@ -124,13 +149,16 @@
</ToggleButton> </ToggleButton>
</UniformGrid> </UniformGrid>
<UniformGrid Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Columns="2" > <UniformGrid Name ="UG2" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Columns="3" >
<Button Name="SelectAllBtn" Style="{DynamicResource OmagCut_YellowIconButton}"> <Button Name="SelectAllBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Seleziona-tuttoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/> <Image Source="{DynamicResource Seleziona-tuttoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button> </Button>
<Button Name="DeselectAllBtn" Style="{DynamicResource OmagCut_YellowIconButton}"> <Button Name="DeselectAllBtn" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource Deseleziona-tuttoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/> <Image Source="{DynamicResource Deseleziona-tuttoImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button> </Button>
<ToggleButton Name="ParkIndBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Name="ParkIndImg" Source="{DynamicResource ParkingImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</ToggleButton>
</UniformGrid> </UniformGrid>
</Grid> </Grid>
@@ -146,7 +174,6 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
</Grid> </Grid>
</Grid> </Grid>
</UserControl> </UserControl>
File diff suppressed because it is too large Load Diff
+97
View File
@@ -0,0 +1,97 @@
<UserControl x:Class="SelParkIndWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="0.1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.0*"/>
<RowDefinition Height="0.1*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="0.1*"/>
<RowDefinition Height="0.0*"/>
</Grid.RowDefinitions>
<TextBlock Name="FilePathTxBl" Grid.Column="1" Grid.Row="1" Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"
Visibility="Collapsed"/>
<!--TextAlignment="Center"
FontSize="20"
VerticalAlignment="Center"-->
<ListBox Name="ParkIndListBox" Grid.Column="1" Grid.Row="2"
ItemsSource="{Binding ItemList}" ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" >
<UniformGrid Columns="2" Visibility="{Binding TitleVisibility}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImgTab}" Height="20" Stretch="Uniform"/>
<TextBlock Text="{Binding CountInTab}" Height="20" Width="30">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_ListBoxTextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsStatusON}" Value="False">
<Setter Property="FontStyle" Value="Oblique"/>
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsStatusON}" Value="True">
<Setter Property="Foreground" Value="black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImgPark}" Height="20" Stretch="Uniform"/>
<TextBlock Text="{Binding CountInPark}" Height="20" Width="30">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_ListBoxTextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsStatusON}" Value="False">
<Setter Property="FontStyle" Value="Oblique"/>
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsStatusON}" Value="True">
<Setter Property="Foreground" Value="black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</UniformGrid>
<Image Source="{Binding Img}" Width="120" Stretch="Uniform" Visibility="{Binding MyVisibilityImg}"/>
<Viewbox Name="ViewBoxPark" Visibility="{Binding MyVisibilitySvg}">
<ContentPresenter Content="{Binding LocalMyCanvas.CurrCanvas}"/>
</Viewbox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Column="1" Grid.Row="4" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Column="1" Style="{DynamicResource OmagCut_GradientBlueIconButton}" >
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</UserControl>
+920
View File
@@ -0,0 +1,920 @@
Imports System.ComponentModel
Imports System.Globalization
Imports System.Windows.Ink
Imports System.Xml
Imports EgtUILib
Imports OmagCUT.NestPageUC
Public Class SelParkIndWD
Private Shared m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_nCtx As Integer = -1
Public Const nIndAllOff As Integer = 999
Public Shared sActualProj As String = String.Empty
Private m_ParkIndList As New List(Of ParkInd)
Public Property ParkIndList As List(Of ParkInd)
Get
Return m_ParkIndList
End Get
Set(value As List(Of ParkInd))
m_ParkIndList = value
End Set
End Property
Sub New(Owner As Window, Optional nCtx As Integer = -1)
'Me.Owner = Owner
InitializeComponent()
If nCtx > -1 Then m_nCtx = nCtx
End Sub
Public Sub Me_Laoded() Handles Me.Loaded
' Aggiorno la lista
UpdateList()
' Imposto la selezione del primo parcheggio disponibile
UpdateDefaultSelection()
End Sub
Public Sub UpdateList()
' Carico lista dei pezzi
LoadParkInd(m_ParkIndList, m_nCtx)
ParkIndListBox.ItemsSource = m_ParkIndList
UpdateDefaultSelection()
' Forzo l'aggiornamento della grafica
ParkIndListBox.Items.Refresh()
End Sub
Public Sub UpdateDefaultSelection()
' Procedo a selezionare il primo (E FORSE ANCHE L'UNICO?) parcheggio attivo
Dim bFound As Boolean = False
For Each ItemPark As ParkInd In m_ParkIndList
If ItemPark.IsStatusON Then
ParkIndListBox.SelectedItem = ItemPark
bFound = True
Exit For
End If
Next
If Not bFound And m_ParkIndList.Count > 0 Then
m_ParkIndList(0).Status = GDB_ST.ON_
ParkIndListBox.SelectedItem = m_ParkIndList(0)
End If
'' Provedo a spegnere tutti gli altri parcheggi
'For Each ItemParkInd As ParkInd In m_ParkIndList
' If ParkIndListBox.SelectedItem.Ind <> ItemParkInd.Ind Then
' ItemParkInd.Status = GDB_ST.OFF
' SetStatusPartInParkInd(ItemParkInd)
' End If
'Next
End Sub
Private Sub ParkIndListBox_SelectionChanged() Handles ParkIndListBox.MouseLeftButtonUp
' Non so se il click sta accendeno o spegnendo quinid faccio una verifica dello stato attuale del parcheggio
Dim localParkInd As ParkInd = ParkIndListBox.SelectedItem
' Se l'elemento selezionato è attivo allora esco (perchè altrimenti lo spegnerei)
If localParkInd.IsStatusON Then Return
Dim bFound As Boolean = False
If localParkInd.Ind = nIndAllOff Then
localParkInd.Status = GDB_ST.ON_
bFound = True
End If
Dim nPartId As Integer = EgtGetFirstPart()
' Cerco il primo pezzo del parcheggio indicato
While nPartId <> GDB_ID.NULL And Not bFound
Dim sInfoParkInd As String = String.Empty
' Se i pezzi non hanno un indice di parcheggio di default vale "0"
If Not EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then sInfoParkInd = "0"
If localParkInd.Ind.ToString = sInfoParkInd Then
' Determino lo stato da assegnare al parcheggio (prendo il primo pezzo del parcheggio come riferimento)
Dim OppositStat As Integer = If(localParkInd.Status = GDB_ST.ON_, GDB_ST.OFF, GDB_ST.ON_)
localParkInd.Status = OppositStat
bFound = True
' termino la ricerca
Exit While
End If
nPartId = EgtGetNextPart(nPartId)
End While
' Assegno lo stato del parcheggio a tutti i pezzi i parcheggio
If bFound Then
SetStatusPartInParkInd(localParkInd, True, m_nCtx)
Else
' Significa che i pezzi sono tutti in macchina: quindi i pezzi sono (SICURAMENTE?) accesi
Dim OppositStat As Integer = If(localParkInd.Status = GDB_ST.ON_, GDB_ST.OFF, GDB_ST.ON_)
localParkInd.Status = OppositStat
SetStatusPartInParkInd(localParkInd, True, m_nCtx)
End If
' Se accendo un parcheggio procedo a spegnere tutto gli atri
If localParkInd.Status = GDB_ST.ON_ Then
For Each ItemParkInd As ParkInd In m_ParkIndList
If localParkInd.Ind <> ItemParkInd.Ind Then
ItemParkInd.Status = GDB_ST.OFF
SetStatusPartInParkInd(ItemParkInd, True, m_nCtx)
End If
Next
End If
EgtZoom(ZM.ALL)
End Sub
#Region "METODI SHARED per gestione della lista parcheggi"
' Restituisce il primo indice di parcheggio libero
Public Shared Function NewParkInd(Optional nCtx As Integer = -1) As Integer
' recupero il contesto corrente
Dim CurrCtx As Integer = EgtGetCurrentContext()
' recupero il contesto del progetto
Dim ProjCtx As Integer = m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()
If nCtx > -1 Then ProjCtx = nCtx
EgtSetCurrentContext(ProjCtx)
Dim LastParkInd As Integer = 0
Dim nRawId As Integer = GetCurrentRaw()
' Leggo l'indice di parcheggio dei pezzi in tavola
Dim nPartId As Integer = EgtGetFirstGroupInGroup(nRawId)
While nPartId <> GDB_ID.NULL
' Se i pezzi non hanno un indice di parcheggio
Dim sInfoParkInd As String = String.Empty
If EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then
If IsNumeric(sInfoParkInd) Then
Dim nInfoParkIndn As Integer = CInt(sInfoParkInd)
LastParkInd = Math.Max(LastParkInd, nInfoParkIndn)
End If
End If
nPartId = EgtGetNextGroup(nPartId)
End While
' Leggo l'indice di parcheggio dei pezzi in parcheggio
nPartId = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
' Se i pezzi non hanno un indice di parcheggio (COPIA della funzione sopra)
Dim sInfoParkInd As String = String.Empty
If EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then
If IsNumeric(sInfoParkInd) Then
Dim nInfoParkIndn As Integer = CInt(sInfoParkInd)
LastParkInd = Math.Max(LastParkInd, nInfoParkIndn)
End If
End If
nPartId = EgtGetNextPart(nPartId)
End While
' Ripristino il contesto corrente
EgtSetCurrentContext(CurrCtx)
Return LastParkInd + 1
End Function
' Gestisce lo stato dei pezzi associati al parcheggio indicato
Public Shared Sub SetStatusPartInParkInd(localParkInd As ParkInd, Optional bDraw As Boolean = True, Optional nCtx As Integer = -1)
If IsNothing(localParkInd) Then Return
' recupero il contesto corrente
Dim CurrCtx As Integer = EgtGetCurrentContext()
' recupero il contesto del progetto
Dim ProjCtx As Integer = m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()
If nCtx > -1 Then ProjCtx = nCtx
EgtSetCurrentContext(ProjCtx)
Dim nRawId As Integer = GetCurrentRaw()
' Pezzi in tavola
Dim nPartId As Integer = EgtGetFirstGroupInGroup(nRawId)
While nPartId <> GDB_ID.NULL
Dim sInfoParkInd As String = String.Empty
If Not EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then sInfoParkInd = "0"
If localParkInd.Ind.ToString = sInfoParkInd Then
' Salvo lo stato del parcheggio (per gestire la navigazione) ANCHE SE I PEZZI SONO ACCESI
EgtSetInfo(nPartId, INFO_PARKSTATUS, localParkInd.Status)
End If
nPartId = EgtGetNextGroup(nPartId)
End While
' Pezzi in parcheggio
nPartId = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim sInfoParkInd As String = String.Empty
If Not EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then sInfoParkInd = "0"
If localParkInd.Ind.ToString = sInfoParkInd Then
' Setto lo stato
EgtSetStatus(nPartId, localParkInd.Status)
' Salvo lo stato (per gestire la navigazione)
EgtSetInfo(nPartId, INFO_PARKSTATUS, localParkInd.Status)
End If
nPartId = EgtGetNextPart(nPartId)
End While
If bDraw Then EgtDraw()
' Ripristino il contesto corrente
EgtSetCurrentContext(CurrCtx)
End Sub
' Restituuisce la lista dei parcheggi del progetto corrente
Public Shared Sub LoadParkInd(P_List As List(Of ParkInd), Optional nCtx As Integer = -1)
If IsNothing(P_List) Then Return
P_List.Clear()
P_List.Add(New ParkInd(nIndAllOff, "All off", 0))
' recupero il contesto corrente
Dim CurrCtx As Integer = EgtGetCurrentContext()
' recupero il contesto del progetto
Dim ProjCtx As Integer = m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()
If nCtx > -1 Then ProjCtx = nCtx
EgtSetCurrentContext(ProjCtx)
Dim nRawId As Integer = GetCurrentRaw()
' Pezzi in tavola
Dim nPartId As Integer = EgtGetFirstGroupInGroup(nRawId)
While nPartId <> GDB_ID.NULL
Dim sInfoParkInd As String = String.Empty
Dim nInfoParkInd As Integer = -1
' Recupero l'indice del parcheggio
If EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then
nInfoParkInd = If(IsNumeric(sInfoParkInd), CInt(sInfoParkInd), -1)
Else
nInfoParkInd = 0
End If
' Se l'indice di parcheggio restituito è valido (Maggiore di -1)
If nInfoParkInd > -1 Then
' Verifico se nella lista dei parcheggi è già presente l'indice indicato
Dim localParkInd As ParkInd = P_List.Find(Function(x) x.Ind = nInfoParkInd)
' Se non trovo nessun parcheggio con questo indice allora lo aggiungo
If IsNothing(localParkInd) Then
Dim nStatus As Integer
If Not EgtGetInfo(nPartId, INFO_PARKSTATUS, nStatus) Then nStatus = GDB_ST.ON_
' EgtGetStatus(nPartId, nStatus)
P_List.Add(New ParkInd(nInfoParkInd, "Park_" & nInfoParkInd.ToString, nStatus))
End If
End If
nPartId = EgtGetNextGroup(nPartId)
End While
' Pezzi in parcheggio
nPartId = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim sInfoParkInd As String = String.Empty
Dim nInfoParkInd As Integer = -1
' Recupero l'indice del parcheggio
If EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then
nInfoParkInd = If(IsNumeric(sInfoParkInd), CInt(sInfoParkInd), -1)
Else
nInfoParkInd = 0
End If
' Se l'indice di parcheggio restituito è valido (Maggiore di -1)
If nInfoParkInd > -1 Then
' Verifico se nella lista dei parcheggi è già presente l'indice indicato
Dim localParkInd As ParkInd = P_List.Find(Function(x) x.Ind = nInfoParkInd)
' Se non trovo nessun parcheggio con questo indice allora lo aggiungo
If IsNothing(localParkInd) Then
Dim nStatus As Integer
If Not EgtGetInfo(nPartId, INFO_PARKSTATUS, nStatus) Then nStatus = GDB_ST.ON_
' EgtGetStatus(nPartId, nStatus)
P_List.Add(New ParkInd(nInfoParkInd, "Park_" & nInfoParkInd.ToString, nStatus))
End If
End If
nPartId = EgtGetNextPart(nPartId)
End While
EgtSetCurrentContext(CurrCtx)
End Sub
' Aggiorna la lista dei parcheggi, se "bDraw=true" aggiorno la scena
Public Shared Sub UpdateViewOnParkInd(Optional bDraw As Boolean = True)
' Ricarico la lista dei parcheggi
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd)
' Aggiorna la vista dei parcheggi
For Each Item As ParkInd In ListParkInd
SelParkIndWD.SetStatusPartInParkInd(Item, bDraw)
Next
End Sub
' Restituisce il primo parcheggio attivo (
Public Shared Function GetCurrentParkIndSelected() As ParkInd
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd)
' Procedo a selezionare il primo (E ANCHE UNICO?..a volte no..) parcheggio attivo -> guarda funzione UpdateList <-
For Each ItemPark As ParkInd In ListParkInd
If ItemPark.IsStatusON Then
Return ItemPark
End If
Next
Return Nothing
End Function
' Restitusice il nome del file immagine del parcheggio (manance solo dell'Indice di parcheggio e dell'esetensione png)
Public Shared Function GetPathCurrProj() As String
Dim nProj As Integer = m_MainWindow.m_CurrentProjectPageUC.GetCurrentProject()
Dim sParkPath As String = m_MainWindow.GetSaveDir() & "\" & Math.Abs(nProj).ToString("D4") & "_ParkInd_"
If Not String.IsNullOrEmpty(sActualProj) Then
Dim sDir As String = System.IO.Path.GetDirectoryName(sActualProj)
Dim sFile As String = System.IO.Path.GetFileNameWithoutExtension(sActualProj)
sParkPath = sDir & "\" & sFile & "_ParkInd_"
End If
Return sParkPath
End Function
Public Shared Sub CopyImgSvg(sNewFileName As String, Optional nCtx As Integer = -1)
If sNewFileName.EndsWith(".nge") Then
sNewFileName = sNewFileName.Remove(sNewFileName.Length - 4, 4) & "_ParkInd_"
End If
Dim Extension As String = ".svg"
If Not MainWindow.m_bShowSVGParkInd Then Extension = ".png"
Dim ListParkInd As New List(Of ParkInd)
' ricarico la lista
SelParkIndWD.LoadParkInd(ListParkInd, nCtx)
'SelParkIndWD.sActualProj = Path.GetFileNameWithoutExtension(sPath)
For Each ItemParkInd As ParkInd In ListParkInd
If ItemParkInd.Ind <> 0 And ItemParkInd.Ind <> 999 And ItemParkInd.nPartInPark > 0 Then
Try
Dim sNewFile As String = sNewFileName & ItemParkInd.Ind.ToString & Extension
If MainWindow.m_bShowSVGParkInd Then
WriteMyXML(sNewFile, ItemParkInd.LocalMyCanvas)
Else
If System.IO.File.Exists(sNewFile) Then
System.IO.File.Delete(sNewFile)
End If
System.IO.File.Copy(If(Extension = ".svg", ItemParkInd.Svg, ItemParkInd.Img), sNewFile)
End If
Catch ex As Exception
EgtOutLog("Copia immagine " & If(Extension = ".svg", ItemParkInd.Svg, ItemParkInd.Img) & " di ParkInd non roiscita")
End Try
End If
Next
End Sub
#End Region ' Metodi Shared
End Class
Public Class ParkInd
Implements INotifyPropertyChanged
Private m_VisbilityAllOff As Visibility = Visibility.Hidden
Private m_Ind As Integer
Public Property Ind As Integer
Get
Return m_Ind
End Get
Set(value As Integer)
m_Ind = value
End Set
End Property
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_Img As String = String.Empty
Public Property Img As String
Get
Return m_Img
End Get
Set(value As String)
m_Img = value
NotifyPropertyChanged("MyVisibilityImg")
End Set
End Property
Private m_Svg As String = String.Empty
Public Property Svg As String
Get
Return m_Svg
End Get
Set(value As String)
m_Svg = value
NotifyPropertyChanged("MyVisibilitySvg")
End Set
End Property
Private m_nPartInTable As Integer = 0
Public Property nPartInTable As Integer
Get
Return m_nPartInTable
End Get
Set(value As Integer)
m_nPartInTable = value
NotifyPropertyChanged(NameOf(nPartInTable))
End Set
End Property
Private m_nPartInPark As Integer = GDB_ST.ON_
Public Property nPartInPark As Integer
Get
Return m_nPartInPark
End Get
Set(value As Integer)
m_nPartInPark = value
NotifyPropertyChanged(NameOf(nPartInPark))
End Set
End Property
Public ReadOnly Property CountInTab As String
Get
Return m_nPartInTable.ToString
End Get
End Property
Public ReadOnly Property ImgTab As String
Get
Return DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\table.png"
End Get
End Property
Public ReadOnly Property CountInPark As String
Get
Return m_nPartInPark.ToString
End Get
End Property
Public ReadOnly Property ImgPark As String
Get
Return DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\Park.png"
End Get
End Property
Private m_Status As Integer
Public Property Status As Integer
Get
Return m_Status
End Get
Set(value As Integer)
m_Status = value
NotifyPropertyChanged(NameOf(IsStatusON))
End Set
End Property
Public ReadOnly Property IsStatusON As Boolean
Get
Return (m_Status = GDB_ST.ON_)
End Get
End Property
Public ReadOnly Property MyVisibilityTmg As Visibility
Get
Return If(Not System.IO.File.Exists(m_Img), Visibility.Collapsed, Visibility.Visible)
End Get
End Property
Public ReadOnly Property MyVisibilitySvg As Visibility
Get
Return If(Not System.IO.File.Exists(m_Svg), Visibility.Collapsed, Visibility.Visible)
End Get
End Property
Public ReadOnly Property TitleVisibility As Visibility
Get
Return If(m_Ind = 999, m_VisbilityAllOff, Visibility.Visible)
End Get
End Property
Private m_LocalMyCanvas As MyCanvas
Public ReadOnly Property LocalMyCanvas As MyCanvas
Get
Return m_LocalMyCanvas
End Get
End Property
Sub New(Ind As Integer, Name As String, Stat As Integer)
m_Ind = Ind
m_Name = Name
m_Status = Stat
' Costruisco il percorso immagine
If m_Ind = 0 Then
' Se Ind=0 allora applico il default: C:\EgtData\OmagCUT\Resources\MachineButtonsImage\NewIcons
m_Img = DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\Park_On.png"
m_Svg = DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\Park_On.svg"
ElseIf m_Ind = 999 Then
' Se Ind=0 allora applico il default: C:\EgtData\OmagCUT\Resources\MachineButtonsImage\NewIcons
m_Img = DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\Park_Off.png"
m_Svg = DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\NewIcons\Park_Off.svg"
Else
m_Img = SelParkIndWD.GetPathCurrProj() & m_Ind.ToString & ".png"
m_Svg = SelParkIndWD.GetPathCurrProj() & m_Ind.ToString & ".svg"
End If
If MainWindow.m_bShowSVGParkInd Then
Dim CanvWidth As Integer = 145
Dim CanvHeight As Integer = CInt(CanvWidth / 1.4)
m_LocalMyCanvas = New MyCanvas(CanvWidth, CanvHeight)
If System.IO.File.Exists(m_Svg) Then
ReadMyXML(m_Svg, m_LocalMyCanvas)
m_Img = ""
End If
Else
m_Svg = ""
End If
' Conto il numero di pezzi in Tavola
CountPartInTable()
' Conto il numero di pezzi in parcheggio
CountPartInPark()
End Sub
' Conta in numero di pezzi di questo parcheggio in Tavola
Private Sub CountPartInTable()
Dim nCount As Integer = 0
Dim nRawId As Integer = GetCurrentRaw()
' Leggo l'indice di parcheggio dei pezzi in tavola
Dim nPartId As Integer = EgtGetFirstGroupInGroup(nRawId)
While nPartId <> GDB_ID.NULL
' Aggiorno il valore del contatore
If IncreaseCounterPart(nPartId, nCount) Then
UpdateEntInCanvas(nPartId, 0.2)
End If
nPartId = EgtGetNextGroup(nPartId)
End While
m_nPartInTable = nCount
End Sub
' Conta il numero di pezzi di questo parcheggio in Parcheggio
Private Sub CountPartInPark()
Dim nCount As Integer = 0
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
' Aggiorno il valore del contatore
If IncreaseCounterPart(nPartId, nCount) Then
UpdateEntInCanvas(nPartId, 1)
End If
nPartId = EgtGetNextPart(nPartId)
End While
m_nPartInPark = nCount
End Sub
Private Sub UpdateEntInCanvas(nPartId, dOpacity)
If Not IsNothing(m_LocalMyCanvas) Then
' modifico il colore del pezzo nel SVG
Dim nIdRegion As Integer = EgtGetFirstNameInGroup(nPartId, "Region")
If nIdRegion <> GDB_ID.NULL Then
Dim nIdEnt As Integer = EgtGetFirstInGroup(nIdRegion)
While nIdEnt <> GDB_ID.NULL
If EgtGetType(nIdEnt) = GDB_TY.SRF_FRGN Then
Exit While
End If
End While
If nIdEnt <> GDB_ID.NULL Then
Dim sName As String = ""
EgtGetName(nIdEnt, sName)
Dim Idpath As MyPath = m_LocalMyCanvas.ListPath.Find(Function(x) x.id = sName)
If Not IsNothing(Idpath) Then
Idpath.fill_opacity = dOpacity
m_LocalMyCanvas.UpdateMyPath(Idpath)
Idpath.LoadPath()
NotifyPropertyChanged(NameOf(LocalMyCanvas))
End If
End If
End If
End If
End Sub
' Verifica se il pezzo passato (da parcheggio o tavola) appartiene al ParkInd corrente e quindi aggiorna il valore di nCount+=1
Private Function IncreaseCounterPart(nPartId As Integer, ByRef nCount As Integer) As Boolean
Dim bOk As Boolean = False
' Se i pezzi non hanno un indice di parcheggio
Dim sInfoParkInd As String = String.Empty
Dim nInfoParkInd As Integer = -1
' Recupero l'indice del parcheggio
If EgtGetInfo(nPartId, INFO_PARKIND, sInfoParkInd) Then
nInfoParkInd = If(IsNumeric(sInfoParkInd), CInt(sInfoParkInd), -1)
Else
nInfoParkInd = 0
End If
' Se l'indice di parcheggio restituito è valido (Maggiore di -1)
If nInfoParkInd > -1 Then
' e uguale a quallo del parcheggio correntemente selezionato
If nInfoParkInd = m_Ind Then
nCount = nCount + 1
bOk = True
End If
End If
Return bOk
End Function
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
#Region "ELEMENTI PER LA GESTIONE SVG"
Public Class MyCanvas
Private m_CurrCanvas As New Canvas
Public Property CurrCanvas As Canvas
Get
Return m_CurrCanvas
End Get
Set(value As Canvas)
m_CurrCanvas = value
End Set
End Property
Private m_ListPath As New List(Of MyPath)
Public Property ListPath As List(Of MyPath)
Get
Return m_ListPath
End Get
Set(value As List(Of MyPath))
m_ListPath = value
End Set
End Property
Private m_ViewBoxDim As String
Public Property ViewBoxDim As String
Get
Return m_ViewBoxDim
End Get
Set(value As String)
m_ViewBoxDim = value
End Set
End Property
Sub New(Width As Integer, Height As Integer)
m_CurrCanvas.Width = Width
m_CurrCanvas.Height = Height
m_CurrCanvas.ClipToBounds = True
End Sub
Public Sub LoadCanvas()
For Each ItemPath As MyPath In m_ListPath
m_CurrCanvas.Children.Add(ItemPath.CurrPath)
Next
End Sub
Public Sub UpdateMyPath(CurrPath As MyPath)
m_CurrCanvas.Children.Remove(CurrPath.CurrPath)
m_CurrCanvas.Children.Add(CurrPath.CurrPath)
End Sub
End Class
Public Class MyPath
Private m_CurrPath As New System.Windows.Shapes.Path
Public Property CurrPath As System.Windows.Shapes.Path
Get
Return m_CurrPath
End Get
Set(value As System.Windows.Shapes.Path)
m_CurrPath = value
End Set
End Property
Private m_CanvX As Double
Public ReadOnly Property CanvX As Double
Get
Return m_CanvX
End Get
End Property
Private m_CanvY As Double
Public ReadOnly Property CanvY As Double
Get
Return m_CanvY
End Get
End Property
Private m_DimX As Double
Public ReadOnly Property DimX As Double
Get
Return m_DimX
End Get
End Property
Private m_DimY As Double
Public ReadOnly Property DimY As Double
Get
Return m_DimY
End Get
End Property
Private m_id As String
Public ReadOnly Property id As String
Get
Return m_id
End Get
End Property
Private m_d As String
Public ReadOnly Property d As String
Get
Return m_d
End Get
End Property
Private m_fill As String
Public Property fill As String
Get
Return m_fill
End Get
Set(value As String)
m_fill = value
End Set
End Property
Private m_fill_opacity As Double
Public Property fill_opacity As Double
Get
Return m_fill_opacity
End Get
Set(value As Double)
m_fill_opacity = value
End Set
End Property
Private m_stroke As String
Public Property stroke As String
Get
Return m_stroke
End Get
Set(value As String)
m_stroke = value
End Set
End Property
Private m_stroke_opacity As Double
Public Property stroke_opacity As Double
Get
Return m_stroke_opacity
End Get
Set(value As Double)
m_stroke_opacity = value
End Set
End Property
Private m_stroke_width As Double
Public Property stroke_width As Double
Get
Return m_stroke_width
End Get
Set(value As Double)
m_stroke_width = value
End Set
End Property
Sub New(Id As String, D As String, CanvX As Double, CanvY As Double, DimX As Double, DimY As Double, Fill As String, FillOpacity As Double, Stroke As String, StrokeOpacity As Double)
m_id = Id
m_d = D
m_CanvX = CanvX
m_CanvY = CanvY
m_DimX = DimX
m_DimY = DimY
m_fill = Fill
m_fill_opacity = FillOpacity
m_stroke = Stroke
m_stroke_opacity = StrokeOpacity
LoadPath()
End Sub
Public Sub LoadPath()
' Carico la geometria
m_CurrPath.Data = Geometry.Parse(d)
' Carico il colore di sfondo
SetBrushFromRGBString(m_fill, m_CurrPath.Fill)
' Applico l'opacità della superificie
m_CurrPath.Opacity = m_fill_opacity
' Calcolo e applico la traslazione e la scalatura
Dim myTransformGroup As New TransformGroup()
Dim ScaleX As Double = m_CanvX / DimX
Dim ScaleY As Double = m_CanvY / DimY
Dim OffX As Double = (m_CanvX - Math.Min(ScaleX, ScaleY) * DimX) / 2
Dim OffY As Double = (m_CanvY - Math.Min(ScaleX, ScaleY) * DimY) / 2
myTransformGroup.Children.Add(New ScaleTransform(Math.Min(ScaleX, ScaleY), Math.Min(ScaleX, ScaleY)))
myTransformGroup.Children.Add(New TranslateTransform(OffX, OffY))
m_CurrPath.RenderTransform = myTransformGroup
End Sub
Private Sub SetBrushFromRGBString(sFill As String, ByRef brFill As Brush)
If String.IsNullOrEmpty(sFill) Then
brFill = Brushes.DarkRed
Return
End If
Dim s1 As String = sFill
If s1.Contains("rgb") Then
s1 = s1.Replace("rgb(", "")
s1 = s1.Replace(")", "")
Dim s2 As String = ""
For Each s As String In s1.Split(",")
s2 &= CInt(s).ToString("x2")
Next
brFill = New BrushConverter().ConvertFrom("#" & s2)
End If
End Sub
End Class
Public Module XMLReader
Public Sub ReadMyXML(FilePath As String, Canv As MyCanvas)
'Create the XML Reader
Dim m_xmlr As XmlTextReader = New XmlTextReader(FilePath)
'Disable whitespace so that you don't have to read over whitespaces
m_xmlr.WhitespaceHandling = WhitespaceHandling.None
' Leggo la prima riga: '?xml' tag
m_xmlr.Read()
' Passo a leggere la successiva: 'svg' tag
m_xmlr.Read()
' Leggo gli attributi di questo tag (dimensioni)
Dim ViewBoxDim = m_xmlr.GetAttribute("viewBox")
Canv.ViewBoxDim = ViewBoxDim
' Elaboro i dati per avere la scalatura del disegno
Dim DimViewBox As String() = ViewBoxDim.ToString.Split(" ")
Dim DimX As Integer = Math.Abs(CInt(DimViewBox(2))) + Math.Abs(CInt(DimViewBox(0)))
Dim DimY As Integer = Math.Abs(CInt(DimViewBox(3))) + Math.Abs(CInt(DimViewBox(1)))
' Leggo in loop i tag: 'path'
While Not m_xmlr.EOF
m_xmlr.Read()
If Not m_xmlr.IsStartElement() Then
Continue While
End If
' recupero il valore dell'attributo 'id'
Dim idAttribute = m_xmlr.GetAttribute("id")
' recupero il valore dell'attributo 'd'
Dim dAttribute = m_xmlr.GetAttribute("d")
' recupero il valore dell'attributo 'fill'
Dim fillAttribute = m_xmlr.GetAttribute("fill")
' recupero il valore dell'attributo 'fill-opacity'
Dim fillOpacityAttribute = m_xmlr.GetAttribute("fill-opacity")
' recupero il valore dell'attributo 'stroke'
Dim strokeAttribute = m_xmlr.GetAttribute("stroke")
' recupero il valore dell'attributo 'stroke-opacity'
Dim strokeOpacityAttribute = m_xmlr.GetAttribute("stroke-opacity")
' recupero il valore dell'attributo 'stroke - Width'
Dim strokeWidthAttribute = m_xmlr.GetAttribute("stroke-width")
' carico l'elemento in lista solo se esiste un'immagine
If Not String.IsNullOrEmpty(idAttribute) And Not String.IsNullOrEmpty(dAttribute) Then
Dim fillOpacity As Double = 1 ' CDbl(fillOpacityAttribute)
StringToDouble(fillOpacityAttribute, fillOpacity)
Dim strokeOpacity As Double = 1 ' CDbl(strokeOpacityAttribute)
StringToDouble(strokeOpacityAttribute, strokeOpacity)
Canv.ListPath.Add(New MyPath(idAttribute, dAttribute, Canv.CurrCanvas.Width, Canv.CurrCanvas.Height, DimX, DimY, fillAttribute, fillOpacity, strokeAttribute, strokeOpacity))
End If
End While
' Libero il file dalla lettura
m_xmlr.Close()
' popolo la canvas con le Ptah che ho caricato
Canv.LoadCanvas()
End Sub
Public Sub WriteMyXML(FilePath As String, Canv As MyCanvas)
Dim _namespaceDefault As String = "http://www.w3.org/2000/svg"
Dim doc As New Xml.XmlDocument
Dim elm As System.Xml.XmlNode
Dim elmSub As System.Xml.XmlNode
Dim elmMain As Xml.XmlNode
doc = New Xml.XmlDocument
elmMain = doc.CreateElement("svg")
elmSub = elmMain.Attributes.Append(doc.CreateAttribute("viewBox"))
elmSub.Value = Canv.ViewBoxDim
elmSub = elmMain.Attributes.Append(doc.CreateAttribute("xmlns"))
elmSub.Value = _namespaceDefault
For Each itemPath As MyPath In Canv.ListPath
elm = elmMain.AppendChild(doc.CreateElement("path"))
elmSub = elm.Attributes.Append(doc.CreateAttribute("id"))
elmSub.Value = itemPath.id
elmSub = elm.Attributes.Append(doc.CreateAttribute("d"))
elmSub.Value = itemPath.d
If Not String.IsNullOrEmpty(itemPath.fill) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("fill"))
elmSub.Value = itemPath.fill
End If
If Not String.IsNullOrEmpty(itemPath.fill_opacity) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("fill-opacity"))
elmSub.Value = itemPath.fill_opacity.ToString(CultureInfo.InvariantCulture)
End If
If Not String.IsNullOrEmpty(itemPath.stroke) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke"))
elmSub.Value = itemPath.stroke
End If
If Not String.IsNullOrEmpty(itemPath.stroke_opacity) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke-opacity"))
elmSub.Value = itemPath.stroke_opacity.ToString(CultureInfo.InvariantCulture)
End If
If Not String.IsNullOrEmpty(itemPath.stroke_width) Then
elmSub = elm.Attributes.Append(doc.CreateAttribute("stroke-width"))
elmSub.Value = itemPath.stroke_width.ToString(CultureInfo.InvariantCulture)
End If
Next
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "UTF-8", ""))
doc.AppendChild(elmMain)
doc.Save(FilePath)
End Sub
End Module
#End Region ' Elementi per la gestione SVG
+292 -29
View File
@@ -36,6 +36,8 @@ Public Module SplitAuto
Public m_dStartFreeLen As Double Public m_dStartFreeLen As Double
Public m_dEndFreeLen As Double Public m_dEndFreeLen As Double
Public m_vtDir As Vector3d Public m_vtDir As Vector3d
' ver 2.6f4: tagli corti gestiti con LeadIn.OUT/LeadOut.OUT
Public m_bMngLeadInOnIntCorner As Boolean
End Class End Class
'----------------------------------------------------------------------------------------------- '-----------------------------------------------------------------------------------------------
@@ -47,9 +49,158 @@ Public Module SplitAuto
While nOperId <> GDB_ID.NULL While nOperId <> GDB_ID.NULL
' verifico sia una lavorazione valida della fase corrente ' verifico sia una lavorazione valida della fase corrente
If IsValidMachining(nOperId) And EgtGetOperationPhase(nOperId) = nCurrPhase Then If IsValidMachining(nOperId) And EgtGetOperationPhase(nOperId) = nCurrPhase Then
Dim Mach As New SplitMach
If CreateMach(Mach, nOperId) Then MachSplitList.Add(Mach)
'' se appartiene ad un grezzo attivo la inserisco in lista
'If IsMachiningInActiveRaw(nOperId) Then
' Dim Mach As New SplitMach
' Mach.m_nEntId = GDB_ID.NULL
' ' identificativo
' Mach.m_nId = nOperId
' ' eventuali lavorazioni inglobate
' Dim sInfo As String = String.Empty
' If EgtGetInfo(nOperId, INFO_MCH_OTHMID, sInfo) Then
' Dim sItems() As String = sInfo.Split(",".ToCharArray)
' For Each sId As String In sItems
' Dim nId As Integer = 0
' StringToInt(sId, nId)
' If nId > 0 Then Mach.m_vOthId.Add(nId)
' Next
' End If
' ' tipo
' Mach.m_nType = EgtGetOperationType(nOperId)
' ' layer di origine
' EgtGetInfo(nOperId, INFO_MCH_LAYER, Mach.m_sLay)
' ' se taglio con lama
' If Mach.m_nType = MCH_OY.SAWING Then
' ' verifica interferenza
' If Mach.m_sLay = NAME_OUTLOOP Then
' EgtVerifyMachining(nOperId, Mach.m_nInterf)
' For Each nId As Integer In Mach.m_vOthId
' Dim nRes As Integer = FMI_TYPE.LI Or FMI_TYPE.RM Or FMI_TYPE.LO
' EgtVerifyMachining(nId, nRes)
' Mach.m_nInterf = Mach.m_nInterf Or nRes
' Next
' Else
' Mach.m_nInterf = FMI_TYPE.NONE
' End If
' ' la imposto come lavorazione corrente
' EgtSetCurrMachining(nOperId)
' ' inversione
' EgtGetMachiningParam(MCH_MP.INVERT, Mach.m_bInvert)
' ' recupero l'angolo di fianco
' EgtGetMachiningParam(MCH_MP.SIDEANGLE, Mach.m_dSideAng)
' ' recupero allungamento iniziale e finale (negativi vicino ad angoli interni)
' Dim dStartAddLen As Double = -10
' EgtGetMachiningParam(MCH_MP.STARTADDLEN, dStartAddLen)
' Dim dEndAddLen As Double = -10
' EgtGetMachiningParam(MCH_MP.ENDADDLEN, dEndAddLen)
' ' recupero tipo entità, angolo con entità precedente e successiva, lunghezze libere iniziale e finale
' Mach.m_bIsLine = True
' Mach.m_dPrevAng = 0
' Mach.m_dNextAng = 0
' Mach.m_dStartFreeLen = FREELEN_INF + 1
' Mach.m_dEndFreeLen = FREELEN_INF + 1
' Dim nEntId, nSub As Integer
' If EgtGetMachiningGeometry(0, nEntId, nSub) Then
' ' EgtGetType( nEntId) = GDB_TY.CRV_ARC OrElse
' If EgtGetType(nEntId) = GDB_TY.CRV_COMPO Then Mach.m_bIsLine = False
' EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_PREVANG, INFO_NEXTANG), Mach.m_dPrevAng)
' EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_NEXTANG, INFO_PREVANG), Mach.m_dNextAng)
' EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_START_FREELEN, INFO_END_FREELEN), Mach.m_dStartFreeLen)
' EgtGetInfo(nEntId, If(Not Mach.m_bInvert, INFO_END_FREELEN, INFO_START_FREELEN), Mach.m_dEndFreeLen)
' Mach.m_bEnableInvert = GetEnableInvert(nEntId)
' EgtMidVector(nEntId, GDB_ID.ROOT, Mach.m_vtDir)
' If Mach.m_bInvert Then Mach.m_vtDir = -Mach.m_vtDir
' Mach.m_nEntId = nEntId
' EgtGetInfo(nOperId, "ManageLeadInOnIntCorner", Mach.m_bMngLeadInOnIntCorner)
' End If
' ' verifico se trasformabile in un taglio di separazione (almeno da un lato)
' If (dStartAddLen > -EPS_SMALL Or dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
' Mach.m_sLay = NAME_OUTLOOP And ( Mach.m_nInterf And FMI_TYPE.RM) = 0 Then
' Dim nRes As Integer = EgtVerifyCutAsSplitting(nOperId)
' Dim bIn As Boolean = False
' Dim bOut As Boolean = False
' CanExtendSides(Mach, bIn, bOut)
' Mach.m_bCanStartAll = ((dStartAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And (nRes And CAR_RES.LI_OK) <> 0) And
' Mach.m_dStartFreeLen > FREELEN_INF And Mach.m_bIsLine And bIn
' Mach.m_bCanEndAll = ((dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And (nRes And CAR_RES.LO_OK) <> 0) And
' Mach.m_dEndFreeLen > FREELEN_INF And Mach.m_bIsLine And bOut
' If nRes = 0 Then
' EgtOutLog("Operation ID " & nOperId.ToString & " isn't split cut! verify depth machining.")
' End If
' ElseIf (dStartAddLen > -EPS_SMALL Or dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
' Mach.m_sLay = NAME_OUTLOOP And
' (Mach.m_nInterf = FMI_TYPE.LI Or Mach.m_nInterf = FMI_TYPE.LO Or Mach.m_nInterf = FMI_TYPE.RM) Then
' Dim nRes As Integer = EgtVerifyCutAsSplitting(nOperId)
' Dim bIn As Boolean = False
' Dim bOut As Boolean = False
' CanExtendSides(Mach, bIn, bOut)
' ' And (nRes And CAR_RES.LI_OK) <> 0 : da aggiungere
' Mach.m_bCanStartAll = (dStartAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
' Mach.m_dStartFreeLen > FREELEN_INF And Mach.m_bIsLine And bIn And
' Mach.m_nInterf <> FMI_TYPE.LI
' ' And (nRes And CAR_RES.LO_OK) <> 0 : da aggiungere come sopra
' Mach.m_bCanEndAll = (dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
' Mach.m_dEndFreeLen > FREELEN_INF And Mach.m_bIsLine And bOut And
' Mach.m_nInterf <> FMI_TYPE.LO
' If nRes = 0 Then
' EgtOutLog("Operation ID " & nOperId.ToString & " isn't split cut! verify depth machining.")
' End If
' End If
' ' se trasformabile in taglio di separazione, verifico se lo è
' If Mach.m_bCanStartAll Or Mach.m_bCanEndAll Then
' EgtSetCurrMachining(nOperId)
' Dim nLiType As Integer
' EgtGetMachiningParam(MCH_MP.LEADINTYPE, nLiType)
' Dim nLoType As Integer
' EgtGetMachiningParam(MCH_MP.LEADOUTTYPE, nLoType)
' Mach.m_bStartAll = (nLiType = MCH_SAW_LI.EXT_CENT Or nLiType = MCH_SAW_LI.EXT_OUT)
' Mach.m_bEndAll = (nLoType = MCH_SAW_LO.EXT_CENT Or nLoType = MCH_SAW_LO.EXT_OUT)
' Else
' Mach.m_bStartAll = False
' Mach.m_bEndAll = False
' End If
' ' Waterjet
' ElseIf Mach.m_nType = MCH_OY.WATERJETTING Then
' Mach.m_nInterf = FMI_TYPE.NONE
' ' recupero l'angolo di fianco
' EgtGetMachiningParam(MCH_MP.SIDEANGLE, Mach.m_dSideAng)
' Mach.m_bCanStartAll = False
' Mach.m_bCanEndAll = False
' Mach.m_bStartAll = False
' Mach.m_bEndAll = False
' ' Forature e fresature
' Else
' Mach.m_nInterf = FMI_TYPE.NONE
' Mach.m_dSideAng = 0
' Mach.m_bCanStartAll = False
' Mach.m_bCanEndAll = False
' Mach.m_bStartAll = False
' Mach.m_bEndAll = False
' End If
' ' abilitazione
' Mach.m_bEnabled = Not EgtExistsInfo(nOperId, INFO_MCH_USER_OFF)
' ' pausa
' Mach.m_bPause = GetPause(nOperId)
' ' inserisco in lista
' MachSplitList.Add(Mach)
' ' altrimenti la disattivo
'Else
' EgtSetOperationMode(nOperId, False)
'End If
End If
nOperId = EgtGetNextOperation(nOperId)
End While
Return True
End Function
Friend Function CreateMach(ByRef Mach As SplitMach, nOperId As Integer) As Boolean
Dim bOk As Boolean = True
' se appartiene ad un grezzo attivo la inserisco in lista ' se appartiene ad un grezzo attivo la inserisco in lista
If IsMachiningInActiveRaw(nOperId) Then If IsMachiningInActiveRaw(nOperId) Then
Dim Mach As New SplitMach
Mach.m_nEntId = GDB_ID.NULL Mach.m_nEntId = GDB_ID.NULL
' identificativo ' identificativo
Mach.m_nId = nOperId Mach.m_nId = nOperId
@@ -109,15 +260,41 @@ Public Module SplitAuto
EgtMidVector(nEntId, GDB_ID.ROOT, Mach.m_vtDir) EgtMidVector(nEntId, GDB_ID.ROOT, Mach.m_vtDir)
If Mach.m_bInvert Then Mach.m_vtDir = -Mach.m_vtDir If Mach.m_bInvert Then Mach.m_vtDir = -Mach.m_vtDir
Mach.m_nEntId = nEntId Mach.m_nEntId = nEntId
EgtGetInfo(nOperId, "ManageLeadInOnIntCorner", Mach.m_bMngLeadInOnIntCorner)
End If End If
' verifico se trasformabile in un taglio di separazione (almeno da un lato) ' verifico se trasformabile in un taglio di separazione (almeno da un lato)
If (dStartAddLen > -EPS_SMALL Or dEndAddLen > -EPS_SMALL) And If (dStartAddLen > -EPS_SMALL Or dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
Mach.m_sLay = NAME_OUTLOOP And Mach.m_nInterf = FMI_TYPE.NONE Then Mach.m_sLay = NAME_OUTLOOP And (Mach.m_nInterf And FMI_TYPE.RM) = 0 Then
Dim nRes As Integer = EgtVerifyCutAsSplitting(nOperId) Dim nRes As Integer = EgtVerifyCutAsSplitting(nOperId)
Mach.m_bCanStartAll = (dStartAddLen > -EPS_SMALL And (nRes And CAR_RES.LI_OK) <> 0) And Dim bIn As Boolean = False
Mach.m_dStartFreeLen > FREELEN_INF And Mach.m_bIsLine Dim bOut As Boolean = False
Mach.m_bCanEndAll = (dEndAddLen > -EPS_SMALL And (nRes And CAR_RES.LO_OK) <> 0) And CanExtendSides(Mach, bIn, bOut)
Mach.m_dEndFreeLen > FREELEN_INF And Mach.m_bIsLine Mach.m_bCanStartAll = ((dStartAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And (nRes And CAR_RES.LI_OK) <> 0) And
Mach.m_dStartFreeLen > FREELEN_INF And Mach.m_bIsLine And bIn
Mach.m_bCanEndAll = ((dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And (nRes And CAR_RES.LO_OK) <> 0) And
Mach.m_dEndFreeLen > FREELEN_INF And Mach.m_bIsLine And bOut
If nRes = 0 Then
EgtOutLog("Operation ID " & nOperId.ToString & " isn't split cut! verify depth machining.")
End If
ElseIf (dStartAddLen > -EPS_SMALL Or dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
Mach.m_sLay = NAME_OUTLOOP And
(Mach.m_nInterf = FMI_TYPE.LI Or Mach.m_nInterf = FMI_TYPE.LO Or Mach.m_nInterf = FMI_TYPE.RM) Then
Dim nRes As Integer = EgtVerifyCutAsSplitting(nOperId)
Dim bIn As Boolean = False
Dim bOut As Boolean = False
CanExtendSides(Mach, bIn, bOut)
' And (nRes And CAR_RES.LI_OK) <> 0 : da aggiungere
Mach.m_bCanStartAll = (dStartAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
Mach.m_dStartFreeLen > FREELEN_INF And Mach.m_bIsLine And bIn And
Mach.m_nInterf <> FMI_TYPE.LI
' And (nRes And CAR_RES.LO_OK) <> 0 : da aggiungere come sopra
Mach.m_bCanEndAll = (dEndAddLen > -EPS_SMALL Or Mach.m_bMngLeadInOnIntCorner) And
Mach.m_dEndFreeLen > FREELEN_INF And Mach.m_bIsLine And bOut And
Mach.m_nInterf <> FMI_TYPE.LO
If nRes = 0 Then
EgtOutLog("Operation ID " & nOperId.ToString & " isn't split cut! verify depth machining.")
End If
End If End If
' se trasformabile in taglio di separazione, verifico se lo è ' se trasformabile in taglio di separazione, verifico se lo è
If Mach.m_bCanStartAll Or Mach.m_bCanEndAll Then If Mach.m_bCanStartAll Or Mach.m_bCanEndAll Then
@@ -154,15 +331,31 @@ Public Module SplitAuto
Mach.m_bEnabled = Not EgtExistsInfo(nOperId, INFO_MCH_USER_OFF) Mach.m_bEnabled = Not EgtExistsInfo(nOperId, INFO_MCH_USER_OFF)
' pausa ' pausa
Mach.m_bPause = GetPause(nOperId) Mach.m_bPause = GetPause(nOperId)
' inserisco in lista
MachSplitList.Add(Mach)
' altrimenti la disattivo
Else Else
' altrimenti la disattivo
EgtSetOperationMode(nOperId, False) EgtSetOperationMode(nOperId, False)
bOk = False
End If End If
Return bOk
End Function
Private Function CanExtendSides(CurrMach As SplitMach, ByRef bIn As Boolean, ByRef bOut As Boolean) As Boolean
If CurrMach.m_dPrevAng < -EPS_ANG_SMALL And CurrMach.m_dNextAng > EPS_ANG_SMALL Then
' Posso estendere SOLO l'uscita
bOut = True
bIn = False
ElseIf CurrMach.m_dPrevAng > EPS_ANG_SMALL And CurrMach.m_dNextAng < -EPS_ANG_SMALL Then
' Posso estendere SOLO l'ingresso
bIn = True
bOut = False
ElseIf CurrMach.m_dPrevAng < -EPS_ANG_SMALL And CurrMach.m_dNextAng < -EPS_ANG_SMALL Then
' NON Posso estendere
bIn = False
bOut = False
Else
bIn = True
bOut = True
End If End If
nOperId = EgtGetNextOperation(nOperId)
End While
Return True Return True
End Function End Function
@@ -194,7 +387,7 @@ Public Module SplitAuto
Private Sub ColorSingleMachining(nOperId As Integer, sLay As String, dSideAng As Double, bEnabled As Boolean, nInterf As Integer) Private Sub ColorSingleMachining(nOperId As Integer, sLay As String, dSideAng As Double, bEnabled As Boolean, nInterf As Integer)
' Verifico se è un taglio da sopra o da sotto ' Verifico se è un taglio da sopra o da sotto
Dim bOnMach As Boolean = (sLay = NAME_ONPATH Or ( sLay = NAME_INLOOP AndAlso EgtExistsInfo( nOperId, INFO_FILOTOP))) Dim bOnMach As Boolean = (sLay = NAME_ONPATH Or (sLay = NAME_INLOOP AndAlso EgtExistsInfo(nOperId, INFO_FILOTOP)))
Dim bDrip As Boolean = (sLay = NAME_DRIPCUT Or sLay = NAME_UNDERDRILL) Dim bDrip As Boolean = (sLay = NAME_DRIPCUT Or sLay = NAME_UNDERDRILL)
' Recupero il preview della lavorazione ' Recupero il preview della lavorazione
Dim nPvId As Integer = GDB_ID.NULL Dim nPvId As Integer = GDB_ID.NULL
@@ -219,11 +412,11 @@ Public Module SplitAuto
Next Next
EgtSetColor(nDwnCutId, COL_MCH_DISABLED) EgtSetColor(nDwnCutId, COL_MCH_DISABLED)
Dim bFreeStart As Boolean = (nInterf And FMI_TYPE.LI) <> FMI_TYPE.LI Dim bFreeStart As Boolean = (nInterf And FMI_TYPE.LI) <> FMI_TYPE.LI
EgtSetColor(nPrcId, If(bFreeStart, COL_MCH_DISABLED, COL_MCH_DIS_INTERF)) EgtSetColor(nPrcId, If(bFreeStart, COL_MCH_DISABLED(), COL_MCH_DIS_INTERF()))
EgtSetColor(nDwnPrcId, If(bFreeStart, COL_MCH_DISABLED, COL_MCH_DIS_INTERF)) EgtSetColor(nDwnPrcId, If(bFreeStart, COL_MCH_DISABLED(), COL_MCH_DIS_INTERF()))
Dim bFreeEnd As Boolean = (nInterf And FMI_TYPE.LO) <> FMI_TYPE.LO Dim bFreeEnd As Boolean = (nInterf And FMI_TYPE.LO) <> FMI_TYPE.LO
EgtSetColor(nPocId, If(bFreeEnd, COL_MCH_DISABLED, COL_MCH_DIS_INTERF)) EgtSetColor(nPocId, If(bFreeEnd, COL_MCH_DISABLED(), COL_MCH_DIS_INTERF()))
EgtSetColor(nDwnPocId, If(bFreeEnd, COL_MCH_DISABLED, COL_MCH_DIS_INTERF)) EgtSetColor(nDwnPocId, If(bFreeEnd, COL_MCH_DISABLED(), COL_MCH_DIS_INTERF()))
Else Else
Dim colCut As Color3d Dim colCut As Color3d
If bOnMach Then If bOnMach Then
@@ -232,9 +425,20 @@ Public Module SplitAuto
colCut = COL_MCH_DRIPCUT() colCut = COL_MCH_DRIPCUT()
ElseIf Math.Abs(dSideAng) > EPS_ANG_SMALL Then ElseIf Math.Abs(dSideAng) > EPS_ANG_SMALL Then
colCut = COL_MCH_CUT_ANG() colCut = COL_MCH_CUT_ANG()
Else
' Se macchina con cambio utensile di lama
If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
Dim sSawing As String = String.Empty, sSaw As String = String.Empty
m_MainWindow.m_CadCutPageUC.m_SplitPage.GetCurrSawingandSaw(nOperId, sSawing, sSaw)
' Setto l'utensile corrente
EgtTdbSetCurrTool(sSaw)
' recupero il colore della lavorazione direttamente dall'utensile
colCut = Utility.GetColorPV()
Else Else
colCut = COL_MCH_CUT() colCut = COL_MCH_CUT()
End If End If
End If
For Each nId In vCutId For Each nId In vCutId
EgtSetColor(nId, colCut) EgtSetColor(nId, colCut)
Next Next
@@ -342,6 +546,7 @@ Public Module SplitAuto
Dim ptOri As Point3d Dim ptOri As Point3d
EgtGetTableRef(1, ptOri) EgtGetTableRef(1, ptOri)
Dim vtOri As New Vector3d(ptOri.x, ptOri.y, ptOri.z) Dim vtOri As New Vector3d(ptOri.x, ptOri.y, ptOri.z)
' ---------------------------------- GREZZI ----------------------------------
' Eseguo eventuali spezzature dei grezzi e vi sposto i pezzi (i grezzi devono essere sempre copiati per Registrazione con rotazione) ' Eseguo eventuali spezzature dei grezzi e vi sposto i pezzi (i grezzi devono essere sempre copiati per Registrazione con rotazione)
Dim nRawId As Integer = EgtGetFirstRawPart() Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL While nRawId <> GDB_ID.NULL
@@ -393,10 +598,19 @@ Public Module SplitAuto
' passo al successivo grezzo ' passo al successivo grezzo
nRawId = EgtGetNextRawPart(nRawId) nRawId = EgtGetNextRawPart(nRawId)
End While End While
' ---------------------------------- GREZZI ----------------------------------
' Cancello preview dei tagli allungati dalla lavorazione ' Cancello preview dei tagli allungati dalla lavorazione
For Each nCut As Integer In vCuts For Each nCut As Integer In vCuts
RemoveMachiningPreview(nCut) RemoveMachiningPreview(nCut)
Next Next
' ---------------------------------- LAVORAZIONI ----------------------------------
ChangeOperationPhase(nNewPhase)
' ---------------------------------- LAVORAZIONI ----------------------------------
Return True
End Function
' Sposta le lavorzioni della fase precedente a quella indicata
Friend Sub ChangeOperationPhase_ERR(nNewPhase As Integer)
' Sposto tutte le lavorazioni disabilitate e le eventuali inglobate nella nuova fase ' Sposto tutte le lavorazioni disabilitate e le eventuali inglobate nella nuova fase
Dim nId = EgtGetFirstOperation() Dim nId = EgtGetFirstOperation()
While nId <> GDB_ID.NULL While nId <> GDB_ID.NULL
@@ -417,9 +631,50 @@ Public Module SplitAuto
End If End If
nId = nNextId nId = nNextId
End While End While
Return True End Sub
End Function
' Miglioramento della gestione delle lavorazioni
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
' 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 As String In sItems
Dim nId2 As Integer = 0
StringToInt(sId2, nId2)
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
' 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 Friend Function CalculateSplitAuto() As Boolean
' Fase iniziale ' Fase iniziale
@@ -743,28 +998,36 @@ Public Module SplitAuto
Private Function ExecMove(nDispId As Integer, vNewRaws As List(Of Integer), Private Function ExecMove(nDispId As Integer, vNewRaws As List(Of Integer),
vtMove As Vector3d, dMinMove As Double) As Boolean vtMove As Vector3d, dMinMove As Double) As Boolean
Dim vtMove2 As Vector3d = -vtMove Dim bTwoHeadVac As Boolean = (EgtGetHeadId(VACUUM_HEAD_2) <> GDB_ID.NULL)
Dim rmData As New RawMoveData Dim rmData As New RawMoveData
If PutVacuumCupsOnRaw(vNewRaws(1), rmData) AndAlso Dim vtMove2 As Vector3d = -vtMove
SafeMoveRawPart(vNewRaws(1), vtMove, dMinMove) Then
VacuumCups.ResetHeadName()
Dim bPutVacuum As Boolean = PutVacuumCupsOnRaw(vNewRaws(1), rmData)
If Not bPutVacuum And bTwoHeadVac Then bPutVacuum = PutVacuumCupsOnRaw(vNewRaws(1), rmData)
If bPutVacuum AndAlso SafeMoveRawPart(vNewRaws(1), vtMove, dMinMove) Then
rmData.m_vtRawMove = vtMove rmData.m_vtRawMove = vtMove
SaveOneMoveInfoInDisposition(nDispId, rmData) SaveOneMoveInfoInDisposition(nDispId, rmData)
Return True Return True
ElseIf PutVacuumCupsOnRaw(vNewRaws(0), rmData) AndAlso End If
SafeMoveRawPart(vNewRaws(0), vtMove2, dMinMove) Then
VacuumCups.ResetHeadName()
Dim bPut2Vacuum As Boolean = PutVacuumCupsOnRaw(vNewRaws(0), rmData)
If Not bPut2Vacuum And bTwoHeadVac Then bPutVacuum = PutVacuumCupsOnRaw(vNewRaws(0), rmData)
If bPut2Vacuum AndAlso SafeMoveRawPart(vNewRaws(0), vtMove2, dMinMove) Then
rmData.m_vtRawMove = vtMove2 rmData.m_vtRawMove = vtMove2
SaveOneMoveInfoInDisposition(nDispId, rmData) SaveOneMoveInfoInDisposition(nDispId, rmData)
Return True Return True
Else
Return False
End If End If
Return False
End Function End Function
Private Function SafeMoveRawPart(nRawId As Integer, ByRef vtMove As Vector3d, dMindist As Double) As Boolean Private Function SafeMoveRawPart(nRawId As Integer, ByRef vtMove As Vector3d, dMindist As Double) As Boolean
' Spostamento originale ' Spostamento originale
Dim vtOriMove As New Vector3d( vtMove) Dim vtOriMove As New Vector3d(vtMove)
' Livello di movimento ' Livello di movimento
Dim nMoveLevel As Integer = GetPrivateProfileInt( S_SPLIT, K_MOVE_LEV, 5, m_MainWindow.GetIniFile()) Dim nMoveLevel As Integer = GetPrivateProfileInt(S_SPLIT, K_MOVE_LEV, 5, m_MainWindow.GetIniFile())
Dim nMove As Integer = 1 Dim nMove As Integer = 1
' Se esce dalla tavola, movimento già annullato ed esco con errore ' Se esce dalla tavola, movimento già annullato ed esco con errore
If Not EgtMoveRawPart(nRawId, vtOriMove) Then Return False If Not EgtMoveRawPart(nRawId, vtOriMove) Then Return False
@@ -799,7 +1062,7 @@ Public Module SplitAuto
If VerifyRawWithOtherRaws(nRawId, dMindist) Then If VerifyRawWithOtherRaws(nRawId, dMindist) Then
vtMove += 0.5 * vtOriMove vtMove += 0.5 * vtOriMove
nMove += 1 nMove += 1
If nMoveLevel = nMove Then return True If nMoveLevel = nMove Then Return True
Else Else
EgtMoveRawPart(nRawId, -0.5 * vtOriMove) EgtMoveRawPart(nRawId, -0.5 * vtOriMove)
End If End If
+31
View File
@@ -67,6 +67,12 @@
SelectionMode="Extended"> SelectionMode="Extended">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Width="210">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.8*"/>
<ColumnDefinition Width="1.2*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}"> <TextBlock Text="{Binding Name}">
<TextBlock.Style> <TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_CurrProjSummeryTextBlock}"> <Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_CurrProjSummeryTextBlock}">
@@ -82,6 +88,25 @@
</Style> </Style>
</TextBlock.Style> </TextBlock.Style>
</TextBlock> </TextBlock>
<TextBlock Grid.Column="1" Text="{Binding TCPos}">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_CurrProjSummeryTextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding bIsActive}" Value="False">
<Setter Property="TextDecorations" Value="Strikethrough"/>
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding bIsActive}" Value="True">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<Rectangle Grid.Column="2"
Visibility="{Binding MachiningTCPosVisibility}"
Style="{DynamicResource Rect_SplitPage}"/>
</Grid>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>
@@ -100,6 +125,12 @@
<Button Name="MoveDownBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}"> <Button Name="MoveDownBtn" Grid.Column="2" Style="{DynamicResource OmagCut_YellowIconButton}">
<Image Source="{DynamicResource DownArrowImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/> <Image Source="{DynamicResource DownArrowImg}" Style="{StaticResource OmagCut_ArrowButtonIcon}"/>
</Button> </Button>
<ToggleButton Name="LayNbArrTgBtn" Grid.Column="3" Style="{DynamicResource OmagCut_YellowIconToggleButton}"
Height="25" Width="25">
<Image Name="LayNbArrImg"
HorizontalAlignment="Center"
VerticalAlignment="Center" Stretch="Uniform"/>
</ToggleButton>
</Grid> </Grid>
+446 -67
View File
@@ -8,12 +8,15 @@ Public Class SplitPageUC
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private WithEvents m_CurrProjPage As CurrentProjectPageUC Private WithEvents m_CurrProjPage As CurrentProjectPageUC
' Creazione converter da String a ImageSource
Private ImageConverter As New ImageSourceConverter
' Flag di pagina attiva ' Flag di pagina attiva
Private m_bActive As Boolean = False Private m_bActive As Boolean = False
' Tipo movimento dei grezzi (manuale o con testa ventosa) ' Tipo movimento dei grezzi (manuale o con testa ventosa)
Private m_bByHand As Boolean = True Private m_bByHand As Boolean = True
' Abilitazione movimento finale pezzi su tavola ausiliaria ' Abilitazione movimento finale pezzi su tavola ausiliaria
Private m_bEnableOnAuxTab As Boolean = False Friend m_bEnableOnAuxTab As Boolean = False
' Stato ' Stato
Private m_nCurrPhase As Integer = 0 Private m_nCurrPhase As Integer = 0
Private m_MachiningList As New List(Of SplitMach) Private m_MachiningList As New List(Of SplitMach)
@@ -49,6 +52,7 @@ Public Class SplitPageUC
Private m_bModified As Boolean = False Private m_bModified As Boolean = False
Private m_nNbrGrpId As Integer = GDB_ID.NULL Private m_nNbrGrpId As Integer = GDB_ID.NULL
Private m_bToNext As Boolean = False Private m_bToNext As Boolean = False
Private m_bToPrev As Boolean = False
Friend m_bOnAuxTab As Boolean = False Friend m_bOnAuxTab As Boolean = False
' Drag ' Drag
Private m_nDragInd As Integer = -1 Private m_nDragInd As Integer = -1
@@ -60,6 +64,9 @@ Public Class SplitPageUC
' Abilita la mofica Inizio fine per i tagli interni sugli angoli ' Abilita la mofica Inizio fine per i tagli interni sugli angoli
Private m_StartEndModifyOnIntCorner As Boolean = False Private m_StartEndModifyOnIntCorner As Boolean = False
Private m_IsCtrlKeyDown As Boolean = False
Private m_IsShiftKeyDown As Boolean = False
Private Sub SplitPageUC_Initialized(sender As Object, e As EventArgs) Private Sub SplitPageUC_Initialized(sender As Object, e As EventArgs)
PrevBtn.IsEnabled = False PrevBtn.IsEnabled = False
' Collego lista di oggetti a ListBox ' Collego lista di oggetti a ListBox
@@ -167,6 +174,7 @@ Public Class SplitPageUC
m_bModified = False m_bModified = False
' Reset flag tipo uscita ' Reset flag tipo uscita
m_bToNext = False m_bToNext = False
m_bToPrev = False
' Abilitazione bottoni ' Abilitazione bottoni
EnableButtons() EnableButtons()
' Se sola visualizzazione, segnalazione di eventuale fase di restart ' Se sola visualizzazione, segnalazione di eventuale fase di restart
@@ -178,9 +186,13 @@ Public Class SplitPageUC
m_MainWindow.m_CurrentProjectPageUC.ClearMessage() m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
End If End If
End If End If
' leggo lo stato del bottone per la visualizzazione delle etichette
LayNbArrTgBtn.IsChecked = (GetPrivateProfileInt(S_GENERAL, K_SHOWNBARROW, 1, m_MainWindow.GetIniFile()) <> 0)
SetLayNbArrTgBtn_Click()
End Sub End Sub
Private Sub ShowMachiningList() ' preparo la lista delle lavorazioni da mostrare in interfaccia
Public Sub ShowMachiningList()
m_ItemList.Clear() m_ItemList.Clear()
For i As Integer = 1 To m_MachiningList.Count() For i As Integer = 1 To m_MachiningList.Count()
Dim Mach As SplitMach = m_MachiningList(i - 1) Dim Mach As SplitMach = m_MachiningList(i - 1)
@@ -193,28 +205,54 @@ Public Class SplitPageUC
sText = EgtMsg(90791) & " " & i.ToString() & " " & DoubleToString(Mach.m_dSideAng, 2) & "°" sText = EgtMsg(90791) & " " & i.ToString() & " " & DoubleToString(Mach.m_dSideAng, 2) & "°"
End If End If
If Mach.m_bPause Then AddPauseText(sText) If Mach.m_bPause Then AddPauseText(sText)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.SAWING)) AddItemToList(i, Mach, sText, MCH_OY.SAWING)
ElseIf Mach.m_nType = MCH_OY.DRILLING Then ' Foratura ElseIf Mach.m_nType = MCH_OY.DRILLING Then ' Foratura
Dim sText As String = EgtMsg(90792) & " " & i.ToString() Dim sText As String = EgtMsg(90792) & " " & i.ToString()
If Mach.m_bPause Then AddPauseText(sText) If Mach.m_bPause Then AddPauseText(sText)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.DRILLING)) 'm_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.DRILLING))
AddItemToList(i, Mach, sText, MCH_OY.DRILLING)
ElseIf Mach.m_nType = MCH_OY.MILLING Then ' Fresatura ElseIf Mach.m_nType = MCH_OY.MILLING Then ' Fresatura
Dim sText As String = EgtMsg(90793) & " " & i.ToString() Dim sText As String = EgtMsg(90793) & " " & i.ToString()
If Mach.m_sLay = NAME_ONPATH Then AddTopText(sText) If Mach.m_sLay = NAME_ONPATH Then AddTopText(sText)
If Mach.m_bPause Then AddPauseText(sText) If Mach.m_bPause Then AddPauseText(sText)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.MILLING)) 'm_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.MILLING))
AddItemToList(i, Mach, sText, MCH_OY.MILLING)
ElseIf Mach.m_nType = MCH_OY.POCKETING Then ' Svuotatura ElseIf Mach.m_nType = MCH_OY.POCKETING Then ' Svuotatura
Dim sText As String = EgtMsg(90796) & " " & i.ToString() Dim sText As String = EgtMsg(90796) & " " & i.ToString()
If Mach.m_bPause Then AddPauseText(sText) If Mach.m_bPause Then AddPauseText(sText)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.POCKETING)) 'm_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.POCKETING))
AddItemToList(i, Mach, sText, MCH_OY.POCKETING)
ElseIf Mach.m_nType = MCH_OY.WATERJETTING Then ' Waterjet ElseIf Mach.m_nType = MCH_OY.WATERJETTING Then ' Waterjet
Dim sText As String = EgtMsg(90797) & " " & i.ToString() Dim sText As String = EgtMsg(90797) & " " & i.ToString()
If Mach.m_bPause Then AddPauseText(sText) If Mach.m_bPause Then AddPauseText(sText)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.WATERJETTING)) 'm_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, MCH_OY.WATERJETTING))
AddItemToList(i, Mach, sText, MCH_OY.WATERJETTING)
End If End If
Next Next
End Sub End Sub
Private Sub AddItemToList(i As Integer, Mach As SplitMach, sText As String, nMach As Integer)
Dim sTCPos As String = String.Empty
' Visualizzo la posizione utensile solo se configurata
If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
Dim sSawing As String = String.Empty, sSaw As String = String.Empty
GetCurrSawingandSaw(Mach.m_nId, sSawing, sSaw)
' Verifico che sia montata su un portautensile
EgtTdbSetCurrTool(sSaw)
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sTCPos)
End If
' Se TCPos non trovato
If String.IsNullOrEmpty(sTCPos) Then
' Inserisco solo nome lavorazione
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, nMach))
Else
' altrimenti se esiste una lama impostata nell'if sopra
Dim sawColor As Color3d = Utility.GetColorPV()
Dim tmpSawColor As System.Windows.Media.Color = System.Windows.Media.Color.FromRgb(sawColor.R, sawColor.G, sawColor.B)
m_ItemList.Add(New NameIdLsBxItem(sText, i - 1, Mach.m_bEnabled, nMach, sTCPos, New SolidColorBrush(tmpSawColor)))
End If
End Sub
#Region "BRIDGE" #Region "BRIDGE"
Private Sub OnMyMouseDownSceneBridges(sender As Object, e As System.Windows.Forms.MouseEventArgs, Private Sub OnMyMouseDownSceneBridges(sender As Object, e As System.Windows.Forms.MouseEventArgs,
@@ -340,7 +378,6 @@ Public Class SplitPageUC
EgtTrimCurveEndAtLen(nIdBridge, dLen - 10 * EPS_SMALL) EgtTrimCurveEndAtLen(nIdBridge, dLen - 10 * EPS_SMALL)
EgtTrimCurveStartAtLen(nIdBridge, 10 * EPS_SMALL) EgtTrimCurveStartAtLen(nIdBridge, 10 * EPS_SMALL)
End If End If
' EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN)
Dim nIdPart As Integer = GDB_ID.NULL Dim nIdPart As Integer = GDB_ID.NULL
nIdPart = EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId) nIdPart = EgtGetFirstPartInRawPart(m_CurrProjPage.m_nRawId)
While nIdPart <> GDB_ID.NULL While nIdPart <> GDB_ID.NULL
@@ -348,7 +385,6 @@ Public Class SplitPageUC
Dim nIdSurf As Integer = EgtGetFirstInGroup(nIdRegion) Dim nIdSurf As Integer = EgtGetFirstInGroup(nIdRegion)
While nIdSurf <> GDB_ID.NULL While nIdSurf <> GDB_ID.NULL
If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then
' EgtSaveFile("c:\EgtData\OmagCUT\Temp\Bridge.nge", NGE.BIN)
' se la linea bridge interseca la superficie allora restitusco false ' se la linea bridge interseca la superficie allora restitusco false
If EgtCurveWithRegionClassify(nIdBridge, nIdSurf) <> CREGC.OUT Then If EgtCurveWithRegionClassify(nIdBridge, nIdSurf) <> CREGC.OUT Then
EgtExtendCurveStartByLen(nIdBridge, 10 * EPS_SMALL) EgtExtendCurveStartByLen(nIdBridge, 10 * EPS_SMALL)
@@ -452,9 +488,46 @@ Public Class SplitPageUC
#End Region ' Bridge #End Region ' Bridge
Private Sub OnMyMouseDownScene_DoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene_DoubleClick
OnOffCut()
End Sub
Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene Private Sub OnMyMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseDownScene
' Verifico di essere il gestore attivo e non in modalità sola visualizzazione ' Verifico di essere il gestore attivo e non in modalità sola visualizzazione
If Not m_bActive OrElse m_bShow Then Return If Not m_bActive OrElse m_bShow Then Return
If e.Button = Windows.Forms.MouseButtons.Right And m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
Dim nCurrCtx As Integer = EgtGetCurrentContext()
Dim nSel1 As Integer = GDB_ID.NULL
Dim nPvId As Integer = GDB_ID.NULL
Dim nMchId As Integer = GDB_ID.NULL
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel1)
Dim nId1 As Integer = EgtGetFirstObjInSelWin()
While nId1 <> GDB_ID.NULL
' Verifico sia un attacco o uscita di taglio con lama
Dim nType As Integer = 0
Dim sName As String = ""
EgtGetName(nId1, sName)
nPvId = EgtGetParent(EgtGetParent(nId1))
nMchId = GDB_ID.NULL
If String.Compare(sName, NAME_PV_PRECUT) = 0 Or String.Compare(sName, NAME_PV_POSTCUT) = 0 Or String.Compare(sName, NAME_PV_CUT) = 0 Then
If EgtGetInfo(nPvId, "MId", nMchId) Then
Exit While
End If
End If
nId1 = EgtGetNextObjInSelWin()
End While
If nMchId = GDB_ID.NULL Then
GetCurrSelection()
Return
End If
ChangeMachinig(nMchId)
GetCurrSelection()
Return
End If
' Si può selezionare solo con il tasto sinistro e se stato NULL ' Si può selezionare solo con il tasto sinistro e se stato NULL
If e.Button <> Windows.Forms.MouseButtons.Left Or If e.Button <> Windows.Forms.MouseButtons.Left Or
Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then Not m_CurrProjPage.CurrentProjectScene.IsStatusNull() Then
@@ -474,6 +547,7 @@ Public Class SplitPageUC
If m_nIdSelectedPartWJ_Srt <> GDB_ID.NULL And m_nIdSelectedPartWJ_End <> GDB_ID.NULL Then If m_nIdSelectedPartWJ_Srt <> GDB_ID.NULL And m_nIdSelectedPartWJ_End <> GDB_ID.NULL Then
DeselectWJBridgesPart() DeselectWJBridgesPart()
End If End If
GetCurrSelection()
Return Return
End If End If
@@ -482,6 +556,7 @@ Public Class SplitPageUC
OnMyMouseDownSceneBridgesDelete(sender, e) OnMyMouseDownSceneBridgesDelete(sender, e)
' aggiorno la visualizzazione delle lavorazioni e la lista ' aggiorno la visualizzazione delle lavorazioni e la lista
RefreshMachList() RefreshMachList()
GetCurrSelection()
Return Return
End If End If
@@ -563,7 +638,94 @@ Public Class SplitPageUC
m_nDragInd = -1 m_nDragInd = -1
m_nDragType = 0 m_nDragType = 0
m_nSelected = GDB_ID.NULL m_nSelected = GDB_ID.NULL
If Not IsNothing(MachiningLsBx.SelectedItem) Then
MarkMachining(MachiningLsBx.SelectedItem.Ind, False)
EgtDraw()
End If End If
MachiningLsBx.SelectedIndex = -1
End If
GetCurrSelection()
End Sub
Private Sub ChangeMachinig(nMchId As Integer)
' Imposto la lavorazione corrente
Dim sSawing As String = String.Empty
Dim EntId As Integer = GDB_ID.NULL
Dim SubEntId As Integer = GDB_ID.NULL
EgtSetCurrMachining(nMchId)
If Not EgtGetMachiningGeometry(0, EntId, SubEntId) Then Return
' Recupero il nome della lavorazione
EgtGetInfo(EntId, DEF_MACHINING, sSawing)
' Apro pagina di selezione della lavorazione
Dim m_ChangeToolPage = New ChangeToolWD(m_MainWindow)
' Imposto nome lavorazione corrente
m_ChangeToolPage.CurrSawing = sSawing
' apro la finestra per la selezione delle lavorazioni
m_ChangeToolPage.ShowDialog()
' se seleziono "Ok" allora resetto tutte le lavorazioni del progetto
If m_ChangeToolPage.DialogResult Then
EgtSetInfo(EntId, DEF_MACHINING, m_ChangeToolPage.NewSawing)
Dim Index As Integer = 0
For Index = 0 To m_MachiningList.Count() - 1
If m_MachiningList(Index).m_nId = nMchId Then
Exit For
End If
Next
Dim nNewMchId As Integer = -1
CamAuto.AddSawMachining(nMchId, nNewMchId)
' Elimino la numerazione e la freccia
EgtErase(m_MachiningList(Index).m_nArrId)
EgtErase(m_MachiningList(Index).m_nNbrId)
Dim Mach As New SplitMach
' Sostituisco la vecchia lavorazione con la nuova
If SplitAuto.CreateMach(Mach, nNewMchId) Then
' Assegno la lavorazione alla lista
m_MachiningList(Index) = Mach
' Riassegno la numerazione
NumberDirectionMachining(Index)
m_ItemList(Index).TCPos = m_ChangeToolPage.TCPos
' Recupero il colore della lavorazione
Dim EgtCol As Color3d = m_ChangeToolPage.EgtColor
Dim tmpSawColor As System.Windows.Media.Color = System.Windows.Media.Color.FromRgb(EgtCol.R, EgtCol.G, EgtCol.B)
m_ItemList(Index).SawColor = New SolidColorBrush(tmpSawColor)
m_ItemList(Index).MachiningTCPosVisibility = Visibility.Visible
EgtDraw()
End If
End If
End Sub
Public Sub GetCurrSawingandSaw(ByVal nMchId As Integer, ByRef sSawing As String, ByRef sNameTool As String)
Dim EntId As Integer = GDB_ID.NULL
Dim SubEntId As Integer = GDB_ID.NULL
EgtSetCurrMachining(nMchId)
If Not EgtGetMachiningGeometry(0, EntId, SubEntId) Then Return
' Eventualmente recupero il nome della lavorazione
EgtGetInfo(EntId, DEF_MACHINING, sSawing)
If String.IsNullOrEmpty(sSawing) Then sSawing = m_MainWindow.m_CurrentMachine.sCurrSawing
' Imposto la lavorazione corrente
EgtMdbSetCurrMachining(sSawing)
' Recupero il nome dell'utensile della lavorazione
EgtMdbGetCurrMachiningParam(MCH_MP.TOOL, sNameTool)
End Sub
' Dato l'id della lavorazione nel grezzo colora il taglio del colore assegnato
Public Sub ColorsCut(nOperId As Integer, EgtCol As Color3d)
' Recupero la lavorazione
Dim nPVRawId As Integer = EgtGetFirstNameInGroup(nOperId, "PV")
Dim nPVPartId As Integer = GDB_ID.NULL
EgtGetInfo(nPVRawId, "PvId", nPVPartId)
Dim nId2 As Integer = EgtGetFirstInGroup(EgtGetFirstInGroup(nPVPartId))
Dim sName As String = ""
EgtGetName(nId2, sName)
While nId2 <> GDB_ID.NULL
If String.Compare(sName, NAME_PV_CUT) = 0 Then
EgtSetColor(nId2, EgtCol)
Exit While
End If
nId2 = EgtGetNext(nId2)
End While
End Sub End Sub
Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseMoveScene Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles m_CurrProjPage.OnMouseMoveScene
@@ -594,6 +756,7 @@ Public Class SplitPageUC
Dim dUsal As Double Dim dUsal As Double
' ----------------------- REPEAT ----------------------- ' ----------------------- REPEAT -----------------------
Do Do
If Not m_MachiningList(m_nDragInd).m_bCanStartAll Then Exit Do
dDelta = -dDelta dDelta = -dDelta
' Leggo il valore salvato nella geometria ' Leggo il valore salvato nella geometria
EgtGetInfo(nOperId, INFO_MCH_USER_SAL, dOrigUsal) EgtGetInfo(nOperId, INFO_MCH_USER_SAL, dOrigUsal)
@@ -627,6 +790,7 @@ Public Class SplitPageUC
Dim dUeal As Double Dim dUeal As Double
dDelta = -dDelta dDelta = -dDelta
Do Do
If Not m_MachiningList(m_nDragInd).m_bCanEndAll Then Exit Do
dDelta = -dDelta dDelta = -dDelta
' Leggo il valore salvato nella geometria ' Leggo il valore salvato nella geometria
EgtGetInfo(nOperId, INFO_MCH_USER_EAL, dOrigUeal) EgtGetInfo(nOperId, INFO_MCH_USER_EAL, dOrigUeal)
@@ -690,6 +854,11 @@ Public Class SplitPageUC
End Sub End Sub
Private Sub MachiningLsBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles MachiningLsBx.SelectionChanged Private Sub MachiningLsBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles MachiningLsBx.SelectionChanged
' se non attiva la modifica allora esco
If m_bShow Then
MachiningLsBx.SelectedIndex = -1
Return
End If
If MachiningLsBx.SelectedItems.Count = 0 Then Return If MachiningLsBx.SelectedItems.Count = 0 Then Return
If MachiningLsBx.SelectedItems.Count = 1 Then m_bAreHomogeneous = True If MachiningLsBx.SelectedItems.Count = 1 Then m_bAreHomogeneous = True
' creo lista ordinata dei selezionati ' creo lista ordinata dei selezionati
@@ -710,30 +879,8 @@ Public Class SplitPageUC
MoveUpBtn.IsEnabled = False MoveUpBtn.IsEnabled = False
MoveDownBtn.IsEnabled = False MoveDownBtn.IsEnabled = False
End If End If
' Recupero la selezione dei tagli correnti
GetCurrSelection() GetCurrSelection()
'' verifico che siano contigui
'Dim bContigus As Boolean = False
'Dim OrdIndex = 0
'OrdIndex = MachiningLsBx.SelectedItems(MachiningLsBx.SelectedItems.Count - 1).Ind
'' recupero l'indice dell'ultimo elemento selezionato
'Dim LastSel As NameIdLsBxItem = MachiningLsBx.SelectedItems(MachiningLsBx.SelectedItems.Count - 1)
'If MachiningLsBx.SelectedItems.Count = 1 Then
' bContigus = True
'Else
' For Each Item As NameIdLsBxItem In ItemList
' If Item.Ind = LastSel.Ind + 1 Or Item.Ind = LastSel.Ind - 1 Then
' bContigus = True
' End If
' Next
'End If
'' se non contiguo, elimino dai selezionati il primo(che è l'ultimo ad essere stato selezionato)
'If Not bContigus Then
' ItemList.Remove(LastSel)
' MachiningLsBx.SelectedItems.RemoveAt(MachiningLsBx.SelectedItems.Count - 1)
'End If
' resetto marcatura lavorazioni ' resetto marcatura lavorazioni
If m_CurrFirstInd > -1 Then If m_CurrFirstInd > -1 Then
For Index As Integer = m_CurrFirstInd To m_CurrLastInd For Index As Integer = m_CurrFirstInd To m_CurrLastInd
@@ -752,6 +899,22 @@ Public Class SplitPageUC
EgtDraw() EgtDraw()
End Sub End Sub
Private Sub MachiningLsBx_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles MachiningLsBx.MouseDoubleClick
' se disabilitata la modifica allora esco
If m_bShow Then Return
If m_IsCtrlKeyDown Or m_IsShiftKeyDown Then Return
OnOffCut()
End Sub
Private Sub MachiningLsBx_MouseRightButtonDown(sender As Object, e As MouseEventArgs) Handles MachiningLsBx.PreviewMouseRightButtonDown
' se disabilitata la modifica allora esco
If m_bShow Then Return
If m_IsCtrlKeyDown Or m_IsShiftKeyDown Then Return
Dim Index As Integer = MachiningLsBx.SelectedIndex
If Index = -1 Then Return
ChangeMachinig(m_MachiningList(Index).m_nId)
End Sub
Private Sub MoveUpBtn_Click(sender As Object, e As RoutedEventArgs) Handles MoveUpBtn.Click Private Sub MoveUpBtn_Click(sender As Object, e As RoutedEventArgs) Handles MoveUpBtn.Click
MoveItem(-1) MoveItem(-1)
End Sub End Sub
@@ -760,6 +923,25 @@ Public Class SplitPageUC
MoveItem(1) MoveItem(1)
End Sub End Sub
Private Sub LayNbArrTgBtn_Click() Handles LayNbArrTgBtn.Click
SetLayNbArrTgBtn_Click()
WritePrivateProfileString(S_GENERAL, K_SHOWNBARROW, If(LayNbArrTgBtn.IsChecked, "1", "0"), m_MainWindow.GetIniFile())
End Sub
Private Sub SetLayNbArrTgBtn_Click()
If LayNbArrTgBtn.IsChecked Then
StatusOffNumbArrow(GDB_ST.ON_)
LayNbArrTgBtn.ToolTip = "Hide"
Dim Img As ImageSource = ImageConverter.ConvertFromString("pack://application:,,,/Resources/NewIcons/LightArrowOn.png")
LayNbArrImg.Source = Img
Else
StatusOffNumbArrow(GDB_ST.OFF)
LayNbArrTgBtn.ToolTip = "Show"
Dim Img As ImageSource = ImageConverter.ConvertFromString("pack://application:,,,/Resources/NewIcons/LightArrowOff.png")
LayNbArrImg.Source = Img
End If
End Sub
Private Sub MoveItem(direction As Integer) Private Sub MoveItem(direction As Integer)
' Checking selected item ' Checking selected item
If m_CurrFirstInd = -1 OrElse MachiningLsBx.SelectedIndex < 0 Then If m_CurrFirstInd = -1 OrElse MachiningLsBx.SelectedIndex < 0 Then
@@ -827,6 +1009,8 @@ Public Class SplitPageUC
Next Next
VerifyHomogenousMachining(ItemList) VerifyHomogenousMachining(ItemList)
' Abilitazione bottone Next
EnableButtons()
End Sub End Sub
Private Sub AllOnBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllOnBtn.Click Private Sub AllOnBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllOnBtn.Click
@@ -933,11 +1117,31 @@ Public Class SplitPageUC
EnableButtons() EnableButtons()
End Sub End Sub
' ERRORE: questo evento non è eseguito! '' DA FARE: quando seleziono Esc devo togliere deselezionare tutte le enità!
Private Sub OnKeyDownScene(sender As Object, e As KeyEventArgs) 'Private Sub OnKeyDownScene(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.Key = Key.Escape Then ' If e.Key = Key.Escape Then
' se sono in fase di creazione di un ponticello interrompo ' ' se sono in fase di creazione di un ponticello interrompo
DeselectWJBridgesPart() ' DeselectWJBridgesPart()
' EgtDeselectAll()
' RemoveMarkAndNumbers()
' End If
'End Sub
Private Sub MachiningLsBx_KeyDown(sender As Object, e As KeyEventArgs) Handles MachiningLsBx.KeyDown
If e.Key = Key.LeftCtrl Or e.Key = Key.RightCtrl Then
m_IsCtrlKeyDown = True
End If
If e.Key = Key.LeftShift Or e.Key = Key.RightShift Then
m_IsShiftKeyDown = True
End If
End Sub
Private Sub MachiningLsBx_KeyUp(sender As Object, e As KeyEventArgs) Handles MachiningLsBx.KeyUp
If e.Key = Key.LeftCtrl Or e.Key = Key.RightCtrl Then
m_IsCtrlKeyDown = False
End If
If e.Key = Key.LeftShift Or e.Key = Key.RightShift Then
m_IsShiftKeyDown = False
End If End If
End Sub End Sub
@@ -1144,6 +1348,12 @@ Public Class SplitPageUC
End If End If
Dim nI As Integer = m_ItemList(Index).Ind Dim nI As Integer = m_ItemList(Index).Ind
If m_MachiningList(nI).m_sLay = NAME_OUTLOOP Then If m_MachiningList(nI).m_sLay = NAME_OUTLOOP Then
' se ho forzato il tipo di ingresso da CamAuto qui non posso moficarlo!
If m_MachiningList(nI).m_bMngLeadInOnIntCorner Then
EgtOutLog(" ⚠️ L'ingresso di taglio associato all'entita'_" & m_MachiningList(nI).m_nEntId & " non puo' essere modificato per problemi di ingombro lama ⚠️")
Else
EgtSetCurrMachining(m_MachiningList(nI).m_nId) EgtSetCurrMachining(m_MachiningList(nI).m_nId)
Dim nLiPrev As Integer Dim nLiPrev As Integer
EgtGetMachiningParam(MCH_MP.LEADINTYPE, nLiPrev) EgtGetMachiningParam(MCH_MP.LEADINTYPE, nLiPrev)
@@ -1175,6 +1385,9 @@ Public Class SplitPageUC
ColorMachining(m_MachiningList(nI)) ColorMachining(m_MachiningList(nI))
ColorNumberArrow(nI) ColorNumberArrow(nI)
bGenModif = True bGenModif = True
End If
End If End If
Next Next
' Se modificato qualcosa ' Se modificato qualcosa
@@ -1212,6 +1425,12 @@ Public Class SplitPageUC
Private Sub AllCenStartBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllCenStartBtn.Click Private Sub AllCenStartBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllCenStartBtn.Click
For nI As Integer = 0 To m_MachiningList.Count() - 1 For nI As Integer = 0 To m_MachiningList.Count() - 1
' se ho forzato il tipo di ingresso da CamAuto qui non posso moficarlo!
If m_MachiningList(nI).m_bMngLeadInOnIntCorner Then
EgtOutLog(" ⚠️ L'ingresso di taglio associato all'entita'_" & m_MachiningList(nI).m_nEntId & " non puo' essere modificato per problemi di ingombro lama ⚠️")
Else
EgtSetCurrMachining(m_MachiningList(nI).m_nId) EgtSetCurrMachining(m_MachiningList(nI).m_nId)
Dim nLiPrev As Integer Dim nLiPrev As Integer
EgtGetMachiningParam(MCH_MP.LEADINTYPE, nLiPrev) EgtGetMachiningParam(MCH_MP.LEADINTYPE, nLiPrev)
@@ -1230,6 +1449,9 @@ Public Class SplitPageUC
End If End If
ColorMachining(m_MachiningList(nI)) ColorMachining(m_MachiningList(nI))
ColorNumberArrow(nI) ColorNumberArrow(nI)
End If
Next Next
EgtDraw() EgtDraw()
' Imposto flag di modifica ' Imposto flag di modifica
@@ -1245,6 +1467,12 @@ Public Class SplitPageUC
End If End If
Dim nI As Integer = m_ItemList(Index).Ind Dim nI As Integer = m_ItemList(Index).Ind
If m_MachiningList(nI).m_sLay = NAME_OUTLOOP Then If m_MachiningList(nI).m_sLay = NAME_OUTLOOP Then
' se ho forzato il tipo di ingresso da CamAuto qui non posso moficarlo!
If m_MachiningList(nI).m_bMngLeadInOnIntCorner Then
EgtOutLog(" ⚠️ L'uscita di taglio associato all'entita'_" & m_MachiningList(nI).m_nEntId & " non puo' essere modificato per problemi di ingombro lama ⚠️")
Else
EgtSetCurrMachining(m_MachiningList(nI).m_nId) EgtSetCurrMachining(m_MachiningList(nI).m_nId)
Dim nLoPrev As Integer Dim nLoPrev As Integer
EgtGetMachiningParam(MCH_MP.LEADOUTTYPE, nLoPrev) EgtGetMachiningParam(MCH_MP.LEADOUTTYPE, nLoPrev)
@@ -1276,6 +1504,9 @@ Public Class SplitPageUC
ColorMachining(m_MachiningList(nI)) ColorMachining(m_MachiningList(nI))
ColorNumberArrow(nI) ColorNumberArrow(nI)
bGenModif = True bGenModif = True
End If
End If End If
Next Next
' Se modificato qualcosa ' Se modificato qualcosa
@@ -1313,6 +1544,12 @@ Public Class SplitPageUC
Private Sub AllCenEndBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllCenEndBtn.Click Private Sub AllCenEndBtn_Click(sender As Object, e As RoutedEventArgs) Handles AllCenEndBtn.Click
For nI As Integer = 0 To m_MachiningList.Count() - 1 For nI As Integer = 0 To m_MachiningList.Count() - 1
' se ho forzato il tipo di ingresso da CamAuto qui non posso moficarlo!
If m_MachiningList(nI).m_bMngLeadInOnIntCorner Then
EgtOutLog(" ⚠️ L'uscita di taglio associato all'entita'_" & m_MachiningList(nI).m_nEntId & " non puo' essere modificato per problemi di ingombro lama ⚠️")
Else
EgtSetCurrMachining(m_MachiningList(nI).m_nId) EgtSetCurrMachining(m_MachiningList(nI).m_nId)
Dim nLoPrev As Integer Dim nLoPrev As Integer
EgtGetMachiningParam(MCH_MP.LEADOUTTYPE, nLoPrev) EgtGetMachiningParam(MCH_MP.LEADOUTTYPE, nLoPrev)
@@ -1331,6 +1568,9 @@ Public Class SplitPageUC
End If End If
ColorMachining(m_MachiningList(nI)) ColorMachining(m_MachiningList(nI))
ColorNumberArrow(nI) ColorNumberArrow(nI)
End If
Next Next
EgtDraw() EgtDraw()
' Imposto flag di modifica ' Imposto flag di modifica
@@ -1408,6 +1648,12 @@ Public Class SplitPageUC
' Se taglio con lama ' Se taglio con lama
If nMachiningType = MCH_MY.SAWING And If nMachiningType = MCH_MY.SAWING And
(m_MachiningList(nI).m_bIsLine Or m_MachiningList(nI).m_dPrevAng > FL_ARC_ANG_MIN Or m_MachiningList(nI).m_sLay = NAME_ONPATH) Then (m_MachiningList(nI).m_bIsLine Or m_MachiningList(nI).m_dPrevAng > FL_ARC_ANG_MIN Or m_MachiningList(nI).m_sLay = NAME_ONPATH) Then
If Not m_MachiningList(nI).m_bCanStartAll Then
EgtOutLog(" ⚠️ Il taglio non puo' essere allungato all'interno del pezzo ⚠️")
Return
End If
' leggo il valore salvato nella geometria ' leggo il valore salvato nella geometria
Dim dOrigUsal As Double = 0 Dim dOrigUsal As Double = 0
EgtGetInfo(nOperId, INFO_MCH_USER_SAL, dOrigUsal) EgtGetInfo(nOperId, INFO_MCH_USER_SAL, dOrigUsal)
@@ -1583,6 +1829,11 @@ Public Class SplitPageUC
If nMachiningType = MCH_MY.SAWING And If nMachiningType = MCH_MY.SAWING And
(m_MachiningList(nI).m_bIsLine Or m_MachiningList(nI).m_dNextAng > FL_ARC_ANG_MIN Or m_MachiningList(nI).m_sLay = NAME_ONPATH) Then (m_MachiningList(nI).m_bIsLine Or m_MachiningList(nI).m_dNextAng > FL_ARC_ANG_MIN Or m_MachiningList(nI).m_sLay = NAME_ONPATH) Then
If Not m_MachiningList(nI).m_bCanEndAll Then
EgtOutLog(" ⚠️ Il taglio non puo' essere allungato all'interno del pezzo ⚠️")
Return
End If
Dim dOrigUeal As Double = 0 Dim dOrigUeal As Double = 0
EgtGetInfo(nOperId, INFO_MCH_USER_EAL, dOrigUeal) EgtGetInfo(nOperId, INFO_MCH_USER_EAL, dOrigUeal)
@@ -1717,7 +1968,7 @@ Public Class SplitPageUC
End If End If
Dim nI As Integer = m_ItemList(Index).Ind Dim nI As Integer = m_ItemList(Index).Ind
' Si possono invertire solo i tagli di lama ' Si possono invertire solo i tagli di lama
If m_MachiningList(nI).m_nType <> MCH_OY.SAWING Then Continue For If m_MachiningList(nI).m_nType <> MCH_OY.SAWING And m_MachiningList(nI).m_nType <> MCH_OY.WATERJETTING Then Continue For
' Non si possono invertire i tagli di lama inclinati ' Non si possono invertire i tagli di lama inclinati
If Math.Abs(m_MachiningList(nI).m_dSideAng) > 0.1 Then Continue For If Math.Abs(m_MachiningList(nI).m_dSideAng) > 0.1 Then Continue For
' Se abilitata inversione automatica e quindi non invertito ' Se abilitata inversione automatica e quindi non invertito
@@ -1731,6 +1982,7 @@ Public Class SplitPageUC
ResetEnableInvert(m_MachiningList(nI).m_nEntId) ResetEnableInvert(m_MachiningList(nI).m_nEntId)
EgtErase(m_MachiningList(nI).m_nArrId) EgtErase(m_MachiningList(nI).m_nArrId)
NumberDirectionMachining(nI, False) NumberDirectionMachining(nI, False)
UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
EgtDraw() EgtDraw()
End If End If
' se altrimenti disabilitata inversione automatica e invertito ' se altrimenti disabilitata inversione automatica e invertito
@@ -1742,6 +1994,7 @@ Public Class SplitPageUC
SwapStartEndData(nI) SwapStartEndData(nI)
EgtErase(m_MachiningList(nI).m_nArrId) EgtErase(m_MachiningList(nI).m_nArrId)
NumberDirectionMachining(nI, False) NumberDirectionMachining(nI, False)
UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
EgtDraw() EgtDraw()
End If End If
' altrimenti disabilitata inversione automatica e non invertito ' altrimenti disabilitata inversione automatica e non invertito
@@ -1780,15 +2033,26 @@ Public Class SplitPageUC
Private Sub PrevBtn_Click(sender As Object, e As RoutedEventArgs) Handles PrevBtn.Click Private Sub PrevBtn_Click(sender As Object, e As RoutedEventArgs) Handles PrevBtn.Click
' Dichiaro solo visualizzazione ' Dichiaro solo visualizzazione
m_bShow = True m_bShow = True
' Esco '' Esco
ExitSplit(False) 'ExitSplit(False)
' Torno alla fase precedente ' Torno alla fase precedente
EgtSetCurrPhase(EgtGetCurrPhase() - 1) Dim nCurrPhase As Integer = EgtGetCurrPhase()
' se questa è la prima fase, non possono tornare più indietro di così
If nCurrPhase = 1 Then
Return
End If
EgtSetCurrPhase(nCurrPhase - 1)
m_bToPrev = True
' Reimposto la precedente ' Reimposto la precedente
SplitPageUC_Loaded(Nothing, Nothing) 'SplitPageUC_Loaded(Nothing, Nothing)
' torno alla disposizione della fase corrente
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Remove(m_MainWindow.m_CadCutPageUC.m_SplitPage)
m_MainWindow.m_CadCutPageUC.CadCutPageGrid.Children.Add(m_MainWindow.m_CadCutPageUC.m_MoveRawPartPage)
m_MainWindow.m_CadCutPageUC.m_CadCutMode = CadCutPageUC.CadCutModes.MoveRawPart
End Sub End Sub
Private Sub NextBtn_Click(sender As Object, e As RoutedEventArgs) Handles NextBtn.Click Private Sub NextBtn_Click(sender As Object, e As RoutedEventArgs) Handles NextBtn.Click
' ------- VISUALIZZAZIONE (navigazione tra le fasi) -------
If m_bShow Then If m_bShow Then
Dim CurrDisposition As Integer = EgtGetPhaseDisposition(m_nCurrPhase) Dim CurrDisposition As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
' recupero l'operazione successiva ' recupero l'operazione successiva
@@ -1871,22 +2135,22 @@ Public Class SplitPageUC
NumberDirectionMachining(nI) NumberDirectionMachining(nI)
Next Next
' -------------------- Recupero le lavorazioni indicate come attive -------------------- ' -------------------- Recupero le lavorazioni indicate come attive -- INIZIO --------------------
Dim ActiveMachLst As New List(Of Integer) Dim ActiveMachLst As New List(Of Integer)
For Each ItemSplitMach As NameIdLsBxItem In m_ItemList For Each ItemSplitMach As NameIdLsBxItem In m_ItemList
ActiveMachLst.Add(ItemSplitMach.Ind) If ItemSplitMach.bIsActive Then ActiveMachLst.Add(ItemSplitMach.Ind)
Next Next
' -------------------- Recupero le lavorazioni indicate come attive -------------------- ' -------------------- Recupero le lavorazioni indicate come attive -- FINE --------------------
' Preparo la lista degli Item ' Preparo la lista degli Item
ShowMachiningList() ShowMachiningList()
' -------------------- Riattivo le lavorazioni precedenti -------------------- ' -------------------- Riattivo le lavorazioni precedenti -- INIZIO --------------------
For Each Item As SplitMach In m_MachiningList For Each Item As SplitMach In m_MachiningList
' spengo tutte le lavorazioni disponibili
EgtSetInfo(Item.m_nId, INFO_MCH_USER_OFF, True) EgtSetInfo(Item.m_nId, INFO_MCH_USER_OFF, True)
Next Next
' riattivo solo quelle indicate come attive
For nIndex As Integer = 0 To ActiveMachLst.Count - 1 For nIndex As Integer = 0 To ActiveMachLst.Count - 1
For Each ItemSplitMach As NameIdLsBxItem In m_ItemList For Each ItemSplitMach As NameIdLsBxItem In m_ItemList
If ItemSplitMach.Ind = ActiveMachLst(nIndex) Then If ItemSplitMach.Ind = ActiveMachLst(nIndex) Then
@@ -1899,7 +2163,7 @@ Public Class SplitPageUC
End If End If
Next Next
Next Next
' -------------------- Riattivo le lavorazioni precedenti -------------------- ' -------------------- Riattivo le lavorazioni precedenti -- FINE --------------------
' Aggiorno visualizzazione ' Aggiorno visualizzazione
EgtDraw() EgtDraw()
@@ -1910,7 +2174,7 @@ Public Class SplitPageUC
Private Sub SplitPageUC_Unloaded(sender As Object, e As EventArgs) Handles Me.Unloaded Private Sub SplitPageUC_Unloaded(sender As Object, e As EventArgs) Handles Me.Unloaded
m_bActive = False m_bActive = False
m_MainWindow.m_CurrentProjectPageUC.ClearMessage() m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
ExitSplit(Not m_bToNext) ExitSplit(Not m_bToNext And Not m_bToPrev)
EgtDraw() EgtDraw()
End Sub End Sub
@@ -1929,22 +2193,7 @@ Public Class SplitPageUC
EgtEnableModified() EgtEnableModified()
' se modificato salvo ordine e stato delle lavorazioni ' se modificato salvo ordine e stato delle lavorazioni
If m_bModified Then If m_bModified Then
' Al primo posto deve rimanere la disposizione della fase SaveOrderMachinig(m_nCurrPhase)
Dim nFirstOperId As Integer = EgtGetPhaseDisposition(m_nCurrPhase)
For i As Integer = m_ItemList.Count() - 1 To 0 Step -1
Dim nI As Integer = m_ItemList(i).Ind
Dim nMchId As Integer = m_MachiningList(nI).m_nId
EgtRelocate(nMchId, nFirstOperId, GDB_POS.AFTER)
If m_MachiningList(nI).m_bEnabled Then
EgtSetOperationMode(m_MachiningList(nI).m_nId, True)
EgtRemoveInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_OFF)
Else
EgtSetOperationMode(m_MachiningList(nI).m_nId, False)
EgtSetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_OFF, True)
End If
Next
' dichiaro ordine salvato
m_MainWindow.m_CurrentProjectPageUC.SetOrderMachiningFlag()
End If End If
' Affondamento ridotto ' Affondamento ridotto
Dim dReducedDepth As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_REDUCEDDEPTH, 1, m_MainWindow.GetMachIniFile()) Dim dReducedDepth As Double = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_REDUCEDDEPTH, 1, m_MainWindow.GetMachIniFile())
@@ -1968,6 +2217,25 @@ Public Class SplitPageUC
End If End If
End Sub End Sub
Friend Sub SaveOrderMachinig(CurrPhase As Integer)
' Al primo posto deve rimanere la disposizione della fase
Dim nFirstOperId As Integer = EgtGetPhaseDisposition(CurrPhase)
For i As Integer = m_ItemList.Count() - 1 To 0 Step -1
Dim nI As Integer = m_ItemList(i).Ind
Dim nMchId As Integer = m_MachiningList(nI).m_nId
EgtRelocate(nMchId, nFirstOperId, GDB_POS.AFTER)
If m_MachiningList(nI).m_bEnabled Then
EgtSetOperationMode(m_MachiningList(nI).m_nId, True)
EgtRemoveInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_OFF)
Else
EgtSetOperationMode(m_MachiningList(nI).m_nId, False)
EgtSetInfo(m_MachiningList(nI).m_nId, INFO_MCH_USER_OFF, True)
End If
Next
' dichiaro ordine salvato
m_MainWindow.m_CurrentProjectPageUC.SetOrderMachiningFlag()
End Sub
Friend Function GetDisabledCutsCount() As Integer Friend Function GetDisabledCutsCount() As Integer
' Determino il numero di tagli disabilitati ' Determino il numero di tagli disabilitati
Dim nCount As Integer = 0 Dim nCount As Integer = 0
@@ -2032,7 +2300,7 @@ Public Class SplitPageUC
NextBtn.IsEnabled = (GetDisabledCutsCount() > 0 And GetSplitCutsCount() = 1) NextBtn.IsEnabled = (GetDisabledCutsCount() > 0 And GetSplitCutsCount() = 1)
' Altrimenti ' Altrimenti
Else Else
' movimento standard sulla tavola (almeno un taglio disabilitato) ' movimento standard sulla tavola (almeno un taglio disabilitato allora False)
Dim bStdTab As Boolean = (GetDisabledCutsCount() > 0) Dim bStdTab As Boolean = (GetDisabledCutsCount() > 0)
' movimento su tavola di scarico ' movimento su tavola di scarico
m_bOnAuxTab = Not bStdTab AndAlso (m_nCurrPhase = EgtGetPhaseCount() And m_bEnableOnAuxTab) m_bOnAuxTab = Not bStdTab AndAlso (m_nCurrPhase = EgtGetPhaseCount() And m_bEnableOnAuxTab)
@@ -2093,6 +2361,33 @@ Public Class SplitPageUC
End Sub End Sub
Private Sub OnOffCut()
If MachiningLsBx.SelectedItems.Count = 1 Then
Dim x As NameIdLsBxItem = DirectCast(MachiningLsBx.SelectedItems(0), NameIdLsBxItem)
Dim nI As Integer = x.Ind
If m_MachiningList(nI).m_bEnabled Then
m_MachiningList(nI).m_bEnabled = False
x.bIsActive = False
Else
m_MachiningList(nI).m_bEnabled = True
x.bIsActive = True
End If
ColorMachining(m_MachiningList(nI))
ColorNumberArrow(nI)
EgtDraw()
' Imposto flag di modifica
m_bModified = True
' recupero l'elenco degli elementi selezionati
Dim ItemList As New List(Of NameIdLsBxItem)
For Each Item As NameIdLsBxItem In MachiningLsBx.SelectedItems
ItemList.Add(Item)
Next
VerifyHomogenousMachining(ItemList)
' Abilitazione bottone Next
EnableButtons()
End If
End Sub
Private Sub VerifyHomogenousMachining(ItemList As List(Of NameIdLsBxItem)) Private Sub VerifyHomogenousMachining(ItemList As List(Of NameIdLsBxItem))
If IsNothing(ItemList) OrElse ItemList.Count = 0 Then If IsNothing(ItemList) OrElse ItemList.Count = 0 Then
m_MainWindow.m_CurrentProjectPageUC.ClearMessage() m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
@@ -2198,6 +2493,7 @@ Public Class SplitPageUC
' gestione bottone per generazione ponticelli ' gestione bottone per generazione ponticelli
If Type = MCH_OY.WATERJETTING Then If Type = MCH_OY.WATERJETTING Then
InvertBtn.Visibility = Visibility.Visible
' siccome la stessa posizione è occupata da due comandi sovrapposti ' siccome la stessa posizione è occupata da due comandi sovrapposti
If CutStartBtn.Visibility = Visibility.Hidden Then If CutStartBtn.Visibility = Visibility.Hidden Then
BridgesWJBtn.Visibility = Visibility.Visible BridgesWJBtn.Visibility = Visibility.Visible
@@ -2273,6 +2569,11 @@ Public Class SplitPageUC
' Aggiungo a numero info con identificativo della lavorazione e viceversa ' Aggiungo a numero info con identificativo della lavorazione e viceversa
EgtSetInfo(nNbrId, "MId", m_MachiningList(nI).m_nId) EgtSetInfo(nNbrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo(m_MachiningList(nI).m_nId, "NbrId", nNbrId) EgtSetInfo(m_MachiningList(nI).m_nId, "NbrId", nNbrId)
If Not LayNbArrTgBtn.IsChecked Then
EgtSetStatus(nNbrId, GDB_ST.OFF)
Else
EgtSetStatus(nNbrId, GDB_ST.ON_)
End If
End If End If
' Se taglio con lama, metto la direzione accanto al numero ' Se taglio con lama, metto la direzione accanto al numero
If m_MachiningList(nI).m_nType = MCH_OY.SAWING Then If m_MachiningList(nI).m_nType = MCH_OY.SAWING Then
@@ -2284,6 +2585,11 @@ Public Class SplitPageUC
' Aggiungo a freccia info con identificativo della lavorazione e viceversa ' Aggiungo a freccia info con identificativo della lavorazione e viceversa
EgtSetInfo(nArrId, "MId", m_MachiningList(nI).m_nId) EgtSetInfo(nArrId, "MId", m_MachiningList(nI).m_nId)
EgtSetInfo(m_MachiningList(nI).m_nId, "ArrId", nArrId) EgtSetInfo(m_MachiningList(nI).m_nId, "ArrId", nArrId)
If Not LayNbArrTgBtn.IsChecked Then
EgtSetStatus(nArrId, GDB_ST.OFF)
Else
EgtSetStatus(nArrId, GDB_ST.ON_)
End If
Else Else
m_MachiningList(nI).m_nArrId = GDB_ID.NULL m_MachiningList(nI).m_nArrId = GDB_ID.NULL
End If End If
@@ -2400,6 +2706,27 @@ Public Class SplitPageUC
EgtResetMark(nNbrId) EgtResetMark(nNbrId)
EgtResetMark(nArrId) EgtResetMark(nArrId)
End If End If
If Not LayNbArrTgBtn.IsChecked And Not bMark Then
EgtSetStatus(nNbrId, GDB_ST.OFF)
EgtSetStatus(nArrId, GDB_ST.OFF)
Else
EgtSetStatus(nNbrId, GDB_ST.ON_)
EgtSetStatus(nArrId, GDB_ST.ON_)
End If
End Sub
Private Sub StatusOffNumbArrow(Status As GDB_ST)
For Each Item As SplitMach In m_MachiningList
Dim nOperId As Integer = Item.m_nId
Dim nNbrId As Integer = Item.m_nNbrId
Dim nArrId As Integer = Item.m_nArrId
Dim nInd As Integer = m_MachiningList.IndexOf(Item)
If nInd >= 0 AndAlso nInd < m_ItemList.Count AndAlso Not m_ItemList(nInd).IsSelected Then
EgtSetStatus(nNbrId, Status)
EgtSetStatus(nArrId, Status)
End If
Next
EgtDraw()
End Sub End Sub
Private Sub ColorNumberArrow(nI As Integer) Private Sub ColorNumberArrow(nI As Integer)
@@ -2490,6 +2817,10 @@ Public Class SplitPageUC
Private m_sName As String Private m_sName As String
Private m_bIsActive As Boolean Private m_bIsActive As Boolean
Private m_nType As Integer Private m_nType As Integer
' Posizione porta utensile (parametro non obbligatorio)
Private m_sTCPos As String = ""
Private m_cSawColor As SolidColorBrush
Private m_bMachiningTCPosVisibility As Visibility = Visibility.Hidden
Private m_IsSelected As Boolean Private m_IsSelected As Boolean
@@ -2514,6 +2845,31 @@ Public Class SplitPageUC
End Set End Set
End Property End Property
'!!!!!!!!!!!!!!!!!!!!
Public Property TCPos As String
Get
Return m_sTCPos
End Get
Set(value As String)
If value <> m_sTCPos Then
m_sTCPos = value
NotifyPropertyChanged("TCPos")
End If
End Set
End Property
'!!!!!!!!!!!!!!!!!!!!
Public Property SawColor As SolidColorBrush
Get
Return m_cSawColor
End Get
Set(value As SolidColorBrush)
m_cSawColor = value
NotifyPropertyChanged("SawColor")
End Set
End Property
Public Property bIsActive As Boolean Public Property bIsActive As Boolean
Get Get
Return m_bIsActive Return m_bIsActive
@@ -2544,11 +2900,34 @@ Public Class SplitPageUC
End Set End Set
End Property End Property
Public Property MachiningTCPosVisibility As Visibility
Get
Return m_bMachiningTCPosVisibility
End Get
Set(value As Visibility)
If value <> m_bMachiningTCPosVisibility Then
m_bMachiningTCPosVisibility = value
NotifyPropertyChanged("MachiningTCPosVisibility")
End If
End Set
End Property
Sub New(Name As String, Ind As Integer, bIsActive As Boolean, nType As Integer) Sub New(Name As String, Ind As Integer, bIsActive As Boolean, nType As Integer)
Me.m_sName = Name Me.m_sName = Name
Me.m_nInd = Ind Me.m_nInd = Ind
Me.m_bIsActive = bIsActive Me.m_bIsActive = bIsActive
Me.m_nType = nType Me.m_nType = nType
Me.m_bMachiningTCPosVisibility = Visibility.Hidden
End Sub
Sub New(Name As String, Ind As Integer, bIsActive As Boolean, nType As Integer, sTCPos As String, cSawColor As SolidColorBrush)
Me.m_sName = Name
Me.m_nInd = Ind
Me.m_bIsActive = bIsActive
Me.m_nType = nType
Me.m_sTCPos = sTCPos
Me.m_cSawColor = cSawColor
Me.m_bMachiningTCPosVisibility = Visibility.Visible
End Sub End Sub
Public Sub NotifyPropertyChanged(propName As String) Public Sub NotifyPropertyChanged(propName As String)
+75 -29
View File
@@ -1,5 +1,6 @@
Imports EgtUILib Imports EgtUILib
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Imports System.Threading
Module VacuumCups Module VacuumCups
' Tipo manipolatore con ventosa (0=assente, 1=dietro, 2=laterale) ' Tipo manipolatore con ventosa (0=assente, 1=dietro, 2=laterale)
@@ -31,6 +32,19 @@ Module VacuumCups
' Nome del gruppo temporaneo per le ventose ' Nome del gruppo temporaneo per le ventose
Private Const VACTMP_GRP As String = "VacTmp" Private Const VACTMP_GRP As String = "VacTmp"
Private m_sHeadName As String = VACUUM_HEAD
Public Sub ResetHeadName()
Dim bReload As Boolean = (m_sHeadName <> VACUUM_HEAD)
m_sHeadName = VACUUM_HEAD
If bReload Then LoadVacuumCups()
End Sub
Public Function ChangeHeadName() As Boolean
If EgtGetHeadId( VACUUM_HEAD_2) = GDB_ID.NULL Then Return False
m_sHeadName = If( m_sHeadName = VACUUM_HEAD, VACUUM_HEAD_2, VACUUM_HEAD)
LoadVacuumCups()
Return True
End Function
'----------------------------------------------------------------------------------------------- '-----------------------------------------------------------------------------------------------
Friend Class RawMoveData Friend Class RawMoveData
@@ -87,17 +101,17 @@ Module VacuumCups
Friend Function LoadVacuumCups() As Boolean Friend Function LoadVacuumCups() As Boolean
' Leggo tipo manipolatore con ventosa ' Leggo tipo manipolatore con ventosa
m_nVacType = 0 m_nVacType = 0
EgtGetInfo(EgtGetHeadId(VACUUM_HEAD), KEY_VAC_TYPE, m_nVacType) EgtGetInfo(EgtGetHeadId(m_sHeadName), KEY_VAC_TYPE, m_nVacType)
' Cancello eventuali vecchie ventose ' Cancello eventuali vecchie ventose
RemoveVacuumCups() RemoveVacuumCups()
' Identificativo ventose nella macchina ' Identificativo ventose nella macchina
Dim nLayId As Integer = EgtGetFirstNameInGroup(EgtGetHeadId(VACUUM_HEAD), VACUUM_HEAD_LAYOUT) Dim nLayId As Integer = EgtGetFirstNameInGroup(EgtGetHeadId(m_sHeadName), VACUUM_HEAD_LAYOUT)
If nLayId = GDB_ID.NULL Then Return False If nLayId = GDB_ID.NULL Then Return False
' Identificativo riferimento della testa nella macchina ' Identificativo riferimento della testa nella macchina
Dim nT1Id As Integer = EgtGetFirstNameInGroup(EgtGetHeadId(VACUUM_HEAD), HEAD_FIRST_EXIT) Dim nT1Id As Integer = EgtGetFirstNameInGroup(EgtGetHeadId(m_sHeadName), HEAD_FIRST_EXIT)
If nT1Id = GDB_ID.NULL Then Return False If nT1Id = GDB_ID.NULL Then Return False
' imposto la l'uscita della ventosa come fosse l'uscita di un utensile ' imposto la l'uscita della ventosa come fosse l'uscita di un utensile
EgtSetCalcTool("", "H4", 1) EgtSetCalcTool("", m_sHeadName, 1)
' Creo gruppo temporaneo in cui copiarli ' Creo gruppo temporaneo in cui copiarli
m_nTempId = EgtCreateGroup(GDB_ID.ROOT) m_nTempId = EgtCreateGroup(GDB_ID.ROOT)
If m_nTempId = GDB_ID.NULL Then Return False If m_nTempId = GDB_ID.NULL Then Return False
@@ -107,14 +121,14 @@ Module VacuumCups
m_nVacId = EgtCopyGlob(nLayId, m_nTempId) m_nVacId = EgtCopyGlob(nLayId, m_nTempId)
If m_nVacId = GDB_ID.NULL Then Return False If m_nVacId = GDB_ID.NULL Then Return False
' Angolo di rotazione preferito ' 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 ' 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_PREFVROTXMINUS, m_dPrefVertRotXMinus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTXPLUS, m_dPrefVertRotXPlus) EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTXPLUS, m_dPrefVertRotXPlus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYMINUS, m_dPrefVertRotYMinus) EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYMINUS, m_dPrefVertRotYMinus)
EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYPLUS, m_dPrefVertRotYPlus) EgtGetInfo(m_nVacId, KEY_VACLAY_PREFVROTYPLUS, m_dPrefVertRotYPlus)
' Direzione di riferimento per tagli Drip ' Direzione di riferimento per tagli Drip
EgtGetInfo( m_nVacId, KEY_VACLAY_DRIPREFDIR, m_dDripRefAng) EgtGetInfo(m_nVacId, KEY_VACLAY_DRIPREFDIR, m_dDripRefAng)
' Nascondo il gruppo ma rendo visibili le curve di contorno delle ventose ' Nascondo il gruppo ma rendo visibili le curve di contorno delle ventose
EgtSetStatus(m_nVacId, GDB_ST.OFF) EgtSetStatus(m_nVacId, GDB_ST.OFF)
Dim nId As Integer = EgtGetFirstInGroup(m_nVacId) Dim nId As Integer = EgtGetFirstInGroup(m_nVacId)
@@ -152,7 +166,7 @@ Module VacuumCups
Friend Function ResetVacuumCups() As Boolean Friend Function ResetVacuumCups() As Boolean
' Ripristino posizione e rotazione originali ' Ripristino posizione e rotazione originali
Dim frOriRef As New Frame3d Dim frOriRef As New Frame3d
EgtFrame(EgtGetFirstNameInGroup(EgtGetHeadId(VACUUM_HEAD), HEAD_FIRST_EXIT), GDB_ID.ROOT, frOriRef) EgtFrame(EgtGetFirstNameInGroup(EgtGetHeadId(m_sHeadName), HEAD_FIRST_EXIT), GDB_ID.ROOT, frOriRef)
Dim frCurrRef As New Frame3d Dim frCurrRef As New Frame3d
EgtFrame(m_nRefId, GDB_ID.ROOT, frCurrRef) EgtFrame(m_nRefId, GDB_ID.ROOT, frCurrRef)
EgtMove(m_nVacId, frOriRef.Orig() - frCurrRef.Orig(), GDB_RT.GLOB) EgtMove(m_nVacId, frOriRef.Orig() - frCurrRef.Orig(), GDB_RT.GLOB)
@@ -207,14 +221,17 @@ Module VacuumCups
EgtSurfFrGrossArea(nRKerfId, RawArea) EgtSurfFrGrossArea(nRKerfId, RawArea)
' volume calcolato in mmc ' volume calcolato in mmc
Dim RawVolume As Double = RawArea * b3Raw.DimZ() Dim RawVolume As Double = RawArea * b3Raw.DimZ()
' peso calolato in kg ' peso calcolato in kg
m_RawWeight = RawVolume * m_RawDensity / Math.Pow(10, 9) m_RawWeight = RawVolume * m_RawDensity / Math.Pow(10, 9)
'-------------------- FINE CALCOLO PESO -------------------- '-------------------- FINE CALCOLO PESO --------------------
' Eseguo ricerca ' Eseguo ricerca
If FindVacuumCupsOnRaw(nRawId, ptRawCen, b3Kerf, ptKerfCen, nKerfId, nRKerfId, rmData) Then If FindVacuumCupsOnRaw(nRawId, ptRawCen, b3Kerf, ptKerfCen, nKerfId, nRKerfId, rmData) Then
Return True Return True
Else
If ChangeHeadName() Then Return False
End If End If
' In caso di fallimento, provo riducendo con offset la regione di kerf ' In caso di fallimento, provo riducendo con offset la regione di kerf
' (così si simula la proiezione del centro sul MAT - medial axis transform) ' (così si simula la proiezione del centro sul MAT - medial axis transform)
Dim bOkFind As Boolean = False Dim bOkFind As Boolean = False
@@ -241,18 +258,18 @@ Module VacuumCups
' Verifico sia veramente un pezzo ' Verifico sia veramente un pezzo
If EgtGetRawPartFromPart(nPartId) = GDB_ID.NULL Then Return False If EgtGetRawPartFromPart(nPartId) = GDB_ID.NULL Then Return False
' Cerco la direzione del primo taglio attivo da sotto ' Cerco la direzione del primo taglio attivo da sotto
Dim nDripLayId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_DRIPCUT) Dim nDripLayId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_DRIPCUT)
Dim nDripLineId As Integer = EgtGetFirstInGroup( nDripLayId) Dim nDripLineId As Integer = EgtGetFirstInGroup(nDripLayId)
While nDripLineId <> GDB_ID.NULL While nDripLineId <> GDB_ID.NULL
Dim nMchId As Integer = EgtGetOperationId( "DripSaw" & nDripLineId.ToString()) Dim nMchId As Integer = EgtGetOperationId("DripSaw" & nDripLineId.ToString())
Dim nMode As Integer Dim nMode As Integer
If EgtGetMode( nMchId, nMode) AndAlso nMode = GDB_MD.STD Then Exit While If EgtGetMode(nMchId, nMode) AndAlso nMode = GDB_MD.STD Then Exit While
nDripLineId = EgtGetNext( nDripLineId) nDripLineId = EgtGetNext(nDripLineId)
End While End While
Dim vtDir As New Vector3d Dim vtDir As New Vector3d
if EgtStartVector( nDripLineId, GDB_ID.ROOT, vtDir) Then If EgtStartVector(nDripLineId, GDB_ID.ROOT, vtDir) Then
Dim dLen, dAngV, dAngH As Double Dim dLen, dAngV, dAngH As Double
vtDir.ToSpherical( dLen, dAngV, dAngH) vtDir.ToSpherical(dLen, dAngV, dAngH)
Dim dOffsAng = dAngH - m_dDripRefAng Dim dOffsAng = dAngH - m_dDripRefAng
While dOffsAng - m_dPreferredRot >= 90 While dOffsAng - m_dPreferredRot >= 90
dOffsAng -= 180 dOffsAng -= 180
@@ -388,7 +405,7 @@ Module VacuumCups
Private Function GetVacRotAxisSteps(ByRef vAngRot As List(Of Double)) As Boolean Private Function GetVacRotAxisSteps(ByRef vAngRot As List(Of Double)) As Boolean
' Recupero l'asse rotante della testa ventosa ' Recupero l'asse rotante della testa ventosa
Dim nRotAxId As Integer = EgtGetParent(EgtGetHeadId(VACUUM_HEAD)) Dim nRotAxId As Integer = EgtGetParent(EgtGetHeadId(m_sHeadName))
' Verifico se contiene info con STEPS ' Verifico se contiene info con STEPS
Dim sSteps As String = "" Dim sSteps As String = ""
If Not EgtGetInfo(nRotAxId, KEY_ROTVAC_STEPS, sSteps) Then Return False If Not EgtGetInfo(nRotAxId, KEY_ROTVAC_STEPS, sSteps) Then Return False
@@ -493,11 +510,11 @@ Module VacuumCups
' Ordino secondo distanza angolare crescente da direzione di allineamento (modulo 180 deg) ' Ordino secondo distanza angolare crescente da direzione di allineamento (modulo 180 deg)
Dim dRotRefDeg As Double = dRotAngDeg Dim dRotRefDeg As Double = dRotAngDeg
vAngRot.Sort(Function(P, Q) vAngRot.Sort(Function(P, Q)
Dim dDiffP = Math.Abs( P - dRotRefDeg) Dim dDiffP = Math.Abs(P - dRotRefDeg)
If Math.Abs( dDiffP - 180) < 10 * EPS_ANG_SMALL Then dDiffP = 1 If Math.Abs(dDiffP - 180) < 10 * EPS_ANG_SMALL Then dDiffP = 1
Dim dDiffQ = Math.Abs( Q - dRotRefDeg) Dim dDiffQ = Math.Abs(Q - dRotRefDeg)
If Math.Abs( dDiffQ - 180) < 10 * EPS_ANG_SMALL Then dDiffQ = 1 If Math.Abs(dDiffQ - 180) < 10 * EPS_ANG_SMALL Then dDiffQ = 1
Return ( dDiffP - dDiffQ) Return (dDiffP - dDiffQ)
End Function) End Function)
' Annullo la rotazione di allineamento ' Annullo la rotazione di allineamento
dRotAngDeg = 0 dRotAngDeg = 0
@@ -546,16 +563,45 @@ Module VacuumCups
Return True Return True
End Function End Function
' assegante le posizioni del centro delle ventose e l'angolo di posizionamento orizzontale verifica che la posizione sia raggiungibile ' assegnate le posizioni del centro delle ventose e l'angolo di posizionamento orizzontale verifica che la posizione sia raggiungibile
Public Function VerifyOutOfStrokes(ptRef As Point3d, dRotAngDeg As Double) As Integer Public Function VerifyOutOfStrokes(ptRef As Point3d, dRotAngDeg As Double) As Integer
Dim sAxisName As String = "C"
' verifico che il nome dell'asse impostato sia corretto
If EgtGetAxisId(sAxisName) = GDB_ID.NULL Then
If m_sHeadName = VACUUM_HEAD Then
sAxisName = "C1"
Else
sAxisName = "C2"
End If
End If
' Posizione Home dell'asse rotante
Dim dCHome As Double
EgtGetAxisHomePos(sAxisName, dCHome)
' Corse dell'asse
Dim dCMin As Double
EgtGetAxisMin(sAxisName, dCMin)
Dim dCMax As Double
EgtGetAxisMax(sAxisName, dCMax)
' Porto l'angolo nel range
Dim dRotAngMachDeg As Double = dRotAngDeg + dCHome
AdjustAngleInRange(dRotAngMachDeg, dCMin, dCMax)
' Imposto la ventosa come fosse un utensile
EgtSetCalcTool("", m_sHeadName, 1)
' Calcolo gli assi macchina
Dim dX, dY, dZ As Double Dim dX, dY, dZ As Double
Dim nStat As Integer Dim nStat As Integer
Dim dCHome As Double If EgtGetAxisId("A") <> GDB_ID.NULL Then
EgtGetAxisHomePos("C", dCHome) ' Asse tavola rotante (movimenti solo con A0)
' imposto la l'uscita della ventosa come fosse l'uscita di un utensile EgtGetCalcPositions(ptRef, 0, dRotAngMachDeg, nStat, dX, dY, dZ)
EgtSetCalcTool("", "H4", 1) ' Verifico le corse
EgtGetCalcPositions(ptRef, dRotAngDeg + dCHome, 0, nStat, dX, dY, dZ) EgtVerifyOutstroke(dX, dY, dZ, 0, dRotAngMachDeg, nStat)
EgtVerifyOutstroke(dX, dY, dZ, dRotAngDeg + dCHome, 0, nStat) Else
EgtGetCalcPositions(ptRef, dRotAngMachDeg, 0, nStat, dX, dY, dZ)
' Verifico le corse
EgtVerifyOutstroke(dX, dY, dZ, dRotAngMachDeg, 0, nStat)
End If
Return nStat Return nStat
End Function End Function
+15
View File
@@ -84,6 +84,11 @@ Module ConstGen
' Nome testa con ventose per spostamento pezzi ' Nome testa con ventose per spostamento pezzi
Public Const VACUUM_HEAD As String = "H4" Public Const VACUUM_HEAD As String = "H4"
Public Const VACUUM_HEAD_2 As String = "H104"
' Nome teste laser
Public Const LASER_HEAD As String = "H3"
Public Const LASER_HEAD_2 As String = "H103"
' Info tipo ventosa ' Info tipo ventosa
Public Const KEY_VAC_TYPE As String = "VacType" Public Const KEY_VAC_TYPE As String = "VacType"
' Nome gruppo layout in testa con ventose ' Nome gruppo layout in testa con ventose
@@ -152,6 +157,8 @@ Module ConstGen
' Info per identificazione gruppo pezzi ' Info per identificazione gruppo pezzi
Public Const INFO_REFGROUP As String = "RefGroup" Public Const INFO_REFGROUP As String = "RefGroup"
Public Const INFO_COUNTERLY As String = "CounterPz" Public Const INFO_COUNTERLY As String = "CounterPz"
Public Const INFO_PARKIND As String = "ParkInd"
Public Const INFO_PARKSTATUS As String = "ParkStatus"
' Contrassegno di progetto OmagCut ' Contrassegno di progetto OmagCut
Public Const NAME_PROJMARK As String = "OmagCut" Public Const NAME_PROJMARK As String = "OmagCut"
@@ -189,6 +196,8 @@ Module ConstGen
Public Const INFO_TOPRODAREA As String = "ToProdArea" Public Const INFO_TOPRODAREA As String = "ToProdArea"
' Info per nome progetti ' Info per nome progetti
Public Const INFO_PROJNAME As String = "ProjName" Public Const INFO_PROJNAME As String = "ProjName"
' Info per parcheggio asse C
Public Const INFO_CAXESHOME As String = "CAxesHome"
' Nome layer delle regioni ' Nome layer delle regioni
Public Const NAME_REGION As String = "Region" Public Const NAME_REGION As String = "Region"
@@ -216,6 +225,8 @@ Module ConstGen
Public Const INFO_DEPTH2 As String = "Depth2" Public Const INFO_DEPTH2 As String = "Depth2"
Public Const INFO_AGG2 As String = "Agg2" Public Const INFO_AGG2 As String = "Agg2"
Public Const INFO_ROUNDOFF As String = "RoundOff" Public Const INFO_ROUNDOFF As String = "RoundOff"
Public Const INFO_DIRECTCUT As String = "DirectCut"
Public Const INFO_STEP_TYPE As String = "StepType"
' Info in entità da tagliare per taglio ristretto ' Info in entità da tagliare per taglio ristretto
Public Const INFO_STRICT As String = "Strict" Public Const INFO_STRICT As String = "Strict"
' Info in entità da tagliare per angolo di lato e tallone ' Info in entità da tagliare per angolo di lato e tallone
@@ -311,6 +322,10 @@ Module ConstGen
Public Const INFO_AUX_SPLIT_WJ As String = "AUX_SPLIT_WJ" Public Const INFO_AUX_SPLIT_WJ As String = "AUX_SPLIT_WJ"
' Info in OutLoop per punto inzio lavorazione WaterJet ' Info in OutLoop per punto inzio lavorazione WaterJet
Public Const INFO_START As String = "Start" Public Const INFO_START As String = "Start"
' Nome dei tagli diretti inseriti in fase di Splitting
Public Const SPLIT_CUT As String = "SplitCut"
' Forzo specifica lavorazione
Public Const DEF_MACHINING As String = "Def_Machining"
' Nome di pezzo che è una cornice ' Nome di pezzo che è una cornice
Public Const NAME_FRAME As String = "Frame" Public Const NAME_FRAME As String = "Frame"
+23 -1
View File
@@ -19,6 +19,7 @@ Module ConstIni
Public Const K_DEBUG As String = "Debug" Public Const K_DEBUG As String = "Debug"
Public Const K_LICENCE As String = "Licence" Public Const K_LICENCE As String = "Licence"
Public Const K_NETKEY As String = "NetKey" Public Const K_NETKEY As String = "NetKey"
Public Const K_LOCKID As String = "LockId"
Public Const K_MESSAGESDIR As String = "MessagesDir" Public Const K_MESSAGESDIR As String = "MessagesDir"
Public Const K_MESSAGES As String = "Messages" Public Const K_MESSAGES As String = "Messages"
Public Const K_SUPPORT As String = "Support" Public Const K_SUPPORT As String = "Support"
@@ -52,7 +53,10 @@ Module ConstIni
Public Const K_GENERATECN As String = "GenerateCN" Public Const K_GENERATECN As String = "GenerateCN"
Public Const K_FRACTIONPATTERN As String = "FractionPattern" Public Const K_FRACTIONPATTERN As String = "FractionPattern"
Public Const K_PRECISION As String = "Precision" Public Const K_PRECISION As String = "Precision"
Public Const K_QUITDRAWPAGE As String = "QuitDrawPage"
Public Const K_SHOWNBARROW As String = "ShowNbArrow"
Public Const K_SHOWEXPIREASSITANCE As String = "ShowExpireAssistance"
Public Const K_ENABLEDXFPARK As String = "EnableDXFPark"
Public Const S_LANGUAGES As String = "Languages" Public Const S_LANGUAGES As String = "Languages"
Public Const K_LANGUAGE As String = "Language" Public Const K_LANGUAGE As String = "Language"
@@ -86,6 +90,7 @@ Module ConstIni
Public Const K_TEXMAXLINPIX As String = "TextureMaxLinPixels" Public Const K_TEXMAXLINPIX As String = "TextureMaxLinPixels"
Public Const K_ZOOMWIN As String = "ZoomWin" Public Const K_ZOOMWIN As String = "ZoomWin"
Public Const K_DISTLINE As String = "DistLine" Public Const K_DISTLINE As String = "DistLine"
Public Const K_ORTOGRAPHIC As String = "OrtoGraphic"
Public Const S_ALZFRONT As String = "Alz&Front" Public Const S_ALZFRONT As String = "Alz&Front"
Public Const K_ALZFRONT As String = "Alz&Front" Public Const K_ALZFRONT As String = "Alz&Front"
@@ -116,6 +121,8 @@ Module ConstIni
Public Const K_LASTCOLOR As String = "LastColor" Public Const K_LASTCOLOR As String = "LastColor"
Public Const K_COLOR As String = "Color" Public Const K_COLOR As String = "Color"
Public Const S_FRAMECOMPO As String = "FrameCompo"
Public Const S_EXTCOMPO As String = "Compo" Public Const S_EXTCOMPO As String = "Compo"
Public Const S_INTCOMPO As String = "InternalCompo" Public Const S_INTCOMPO As String = "InternalCompo"
@@ -204,6 +211,8 @@ Module ConstIni
Public Const K_OFFSZ As String = "OffsZ" Public Const K_OFFSZ As String = "OffsZ"
Public Const K_OFFSXY As String = "OffsXY" Public Const K_OFFSXY As String = "OffsXY"
Public Const K_OFFSYY As String = "OffsYY" Public Const K_OFFSYY As String = "OffsYY"
Public Const K_OFFSXINTERY As String = "OffsYInterY"
Public Const K_OFFSXINTERYSAWTH As String = "OffsYInterYSawTh"
Public Const K_STARTTRIM As String = "StartTrim" Public Const K_STARTTRIM As String = "StartTrim"
Public Const K_ENDTRIM As String = "EndTrim" Public Const K_ENDTRIM As String = "EndTrim"
Public Const K_OTHERSIDE As String = "OtherSide" Public Const K_OTHERSIDE As String = "OtherSide"
@@ -223,9 +232,18 @@ Module ConstIni
Public Const K_RAWOFFSX As String = "OffsX" Public Const K_RAWOFFSX As String = "OffsX"
Public Const K_RAWOFFSY As String = "OffsY" Public Const K_RAWOFFSY As String = "OffsY"
Public Const K_RAWKERF As String = "Kerf" Public Const K_RAWKERF As String = "Kerf"
Public Const K_ENABLEOTHERREFTAB As String = "EnableOtherRefTab"
Public Const K_OTHERREFTAB As String = "OtherRefTab"
Public Const K_OTHERREFTABX As String = "OtherRefTabX"
Public Const K_OTHERREFTABY As String = "OtherRefTabY"
Public Const K_OTHERREFTABPOS As String = "OtherRefTabPos"
Public Const K_REFTAB As String = "RefTab"
Public Const K_CURRENTREFTAB As String = "CurrRefTab"
Public Const S_RAWMOVE As String = "RawMove" Public Const S_RAWMOVE As String = "RawMove"
Public Const K_RAWSTEP As String = "Step" Public Const K_RAWSTEP As String = "Step"
Public Const K_EXTRASTEP As String = "ExtraStep"
Public Const K_RAWROTATION As String = "Rotation" Public Const K_RAWROTATION As String = "Rotation"
Public Const K_PERPENDICULAR As String = "Perpendicular" Public Const K_PERPENDICULAR As String = "Perpendicular"
@@ -277,6 +295,8 @@ Module ConstIni
Public Const S_VEINMATCHING As String = "VeinMatching" Public Const S_VEINMATCHING As String = "VeinMatching"
Public Const K_VEINMA_ENABLE As String = "Enable" Public Const K_VEINMA_ENABLE As String = "Enable"
Public Const K_VEINMA_PLACE As String = "WinPlace" Public Const K_VEINMA_PLACE As String = "WinPlace"
Public Const K_VEINMA_WIDTH As String = "Width"
Public Const K_VEINMA_HEIGHT As String = "Height"
Public Const S_FASTGRID As String = "FastGrid" Public Const S_FASTGRID As String = "FastGrid"
Public Const K_FG_ENABLE As String = "FGEnable" Public Const K_FG_ENABLE As String = "FGEnable"
@@ -323,6 +343,7 @@ Module ConstIni
Public Const K_DC_FLATT_HEADSIDE As String = "FlattHeadSide" Public Const K_DC_FLATT_HEADSIDE As String = "FlattHeadSide"
Public Const K_DC_FLATT_MACHTYPE As String = "FlattMachType" Public Const K_DC_FLATT_MACHTYPE As String = "FlattMachType"
Public Const K_DC_FLATT_ROTLOCK As String = "FlattRotLock" Public Const K_DC_FLATT_ROTLOCK As String = "FlattRotLock"
Public Const K_DC_FLAT_CHAINEDPATH As String = "ChainedPath"
Public Const K_DC_FLATT_POSX As String = "FlattPosX" Public Const K_DC_FLATT_POSX As String = "FlattPosX"
Public Const K_DC_FLATT_POSY As String = "FlattPosY" Public Const K_DC_FLATT_POSY As String = "FlattPosY"
Public Const K_DC_POLISH_NAME As String = "PolishName" Public Const K_DC_POLISH_NAME As String = "PolishName"
@@ -332,6 +353,7 @@ Module ConstIni
Public Const K_DC_TEST_OFFSET As String = "TestOffset" Public Const K_DC_TEST_OFFSET As String = "TestOffset"
Public Const K_DC_OFFSET_SQUARING As String = "OffsetSquaring" Public Const K_DC_OFFSET_SQUARING As String = "OffsetSquaring"
Public Const K_DC_EXTRA_LEN_SQUARING As String = "ExtraLenSquaring" Public Const K_DC_EXTRA_LEN_SQUARING As String = "ExtraLenSquaring"
Public Const K_ENABLEINVERT As String = "EnableInvert"
Public Const S_STATDATA As String = "StatData" Public Const S_STATDATA As String = "StatData"
Public Const K_SD_DAY As String = "Day" Public Const K_SD_DAY As String = "Day"
+36 -1
View File
@@ -5,6 +5,7 @@
Public Const S_PARTPROGRAM As String = "PartProgram" Public Const S_PARTPROGRAM As String = "PartProgram"
Public Const K_EXTENSION As String = "Extension" Public Const K_EXTENSION As String = "Extension"
Public Const K_EXTFILECN As String = "ExtFileCN"
Public Const S_AXES As String = "Axes" Public Const S_AXES As String = "Axes"
Public Const K_AXESNUM As String = "AxesNum" Public Const K_AXESNUM As String = "AxesNum"
@@ -31,6 +32,7 @@
Public Const K_A10ID As String = "A10Id" Public Const K_A10ID As String = "A10Id"
Public Const K_DELTA_C As String = "DeltaC" Public Const K_DELTA_C As String = "DeltaC"
Public Const K_ININCHES As String = "InInches" Public Const K_ININCHES As String = "InInches"
Public Const K_CPOS As String = "CPos"
Public Const S_NCSIEMENS As String = "NcSiemens" Public Const S_NCSIEMENS As String = "NcSiemens"
Public Const K_COMM_NAME As String = "CommName" Public Const K_COMM_NAME As String = "CommName"
@@ -46,9 +48,20 @@
Public Const K_THREADSLEEP As String = "ThreadSleep" Public Const K_THREADSLEEP As String = "ThreadSleep"
Public Const K_PHOTODELEY As String = "PhotoDeley" Public Const K_PHOTODELEY As String = "PhotoDeley"
Public Const S_NCFANUC As String = "NcFanuc"
Public Const K_SETNCMODE As String = "SetNcMode"
Public Const K_BASEADDRINT As String = "BaseAddrInt"
Public Const K_BASEADDRBIT As String = "BaseAddrBit"
Public Const K_NUMVARINT As String = "NumVarInt"
Public Const K_NUMVARBIT As String = "NumVarBit"
Public Const S_EXECLUA As String = "ExecLua" Public Const S_EXECLUA As String = "ExecLua"
Public Const K_FILESCRIPT_LUA As String = "FileScript" Public Const K_FILESCRIPT_LUA As String = "FileScript"
Public Const S_CAMERAHQ As String = "CameraHQ"
Public Const K_CAMERAHQ_ENABLE As String = "EnableHQ"
Public Const K_CAMERAHQ_ACTIVATE As String = "ActivateHQ"
Public Const S_NCDATA As String = "NcData" Public Const S_NCDATA As String = "NcData"
Public Const K_NEWVARIABLE As String = "NewVariable" Public Const K_NEWVARIABLE As String = "NewVariable"
Public Const K_NEWCONSOLE As String = "NewConsole" Public Const K_NEWCONSOLE As String = "NewConsole"
@@ -78,12 +91,16 @@
Public Const K_TABLEDOWN As String = "TableDown" Public Const K_TABLEDOWN As String = "TableDown"
Public Const K_MANUAL As String = "Manual" Public Const K_MANUAL As String = "Manual"
Public Const K_DOORCLOSED As String = "DoorClosed" Public Const K_DOORCLOSED As String = "DoorClosed"
Public Const K_DOOROPENDED As String = "DoorOpened"
Public Const K_LIMITZ As String = "LimitZ" Public Const K_LIMITZ As String = "LimitZ"
Public Const K_POWEROVR As String = "PowerOvr" Public Const K_POWEROVR As String = "PowerOvr"
Public Const K_PARKING As String = "Parking" Public Const K_PARKING As String = "Parking"
Public Const K_ENABLEZONE As String = "EnableZone" Public Const K_ENABLEZONE As String = "EnableZone"
Public Const K_ENABLEPC As String = "EnablePC" Public Const K_ENABLEPC As String = "EnablePC"
Public Const K_HSM As String = "Hsm" Public Const K_HSM As String = "Hsm"
Public Const BTN_ENABLE_ZONE_1 As String = "EnableZone1"
Public Const BTN_ENABLE_ZONE_2 As String = "EnableZone2"
Public Const BTN_ENABLE_PC As String = "EnablePC"
Public Const K_VACUUMUP As String = "VacuumUp" Public Const K_VACUUMUP As String = "VacuumUp"
Public Const K_VACUUMDOWN As String = "VacuumDown" Public Const K_VACUUMDOWN As String = "VacuumDown"
Public Const K_VACUUM2UP As String = "Vacuum2Up" Public Const K_VACUUM2UP As String = "Vacuum2Up"
@@ -112,6 +129,8 @@
Public Const K_FEEDHOLD As String = "FeedHold" Public Const K_FEEDHOLD As String = "FeedHold"
Public Const K_SPOTLIGHT1 As String = "SpotLight1" Public Const K_SPOTLIGHT1 As String = "SpotLight1"
Public Const K_SPOTLIGHT2 As String = "SpotLight2" Public Const K_SPOTLIGHT2 As String = "SpotLight2"
Public Const K_NAXES As String = "nAxes"
Public Const K_RESETSTATUS As String = "ResetStatus"
' Nuove variabili ' Nuove variabili
Public Const K_SPEEDHOLD As String = "SpeedHold" Public Const K_SPEEDHOLD As String = "SpeedHold"
Public Const K_XYJOG As String = "XYJog" Public Const K_XYJOG As String = "XYJog"
@@ -142,6 +161,10 @@
Public Const K_PRODLIPROBINGTCPOS2VAR As String = "ProbingTcPos2Var" Public Const K_PRODLIPROBINGTCPOS2VAR As String = "ProbingTcPos2Var"
Public Const K_PRODLISAWDIAMETER2VAR As String = "SawDiameter2Var" Public Const K_PRODLISAWDIAMETER2VAR As String = "SawDiameter2Var"
Public Const S_POLISHLINE As String = "PolishLine"
Public Const K_CLICKSTATE As String = "ClickState"
Public Const k_CLICKDIR As String = "ClickDir"
Public Const S_STATISTICS As String = "Stats" Public Const S_STATISTICS As String = "Stats"
Public Const K_DATADIR As String = "DataDir" Public Const K_DATADIR As String = "DataDir"
Public Const K_SHOWAREAS As String = "ShowAreas" Public Const K_SHOWAREAS As String = "ShowAreas"
@@ -158,6 +181,12 @@
Public Const K_PHOTO_OFFSETY As String = "OffsetY" Public Const K_PHOTO_OFFSETY As String = "OffsetY"
Public Const K_PHOTO_TAB2_OFFSETX As String = "Tab2OffsetX" Public Const K_PHOTO_TAB2_OFFSETX As String = "Tab2OffsetX"
Public Const K_PHOTO_TAB2_OFFSETY As String = "Tab2OffsetY" Public Const K_PHOTO_TAB2_OFFSETY As String = "Tab2OffsetY"
Public Const K_PHOTO_HQ_OFFSETX As String = "HQOffsetX"
Public Const K_PHOTO_HQ_OFFSETY As String = "HQOffsetY"
Public Const K_CAMERA_DIRECT_CMD As String = "CameraDirectCmd"
Public Const K_CAMERA_STATE_VAR As String = "CameraStateVar"
Public Const K_ENABELE_GOHOME_FOR_PHOTO As String = "EnableGoHomeForPhoto"
Public Const K_PENDIG_TIME_FOR_PHOTO As String = "PendigTimeForPhoto"
Public Const S_TOOLS As String = "Tools" Public Const S_TOOLS As String = "Tools"
Public Const K_DRILLBIT As String = "Drillbit" Public Const K_DRILLBIT As String = "Drillbit"
@@ -207,6 +236,7 @@
Public Const K_MACH_MILLING_ON_SINKS As String = "MillingOnSinks" Public Const K_MACH_MILLING_ON_SINKS As String = "MillingOnSinks"
Public Const K_MACH_MILLING_SHORTENING As String = "MillingShortening" Public Const K_MACH_MILLING_SHORTENING As String = "MillingShortening"
Public Const K_MACH_ENGRAVING_WITHMILL As String = "EngravingWithMill" Public Const K_MACH_ENGRAVING_WITHMILL As String = "EngravingWithMill"
Public Const K_MACH_STARTCENERTOOLPATH As String = "StartCenterToolPath"
Public Const K_MACH_ENGRAVING_DEPTH As String = "EngravingDepth" Public Const K_MACH_ENGRAVING_DEPTH As String = "EngravingDepth"
Public Const K_MACH_ENGRAVING_WIDTH As String = "EngravingWidth" Public Const K_MACH_ENGRAVING_WIDTH As String = "EngravingWidth"
Public Const K_MACH_NEST_ALIGNED As String = "Aligned" Public Const K_MACH_NEST_ALIGNED As String = "Aligned"
@@ -223,7 +253,8 @@
Public Const K_HOLES_OFFSETWJ As String = "HolesOffsetWJ" Public Const K_HOLES_OFFSETWJ As String = "HolesOffsetWJ"
Public Const K_MIN_RADIUSWJ As String = "MinRadiusWJ" Public Const K_MIN_RADIUSWJ As String = "MinRadiusWJ"
Public Const K_MACH_DRILLINGWJ_ON_CORNERS As String = "DrillingWJOnCorners" Public Const K_MACH_DRILLINGWJ_ON_CORNERS As String = "DrillingWJOnCorners"
' DrillMillC90 Public Const K_MACH_RECTIFICATION_ON_SUBSQUARE As String = "RectificationSubSqWJ"
Public Const K_MACH_DRILL_MILL_C90 As String = "DrillMillC90"
' CutLongDxSx ' CutLongDxSx
' AngRotMultiCut ' AngRotMultiCut
' MinDistHeadsMultiCut ' MinDistHeadsMultiCut
@@ -270,6 +301,7 @@
Public Const S_MACH_PROBING As String = "Probing" Public Const S_MACH_PROBING As String = "Probing"
Public Const K_PROBINGSTATEVAR As String = "ProbingStateVar" Public Const K_PROBINGSTATEVAR As String = "ProbingStateVar"
Public Const K_SAWDIAMETER As String = "SawDiameter" Public Const K_SAWDIAMETER As String = "SawDiameter"
Public Const K_TOOLLENGTH As String = "ToolLength"
Public Const K_RAWTHICKNESS As String = "RawThickness" Public Const K_RAWTHICKNESS As String = "RawThickness"
Public Const K_ENABLERAWPROBE As String = "EnableRawProbe" Public Const K_ENABLERAWPROBE As String = "EnableRawProbe"
@@ -281,6 +313,7 @@
Public Const S_MACH_MACH As String = "Mach" Public Const S_MACH_MACH As String = "Mach"
Public Const K_CURRSAW As String = "CurrSaw" Public Const K_CURRSAW As String = "CurrSaw"
Public Const K_CURRSAWTILTED As String = "CurrSawTilted"
Public Const K_CURRDRILL As String = "CurrDrill" Public Const K_CURRDRILL As String = "CurrDrill"
Public Const K_CURRMILL As String = "CurrMill" Public Const K_CURRMILL As String = "CurrMill"
Public Const K_CURRMILLNOTIP As String = "CurrMillNoTip" Public Const K_CURRMILLNOTIP As String = "CurrMillNoTip"
@@ -288,6 +321,8 @@
Public Const K_CURRDRIPDRILL As String = "CurrDripDrill" Public Const K_CURRDRIPDRILL As String = "CurrDripDrill"
Public Const K_CURRWATERJET As String = "CurrWaterJet" Public Const K_CURRWATERJET As String = "CurrWaterJet"
Public Const K_CURRSAWING As String = "CurrSawing" Public Const K_CURRSAWING As String = "CurrSawing"
Public Const K_CURRSAWINGTILTED As String = "CurrSawingTilted"
Public Const K_APPLYSAWINGTILTED As String = "ApplySawingTilted"
Public Const K_CURRDRILLING As String = "CurrDrilling" Public Const K_CURRDRILLING As String = "CurrDrilling"
Public Const K_CURRMILLING As String = "CurrMilling" Public Const K_CURRMILLING As String = "CurrMilling"
Public Const K_CURRPOCKETING As String = "CurrPocketing" Public Const K_CURRPOCKETING As String = "CurrPocketing"
+6 -1
View File
@@ -53,7 +53,6 @@ Public Class ControlsDirectCutUC
FlatteningCut FlatteningCut
Polishing Polishing
CopyTemplate CopyTemplate
SawTest
SingleCutAuto SingleCutAuto
SingleDrill SingleDrill
Squaring Squaring
@@ -140,8 +139,11 @@ Public Class ControlsDirectCutUC
Return Return
End If End If
If m_MainWindow.m_DirectCutPageUC.m_ActiveControl <> DirectCutPageUC.Controls.MachineButtonUC Or
m_MainWindow.m_DirectCutPageUC.m_ActiveControl <> DirectCutPageUC.Controls.VacuumButtonUC Then
' Caso standard ' Caso standard
m_ActiveDirectCutPage = DirectCutPages.DirectCut m_ActiveDirectCutPage = DirectCutPages.DirectCut
End If
' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1 ' Attivo le lavorazioni solo se esiste il grezzo e se presente testa H1
Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL) Dim bRawOk As Boolean = (GetRawHeight() > EPS_SMALL)
@@ -180,6 +182,9 @@ Public Class ControlsDirectCutUC
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1) bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If End If
If Not bSaw Then
EgtOutLog(" WARNING! Impossible to get point from SAW, there isn't SAW or SAWING! It's available only by DRAW")
End If
m_SingleCut.SetEnableParam(bSaw) m_SingleCut.SetEnableParam(bSaw)
m_MultipleCut.SetEnableParam(bSaw) m_MultipleCut.SetEnableParam(bSaw)
m_GridCut.SetEnableParam(bSaw) m_GridCut.SetEnableParam(bSaw)
+3
View File
@@ -99,6 +99,9 @@ Public Class ControlsDirectCutUC1
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1) bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If End If
If Not bSaw Then
EgtOutLog(" WARNING! Impossible to get point from SAW, there isn't SAW or SAWING! It's available only by DRAW")
End If
'm_SingleCut.SetEnableParam(bSaw) 'm_SingleCut.SetEnableParam(bSaw)
'm_MultipleCut.SetEnableParam(bSaw) 'm_MultipleCut.SetEnableParam(bSaw)
'm_GridCut.SetEnableParam(bSaw) 'm_GridCut.SetEnableParam(bSaw)
+184 -40
View File
@@ -23,6 +23,9 @@ Public Class ControlsMachineButtonUC
Friend m_CN As CN_generico Friend m_CN As CN_generico
Private m_bFirst As Boolean = True Private m_bFirst As Boolean = True
' visualizzo l'elenco degli elementi della pagina sono al primo avvio
Friend Shared m_OutLogTypeButton As Boolean = True
' Creazione converter da String a ImageSource ' Creazione converter da String a ImageSource
Dim ImageConverter As New ImageSourceConverter Dim ImageConverter As New ImageSourceConverter
@@ -72,10 +75,37 @@ Public Class ControlsMachineButtonUC
If Not IsNothing(ButtonToAdd) Then m_ButtonList.Add(ButtonToAdd) If Not IsNothing(ButtonToAdd) Then m_ButtonList.Add(ButtonToAdd)
End If End If
End While End While
For Each MachineButton As MachineButton In m_ButtonList
GetTypeButton(MachineButton)
Next
m_OutLogTypeButton = False
NotifyPropertyChanged("ButtonList") NotifyPropertyChanged("ButtonList")
End If End If
End Sub End Sub
#Region "STATE CHANGED"
' ------------------------------------------------------------------------------
' i segeunti metodi notificano il cambiamento di stato di specifici bottoni
'-------------------------------------------------------------------------------
Friend Sub GetTypeButton(CurrMachineButton As MachineButton)
If Not m_OutLogTypeButton Then Return
Dim BtnType As Type = CurrMachineButton.GetType
If BtnType Is GetType(NoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(0) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(TwoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(1) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(ThreeStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(2) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(DoubleCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(3) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(PressedCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(4) ") & " , " & CurrMachineButton.StateFlag)
End If
End Sub
Friend Sub SpindleStateChanged(SpindleState As Boolean) Friend Sub SpindleStateChanged(SpindleState As Boolean)
Dim SpindleButton As TwoStateButton = Nothing Dim SpindleButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList For Each MachineButton As MachineButton In m_ButtonList
@@ -255,38 +285,34 @@ Public Class ControlsMachineButtonUC
Dim DoorOpenedButton As ThreeStateButton = Nothing Dim DoorOpenedButton As ThreeStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_DOORCLOSED Then If MachineButton.StateFlag = K_DOORCLOSED Then
'If TypeOf MachineButton Is NoStateButton Then
' DoorClosedButton = DirectCast(MachineButton, NoStateButton)
'ElseIf TypeOf MachineButton Is TwoStateButton Then
' DoorClosedButton = DirectCast(MachineButton, TwoStateButton)
'ElseIf TypeOf MachineButton Is ThreeStateButton Then
' DoorClosedButton = DirectCast(MachineButton, ThreeStateButton)
'ElseIf TypeOf MachineButton Is DoubleCommandButton Then
' DoorClosedButton = DirectCast(MachineButton, DoubleCommandButton)
'ElseIf TypeOf MachineButton Is PressedCommandButton Then
' DoorClosedButton = DirectCast(MachineButton, PressedCommandButton)
'End If
DoorClosedButton = MachineButton DoorClosedButton = MachineButton
End If End If
If MachineButton.StateFlag = "DoorOpened" Then If MachineButton.StateFlag = K_DOOROPENDED Then
DoorOpenedButton = MachineButton DoorOpenedButton = MachineButton
End If End If
Next Next
' Chiusura porte (gesrtione comando Three/Two state
If Not IsNothing(DoorClosedButton) Then If Not IsNothing(DoorClosedButton) Then
Select Case DoorClosedState Select Case DoorClosedState
Case 0 Case 0
' porta aperta
DoorClosedButton.Background = Application.Current.FindResource("OmagCut_Red") DoorClosedButton.Background = Application.Current.FindResource("OmagCut_Red")
Case 1, 2 Case 1, 2
' porta in movimento/aperta
DoorClosedButton.Background = Application.Current.FindResource("OmagCut_LightGray") DoorClosedButton.Background = Application.Current.FindResource("OmagCut_LightGray")
End Select End Select
End If End If
' Chiusura porte (gesrtione comando Three/Two state
If Not IsNothing(DoorOpenedButton) Then If Not IsNothing(DoorOpenedButton) Then
Select Case DoorClosedState Select Case DoorClosedState
Case 0 Case 0
' porta aperta
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_LightGray") DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_LightGray")
Case 1 Case 1
' porta in movimento
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Yellow") DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Yellow")
Case 2 Case 2
' porta chiusa
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Green") DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Green")
End Select End Select
End If End If
@@ -343,35 +369,64 @@ Public Class ControlsMachineButtonUC
End Sub End Sub
Friend Sub ZoneStateChanged(ZoneState As Integer) Friend Sub ZoneStateChanged(ZoneState As Integer)
'Dim sFlag As String = String.Empty Dim bEnableZone1 As Boolean = False
'If ZoneState = 1 Then If ZoneState = 1 Then
' sFlag = BTN_ENABLE_ZONE_1 bEnableZone1 = True
'ElseIf ZoneState = 2 Then ElseIf ZoneState = 2 Then
' sFlag = BTN_ENABLE_ZONE_2 bEnableZone1 = False
'End If End If
'Dim EnableZoneButton As TwoStateButton = Nothing ' attivo il comando associato
'For Each MachineButton As MachineButton In m_ButtonList Dim EnableZoneButton As TwoStateButton = Nothing
' If MachineButton.StateFlag = K_ENABLEZONE Then For Each MachineButton As MachineButton In m_ButtonList
' EnableZoneButton = MachineButton If MachineButton.StateFlag = BTN_ENABLE_ZONE_1 Then
' End If EnableZoneButton = MachineButton
'Next End If
'If Not IsNothing(EnableZoneButton) Then Next
' EnableZoneButton.SetIsChecked(EnableZone) If Not IsNothing(EnableZoneButton) Then
'End If EnableZoneButton.SetIsChecked(bEnableZone1)
End If
' disattivo l'altro per esclusione
EnableZoneButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = BTN_ENABLE_ZONE_2 Then
EnableZoneButton = MachineButton
End If
Next
If Not IsNothing(EnableZoneButton) Then
EnableZoneButton.SetIsChecked(Not bEnableZone1)
End If
End Sub End Sub
Friend Sub PcStateChanged(EnablePC As Boolean) Friend Sub PcStateChanged(EnablePC As Integer)
'Dim EnablePCButton As TwoStateButton = Nothing Dim bEnablePC1 As Boolean = False
'For Each MachineButton As MachineButton In m_ButtonList If EnablePC = 1 Then
' If MachineButton.StateFlag = K_ENABLEPC Then bEnablePC1 = True
' EnablePCButton = MachineButton ElseIf EnablePC = 2 Then
' End If bEnablePC1 = False
'Next End If
'If Not IsNothing(EnablePCButton) Then ' attivo/disattivo il comando associato
' EnablePCButton.SetIsChecked(EnablePC) Dim EnablePCButton As TwoStateButton = Nothing
'End If For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_ENABLEPC & "_1" Then
EnablePCButton = MachineButton
End If
Next
If Not IsNothing(EnablePCButton) Then
EnablePCButton.SetIsChecked(bEnablePC1)
End If
' disattivo/attivo l'altro per esclusione
EnablePCButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = BTN_ENABLE_ZONE_2 Then
EnablePCButton = MachineButton
End If
Next
If Not IsNothing(EnablePCButton) Then
EnablePCButton.SetIsChecked(Not bEnablePC1)
End If
End Sub End Sub
#End Region ' State Range
Public Function GetPrivateProfileMachineButtons( Public Function GetPrivateProfileMachineButtons(
ByVal lpAppName As String, ByVal lpAppName As String,
@@ -569,13 +624,64 @@ Public MustInherit Class MachineButton
EgtOutLog("dopo scrittura seconda variabile") EgtOutLog("dopo scrittura seconda variabile")
End If End If
Return Return
Case 4
' ------------------------------------ FANUC ------------------------------------
' eventuale scrittura di linea di comando MDI
If Not String.IsNullOrEmpty(CmdString) Then
' attivo mpdalità MDI
m_CN.DGeneralFunctions_WriteCncMode(2)
System.Threading.Thread.Sleep(100)
' salvo la stringa di comando ricevuta dal file lua
m_CN.sz_ManualDataInput = CmdString
' esguo la funzione che ha il compito di scrivere il comando MDI
m_CN.MDI_command()
End If
' attivo modalità AUTO
m_CN.DGeneralFunctions_WriteCncMode(7)
System.Threading.Thread.Sleep(100)
If String.IsNullOrEmpty(EValue) Then
' EActive: impulsivo "D#####"
m_CN.NC_pulse_bit(ENumber)
EgtOutLog("Fanuc_DNumber= " & ENumber)
Else
' EActive + EValue: scrittura comando invariabile Short oppure Bit
If ENumber.Contains(".") Then
' D#####.#
Dim bEValue As Boolean
If EValue.Trim = "1" Then bEValue = True
m_CN.NC_write_var_bit(ENumber, CBool(EValue))
Else
' D#####
m_CN.NC_write_var_short(ENumber, CShort(EValue))
End If
EgtOutLog("Fanuc_DNumber= " & ENumber & " DValue= " & EValue)
End If
' eventale caricamento seconda variabile
If String.IsNullOrEmpty(EValue2) Then
' EActive: impulsivo "D#####"
m_CN.NC_pulse_bit(ENumber2)
EgtOutLog("Fanuc_DNumber= " & ENumber2)
Else
' EActive + EValue: scrittura comando invariabile Short oppure Bit
If ENumber2.Contains(".") Then
' D#####.#
Dim bEValue2 As Boolean
If EValue2.Trim = "1" Then bEValue2 = True
m_CN.NC_write_var_bit(ENumber2, CBool(EValue2))
Else
' D#####
m_CN.NC_write_var_short(ENumber2, CShort(EValue2))
End If
EgtOutLog("Fanuc_DNumber2= " & ENumber2 & " DValue2= " & EValue2)
End If
Return
End Select End Select
End If End If
'--------------------------------------------------------- MDI --------------------------------------------------------- '--------------------------------------------------------- MDI ---------------------------------------------------------
Dim nResult As Short Dim nResult As Short
' assegno la modalità di funzionamento ' assegno la modalità di funzionamento
Select Case m_MainWindow.m_CNCommunication.m_nNCType Select Case m_MainWindow.m_CNCommunication.m_nNCType
Case 1, 2 Case 1, 2, 4
nResult = m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI per controlli num nResult = m_CN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI per controlli num
Case 3 Case 3
'Per il siemens non devo fare nulla 'Per il siemens non devo fare nulla
@@ -599,7 +705,7 @@ Public MustInherit Class MachineButton
m_CN.DGeneralFunctions_CycleStart() m_CN.DGeneralFunctions_CycleStart()
End If End If
System.Threading.Thread.Sleep(300) System.Threading.Thread.Sleep(300)
' riprostino la modalità manuale ' ripristino la modalità manuale..?? siucuri ??
nResult = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale nResult = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale
End Sub End Sub
@@ -620,6 +726,7 @@ Public MustInherit Class MachineButton
EgtTdbGetCurrToolParam(MCH_TP.FEED, dFeed) EgtTdbGetCurrToolParam(MCH_TP.FEED, dFeed)
End If End If
EgtLuaSetGlobNumVar("CMD.F", dFeed) EgtLuaSetGlobNumVar("CMD.F", dFeed)
Dim dSpeed As Double = 0 Dim dSpeed As Double = 0
If Not String.IsNullOrWhiteSpace(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text) Then If Not String.IsNullOrWhiteSpace(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text) Then
StringToDouble(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text, dSpeed) StringToDouble(m_DirectCutPage.m_ManualAxesMove.SpeedTxBx.Text, dSpeed)
@@ -628,6 +735,18 @@ Public MustInherit Class MachineButton
EgtTdbGetCurrToolParam(MCH_TP.SPEED, dSpeed) EgtTdbGetCurrToolParam(MCH_TP.SPEED, dSpeed)
End If End If
EgtLuaSetGlobNumVar("CMD.S", dSpeed) EgtLuaSetGlobNumVar("CMD.S", dSpeed)
' versione 2.5e1
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
Dim sToolPos As String = String.Empty
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolPos) Then
EgtLuaGetGlobStringVar("CMD.TCPOS", sToolPos)
End If
Dim dToolDiam As Double = 0
If EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) Then
EgtLuaSetGlobNumVar("CMD.DIAM", dToolDiam * 1000)
End If
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2)
EgtLuaSetGlobNumVar("CMD.L1", dL1) EgtLuaSetGlobNumVar("CMD.L1", dL1)
@@ -636,8 +755,17 @@ Public MustInherit Class MachineButton
EgtLuaSetGlobNumVar("CMD.R1", dR1) EgtLuaSetGlobNumVar("CMD.R1", dR1)
EgtLuaSetGlobNumVar("CMD.R2", dR2) EgtLuaSetGlobNumVar("CMD.R2", dR2)
EgtLuaSetGlobBoolVar("CMD.INCHES", m_MainWindow.m_CNCommunication.GetMachineInInches()) EgtLuaSetGlobBoolVar("CMD.INCHES", m_MainWindow.m_CNCommunication.GetMachineInInches())
' versione 2.6h1
Dim sCurrTable As String = String.Empty
Dim nCuttTable As Integer = 1
EgtGetTableName(sCurrTable)
If sCurrTable <> "MainTab" Then nCuttTable = 2
EgtLuaSetGlobIntVar("CMD.TABLE", nCuttTable)
EgtLuaCallFunction("CmdString") EgtLuaCallFunction("CmdString")
' Leggo variabili
' Leggo variabili da file Lua
CmdString = String.Empty CmdString = String.Empty
EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString) EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString)
b2Start = False b2Start = False
@@ -694,11 +822,26 @@ Public Class TwoStateButton
Set(value As Boolean) Set(value As Boolean)
' accendo il comando, anche se dovrei aspettare di leggere lo stato da PLC ' accendo il comando, anche se dovrei aspettare di leggere lo stato da PLC
m_IsChecked = value m_IsChecked = value
Dim sLuaScriptFile As String = m_MainWindow.m_CurrentMachine.sMachDir & "\DirectCmd\"
If value Then If value Then
sLuaScriptFile &= TLuaScriptName
ExecuteMDICommand(TLuaScriptName) ExecuteMDICommand(TLuaScriptName)
Else Else
sLuaScriptFile &= FLuaScriptName
ExecuteMDICommand(FLuaScriptName) ExecuteMDICommand(FLuaScriptName)
End If End If
Dim IsPressedShiftKey As Boolean = False
If Keyboard.Modifiers And ModifierKeys.Shift And
GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_MainWindow.GetIniFile()) > 4 Then IsPressedShiftKey = True
' procedo all'apertura del file CadCut1 appena generato (solo se generazione corretta)
If IsPressedShiftKey Then
Try
Process.Start("Notepad.exe", sLuaScriptFile)
Catch ex As Exception
EgtOutLog(ex.ToString)
End Try
End If
End Set End Set
End Property End Property
Friend Sub SetIsChecked(value As Boolean) Friend Sub SetIsChecked(value As Boolean)
@@ -789,6 +932,7 @@ Public Class NoStateButton
ExecuteMDICommand(TLuaScriptName) ExecuteMDICommand(TLuaScriptName)
End If End If
Else Else
' FANUC, SIEMENS
ExecuteMDICommand(TLuaScriptName) ExecuteMDICommand(TLuaScriptName)
End If End If
End Sub End Sub
+18 -6
View File
@@ -166,6 +166,15 @@ Public Class CopyTemplateUC
Private Sub Point1Btn_Click(sender As Object, e As RoutedEventArgs) Handles Point1Btn.Click Private Sub Point1Btn_Click(sender As Object, e As RoutedEventArgs) Handles Point1Btn.Click
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bTabOk Then Return If Not m_bTabOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
If bIsMultiCut Then
EgtSetCalcTool(sSaw, "H1", 1)
End If
' Se acquisizione lama o laser ' Se acquisizione lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
@@ -173,14 +182,19 @@ Public Class CopyTemplateUC
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then
Return Return
End If End If
' Ricavo dati lama corrente ' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -188,7 +202,7 @@ Public Class CopyTemplateUC
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
@@ -196,8 +210,6 @@ Public Class CopyTemplateUC
Else Else
' Verifico presenza punto da mouse ' Verifico presenza punto da mouse
If Not m_bMouseOk Then Return If Not m_bMouseOk Then Return
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Assegno punto selezionato nel disegno a m_ptTipP1 ' Assegno punto selezionato nel disegno a m_ptTipP1
+7 -2
View File
@@ -219,7 +219,10 @@
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<!--<ColumnDefinition Width="1*"/>--> <!--<ColumnDefinition Width="1*"/>-->
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
@@ -264,8 +267,10 @@
<Image Source="{DynamicResource ParkingImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/> <Image Source="{DynamicResource ParkingImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</ToggleButton> </ToggleButton>
<!--Comando Manula/MDI--> <!--Comando Manula/MDI-->
<Button Name="ManualModeBtn" Grid.Column="8" <Button Name="ManualModeBtn" Grid.Column="11"
Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}"> Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/> <Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ScaleButtonIcon}"/>
</Button> </Button>
+19 -2
View File
@@ -53,7 +53,7 @@ Public Class DirectCutPageUC
'Posizionemento nella griglia delle Page UserControl 'Posizionemento nella griglia delle Page UserControl
m_MachineButtons.SetValue(Grid.RowProperty, 2) m_MachineButtons.SetValue(Grid.RowProperty, 2)
m_MachineButtons.SetValue(Grid.ColumnSpanProperty, 7) m_MachineButtons.SetValue(Grid.ColumnSpanProperty, m_MachineButtons.nCountButton)
m_ManualAxesMove.SetValue(Grid.RowProperty, 1) m_ManualAxesMove.SetValue(Grid.RowProperty, 1)
m_ControlsDirectCutUC.SetValue(Grid.RowProperty, 1) m_ControlsDirectCutUC.SetValue(Grid.RowProperty, 1)
@@ -64,12 +64,18 @@ Public Class DirectCutPageUC
' verifico che sia presente almeno uno dei bottoni della nuova console (SOLO PER MACCHINA CON paragrafo [ControlMachButtons]) ' verifico che sia presente almeno uno dei bottoni della nuova console (SOLO PER MACCHINA CON paragrafo [ControlMachButtons])
Dim bCollapsedNewBottonsConsole As Boolean = Not m_ControlsMachineButton.GetPrivateProfileMachineButtons("JogButtons", "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile()) Dim bCollapsedNewBottonsConsole As Boolean = Not m_ControlsMachineButton.GetPrivateProfileMachineButtons("JogButtons", "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
m_NewMachineButtonsType = m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile()) m_NewMachineButtonsType = m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
' verifico che sia presente almeno uno dei bottoni della nuova console (SOLO PER MACCHINA CON paragrafo [VacuumMachButtons])
Dim bCollapsedVacuumButton As Boolean = Not m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_VACUUMMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
If Not m_NewMachineButtonsType Then If Not m_NewMachineButtonsType Then
'Assegno MachineButtons alla pagina 'Assegno MachineButtons alla pagina
LowerButtonGrid.Children.Add(m_MachineButtons) LowerButtonGrid.Children.Add(m_MachineButtons)
ControlsMachineBtn.Visibility = Windows.Visibility.Collapsed ControlsMachineBtn.Visibility = Windows.Visibility.Collapsed
VacuumMachineBtn.Visibility = Windows.Visibility.Collapsed VacuumMachineBtn.Visibility = Windows.Visibility.Collapsed
End If End If
' se non sono configurate le ventose allora nascondo il comando
If m_NewMachineButtonsType AndAlso bCollapsedVacuumButton Then
VacuumMachineBtn.Visibility = Windows.Visibility.Collapsed
End If
' nuovi bottoni 20/05/2021 - modifica specifiche 04/08/2021 ' nuovi bottoni 20/05/2021 - modifica specifiche 04/08/2021
' leggo il numero di assi attivi nella macchina ' leggo il numero di assi attivi nella macchina
@@ -140,6 +146,9 @@ Public Class DirectCutPageUC
If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then If Not String.IsNullOrEmpty(sCurrSaw) And Not String.IsNullOrEmpty(sCurrSawing) Then
bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1) bSaw = EgtSetCalcTool(sCurrSaw, "H1", 1)
End If End If
If Not bSaw Then
EgtOutLog(" WARNING! Impossible to get point from SAW, there isn't SAW or SAWING! It's available only by DRAW")
End If
m_ControlsDirectCutUC.m_SingleCut.SetEnableParam(bSaw) m_ControlsDirectCutUC.m_SingleCut.SetEnableParam(bSaw)
m_ControlsDirectCutUC.m_MultipleCut.SetEnableParam(bSaw) m_ControlsDirectCutUC.m_MultipleCut.SetEnableParam(bSaw)
m_ControlsDirectCutUC.m_GridCut.SetEnableParam(bSaw) m_ControlsDirectCutUC.m_GridCut.SetEnableParam(bSaw)
@@ -209,6 +218,7 @@ Public Class DirectCutPageUC
m_ControlsMachineButton.SetValue(Grid.RowProperty, 1) m_ControlsMachineButton.SetValue(Grid.RowProperty, 1)
m_NewMachineButtonsType = m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile()) m_NewMachineButtonsType = m_ControlsMachineButton.GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, "Button1", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, m_MainWindow.GetMachIniFile())
MachineButtonGrid.Children.Add(m_ControlsMachineButton) MachineButtonGrid.Children.Add(m_ControlsMachineButton)
m_ActiveControl = Controls.MachineButtonUC
If VacuumMachineBtn.IsChecked Then If VacuumMachineBtn.IsChecked Then
MachineButtonGrid.Children.Remove(m_VacuumMachineButton) MachineButtonGrid.Children.Remove(m_VacuumMachineButton)
VacuumMachineBtn.IsChecked = False VacuumMachineBtn.IsChecked = False
@@ -221,6 +231,7 @@ Public Class DirectCutPageUC
Private Sub VacuumMachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles VacuumMachineBtn.Click Private Sub VacuumMachineBtn_Click(sender As Object, e As RoutedEventArgs) Handles VacuumMachineBtn.Click
If VacuumMachineBtn.IsChecked Then If VacuumMachineBtn.IsChecked Then
MachineButtonGrid.Children.Add(m_VacuumMachineButton) MachineButtonGrid.Children.Add(m_VacuumMachineButton)
m_ActiveControl = Controls.VacuumButtonUC
If ControlsMachineBtn.IsChecked Then If ControlsMachineBtn.IsChecked Then
MachineButtonGrid.Children.Remove(m_ControlsMachineButton) MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
ControlsMachineBtn.IsChecked = False ControlsMachineBtn.IsChecked = False
@@ -421,6 +432,8 @@ Public Class DirectCutPageUC
m_nMachLook = MCH_LOOK.TAB_HEAD m_nMachLook = MCH_LOOK.TAB_HEAD
Case MCH_LOOK.TAB_HEAD Case MCH_LOOK.TAB_HEAD
m_nMachLook = MCH_LOOK.TAB_TOOL m_nMachLook = MCH_LOOK.TAB_TOOL
Case MCH_LOOK.TAB_TOOL
m_nMachLook = MCH_LOOK.TAB
Case Else Case Else
m_nMachLook = MCH_LOOK.ALL m_nMachLook = MCH_LOOK.ALL
End Select End Select
@@ -444,8 +457,12 @@ Public Class DirectCutPageUC
m_ControlsDirectCutUC1.DirectCutPage_Unloaded(Nothing, Nothing) m_ControlsDirectCutUC1.DirectCutPage_Unloaded(Nothing, Nothing)
Case Controls.MachineButtonUC Case Controls.MachineButtonUC
MachineButtonGrid.Children.Remove(m_ControlsMachineButton) MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
MachineButtonGrid.Children.Remove(m_ControlsDirectCutUC)
MachineButtonGrid.Children.Remove(m_ControlsDirectCutUC1)
ControlsMachineBtn.IsChecked = False ControlsMachineBtn.IsChecked = False
Case Controls.VacuumButtonUC Case Controls.VacuumButtonUC
MachineButtonGrid.Children.Remove(m_ControlsMachineButton)
MachineButtonGrid.Children.Remove(m_ControlsDirectCutUC)
MachineButtonGrid.Children.Remove(m_VacuumMachineButton) MachineButtonGrid.Children.Remove(m_VacuumMachineButton)
VacuumMachineBtn.IsChecked = False VacuumMachineBtn.IsChecked = False
End Select End Select
@@ -465,7 +482,7 @@ Public Class DirectCutPageUC
Private Sub ManualModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualModeBtn.Click Private Sub ManualModeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ManualModeBtn.Click
' Imposto modalità manuale della macchina ' Imposto modalità manuale della macchina
Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale Dim nResult As Short = m_MainWindow.m_DirectCutPageUC.m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale
End Sub End Sub
+44 -1
View File
@@ -50,6 +50,33 @@
</Grid> </Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible" Visibility="Visible"
Grid.Row="1" Grid.RowSpan="11" Grid.ColumnSpan="2">
<Grid Name="DatiTaglioGrid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.1"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="0.1"/>
</Grid.RowDefinitions>
<ComboBox Name="PointModeCmBx" Grid.Row="1" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}" Margin="6,0,6,0"> <ComboBox Name="PointModeCmBx" Grid.Row="1" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}" Margin="6,0,6,0">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate> <DataTemplate>
@@ -106,7 +133,20 @@
<CheckBox Name="RotLockChBx" Grid.Row="10" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_CheckBox_Single}" <CheckBox Name="RotLockChBx" Grid.Row="10" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_CheckBox_Single}"
HorizontalAlignment="Right" Margin="0,0,6,0"/> HorizontalAlignment="Right" Margin="0,0,6,0"/>
<Grid Grid.Row="11" Grid.ColumnSpan="2"> <TextBlock Name="ChainedPathTxBl" Grid.Row="11" Grid.ColumnSpan="2"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"/>
<CheckBox Name="ChainedPathChBx" Grid.Row="11" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_CheckBox_Single}"
HorizontalAlignment="Right" Margin="0,0,6,0"/>
<ComboBox Name="SelToolCmBx" Grid.Row="12" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_ComboBox}" Margin="6,0,6,0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Grid Grid.Row="13" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/> <ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
@@ -123,6 +163,9 @@
Style="{StaticResource OmagCut_CalculatorTextBox}"/> Style="{StaticResource OmagCut_CalculatorTextBox}"/>
</Grid> </Grid>
</Grid>
</ScrollViewer>
<Grid Grid.Row="12" Grid.ColumnSpan="2"> <Grid Grid.Row="12" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
+208 -52
View File
@@ -1,4 +1,6 @@
Imports EgtUILib Imports System.Reflection
Imports EgtUILib
Imports EgtUILib.EgtInterface
Public Class FlatteningCut Public Class FlatteningCut
@@ -35,14 +37,18 @@ Public Class FlatteningCut
Private m_bHeadSide As Boolean = False Private m_bHeadSide As Boolean = False
Private m_nMachType As Integer = 1 Private m_nMachType As Integer = 1
Private m_bRotLock As Boolean = False Private m_bRotLock As Boolean = False
Private m_bChainedPath As Boolean = True
Private m_nTool As Integer = 0
' Array delle modalità di acquisizione dei punti ' Array delle modalità di acquisizione dei punti
Private m_PointsModeArray(2) As String Private m_PointsModeArray(2) As String
' Array delle tipologia di lavorazione della spianatura ' Array delle tipologia di lavorazione della spianatura
Private m_TypeArray(1) As String Private m_TypeArray(2) As String
' Punto selezionato nel disegno ' Punto selezionato nel disegno
Private m_ptPrev As Point3d Private m_ptPrev As Point3d
' Layer per crocette temporanee ' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL Private m_nTempLay As Integer = GDB_ID.NULL
' Array degliutensili disponibili (lama e fresa)
Private m_ToolsArray(1) As String
' Costanti ' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0 Private Const MAX_TAB_DEPTH As Double = 10.0
@@ -57,8 +63,9 @@ Public Class FlatteningCut
End Enum End Enum
' Costanti che indicano la tipologia di lavorazione della spianatura ' Costanti che indicano la tipologia di lavorazione della spianatura
Private Enum MACH_TYPE As Integer Private Enum MACH_TYPE As Integer
ONEWAY = 0 ZIGZAG = 0
ZIGZAG = 1 ONEWAY = 1
SPIRAL = 2
End Enum End Enum
'Costante che indica il lato in cui posizionare i tagli 'Costante che indica il lato in cui posizionare i tagli
Private Enum CutSide As Integer Private Enum CutSide As Integer
@@ -66,6 +73,11 @@ Public Class FlatteningCut
Right Right
End Enum End Enum
Private Enum TOOL As Integer
SAW = 0
MILL = 1
End Enum
' Per abilitare la spianatura con la FRESA deve essere imposatato a TRUE il flag "Usa Fresa" nella pagina MACCHINA (campo INCISIONI) ' Per abilitare la spianatura con la FRESA deve essere imposatato a TRUE il flag "Usa Fresa" nella pagina MACCHINA (campo INCISIONI)
Private Sub FlatteningCut_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized Private Sub FlatteningCut_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' Creo lista modalità di acquisizione punto ' Creo lista modalità di acquisizione punto
@@ -75,8 +87,9 @@ Public Class FlatteningCut
' la associo alla combobox ' la associo alla combobox
PointModeCmBx.ItemsSource = m_PointsModeArray PointModeCmBx.ItemsSource = m_PointsModeArray
' Creo lista tipo lavorazione ' Creo lista tipo lavorazione
m_TypeArray(MACH_TYPE.ONEWAY) = EgtMsg(MSG_COMBOBOXPARAM + 39)
m_TypeArray(MACH_TYPE.ZIGZAG) = EgtMsg(MSG_COMBOBOXPARAM + 38) m_TypeArray(MACH_TYPE.ZIGZAG) = EgtMsg(MSG_COMBOBOXPARAM + 38)
m_TypeArray(MACH_TYPE.ONEWAY) = EgtMsg(MSG_COMBOBOXPARAM + 39)
m_TypeArray(MACH_TYPE.SPIRAL) = EgtMsg(MSG_COMBOBOXPARAM + 51)
' la associo alla combobox ' la associo alla combobox
TypeCmBx.ItemsSource = m_TypeArray TypeCmBx.ItemsSource = m_TypeArray
' assegno messaggi ' assegno messaggi
@@ -90,19 +103,26 @@ Public Class FlatteningCut
ZReleasedTxBl.Text = "Z Svincolo" ZReleasedTxBl.Text = "Z Svincolo"
SideTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 23) SideTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 23)
RotLockTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 29) RotLockTxBl.Text = EgtMsg(MSG_DIRECTCUTPAGEUC + 29)
ChainedPathTxBl.Text = "Chained path"
SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1) SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1)
OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30) OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30)
' tipo di utensile in uso per la lavorazione
m_ToolsArray(TOOL.SAW) = EgtMsg(MSG_DIRECTCUTPAGEUC + 24)
m_ToolsArray(TOOL.MILL) = "Mill"
SelToolCmBx.ItemsSource = m_ToolsArray
' Carico i dati dell'ultimo taglio ' Carico i dati dell'ultimo taglio
m_dDepth = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_FLATT_DEPTH, m_dDepth, m_MainWindow.GetIniFile()) m_dDepth = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_DEPTH, m_dDepth, m_MainWindow.GetIniFile())
m_dAngO = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_FLATT_ANGH, m_dAngO, m_MainWindow.GetIniFile()) m_dAngO = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_ANGH, m_dAngO, m_MainWindow.GetIniFile())
m_dLen = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_FLATT_LENGTH, m_dLen, m_MainWindow.GetIniFile()) m_dLen = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_LENGTH, m_dLen, m_MainWindow.GetIniFile())
m_dWid = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_FLATT_WIDTH, m_dWid, m_MainWindow.GetIniFile()) m_dWid = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_WIDTH, m_dWid, m_MainWindow.GetIniFile())
m_dOverlap = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_OVERLAP, m_dOverlap, m_MainWindow.GetIniFile()) m_dOverlap = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_OVERLAP, m_dOverlap, m_MainWindow.GetIniFile())
m_dZReleased = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_Z_RELEASED, m_dZReleased, m_MainWindow.GetIniFile()) m_dZReleased = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_Z_RELEASED, m_dZReleased, m_MainWindow.GetIniFile())
m_bHeadSide = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_FLATT_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0) m_bHeadSide = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_FLATT_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0)
m_nMachType = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_FLATT_MACHTYPE, m_nMachType, m_MainWindow.GetIniFile()) m_nMachType = GetPrivateProfileInt(S_DIRECTCUTS, K_DC_FLATT_MACHTYPE, m_nMachType, m_MainWindow.GetIniFile())
m_bRotLock = ( GetPrivateProfileInt( S_DIRECTCUTS, K_DC_FLATT_ROTLOCK, 0, m_MainWindow.GetIniFile()) <> 0) m_bRotLock = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_FLATT_ROTLOCK, 0, m_MainWindow.GetIniFile()) <> 0)
m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_FLATT_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) m_bChainedPath = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_FLAT_CHAINEDPATH, 0, m_MainWindow.GetIniFile()) <> 0)
m_nTool = GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, 1, m_MainWindow.GetMachIniFile())
m_ptTipP1.x = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile())
m_ptTipP1.y = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) m_ptTipP1.y = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_FLATT_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile())
End Sub End Sub
@@ -125,16 +145,16 @@ Public Class FlatteningCut
' Disabilito registrazione progetto modificato ' Disabilito registrazione progetto modificato
EgtDisableModified() EgtDisableModified()
' Creo layer temporaneo per crocette ' Creo layer temporaneo per crocette
m_nTempLay = EgtCreateGroup( GDB_ID.ROOT) m_nTempLay = EgtCreateGroup(GDB_ID.ROOT)
EgtSetLevel( m_nTempLay, GDB_LV.TEMP) EgtSetLevel(m_nTempLay, GDB_LV.TEMP)
' Origine tavola ' Origine tavola
m_bRawOk = True m_bRawOk = True
If Not EgtGetTableRef( 1, m_ptTabOri) Then If Not EgtGetTableRef(1, m_ptTabOri) Then
m_bRawOk = False m_bRawOk = False
EgtOutLog("Error on TableRef1") EgtOutLog("Error on TableRef1")
End If End If
' Dati del grezzo ' Dati del grezzo
If Not GetRawBox( m_ptRawMin, m_ptRawMax) Then If Not GetRawBox(m_ptRawMin, m_ptRawMax) Then
m_bRawOk = False m_bRawOk = False
EgtOutLog("Error on RawBox") EgtOutLog("Error on RawBox")
End If End If
@@ -142,7 +162,7 @@ Public Class FlatteningCut
m_bPointP1Ok = False m_bPointP1Ok = False
m_bPointP2Ok = False m_bPointP2Ok = False
' Inizializzo primo punto acquisito dal disegno ' Inizializzo primo punto acquisito dal disegno
m_ptPrev = m_ptTipP1 + ( m_ptTabOri - Point3d.ORIG()) m_ptPrev = m_ptTipP1 + (m_ptTabOri - Point3d.ORIG())
m_ptPrev.z = m_ptRawMax.z m_ptPrev.z = m_ptRawMax.z
' Disegno crocetta che indica il punto acquisito ' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev) CreateCross(m_nTempLay, m_ptPrev)
@@ -151,10 +171,10 @@ Public Class FlatteningCut
SetCoordVisibility(True) SetCoordVisibility(True)
ShowCoord() ShowCoord()
' Assegno parametri di lavorazione già definiti ' Assegno parametri di lavorazione già definiti
DepthTxBx.Text = LenToString( m_dDepth, 1) DepthTxBx.Text = LenToString(m_dDepth, 1)
DirectionTxBx.Text = DoubleToString( m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2) DirectionTxBx.Text = DoubleToString(m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2)
LenghtTxBx.Text = LenToString( m_dLen, 1) LenghtTxBx.Text = LenToString(m_dLen, 1)
WidthTxBx.Text = LenToString( m_dWid, 2) WidthTxBx.Text = LenToString(m_dWid, 2)
OverlapTxBx.Text = LenToString(m_dOverlap, 2) OverlapTxBx.Text = LenToString(m_dOverlap, 2)
ZReleasedTxBx.Text = LenToString(m_dZReleased, 2) ZReleasedTxBx.Text = LenToString(m_dZReleased, 2)
' carico la quota di svincolo per la spianatura ' carico la quota di svincolo per la spianatura
@@ -163,6 +183,9 @@ Public Class FlatteningCut
SideChBx.IsChecked = m_bHeadSide SideChBx.IsChecked = m_bHeadSide
TypeCmBx.SelectedIndex = m_nMachType TypeCmBx.SelectedIndex = m_nMachType
RotLockChBx.IsChecked = m_bRotLock RotLockChBx.IsChecked = m_bRotLock
ChainedPathChBx.IsChecked = m_bChainedPath
' Assegno l'utensile in definito in macchina per la fresatura
SelToolCmBx.SelectedIndex = m_nTool
' Reset taglio e disabilito bottone esecuzione ' Reset taglio e disabilito bottone esecuzione
m_bCutOk = False m_bCutOk = False
UpdateSimulOkBtn() UpdateSimulOkBtn()
@@ -176,19 +199,22 @@ Public Class FlatteningCut
Friend Sub FlatteningCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded Friend Sub FlatteningCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
' Salvo i dati correnti ' Salvo i dati correnti
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_DEPTH, DoubleToString( m_dDepth, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_DEPTH, DoubleToString(m_dDepth, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_ANGH, DoubleToString( m_dAngO, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_ANGH, DoubleToString(m_dAngO, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_LENGTH, DoubleToString( m_dLen, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_LENGTH, DoubleToString(m_dLen, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_WIDTH, DoubleToString( m_dWid, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_WIDTH, DoubleToString(m_dWid, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_OVERLAP, DoubleToString(m_dOverlap, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_OVERLAP, DoubleToString(m_dOverlap, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_Z_RELEASED, DoubleToString(m_dZReleased, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_Z_RELEASED, DoubleToString(m_dZReleased, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_HEADSIDE, If( m_bHeadSide, "1", "0"), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_HEADSIDE, If(m_bHeadSide, "1", "0"), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_MACHTYPE, m_nMachType.ToString(), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_MACHTYPE, m_nMachType.ToString(), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_ROTLOCK, If( m_bRotLock, "1", "0"), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_ROTLOCK, If(m_bRotLock, "1", "0"), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_POSX, DoubleToString( m_ptTipP1.x, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_POSX, DoubleToString(m_ptTipP1.x, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_FLATT_POSY, DoubleToString( m_ptTipP1.y, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_FLATT_POSY, DoubleToString(m_ptTipP1.y, 2), m_MainWindow.GetIniFile())
' Se non vado in simulazione ' Se non vado in simulazione
If Not m_bSimul Then If Not m_bSimul Then
' imposto la Z di sicurezza corretta
EgtMdbSetGeneralParam(MCH_GP.SAFEZ, DirectCutPageUC.m_dZSafe)
EgtMdbSave()
' Dichiaro sottopagina da non riattivare ' Dichiaro sottopagina da non riattivare
m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut m_MainWindow.m_DirectCutPageUC.m_ControlsDirectCutUC.m_ActiveDirectCutPage = ControlsDirectCutUC.DirectCutPages.DirectCut
' Rimuovo layer temporaneo per crocette ' Rimuovo layer temporaneo per crocette
@@ -265,19 +291,32 @@ Public Class FlatteningCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
If bIsMultiCut Then
EgtSetCalcTool(sSaw, "H1", 1)
End If
' Se acquisizone lama o laser ' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Ricavo dati lama corrente ' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -285,10 +324,10 @@ Public Class FlatteningCut
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -305,8 +344,6 @@ Public Class FlatteningCut
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
End If End If
@@ -336,19 +373,32 @@ Public Class FlatteningCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
If bIsMultiCut Then
EgtSetCalcTool(sSaw, "H1", 1)
End If
' Se acquisizone lama o laser ' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Ricavo dati lama corrente ' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -356,7 +406,7 @@ Public Class FlatteningCut
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return
@@ -371,8 +421,6 @@ Public Class FlatteningCut
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True m_bPointP2Ok = True
' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
End If End If
@@ -406,7 +454,7 @@ Public Class FlatteningCut
Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed
' Verifico che l'affondamento impostato non sia superiore a quello massimo ' Verifico che l'affondamento impostato non sia superiore a quello massimo
Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + MAX_TAB_DEPTH Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + m_MainWindow.m_CurrentMachine.MaxTabDepth
Dim dDepth As Double = 0 Dim dDepth As Double = 0
StringToLen(DepthTxBx.Text, dDepth) StringToLen(DepthTxBx.Text, dDepth)
If dDepth < 0 Then If dDepth < 0 Then
@@ -521,6 +569,16 @@ Public Class FlatteningCut
EgtDraw() EgtDraw()
End Sub End Sub
Private Sub SelToolCmBx_SelectionChanged(sender As Object, e As EventArgs) Handles SelToolCmBx.SelectionChanged
m_nTool = SelToolCmBx.SelectedIndex
' Disabilito il concatenamento
ChainedPathChBx.IsEnabled = (m_nTool = TOOL.MILL)
' Disegno il taglio
CreateFlatteningCut()
SetMachineInCurrPos()
EgtDraw()
End Sub
Private Sub RotLockChBx_Click(sender As Object, e As EventArgs) Handles RotLockChBx.Click Private Sub RotLockChBx_Click(sender As Object, e As EventArgs) Handles RotLockChBx.Click
m_bRotLock = RotLockChBx.IsChecked m_bRotLock = RotLockChBx.IsChecked
' Disegno il taglio ' Disegno il taglio
@@ -529,6 +587,14 @@ Public Class FlatteningCut
EgtDraw() EgtDraw()
End Sub End Sub
Private Sub ChainedPathChBx_Click(sender As Object, e As EventArgs) Handles ChainedPathChBx.Click
m_bChainedPath = ChainedPathChBx.IsChecked
' Disegno il taglio
CreateFlatteningCut()
SetMachineInCurrPos()
EgtDraw()
End Sub
Private Sub XcoordTxBx_EgtClosed(sender As Object, e As EventArgs) Handles XcoordTxBx.EgtClosed Private Sub XcoordTxBx_EgtClosed(sender As Object, e As EventArgs) Handles XcoordTxBx.EgtClosed
' Recupero il valore della coordinata (in 0 Tab) ' Recupero il valore della coordinata (in 0 Tab)
Dim dXcoord As Double = 0 Dim dXcoord As Double = 0
@@ -580,8 +646,8 @@ Public Class FlatteningCut
m_CurrProjPage.SetWarningMessage("Trial Version") m_CurrProjPage.SetWarningMessage("Trial Version")
#Else #Else
' Verifico non sia versione Ufficio ' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption( MainWindow.KEY_OPT.OFFICE_TYPE) Then If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage( "Office Version") m_CurrProjPage.SetWarningMessage("Office Version")
Return Return
End If End If
' Verifico ci sia un taglio valido ' Verifico ci sia un taglio valido
@@ -597,13 +663,15 @@ Public Class FlatteningCut
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
@@ -617,10 +685,12 @@ Public Class FlatteningCut
' ricavo l'ingombro di lavorazione in funzione dell'utensile selezionato ' ricavo l'ingombro di lavorazione in funzione dell'utensile selezionato
Private Function GetFootPrintTool() As Double Private Function GetFootPrintTool() As Double
' vedere nella pagina Allarm il capito "Incisioni" ' vedere nella pagina Allarm il capito "Incisioni"
Dim bForceUseMill As Boolean = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, 1, m_MainWindow.GetMachIniFile()) <> 0) Dim bForceUseMill As Boolean = (m_nTool = TOOL.MILL)
Dim dFootPrint As Double = 0 Dim dFootPrint As Double = 0
' verifico quale lavorazione è attiva ' verifico quale lavorazione è attiva
If Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrSawing) AndAlso Not bForceUseMill Then If Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrSawing) AndAlso Not bForceUseMill Then
Dim bSetTool As Boolean = EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw)
If Not bSetTool Then EgtOutLog("Erro nel settaggio utensile lama " & m_MainWindow.m_CurrentMachine.sCurrSaw)
EgtTdbGetCurrToolParam(MCH_TP.THICK, dFootPrint) EgtTdbGetCurrToolParam(MCH_TP.THICK, dFootPrint)
ElseIf Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrMilling) Then ElseIf Not String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrMilling) Then
Dim sCurrMill = m_MainWindow.m_CurrentMachine.sCurrMill Dim sCurrMill = m_MainWindow.m_CurrentMachine.sCurrMill
@@ -655,18 +725,24 @@ Public Class FlatteningCut
Dim ptStart As Point3d = m_ptTipP1 Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0 ptStart.z = 0
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen) Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
EgtSetInfo(nCutId, INFO_DIRECTCUT, 1)
' Imposto affondamento e angolo di fianco sul taglio ' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth) EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
If (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, 1, m_MainWindow.GetMachIniFile()) <> 0) Then If (m_nTool = TOOL.MILL) Then
EgtSetInfo(nCutId, INFO_WIDTH, GetFootPrintTool) EgtSetInfo(nCutId, INFO_WIDTH, GetFootPrintTool)
End If End If
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, 0) EgtSetInfo(nCutId, INFO_SIDE_ANGLE, 0)
' Imposto prima direzione ' Imposto prima direzione
EgtSetInfo(nCutId, INFO_DIR, 1) EgtSetInfo(nCutId, INFO_DIR, 1)
' Imposto se iniziare la fresatura dal punto indicato
Dim bReducePath As Boolean = Not GetPrivateProfileInt(S_MACH_NEST, K_MACH_STARTCENERTOOLPATH, 0, m_MainWindow.GetMachIniFile()) <> 0
If Not bReducePath Then EgtSetInfo(nCutId, INFO_STRICT, 0)
' Eventuale bloccaggio rotazione asse C tra le passate ' Eventuale bloccaggio rotazione asse C tra le passate
If RotLockChBx.IsChecked Then If RotLockChBx.IsChecked Then
EgtSetInfo(nCutId, INFO_ENABLE_INVERT, False) EgtSetInfo(nCutId, INFO_ENABLE_INVERT, False)
End If End If
EgtSetInfo(nCutId, INFO_STEP_TYPE, m_nMachType)
' Funzione che crea i tagli successivi al primo ' Funzione che crea i tagli successivi al primo
MultiplyCut(nLayerId, nCutId) MultiplyCut(nLayerId, nCutId)
' Creo layer per crocetta di riferimento ' Creo layer per crocetta di riferimento
@@ -699,10 +775,17 @@ Public Class FlatteningCut
End Function End Function
Private Function MultiplyCut(nLayerId As Integer, nCutId As Integer) As Boolean Private Function MultiplyCut(nLayerId As Integer, nCutId As Integer) As Boolean
Dim bEngWithMill As Boolean = (m_nTool = TOOL.MILL)
Dim bReducePath As Boolean = Not GetPrivateProfileInt(S_MACH_NEST, K_MACH_STARTCENERTOOLPATH, 0, m_MainWindow.GetMachIniFile()) <> 0
' Recupero spessore della lama (utensile) correntemente attiva ' Recupero spessore della lama (utensile) correntemente attiva
Dim dThick As Double = GetFootPrintTool() Dim dThick As Double = GetFootPrintTool()
If dThick = 0 Then Return False If dThick = 0 Then Return False
' Salvo la prima curva nella lista dei percorsi da concatenare
Dim CutsList As New List(Of Integer)
CutsList.Add(nCutId)
' Imposto angolo di rotazione a seconda del lato dei tagli ' Imposto angolo di rotazione a seconda del lato dei tagli
Dim dRotAngO As Double = If(SideChBx.IsChecked(), -90, 90) Dim dRotAngO As Double = If(SideChBx.IsChecked(), -90, 90)
' Definisco vettore di spostamento ' Definisco vettore di spostamento
@@ -720,6 +803,10 @@ Public Class FlatteningCut
If nStepNum > 1 Then If nStepNum > 1 Then
dDelta = dWidth / (nStepNum - 1) dDelta = dWidth / (nStepNum - 1)
End If End If
' definisco la larghezza dell'utensile (solo per la fresa)
EgtSetInfo(nCutId, INFO_WIDTH, dThick)
' definisco il tipo di utensile da utilizzare
EgtSetInfo(nCutId, "EngravingWithMill", m_nTool)
' Creo vettore delta ' Creo vettore delta
vtDelta *= dDelta vtDelta *= dDelta
' Creo indice per impostare info che indica tipologia di spianatura ' Creo indice per impostare info che indica tipologia di spianatura
@@ -728,6 +815,8 @@ Public Class FlatteningCut
Dim vtPerpMove As Vector3d = Index * vtDelta Dim vtPerpMove As Vector3d = Index * vtDelta
' Creo copie ' Creo copie
Dim nCut2Id = EgtCopyGlob(nCutId, nLayerId) Dim nCut2Id = EgtCopyGlob(nCutId, nLayerId)
EgtSetInfo(nCut2Id, INFO_WIDTH, dThick)
EgtSetInfo(nCutId, "EngravingWithMill", m_nTool)
' Assegno info direzione a seconda del tipo di spianatura ' Assegno info direzione a seconda del tipo di spianatura
If TypeCmBx.SelectedIndex = MACH_TYPE.ZIGZAG Then If TypeCmBx.SelectedIndex = MACH_TYPE.ZIGZAG Then
If nTypeIndex = 1 Then If nTypeIndex = 1 Then
@@ -741,10 +830,77 @@ Public Class FlatteningCut
EgtSetInfo(nCut2Id, INFO_DIR, 1) EgtSetInfo(nCut2Id, INFO_DIR, 1)
End If End If
EgtMove(nCut2Id, vtPerpMove, GDB_RT.GLOB) EgtMove(nCut2Id, vtPerpMove, GDB_RT.GLOB)
' ----------------------- CREO SEGMENTI PER CONCATENAMENTO CURVE -----------------------
If m_bChainedPath And bEngWithMill Then
If bReducePath Then
If Index < nStepNum - 1 Then
ExtendLenghtMillPath(nCut2Id, -dThick / 2)
ElseIf Index = nStepNum - 1 Then
If nStepNum Mod 2 = 0 Then
ExtendLenghtMillPath(nCut2Id, -dThick / 2, False, True)
Else
ExtendLenghtMillPath(nCut2Id, -dThick / 2, True, False)
End If
End If
End If
CutsList.Add(nCut2Id)
End If
' ----------------------- CREO SEGMENTI PER CONCATENAMENTO CURVE -----------------------
Next Next
' ----------------------- CREO UN UNICO PERCORSO CONCATENATO -----------------------
If m_bChainedPath And bEngWithMill Then
' Decidere se accorciare i tagli del valore del raggio utensile!
If bReducePath Then
ExtendLenghtMillPath(CutsList(0), -dThick / 2, False, True)
End If
For Index As Integer = 0 To CutsList.Count - 2
If Index Mod 2 <> 0 Then
' Costruisco la linea di collegamento tra due curve adiacenti
Dim PtStart_1 As Point3d
EgtStartPoint(CutsList(Index), GDB_RT.GLOB, PtStart_1)
Dim PtStart_2 As Point3d
EgtStartPoint(CutsList(Index + 1), GDB_RT.GLOB, PtStart_2)
CutsList.Add(EgtCreateLine(nLayerId, PtStart_1, PtStart_2))
Else
' Costruisco la linea di collegamento tra due curve adiacenti
Dim PtStart_1 As Point3d
EgtEndPoint(CutsList(Index), GDB_RT.GLOB, PtStart_1)
Dim PtStart_2 As Point3d
EgtEndPoint(CutsList(Index + 1), GDB_RT.GLOB, PtStart_2)
CutsList.Add(EgtCreateLine(nLayerId, PtStart_1, PtStart_2))
End If
Next
Dim ptNear As Point3d
EgtStartPoint(CutsList(0), ptNear)
Dim IdJointCurv As Integer = EgtCreateCurveCompoByChain(nLayerId, CutsList.ToArray, ptNear, True)
EgtSetInfo(IdJointCurv, INFO_DIRECTCUT, 1)
EgtSetInfo(IdJointCurv, INFO_STEP_TYPE, m_nMachType)
EgtSetInfo(IdJointCurv, INFO_WIDTH, dThick)
' Se unisco il percorso devo per forza usare la fresa!
EgtSetInfo(IdJointCurv, "EngravingWithMill", 1)
If Not bReducePath Then EgtSetInfo(IdJointCurv, INFO_STRICT, 0)
End If
' ----------------------- CREO UN UNICO PERCORSO CONCATENATO -----------------------
Return True Return True
End Function End Function
Private Sub ExtendLenghtMillPath(ByVal IdCurv As Integer, ByVal ReduceVal As Double,
ByVal Optional bStart As Boolean = True, ByVal Optional bEnd As Boolean = True)
Dim PtStart As Point3d
EgtStartPoint(IdCurv, GDB_RT.GLOB, PtStart)
Dim PtEnd As Point3d
EgtEndPoint(IdCurv, GDB_RT.GLOB, PtEnd)
If bStart Then EgtTrimExtendCurveByLen(IdCurv, ReduceVal, PtStart, GDB_RT.GLOB)
If bEnd Then EgtTrimExtendCurveByLen(IdCurv, ReduceVal, PtEnd, GDB_RT.GLOB)
Dim dLenLine As Double
EgtCurveLength(IdCurv, dLenLine)
EgtOutLog("Lunghezza segmento ridotto: " & dLenLine.ToString)
End Sub
Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean
' Aggiungo crocette ' Aggiungo crocette
Dim vtCrossX As New Vector3d(20, 0, 0) Dim vtCrossX As New Vector3d(20, 0, 0)
+67 -10
View File
@@ -38,6 +38,8 @@ Public Class GridCut
Private m_ptPrev As Point3d Private m_ptPrev As Point3d
' Layer per crocette temporanee ' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL Private m_nTempLay As Integer = GDB_ID.NULL
' Gestione spessore lama
Private m_bSawTh As Boolean = False
' Costanti ' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0 Private Const MAX_TAB_DEPTH As Double = 10.0
@@ -82,7 +84,12 @@ Public Class GridCut
m_nNumX = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_NUMX, m_nNumX, m_MainWindow.GetIniFile()) m_nNumX = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_NUMX, m_nNumX, m_MainWindow.GetIniFile())
m_dDimX = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_DIMX, m_dDimX, m_MainWindow.GetIniFile()) m_dDimX = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_DIMX, m_dDimX, m_MainWindow.GetIniFile())
m_nNumY = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_NUMY, m_nNumY, m_MainWindow.GetIniFile()) m_nNumY = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_NUMY, m_nNumY, m_MainWindow.GetIniFile())
m_dDimY = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_DIMY, m_dDimY, m_MainWindow.GetIniFile()) m_dDimY = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_GRID_DIMY, m_dDimY, m_MainWindow.GetIniFile())
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0)
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
m_bHeadSide = ( GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0) m_bHeadSide = ( GetPrivateProfileInt( S_DIRECTCUTS, K_DC_GRID_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0)
m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile())
m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_GRID_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile())
@@ -141,6 +148,11 @@ Public Class GridCut
NumPzYTxBx.Text = m_nNumY.ToString() NumPzYTxBx.Text = m_nNumY.ToString()
DimPzYTxBx.Text = LenToString( m_dDimY, 1) DimPzYTxBx.Text = LenToString( m_dDimY, 1)
SideChBx.IsChecked = m_bHeadSide SideChBx.IsChecked = m_bHeadSide
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0)
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
' Reset taglio e disabilito bottone esecuzione ' Reset taglio e disabilito bottone esecuzione
m_bCutOk = False m_bCutOk = False
UpdateSimulOkBtn() UpdateSimulOkBtn()
@@ -248,6 +260,12 @@ Public Class GridCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -260,6 +278,13 @@ Public Class GridCut
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -267,7 +292,7 @@ Public Class GridCut
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama ' Altrimenti da lama
@@ -275,10 +300,10 @@ Public Class GridCut
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -327,6 +352,12 @@ Public Class GridCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -339,6 +370,13 @@ Public Class GridCut
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -346,7 +384,7 @@ Public Class GridCut
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama ' Altrimenti da lama
@@ -354,10 +392,10 @@ Public Class GridCut
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP2) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True m_bPointP2Ok = True
@@ -405,7 +443,7 @@ Public Class GridCut
Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed
' Verifico che l'affondamento impostato non sia superiore a quello massimo ' Verifico che l'affondamento impostato non sia superiore a quello massimo
Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + MAX_TAB_DEPTH Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + m_MainWindow.m_CurrentMachine.MaxTabDepth
Dim dDepth As Double = 0 Dim dDepth As Double = 0
StringToLen(DepthTxBx.Text, dDepth) StringToLen(DepthTxBx.Text, dDepth)
If dDepth < 0 Then If dDepth < 0 Then
@@ -523,13 +561,15 @@ Public Class GridCut
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
@@ -616,6 +656,15 @@ Public Class GridCut
If dDimPzY <> 0 And nNumPzY > 0 And dDimPzX <> 0 And nNumPzX > 0 Then If dDimPzY <> 0 And nNumPzY > 0 And dDimPzX <> 0 And nNumPzX > 0 Then
Dim dLenX As Double = dThick + (dDimPzX + dThick) * nNumPzX Dim dLenX As Double = dThick + (dDimPzX + dThick) * nNumPzX
Dim nCutParaId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, dLenX + 0.1) Dim nCutParaId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, dLenX + 0.1)
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
' Recupero spessore lama corrente
Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
If m_bSawTh And Not String.IsNullOrEmpty(sSawing) Then
EgtOffsetCurve(nCutParaId, -dThick, OFF_TYPE.EXTEND)
End If
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
' Imposto affondamento e angolo di fianco sul taglio ' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutParaId, INFO_DEPTH, m_dDepth) EgtSetInfo(nCutParaId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutParaId, INFO_SIDE_ANGLE, m_dAngV) EgtSetInfo(nCutParaId, INFO_SIDE_ANGLE, m_dAngV)
@@ -634,6 +683,13 @@ Public Class GridCut
' Arretro il punto di partenza di uno spessore lama ' Arretro il punto di partenza di uno spessore lama
Dim vtDeltaPos As Vector3d = Vector3d.FromPolar(dThick + 0.1, m_dAngO - 90) Dim vtDeltaPos As Vector3d = Vector3d.FromPolar(dThick + 0.1, m_dAngO - 90)
Dim nCutPerpId = EgtCreateLinePDL(nLayerId, ptStart + vtDeltaPos, m_dAngO + 90, dLenY + 0.2) Dim nCutPerpId = EgtCreateLinePDL(nLayerId, ptStart + vtDeltaPos, m_dAngO + 90, dLenY + 0.2)
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
If m_bSawTh And Not String.IsNullOrEmpty(sSawing) Then
EgtOffsetCurve(nCutPerpId, -dThick, OFF_TYPE.EXTEND)
End If
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
' Specchio se è attivo il flag che cambia lato di disegno ' Specchio se è attivo il flag che cambia lato di disegno
If SideChBx.IsChecked() Then If SideChBx.IsChecked() Then
Dim vtRot As Vector3d = Vector3d.FromPolar(1, m_dAngO + 90) Dim vtRot As Vector3d = Vector3d.FromPolar(1, m_dAngO + 90)
@@ -656,6 +712,7 @@ Public Class GridCut
End Function End Function
Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean
ptP += New Vector3d(0, 0, 0.15)
' Aggiungo crocette ' Aggiungo crocette
Dim vtCrossX As New Vector3d(20, 0, 0) Dim vtCrossX As New Vector3d(20, 0, 0)
Dim vtCrossY As New Vector3d(0, 20, 0) Dim vtCrossY As New Vector3d(0, 20, 0)
+106
View File
@@ -7,6 +7,8 @@ Public Class MachineButtonsUC
Private m_DirectCutPage As DirectCutPageUC Private m_DirectCutPage As DirectCutPageUC
Friend m_CN As CN_generico Friend m_CN As CN_generico
Public nCountButton As Integer = 11
Private m_bOnlyLaser As Boolean = False Private m_bOnlyLaser As Boolean = False
Private m_bFirst As Boolean = True Private m_bFirst As Boolean = True
@@ -33,6 +35,7 @@ Public Class MachineButtonsUC
Private Const BTN_STATE_DOOR_OPENED As String = "DoorOpened" Private Const BTN_STATE_DOOR_OPENED As String = "DoorOpened"
Private Const BTN_STATE_DOOR_CLOSED As String = "DoorClosed" Private Const BTN_STATE_DOOR_CLOSED As String = "DoorClosed"
Private Const BTN_STATE_PARKING As String = "Parking" Private Const BTN_STATE_PARKING As String = "Parking"
Private Const BTN_STATE_HOME As String = "Home"
Private Const BTN_ENABLE_ZONE_1 As String = "EnableZone1" Private Const BTN_ENABLE_ZONE_1 As String = "EnableZone1"
Private Const BTN_ENABLE_ZONE_2 As String = "EnableZone2" Private Const BTN_ENABLE_ZONE_2 As String = "EnableZone2"
Private Const BTN_ENABLE_PC As String = "EnablePC" Private Const BTN_ENABLE_PC As String = "EnablePC"
@@ -76,6 +79,9 @@ Public Class MachineButtonsUC
GetToggleButton(nIndex + 1).Visibility = Windows.Visibility.Hidden GetToggleButton(nIndex + 1).Visibility = Windows.Visibility.Hidden
Next Next
' notifico nella variabile pubblica il numero di pulsanti inseriti nella barra
nCountButton = m_nCount
' Se variabile di stato "Nothing"/"DoorOpened"/"DoorClosed" imposto immagine fissa ' Se variabile di stato "Nothing"/"DoorOpened"/"DoorClosed" imposto immagine fissa
For nIndex As Integer = 0 To m_nCount - 1 For nIndex As Integer = 0 To m_nCount - 1
If StateFlagArray(nIndex) = BTN_STATE_NOTHING OrElse If StateFlagArray(nIndex) = BTN_STATE_NOTHING OrElse
@@ -267,9 +273,62 @@ Public Class MachineButtonsUC
End If End If
Return Return
End If End If
' CONTROLLO FANUC
Case 4
' ------------------------------------ FANUC ------------------------------------
' eventuale scrittura di linea di comando MDI
If Not String.IsNullOrEmpty(CmdString) Then
' attivo mpdalità MDI
m_CN.DGeneralFunctions_WriteCncMode(2)
System.Threading.Thread.Sleep(100)
' salvo la stringa di comando ricevuta dal file lua
m_CN.sz_ManualDataInput = CmdString
' esguo la funzione che ha il compito di scrivere il comando MDI
m_CN.MDI_command()
End If
' attivo modalità AUTO
m_CN.DGeneralFunctions_WriteCncMode(7)
System.Threading.Thread.Sleep(100)
If String.IsNullOrEmpty(EValue) Then
' EActive: impulsivo "D#####"
m_CN.NC_pulse_bit(ENumber)
EgtOutLog("Fanuc_DNumber= " & ENumber)
Else
' EActive + EValue: scrittura comando invariabile Short oppure Bit
If ENumber.Contains(".") Then
' D#####.#
Dim bEValue As Boolean
If EValue.Trim = "1" Then bEValue = True
m_CN.NC_write_var_bit(ENumber, CBool(EValue))
Else
' D#####
m_CN.NC_write_var_short(ENumber, CShort(EValue))
End If
EgtOutLog("Fanuc_DNumber= " & ENumber & " DValue= " & EValue)
End If
' eventale caricamento seconda variabile
If String.IsNullOrEmpty(EValue2) Then
' EActive: impulsivo "D#####"
m_CN.NC_pulse_bit(ENumber2)
EgtOutLog("Fanuc_DNumber= " & ENumber2)
Else
' EActive + EValue: scrittura comando invariabile Short oppure Bit
If ENumber2.Contains(".") Then
' D#####.#
Dim bEValue2 As Boolean
If EValue2.Trim = "1" Then bEValue2 = True
m_CN.NC_write_var_bit(ENumber2, CBool(EValue2))
Else
' D#####
m_CN.NC_write_var_short(ENumber2, CShort(EValue2))
End If
EgtOutLog("Fanuc_DNumber2= " & ENumber2 & " DValue2= " & EValue2)
End If
Return
End Select End Select
End If End If
Dim nResult As Short Dim nResult As Short
' Imposto modalità MDI per controlli num ' Imposto modalità MDI per controlli num
Select Case m_MainWindow.m_CNCommunication.m_nNCType Select Case m_MainWindow.m_CNCommunication.m_nNCType
@@ -286,6 +345,8 @@ Public Class MachineButtonsUC
m_CN.DGeneralFunctions_CycleStart() m_CN.DGeneralFunctions_CycleStart()
Case 3 Case 3
'Per il siemens non devo fare nulla 'Per il siemens non devo fare nulla
Case 4
' Nicola: 27/03/2023 attivazione della funzione M# indicata?
End Select End Select
If b2Start Then If b2Start Then
@@ -320,6 +381,17 @@ Public Class MachineButtonsUC
EgtTdbGetCurrToolParam(MCH_TP.SPEED, dSpeed) EgtTdbGetCurrToolParam(MCH_TP.SPEED, dSpeed)
End If End If
EgtLuaSetGlobNumVar("CMD.S", dSpeed) EgtLuaSetGlobNumVar("CMD.S", dSpeed)
' versione 2.5e1
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
Dim sToolPos As String = String.Empty
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolPos) Then
EgtLuaGetGlobStringVar("CMD.TCPOS", sToolPos)
End If
Dim dToolDiam As Double = 0
If EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) Then
EgtLuaSetGlobNumVar("CMD.DIAM", dToolDiam * 1000)
End If
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2)
EgtLuaSetGlobNumVar("CMD.L1", dL1) EgtLuaSetGlobNumVar("CMD.L1", dL1)
@@ -640,6 +712,40 @@ Public Class MachineButtonsUC
End If End If
End Sub End Sub
Friend Sub HomeStateChanged(HomeState As Boolean)
Dim nIndex As Integer = Array.IndexOf(StateFlagArray, BTN_STATE_HOME)
If nIndex = -1 Then Return
If HomeState Then
GetToggleButton(nIndex + 1).IsChecked = True
Try
Dim s As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
s = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex)
Else
s = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\NewIcons\" & ImageArrayY(nIndex)
End If
Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s)
GetImage(nIndex + 1).Source = sButtonImageSource
Catch ex As Exception
EgtOutLog("Error loading image " & ImageArrayY(nIndex + 1))
End Try
Else
GetToggleButton(nIndex + 1).IsChecked = False
Try
Dim s As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
s = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & ImageArrayY(nIndex)
Else
s = m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\NewIcons\" & ImageArrayY(nIndex)
End If
Dim sButtonImageSource As ImageSource = ImageConverter.ConvertFromString(s)
GetImage(nIndex + 1).Source = sButtonImageSource
Catch ex As Exception
EgtOutLog("Error loading image " & ImageArrayN(nIndex + 1))
End Try
End If
End Sub
Friend Sub EnableZoneStateChanged(ZoneState As Integer) Friend Sub EnableZoneStateChanged(ZoneState As Integer)
Dim sFlag As String = String.Empty Dim sFlag As String = String.Empty
If ZoneState = 1 Then If ZoneState = 1 Then
+36 -1
View File
@@ -53,14 +53,43 @@ Public Class ManualAxesMoveUC
' Imposto check per considerare spessore lama ' Imposto check per considerare spessore lama
L1SawThChBx.IsChecked = m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove L1SawThChBx.IsChecked = m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove
L2SawThChBx.IsChecked = m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove L2SawThChBx.IsChecked = m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove
' Aggiorno visualizzazione
SetMachineInCurrPos()
EgtDraw()
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
End Sub End Sub
Private Sub ManualAxesMove_UnLoaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded Private Sub ManualAxesMove_UnLoaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
m_Timer.Stop() m_Timer.Stop()
m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove = (L1SawThChBx.IsEnabled And L1SawThChBx.IsChecked) Or m_MainWindow.m_CurrentMachine.bAddSawThTo5AxMove = (L1SawThChBx.IsEnabled And L1SawThChBx.IsChecked) Or
(L2SawThChBx.IsEnabled And L2SawThChBx.IsChecked) (L2SawThChBx.IsEnabled And L2SawThChBx.IsChecked)
' Nascondo la macchina
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = False
EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw()
End Sub End Sub
Private Function SetMachineInCurrPos() As Boolean
' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return False
' Recupero il nome degli assi macchina
Dim sL1 As String = String.Empty
Dim sL2 As String = String.Empty
Dim sL3 As String = String.Empty
Dim sR1 As String = String.Empty
Dim sR2 As String = String.Empty
If Not m_MainWindow.m_CNCommunication.GetAxesNames(sL1, sL2, sL3, sR1, sR2) Then Return False
' Visualizzo macchina in posizione
EgtSetAxisPos(sL1, dL1)
EgtSetAxisPos(sL2, dL2)
EgtSetAxisPos(sL3, dL3)
EgtSetAxisPos(sR1, dR1)
EgtSetAxisPos(sR2, dR2)
Return True
End Function
Private Sub UpdateAxesNames() Private Sub UpdateAxesNames()
Dim sL1 As String = String.Empty Dim sL1 As String = String.Empty
Dim sL2 As String = String.Empty Dim sL2 As String = String.Empty
@@ -125,11 +154,16 @@ Public Class ManualAxesMoveUC
Private Sub Timer_tick() Private Sub Timer_tick()
UpdateAxesNames() UpdateAxesNames()
UpdateUseSawThickness() UpdateUseSawThickness()
' Aggiorno posizione macchina in disegno
SetMachineInCurrPos()
' Aggiorno il disegno
EgtDraw()
End Sub End Sub
Private m_MoveClicked As Boolean = False Private m_MoveClicked As Boolean = False
Private Sub XXBtn_Click(sender As Object, e As MouseButtonEventArgs) Handles L1Btn.PreviewMouseDown, L2Btn.PreviewMouseDown, L3Btn.PreviewMouseDown, R1Btn.PreviewMouseDown, R2Btn.PreviewMouseDown Private Sub XXBtn_Click(sender As Object, e As MouseButtonEventArgs) Handles L1Btn.PreviewMouseDown, L2Btn.PreviewMouseDown, L3Btn.PreviewMouseDown, R1Btn.PreviewMouseDown, R2Btn.PreviewMouseDown
If e.ClickCount > 1 OrElse m_MoveClicked Then If e.ClickCount > 1 OrElse m_MoveClicked Then
EgtOutLog(" → Hold on! Do not click compulsively.")
Return Return
End If End If
m_MoveClicked = True m_MoveClicked = True
@@ -209,13 +243,14 @@ Public Class ManualAxesMoveUC
System.Threading.Thread.Sleep(150) System.Threading.Thread.Sleep(150)
m_CN.DGeneralFunctions_CycleStart() m_CN.DGeneralFunctions_CycleStart()
System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep) System.Threading.Thread.Sleep(m_MainWindow.m_CurrentMachine.nThreadSleep)
m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale ' m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale
m_MoveClicked = False m_MoveClicked = False
End Sub End Sub
Private Sub SiemensMoveAxis(CurrentBtn As Button) Private Sub SiemensMoveAxis(CurrentBtn As Button)
' leggo se stato reset ' leggo se stato reset
If Not m_CN.bResetState Then If Not m_CN.bResetState Then
EgtOutLog("Reset status is 'False', is denied to execute file '\DirectCmd\AxesMove.lua'.")
m_MoveClicked = False m_MoveClicked = False
Return Return
End If End If
+68 -12
View File
@@ -38,7 +38,8 @@ Public Class MultipleCut
Private m_ptPrev As Point3d Private m_ptPrev As Point3d
' Layer per crocette temporanee ' Layer per crocette temporanee
Private m_nTempLay As Integer = GDB_ID.NULL Private m_nTempLay As Integer = GDB_ID.NULL
' Gestione spessore lama
Private m_bSawTh As Boolean = False
' Costanti ' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0 Private Const MAX_TAB_DEPTH As Double = 10.0
Private Const MIN_CUT_LEN As Double = 10.0 Private Const MIN_CUT_LEN As Double = 10.0
@@ -90,9 +91,14 @@ Public Class MultipleCut
m_dAngO = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_ANGH, m_dAngO, m_MainWindow.GetIniFile()) m_dAngO = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_ANGH, m_dAngO, m_MainWindow.GetIniFile())
m_dAngV = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_ANGV, m_dAngV, m_MainWindow.GetIniFile()) m_dAngV = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_ANGV, m_dAngV, m_MainWindow.GetIniFile())
For nI As Integer = 0 To 9 For nI As Integer = 0 To 9
m_nNum( nI) = GetPrivateProfileInt( S_DIRECTCUTS, K_DC_MULT_NUM & (nI+1).ToString(), 0, m_MainWindow.GetIniFile()) m_nNum(nI) = GetPrivateProfileInt(S_DIRECTCUTS, K_DC_MULT_NUM & (nI + 1).ToString(), 0, m_MainWindow.GetIniFile())
m_dDim( nI) = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_DIM & (nI+1).ToString(), 0, m_MainWindow.GetIniFile()) m_dDim(nI) = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_MULT_DIM & (nI + 1).ToString(), 0, m_MainWindow.GetIniFile())
Next Next
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0)
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
m_bHeadSide = ( GetPrivateProfileInt( S_DIRECTCUTS, K_DC_MULT_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0) m_bHeadSide = ( GetPrivateProfileInt( S_DIRECTCUTS, K_DC_MULT_HEADSIDE, 0, m_MainWindow.GetIniFile()) <> 0)
m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile())
m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_MULT_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile())
@@ -168,6 +174,11 @@ Public Class MultipleCut
NumPz10TxBx.Text = m_nNum(9).ToString() NumPz10TxBx.Text = m_nNum(9).ToString()
DimPz10TxBx.Text = LenToString( m_dDim(9), 1) DimPz10TxBx.Text = LenToString( m_dDim(9), 1)
SideChBx.IsChecked = m_bHeadSide SideChBx.IsChecked = m_bHeadSide
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0)
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
' Reset taglio e disabilito bottone esecuzione ' Reset taglio e disabilito bottone esecuzione
m_bCutOk = False m_bCutOk = False
UpdateSimulOkBtn() UpdateSimulOkBtn()
@@ -274,6 +285,12 @@ Public Class MultipleCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -286,6 +303,13 @@ Public Class MultipleCut
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -293,7 +317,7 @@ Public Class MultipleCut
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
@@ -303,10 +327,10 @@ Public Class MultipleCut
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -354,6 +378,12 @@ Public Class MultipleCut
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -366,6 +396,13 @@ Public Class MultipleCut
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -373,7 +410,7 @@ Public Class MultipleCut
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama ' Altrimenti da lama
@@ -381,10 +418,10 @@ Public Class MultipleCut
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP2) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True m_bPointP2Ok = True
@@ -435,7 +472,7 @@ Public Class MultipleCut
Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed
' Verifico che l'affondamento impostato non sia superiore a quello massimo ' Verifico che l'affondamento impostato non sia superiore a quello massimo
Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + MAX_TAB_DEPTH Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + m_MainWindow.m_CurrentMachine.MaxTabDepth
Dim dDepth As Double = 0 Dim dDepth As Double = 0
StringToLen(DepthTxBx.Text, dDepth) StringToLen(DepthTxBx.Text, dDepth)
If dDepth < 0 Then If dDepth < 0 Then
@@ -569,13 +606,15 @@ Public Class MultipleCut
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
@@ -606,6 +645,22 @@ Public Class MultipleCut
Dim ptStart As Point3d = m_ptTipP1 Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0 ptStart.z = 0
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen) Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
' --- INIZIO GESTIONE SPECIALE --- per macchina sinistrorsa
' Recupero spessore lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0
' Se è impostata una lavorazione di lama
If Not String.IsNullOrEmpty(sSawing) Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
End If
If m_bSawTh And Not String.IsNullOrEmpty(sSawing) Then
EgtOffsetCurve(nCutId, -dThick, OFF_TYPE.EXTEND)
End If
' --- FINE GESTIONE SPECIALE --- per macchina sinistrorsa
' Imposto affondamento e angolo di fianco sul taglio ' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth) EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV) EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV)
@@ -698,6 +753,7 @@ Public Class MultipleCut
End Function End Function
Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean Private Function CreateCross(nLayerId As Integer, ptP As Point3d) As Boolean
ptP += New Vector3d(0, 0, 0.15)
' Aggiungo crocette ' Aggiungo crocette
Dim vtCrossX As New Vector3d(20, 0, 0) Dim vtCrossX As New Vector3d(20, 0, 0)
Dim vtCrossY As New Vector3d(0, 20, 0) Dim vtCrossY As New Vector3d(0, 20, 0)
+4 -2
View File
@@ -180,13 +180,15 @@ Public Class Polishing
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
+41 -9
View File
@@ -210,17 +210,30 @@ Public Class SawTestUC
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
EgtSetCalcTool(m_sSaw, "H1", 1)
End If
' Se acquisizone lama o laser ' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -228,10 +241,10 @@ Public Class SawTestUC
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -280,17 +293,30 @@ Public Class SawTestUC
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
EgtSetCalcTool(m_sSaw, "H1", 1)
End If
' Se acquisizone lama o laser ' Se acquisizone lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.SAW Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -298,10 +324,10 @@ Public Class SawTestUC
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return If Not EgtSetCalcTool(m_sSaw, "H1", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP2) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True m_bPointP2Ok = True
@@ -351,7 +377,7 @@ Public Class SawTestUC
Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed
' Verifico che l'affondamento impostato non sia superiore a quello massimo ' Verifico che l'affondamento impostato non sia superiore a quello massimo
Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + MAX_TAB_DEPTH Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + m_MainWindow.m_CurrentMachine.MaxTabDepth
Dim dDepth As Double = 0 Dim dDepth As Double = 0
StringToLen(DepthTxBx.Text, dDepth) StringToLen(DepthTxBx.Text, dDepth)
If dDepth < 0 Then If dDepth < 0 Then
@@ -450,13 +476,15 @@ Public Class SawTestUC
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
@@ -502,6 +530,10 @@ Public Class SawTestUC
ElseIf nWSide = MCH_SAW_WS.LEFT Then ElseIf nWSide = MCH_SAW_WS.LEFT Then
vtPerp = vtDir vtPerp = vtDir
vtPerp.Rotate(Vector3d.Z_AX, +90) vtPerp.Rotate(Vector3d.Z_AX, +90)
Else
m_CurrProjPage.ClearMessage()
' 91143 = Set machining side: right or left.
m_CurrProjPage.SetInfoMessage(EgtMsg(91143))
End If End If
Dim ptEnd As Point3d = ptStart + vtDir * m_dLen + vtPerp * dThick Dim ptEnd As Point3d = ptStart + vtDir * m_dLen + vtPerp * dThick
Dim dLen2 As Double = m_dLen / 2 Dim dLen2 As Double = m_dLen / 2
+99 -32
View File
@@ -1,4 +1,5 @@
Imports EgtUILib Imports System.Windows.Threading
Imports EgtUILib
Public Class SingleCutUC Public Class SingleCutUC
@@ -39,10 +40,14 @@ Public Class SingleCutUC
Private m_nTempLay As Integer = GDB_ID.NULL Private m_nTempLay As Integer = GDB_ID.NULL
' Costanti ' Costanti
Private Const MAX_TAB_DEPTH As Double = 10.0 Private Const MAX_TAB_DEPTH As Double = 10.0 ' sostituita da un m_MaxTabDepth letto da file ini macchina
Private Const MIN_CUT_LEN As Double = 10.0 Private Const MIN_CUT_LEN As Double = 10.0
Private Const MAX_SIDE_ANG As Double = 60.0 Private Const MAX_SIDE_ANG As Double = 60.0
' Costanti che indicano la modalità di acquisizione dei punti ' Costanti che indicano la modalità di acquisizione dei punti
' Utilizzato per aggiornare la posizione della macchina
Private m_RefreshTimer As New DispatcherTimer
Private Enum PT_MODE As Integer Private Enum PT_MODE As Integer
SAW = 0 SAW = 0
LASER = 1 LASER = 1
@@ -68,14 +73,14 @@ Public Class SingleCutUC
SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1) SimulBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1)
OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30) OkBtn.ToolTip = EgtMsg(MSG_DIRECTCUTPAGEUC + 30)
' Carico i dati dell'ultimo taglio ' Carico i dati dell'ultimo taglio
m_dDepth = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_DEPTH, m_dDepth, m_MainWindow.GetIniFile()) m_dDepth = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_DEPTH, m_dDepth, m_MainWindow.GetIniFile())
m_dLen = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_LENGTH, m_dLen, m_MainWindow.GetIniFile()) m_dLen = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_LENGTH, m_dLen, m_MainWindow.GetIniFile())
m_dAngO = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_ANGH, m_dAngO, m_MainWindow.GetIniFile()) m_dAngO = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_ANGH, m_dAngO, m_MainWindow.GetIniFile())
m_dAngV = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_ANGV, m_dAngV, m_MainWindow.GetIniFile()) m_dAngV = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_ANGV, m_dAngV, m_MainWindow.GetIniFile())
m_dOffset = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_OFFSET, m_dOffset, m_MainWindow.GetIniFile()) m_dOffset = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_OFFSET, m_dOffset, m_MainWindow.GetIniFile())
m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0) m_bSawTh = (GetPrivateProfileInt(S_DIRECTCUTS, K_DC_SING_SAWTH, 0, m_MainWindow.GetIniFile()) <> 0)
m_ptTipP1.x = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile()) m_ptTipP1.x = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_POSX, m_ptTipP1.x, m_MainWindow.GetIniFile())
m_ptTipP1.y = GetPrivateProfileDouble( S_DIRECTCUTS, K_DC_SING_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile()) m_ptTipP1.y = GetPrivateProfileDouble(S_DIRECTCUTS, K_DC_SING_POSY, m_ptTipP1.y, m_MainWindow.GetIniFile())
End Sub End Sub
Private Sub SingleCut_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub SingleCut_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -92,6 +97,10 @@ Public Class SingleCutUC
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook) EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook)
EgtDraw() EgtDraw()
' riavvio il timer per visualizzare la poszione della macchina
If Not IsNothing(m_RefreshTimer) Then
m_RefreshTimer.Start()
End If
Return Return
End If End If
' Disabilito registrazione progetto modificato ' Disabilito registrazione progetto modificato
@@ -114,7 +123,7 @@ Public Class SingleCutUC
m_bPointP1Ok = False m_bPointP1Ok = False
m_bPointP2Ok = False m_bPointP2Ok = False
' Inizializzo primo punto acquisito dal disegno ' Inizializzo primo punto acquisito dal disegno
m_ptPrev = m_ptTipP1 + ( m_ptTabOri - Point3d.ORIG()) m_ptPrev = m_ptTipP1 + (m_ptTabOri - Point3d.ORIG())
m_ptPrev.z = m_ptRawMax.z m_ptPrev.z = m_ptRawMax.z
' Disegno crocetta che indica il punto acquisito ' Disegno crocetta che indica il punto acquisito
CreateCross(m_nTempLay, m_ptPrev) CreateCross(m_nTempLay, m_ptPrev)
@@ -138,21 +147,40 @@ Public Class SingleCutUC
' Deseleziono bottone primo punto ' Deseleziono bottone primo punto
Point1Btn.IsChecked = False Point1Btn.IsChecked = False
' la visualizzazione dei comandi è gestira dalla DirectCutPageUC richiamando la funzione ReloadParam ' la visualizzazione dei comandi è gestita dalla DirectCutPageUC richiamando la funzione ReloadParam
' forzo la macchina ad essere visibile fin da subito
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
m_MainWindow.m_DirectCutPageUC.m_nMachLook = MCH_LOOK.TAB
' Creo il timer il timer per aggiornare il posizionamento della macchina
AddHandler m_RefreshTimer.Tick, AddressOf RefreshTimer_tick
m_RefreshTimer.Interval = TimeSpan.FromMilliseconds(1000)
' Aggiorno visualizzazione ' Aggiorno visualizzazione
EgtDraw() EgtDraw()
' Avvi il timer
m_RefreshTimer.Start()
End Sub
Private Sub RefreshTimer_tick()
' se è impostata la visualizzazione della sola tavola allora non aggiorno il disegno
If m_MainWindow.m_DirectCutPageUC.m_nMachLook = MCH_LOOK.TAB Then Return
' Aggiorno visualizzazione
SetMachineInCurrPos()
' Aggiorno il disegno
EgtDraw()
End Sub End Sub
Friend Sub SingleCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded Friend Sub SingleCut_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
' Salvo i dati correnti ' Salvo i dati correnti
WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_DEPTH, DoubleToString( m_dDepth, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_DEPTH, DoubleToString(m_dDepth, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_LENGTH, DoubleToString( m_dLen, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_LENGTH, DoubleToString(m_dLen, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_ANGH, DoubleToString( m_dAngO, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_ANGH, DoubleToString(m_dAngO, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_ANGV, DoubleToString( m_dAngV, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_ANGV, DoubleToString(m_dAngV, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_OFFSET, DoubleToString(m_dOffset, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_OFFSET, DoubleToString(m_dOffset, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_SAWTH, If(m_bSawTh, "1", "0"), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_SAWTH, If(m_bSawTh, "1", "0"), m_MainWindow.GetIniFile())
WritePrivateProfileString( S_DIRECTCUTS, K_DC_SING_POSX, DoubleToString( m_ptTipP1.x, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSX, DoubleToString(m_ptTipP1.x, 2), m_MainWindow.GetIniFile())
WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSY, DoubleToString(m_ptTipP1.y, 2), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_DIRECTCUTS, K_DC_SING_POSY, DoubleToString(m_ptTipP1.y, 2), m_MainWindow.GetIniFile())
' Se non vado in simulazione ' Se non vado in simulazione
If Not m_bSimul Then If Not m_bSimul Then
@@ -171,6 +199,8 @@ Public Class SingleCutUC
EgtSetMachineLook(MCH_LOOK.TAB) EgtSetMachineLook(MCH_LOOK.TAB)
EgtDraw() EgtDraw()
End If End If
' interrompo il Timer per aggiornare la visualizzazione del posizionamento macchina
m_RefreshTimer.Stop()
' Dichiaro pagina non attiva ' Dichiaro pagina non attiva
m_bActive = False m_bActive = False
End Sub End Sub
@@ -238,6 +268,12 @@ Public Class SingleCutUC
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -249,6 +285,13 @@ Public Class SingleCutUC
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -256,7 +299,8 @@ Public Class SingleCutUC
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
EgtOutLog("Coordinate punto 1 da H3: " & m_ptTipP1.x.ToString & " ," & m_ptTipP1.y.ToString)
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama ' Altrimenti da lama
@@ -264,10 +308,11 @@ Public Class SingleCutUC
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
EgtOutLog("Coordinate punto 1 da H1: " & m_ptTipP1.x.ToString & " ," & m_ptTipP1.y.ToString)
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -288,7 +333,6 @@ Public Class SingleCutUC
m_bPointP1Ok = True m_bPointP1Ok = True
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
End If End If
' Disegno il taglio ' Disegno il taglio
@@ -298,6 +342,7 @@ Public Class SingleCutUC
m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True m_MainWindow.m_DirectCutPageUC.m_bShowMachine = True
EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook) EgtSetMachineLook(m_MainWindow.m_DirectCutPageUC.m_nMachLook)
EgtDraw() EgtDraw()
' Seleziono il bottone per indicare che il primo punto è stato acquisito ' Seleziono il bottone per indicare che il primo punto è stato acquisito
Point1Btn.IsChecked = True Point1Btn.IsChecked = True
' Abilito e deseleziono secondo punto ' Abilito e deseleziono secondo punto
@@ -317,6 +362,12 @@ Public Class SingleCutUC
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
If bIsMultiCut Then
m_MainWindow.m_DirectCutPageUC.ReloadParam()
End If
' Recupero dati utensile e testa corrente ' Recupero dati utensile e testa corrente
Dim sTool As String = "" Dim sTool As String = ""
Dim sHead As String = "" Dim sHead As String = ""
@@ -328,6 +379,13 @@ Public Class SingleCutUC
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
Dim vAng() As Double = {dR1, dR2, 0}
If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Ricavo dati lama corrente ' Ricavo dati lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
' Se punto da laser ' Se punto da laser
@@ -335,20 +393,20 @@ Public Class SingleCutUC
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
EgtOutLog("Coordinate punto 2 da H3: " & m_ptTipP2.x.ToString & " ," & m_ptTipP2.y.ToString)
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Altrimenti da lama ' Altrimenti da lama
Else Else
' Reimposto eventuale precedente utensile ' Reimposto eventuale precedente utensile
EgtSetCalcTool(sTool, sHead, nExit) EgtSetCalcTool(sTool, sHead, nExit)
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP2) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP2) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP2) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP2) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP2.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP2Ok = True m_bPointP2Ok = True
@@ -381,6 +439,7 @@ Public Class SingleCutUC
m_dAngO = dAngOrizzDeg m_dAngO = dAngOrizzDeg
LenghtTxBx.Text = LenToString(m_dLen, 1) LenghtTxBx.Text = LenToString(m_dLen, 1)
DirectionTxBx.Text = DoubleToString(m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2) DirectionTxBx.Text = DoubleToString(m_dAngO - m_MainWindow.m_CurrentMachine.dDeltaC, 2)
EgtOutLog("Lunghezza taglio: " & dLen.ToString & "Angolo: " & dAngOrizzDeg.ToString)
CreateSingleCut() CreateSingleCut()
' Disegno la macchina nella sua posizione reale ' Disegno la macchina nella sua posizione reale
SetMachineInCurrPos() SetMachineInCurrPos()
@@ -398,7 +457,7 @@ Public Class SingleCutUC
Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed Private Sub DepthTxBx_EgtClosed(sender As Object, e As EventArgs) Handles DepthTxBx.EgtClosed
' Verifico che l'affondamento impostato non sia superiore a quello massimo ' Verifico che l'affondamento impostato non sia superiore a quello massimo
Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + MAX_TAB_DEPTH Dim dMaxDepth = m_ptRawMax.z - m_ptRawMin.z + m_MainWindow.m_CurrentMachine.MaxTabDepth
Dim dDepth As Double = 0 Dim dDepth As Double = 0
StringToLen(DepthTxBx.Text, dDepth) StringToLen(DepthTxBx.Text, dDepth)
If dDepth < 0 Then If dDepth < 0 Then
@@ -476,7 +535,7 @@ Public Class SingleCutUC
EgtDraw() EgtDraw()
End Sub End Sub
Private Sub SawThick_Click( sender As Object, e As RoutedEventArgs) Handles SawThChBx.Click Private Sub SawThick_Click(sender As Object, e As RoutedEventArgs) Handles SawThChBx.Click
' Recupero lo stato di check ' Recupero lo stato di check
m_bSawTh = SawThChBx.IsChecked() m_bSawTh = SawThChBx.IsChecked()
' Disegno il taglio ' Disegno il taglio
@@ -536,8 +595,8 @@ Public Class SingleCutUC
m_CurrProjPage.SetWarningMessage( "Trial Version") m_CurrProjPage.SetWarningMessage( "Trial Version")
#Else #Else
' Verifico non sia versione Ufficio ' Verifico non sia versione Ufficio
If m_MainWindow.GetKeyOption( MainWindow.KEY_OPT.OFFICE_TYPE) Then If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
m_CurrProjPage.SetWarningMessage( "Office Version") m_CurrProjPage.SetWarningMessage("Office Version")
Return Return
End If End If
' Verifico ci sia un taglio valido ' Verifico ci sia un taglio valido
@@ -553,13 +612,15 @@ Public Class SingleCutUC
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' lancio eventuale lua post-trasmissione ' lancio eventuale lua post-trasmissione
m_MainWindow.ExecSentProgScript( True) m_MainWindow.ExecSentProgScript(True)
End If End If
#End If #End If
End Sub End Sub
@@ -571,6 +632,7 @@ Public Class SingleCutUC
Private Function CreateSingleCut() As Boolean Private Function CreateSingleCut() As Boolean
' Verifico sia definito il punto iniziale e il grezzo ' Verifico sia definito il punto iniziale e il grezzo
If Not m_bPointP1Ok Or Not m_bRawOk Then If Not m_bPointP1Ok Or Not m_bRawOk Then
EgtOutLog("Primo punto non valido")
m_bCutOk = False m_bCutOk = False
Return False Return False
End If End If
@@ -583,7 +645,7 @@ Public Class SingleCutUC
Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing Dim sSawing As String = m_MainWindow.m_CurrentMachine.sCurrSawing
EgtTdbSetCurrTool(sSaw) EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0 Dim dThick As Double = 0
' se è impostata una lavorazione di lama ' Se è impostata una lavorazione di lama
If Not String.IsNullOrEmpty(sSawing) Then If Not String.IsNullOrEmpty(sSawing) Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick) EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
End If End If
@@ -599,14 +661,19 @@ Public Class SingleCutUC
Dim ptStart As Point3d = m_ptTipP1 Dim ptStart As Point3d = m_ptTipP1
ptStart.z = 0 ptStart.z = 0
Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen) Dim nCutId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, m_dLen)
If Math.Abs(m_dOffset) > 10 * EPS_SMALL Then ' Applico la correzione di spessore lama -> anche se Offset=0! ver_2.5b1
Dim dTotOffset = m_dOffset Dim dTotOffset = m_dOffset
If m_bSawTh Then dTotOffset += If( m_dOffset > 0, dThick, -dThick) If m_bSawTh Then
dTotOffset += If(m_dOffset > 0, dThick, -dThick)
EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
Else
EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND) EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
End If End If
' Imposto affondamento e angolo di fianco sul taglio ' Imposto affondamento e angolo di fianco sul taglio
EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth) EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV) EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV)
' Imposto se disabilitare l'inversine di direzione del taglio
If Not m_MainWindow.m_CurrentMachine.bEnableInvert Then EgtSetInfo(nCutId, INFO_ENABLE_INVERT, 0)
' Creo layer per crocetta di riferimento ' Creo layer per crocetta di riferimento
Dim nCrossLayerId = EgtCreateGroup(nPartId) Dim nCrossLayerId = EgtCreateGroup(nPartId)
' Aggiungo crocetta/e ' Aggiungo crocetta/e
+27 -12
View File
@@ -72,7 +72,10 @@ Public Class SingleDrillUC
Private Sub SingleDrill_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub SingleDrill_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
m_sCurrDrill = m_CurrentMachine.sCurrDrill m_sCurrDrill = m_CurrentMachine.sCurrDrill
GetDrillFromDrilling(m_sCurrDrill, m_CurrentMachine.sCurrDrilling) GetDrillFromDrilling(m_sCurrDrill, m_CurrentMachine.sCurrDrilling)
' rimuovo utensile su uscite 1
EgtSetCalcTool("", "H1", 1)
' imposto utensile su uscita 2
EgtSetCalcTool(m_sCurrDrill, "H1", 2)
' recupero informazioni del foretto usato ' recupero informazioni del foretto usato
EgtTdbSetCurrTool(m_sCurrDrill) EgtTdbSetCurrTool(m_sCurrDrill)
EgtTdbGetCurrToolParam(MCH_TP.DIAM, m_dDiameter) EgtTdbGetCurrToolParam(MCH_TP.DIAM, m_dDiameter)
@@ -213,21 +216,33 @@ Public Class SingleDrillUC
' Verifico configurazione tavola e grezzo ' Verifico configurazione tavola e grezzo
If Not m_bRawOk Then Return If Not m_bRawOk Then Return
' forzo utilizzo testa H1 solo per macchina con 2 teste
Dim bIsMultiCut As Boolean = (EgtGetHeadId("H101") <> GDB_ID.NULL)
' Ricavo dati lama corrente
Dim sDrill As String = m_sCurrDrill
If bIsMultiCut Then
EgtSetCalcTool(sDrill, "H1", 2)
End If
' Se acquisizione lama o laser ' Se acquisizione lama o laser
If PointModeCmBx.SelectedIndex = PT_MODE.DRILL Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.DRILL Or PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Se macchina multicut il primo asse rotante restituito è quello della tavola
' Ricavo dati Foretto corrente Dim vAng() As Double = {dR1, dR2, 0}
Dim sDrill As String = m_sCurrDrill If bIsMultiCut Then
vAng(0) = 0
vAng(1) = dR1
vAng(2) = dR2
End If
' Se punto da laser ' Se punto da laser
If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then If PointModeCmBx.SelectedIndex = PT_MODE.LASER Then
' Imposto come testa corrente il laser (senza utensile ovviamente) ' Imposto come testa corrente il laser (senza utensile ovviamente)
If Not EgtSetCalcTool("", "H3", 1) Then Return If Not EgtSetCalcTool("", "H3", 1) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
' Ora imposto la lama corrente ' Ora imposto la lama corrente
If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return
' Altrimenti da lama ' Altrimenti da lama
@@ -235,10 +250,10 @@ Public Class SingleDrillUC
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return
' Trasformo in posizione punta utensile in basso ' Trasformo in posizione punta utensile in basso
If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, dR1, dR2, True, m_ptTipP1) Then Return If Not EgtGetCalcTipFromPositions(dL1, dL2, dL3, vAng, True, m_ptTipP1) Then Return
End If End If
' Calcolo direzione asse lama ' Calcolo direzione asse lama
If Not EgtGetCalcToolDirFromAngles(dR1, dR2, m_vtToolP1) Then Return If Not EgtGetCalcToolDirFromAngles(vAng, m_vtToolP1) Then Return
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
@@ -250,10 +265,8 @@ Public Class SingleDrillUC
' Porto il tip nell'origine tavola ' Porto il tip nell'origine tavola
m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri)) m_ptTipP1.ToLoc(New Frame3d(m_ptTabOri))
m_bPointP1Ok = True m_bPointP1Ok = True
' Ricavo dati lama corrente
Dim sDrill As String = m_sCurrDrill
' Imposto la lama corrente ' Imposto la lama corrente
If Not EgtSetCalcTool(sDrill, "H1", 1) Then Return If Not EgtSetCalcTool(sDrill, "H1", 2) Then Return
End If End If
' Disegno il taglio ' Disegno il taglio
@@ -371,8 +384,10 @@ Public Class SingleDrillUC
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
@@ -431,9 +446,9 @@ Public Class SingleDrillUC
ptIns.z = dRawHeight ptIns.z = dRawHeight
' Inserisco il pezzo nel grezzo ' Inserisco il pezzo nel grezzo
EgtAddPartToRawPart(nPartId, ptIns, m_MainWindow.m_CurrentProjectPageUC.m_nRawId) EgtAddPartToRawPart(nPartId, ptIns, m_MainWindow.m_CurrentProjectPageUC.m_nRawId)
EgtSetCurrPhase(1)
' Inserisco la lavorazione ' Inserisco la lavorazione
m_bCutOk = AddMachinings(nPartId) AndAlso UpdateAllMachiningsToolpaths() m_bCutOk = AddMachinings(nPartId) AndAlso UpdateAllMachiningsToolpaths()
EgtSetCurrPhase(1)
' Eventuale eliminazione Home finale ' Eventuale eliminazione Home finale
If Not m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome Then If Not m_MainWindow.m_CurrentMachine.bDirectCutsFinalHome Then
RemoveFinalHome() RemoveFinalHome()
+8 -2
View File
@@ -287,8 +287,10 @@ Public Class SquaringUC
m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90314)) 'Errore nella generazione del programma CN
Return Return
End If End If
Dim sNameProg As Integer = 900
sNameProg = GetPrivateProfileInt(S_PARTPROGRAM, "NameProg", sNameProg, m_MainWindow.GetMachIniFile)
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, 900) Then If m_MainWindow.m_CNCommunication.SendProgram(sCncPath, sNameProg) Then
' copio il progetto corrente come progetto in lavorazione ' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
@@ -348,6 +350,7 @@ Public Class SquaringUC
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType) EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType)
Dim dThick As Double = 0 Dim dThick As Double = 0
EgtTdbGetCurrToolParam(If(nType = MCH_TY.SAW_STD, MCH_TP.THICK, MCH_TP.DIAM), dThick) EgtTdbGetCurrToolParam(If(nType = MCH_TY.SAW_STD, MCH_TP.THICK, MCH_TP.DIAM), dThick)
EgtOutLog("Curr tool type in use for squaring: " & If(nType = MCH_TY.SAW_STD, "SAW_STD", "NOT 'SAW_STD'"))
' Ricalcolo lo spessore in base all'inclinazione ' Ricalcolo lo spessore in base all'inclinazione
dThick = dThick / Math.Cos(m_dAngV * Math.PI / 180) dThick = dThick / Math.Cos(m_dAngV * Math.PI / 180)
' Imposto angolo di rotazione a seconda del lato dei tagli paralleli ' Imposto angolo di rotazione a seconda del lato dei tagli paralleli
@@ -365,9 +368,12 @@ Public Class SquaringUC
If dDimPzY <> 0 And nNumPzY > 0 And dDimPzX <> 0 And nNumPzX > 0 Then If dDimPzY <> 0 And nNumPzY > 0 And dDimPzX <> 0 And nNumPzX > 0 Then
Dim dLenX As Double = dThick + (dDimPzX + dThick) * nNumPzX Dim dLenX As Double = dThick + (dDimPzX + dThick) * nNumPzX
Dim nCutParaId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, dLenX + 0.1) Dim nCutParaId = EgtCreateLinePDL(nLayerId, ptStart, m_dAngO, dLenX + 0.1)
' Imposto affondamento e angolo di fianco sul taglio ' Imposto affondamento e angolo di fianco sul taglio (solo se non lama STD)
If Not nType = MCH_TY.SAW_STD Then
EgtSetInfo(nCutParaId, INFO_DEPTH, m_dDepth) EgtSetInfo(nCutParaId, INFO_DEPTH, m_dDepth)
EgtSetInfo(nCutParaId, INFO_SIDE_ANGLE, m_dAngV) EgtSetInfo(nCutParaId, INFO_SIDE_ANGLE, m_dAngV)
EgtOutLog("Curr tool in use is not of type SAW_STD: Depth is limited to raw thickness")
End If
' Allungo la geometria ' Allungo la geometria
EgtExtendCurveStartByLen(nCutParaId, m_dOffsetSquaring + m_dExtraLength) EgtExtendCurveStartByLen(nCutParaId, m_dOffsetSquaring + m_dExtraLength)
EgtExtendCurveEndByLen(nCutParaId, m_dOffsetSquaring + +m_dExtraLength) EgtExtendCurveEndByLen(nCutParaId, m_dOffsetSquaring + +m_dExtraLength)
+32
View File
@@ -22,6 +22,9 @@ Public Class VacuumMachineButtonUC
Friend m_CN As CN_generico Friend m_CN As CN_generico
Private m_bFirst As Boolean = True Private m_bFirst As Boolean = True
' visualizzo l'elenco degli elementi della pagina sono al primo avvio
Friend m_OutLogTypeButton As Boolean = True
' Creazione converter da String a ImageSource ' Creazione converter da String a ImageSource
Dim ImageConverter As New ImageSourceConverter Dim ImageConverter As New ImageSourceConverter
@@ -71,10 +74,37 @@ Public Class VacuumMachineButtonUC
If Not IsNothing(ButtonToAdd) Then m_ButtonList.Add(ButtonToAdd) If Not IsNothing(ButtonToAdd) Then m_ButtonList.Add(ButtonToAdd)
End If End If
End While End While
For Each MachineButton As MachineButton In m_ButtonList
OutLogTypeButton(MachineButton)
Next
m_OutLogTypeButton = False
NotifyPropertyChanged("ButtonList") NotifyPropertyChanged("ButtonList")
End If End If
End Sub End Sub
#Region "STATE CHANGED"
' ------------------------------------------------------------------------------
' i segeunti metodi notificano il cambiamento di stato di specifici bottoni
'-------------------------------------------------------------------------------
Friend Sub OutLogTypeButton(CurrMachineButton As MachineButton)
If Not m_OutLogTypeButton Then Return
Dim BtnType As Type = CurrMachineButton.GetType
If BtnType Is GetType(NoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(0) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(TwoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(1) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(ThreeStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(2) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(DoubleCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(3) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(PressedCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(4) ") & " , " & CurrMachineButton.StateFlag)
End If
End Sub
Friend Sub VacuumUpChanged(VacuumUpState As Boolean) Friend Sub VacuumUpChanged(VacuumUpState As Boolean)
Dim VacuumUpButton As TwoStateButton = Nothing Dim VacuumUpButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList For Each MachineButton As MachineButton In m_ButtonList
@@ -371,6 +401,8 @@ Public Class VacuumMachineButtonUC
Next Next
End Sub End Sub
#End Region ' State Range
Public Function GetPrivateProfileMachineButtons( Public Function GetPrivateProfileMachineButtons(
ByVal lpAppName As String, ByVal lpAppName As String,
ByVal lpKeyName As String, ByVal lpKeyName As String,
+3 -1
View File
@@ -37,7 +37,7 @@ Public Class CompoDimensionUC
InternComponentBtn.Content = EgtMsg(MSG_COMPONENTPAGEUC + 47) ' Componenti interni InternComponentBtn.Content = EgtMsg(MSG_COMPONENTPAGEUC + 47) ' Componenti interni
If Not String.IsNullOrEmpty(sCompoDir) Then If Not String.IsNullOrEmpty(sCompoDir) Then
bEnableAlzFront = True bEnableAlzFront = True
AlzFrontBtn.Content = "Alzatine & Frontalini" AlzFrontBtn.Content = EgtMsg(91137)
Else Else
AlzFrontBtn.Visibility = Visibility.Collapsed AlzFrontBtn.Visibility = Visibility.Collapsed
End If End If
@@ -107,8 +107,10 @@ Public Class CompoDimensionUC
Friend Sub ShowAlzFrontBtn(ByVal value As Boolean) Friend Sub ShowAlzFrontBtn(ByVal value As Boolean)
If value Then If value Then
AlzFrontBtn.Visibility = Visibility.Visible AlzFrontBtn.Visibility = Visibility.Visible
m_MainWindow.m_DrawPageUC.MessageGrid.Visibility = Visibility.Hidden
Else Else
AlzFrontBtn.Visibility = Visibility.Hidden AlzFrontBtn.Visibility = Visibility.Hidden
m_MainWindow.m_DrawPageUC.MessageGrid.Visibility = Visibility.Visible
End If End If
End Sub End Sub
+113 -7
View File
@@ -283,6 +283,19 @@ Public Class DrawPageUC
m_sCsvOrder = "" m_sCsvOrder = ""
m_sCsvList = "" m_sCsvList = ""
m_sCsvName = "" m_sCsvName = ""
' Visuliazzazione dei bottoni per modifica dei componenti
If m_MainWindow.FrameCutBtn.IsChecked Then
SideAngleBtn.Visibility = Visibility.Hidden
FiloTopBtn.Visibility = Visibility.Hidden
EngraveBtn.Visibility = Visibility.Hidden
DripCutBtn.Visibility = Visibility.Hidden
Else
SideAngleBtn.Visibility = Visibility.Visible
FiloTopBtn.Visibility = Visibility.Visible
EngraveBtn.Visibility = Visibility.Visible
DripCutBtn.Visibility = Visibility.Visible
End If
End Sub End Sub
' recupero il click sulla scena ed assegno il metodo a secondo della pagina aperta ' recupero il click sulla scena ed assegno il metodo a secondo della pagina aperta
@@ -553,6 +566,7 @@ Public Class DrawPageUC
OkBtn.IsEnabled = True OkBtn.IsEnabled = True
End Sub End Sub
' Navigazione nelle due pagine per la selezione dei componenti da disegnare
Friend Sub BackBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackBtn.Click Friend Sub BackBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackBtn.Click
m_SceneButtons.MeasureBtn.IsChecked = False m_SceneButtons.MeasureBtn.IsChecked = False
DrawPage_Unloaded(sender, e) DrawPage_Unloaded(sender, e)
@@ -1124,6 +1138,33 @@ Public Class DrawPageUC
Return True Return True
End Function End Function
Private Function MakeSectionFrameInsert(ByVal nNbr As Integer) As Boolean
' m_MainWindow.m_ImportPageUC.LoadFrame()
' recupero il primo layer del primo pezzo
Dim nLayerId As Integer = EgtGetFirstLayer(EgtGetFirstPart())
If nLayerId = GDB_ID.NULL Then Return False
' percorso in cui salvare tempora
Dim sTmpFile As String = m_MainWindow.GetTempDir() & "\Frame.Nge"
If Not EgtSaveObjToFile(nLayerId, sTmpFile, NGE.BIN) Then Return False
' Passo al contesto principale
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
' Inserisco il pezzo
If Not My.Computer.FileSystem.FileExists(sTmpFile) Then Return False
' eseguo inserimento
For i As Integer = 1 To nNbr
EgtInsertFile(sTmpFile)
' Ne recupero l'Id
Dim nPartId As Integer = EgtGetLastPart()
' Creo la cornice
m_MainWindow.m_FrameCutPageUC.CreateFrame(nPartId)
' Ricalcolo lavorazioni
AddFrameMachinings(m_MainWindow.m_FrameCutPageUC.m_FrameMachiningUC.m_dStartTrim, m_MainWindow.m_FrameCutPageUC.m_FrameMachiningUC.m_dEndTrim)
Next
' Cancello il file
My.Computer.FileSystem.DeleteFile(sTmpFile)
Return True
End Function
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
m_bBackFromInternalCompo = False m_bBackFromInternalCompo = False
m_bInternalCompo = False m_bInternalCompo = False
@@ -1139,7 +1180,19 @@ Public Class DrawPageUC
Dim InsNbr As Integer = Int32.Parse(PartNumTxBx.Text) Dim InsNbr As Integer = Int32.Parse(PartNumTxBx.Text)
' Passo al contesto principale ' Passo al contesto principale
'MakeInsert(InsNbr, sPartName) 'MakeInsert(InsNbr, sPartName)
If m_MainWindow.FrameCutBtn.IsChecked Then
MakeSectionFrameInsert(InsNbr)
Else
MakeMultipleInsert(InsNbr, sPartName) MakeMultipleInsert(InsNbr, sPartName)
End If
' Attivo il parcheggio dei pezzi Draw (per il corretto posizionamento nella scena)
ActivateParkIndZero()
Dim bExitPage As Boolean = GetPrivateProfileInt(S_GENERAL, K_QUITDRAWPAGE, 1, m_MainWindow.GetIniFile) <> 0
' Se Shift premuto eseguo il contrario
If Keyboard.Modifiers And ModifierKeys.Shift Then
bExitPage = Not bExitPage
End If
If bExitPage Then
' Aggiorno ambiente principale ' Aggiorno ambiente principale
EgtZoom(ZM.ALL) EgtZoom(ZM.ALL)
' Elimino nome del componente precedente ' Elimino nome del componente precedente
@@ -1153,8 +1206,21 @@ Public Class DrawPageUC
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC ' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC) m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut m_MainWindow.m_ActivePage = If(m_MainWindow.FrameCutBtn.IsChecked, MainWindow.Pages.FrameCut, MainWindow.Pages.CadCut)
Else
m_SceneButtons.MeasureBtn.IsChecked = False
DrawPage_Unloaded(sender, e)
' Elimino nome del componente precedente
m_sCompoName = String.Empty
' Reset inclinazioni
m_SideAngleUC.DeleteSideAngle()
If String.IsNullOrEmpty(m_MainComponentPage.m_SecondaryComponentPage.m_sCurrCompo) Then
DrawPage_Loaded(sender, e)
Else
LoadSecondaryPage()
End If
End If
End Sub End Sub
' esco dalla pagina corrente ' esco dalla pagina corrente
@@ -1174,7 +1240,25 @@ Public Class DrawPageUC
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC ' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC) m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut m_MainWindow.m_ActivePage = If(m_MainWindow.FrameCutBtn.IsChecked, MainWindow.Pages.FrameCut, MainWindow.Pages.CadCut)
End Sub
Private Sub ActivateParkIndZero()
' Aggiorno la gestione dei parcheggi: spengo tutti i parcheggi tranne quello dei pezzi disegnati "0"
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd)
For Each ItemParkInd As ParkInd In ListParkInd
If ItemParkInd.Ind = 0 Then
ItemParkInd.Status = GDB_ST.ON_
Else
ItemParkInd.Status = GDB_ST.OFF
End If
Next
' Aggiorno lo stato dei pezzi
For Each Item As ParkInd In ListParkInd
SelParkIndWD.SetStatusPartInParkInd(Item, False)
Next
End Sub End Sub
Private Sub TrfDataBtn_Click(sender As Object, e As RoutedEventArgs) Handles TrfDataBtn.Click Private Sub TrfDataBtn_Click(sender As Object, e As RoutedEventArgs) Handles TrfDataBtn.Click
@@ -1446,17 +1530,39 @@ Public Class DrawPageUC
' Seleziono la Tab e la Page di apertura ' Seleziono la Tab e la Page di apertura
Select Case m_ActiveComponentPage Select Case m_ActiveComponentPage
Case Pages.MainComponent Case Pages.MainComponent
LeftButtonGrd.Children.Remove( m_MainComponentPage) LeftButtonGrd.Children.Remove(m_MainComponentPage)
Case Pages.SecondaryComponent Case Pages.SecondaryComponent
LeftButtonGrd.Children.Remove( m_MainComponentPage.m_SecondaryComponentPage) LeftButtonGrd.Children.Remove(m_MainComponentPage.m_SecondaryComponentPage)
Case Pages.InternalComponent Case Pages.InternalComponent
LeftButtonGrd.Children.Remove( m_MainWindow.m_DrawPageUC.m_CompoDimension.m_InternalCompoPage) LeftButtonGrd.Children.Remove(m_MainWindow.m_DrawPageUC.m_CompoDimension.m_InternalCompoPage)
Case Pages.CompoDimension Case Pages.CompoDimension
VariablesGrd.Children.Remove( m_CompoDimension) VariablesGrd.Children.Remove(m_CompoDimension)
Case Pages.SideAngle Case Pages.SideAngle
VariablesGrd.Children.Remove( m_SideAngleUC) Select Case m_SideAngleUC.m_Mode
Case SideAngleUC.ModeOpt.SIDEANGLE
SideAngleBtn.IsChecked = False
SideAngleBtn_Click(Nothing, Nothing)
Case SideAngleUC.ModeOpt.ENGRAVE
EngraveBtn.IsChecked = False
EngraveBtn_Click(Nothing, Nothing)
Case SideAngleUC.ModeOpt.DRIP
DripCutBtn.IsChecked = False
DripCutBtn_Click(Nothing, Nothing)
End Select
VariablesGrd.Children.Remove(m_SideAngleUC)
Case Pages.FiloTop Case Pages.FiloTop
FiloTopBtn.IsChecked = False
FiloTopBtn_Click(Nothing, Nothing)
VariablesGrd.Children.Remove(m_FiloTopUC) VariablesGrd.Children.Remove(m_FiloTopUC)
Case Pages.AlzFront
LeftButtonGrd.Children.Remove(m_CompoDimension.m_AlzFrontPage)
End Select End Select
' Pulisco l'ambiente lua ' Pulisco l'ambiente lua
+15 -11
View File
@@ -38,17 +38,18 @@ Public Class FiloTopUC
m_CallingPage = m_MainWindow.m_ActivePage m_CallingPage = m_MainWindow.m_ActivePage
' Imposto messaggi ' Imposto messaggi
ParameterTxBl.Text = EgtMsg( MSG_IMPORTPAGEUC + 10) ' Offset ParameterTxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 10) ' Offset
Parameter2TxBl.Text = EgtMsg( MSG_IMPORTPAGEUC + 11) ' Affondamento Parameter2TxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 11) ' Affondamento
Parameter3TxBl.Text = EgtMsg(91138)
If m_CallingPage = MainWindow.Pages.Draw Then If m_CallingPage = MainWindow.Pages.Draw Then
' Imposto questa come pagina correntemente visualizzata nella drawpage ' Imposto questa come pagina correntemente visualizzata nella drawpage
m_MainWindow.m_DrawPageUC.m_ActiveComponentPage = DrawPageUC.Pages.FiloTop m_MainWindow.m_DrawPageUC.m_ActiveComponentPage = DrawPageUC.Pages.FiloTop
' Imposto contesto corrente ' Imposto contesto corrente
EgtSetCurrentContext( m_MainWindow.m_DrawPageUC.DrawScene.GetCtx()) EgtSetCurrentContext(m_MainWindow.m_DrawPageUC.DrawScene.GetCtx())
ElseIf m_CallingPage = MainWindow.Pages.Import Then ElseIf m_CallingPage = MainWindow.Pages.Import Then
' Imposto contesto corrente ' Imposto contesto corrente
EgtSetCurrentContext( m_MainWindow.m_ImportPageUC.ImportScene.GetCtx()) EgtSetCurrentContext(m_MainWindow.m_ImportPageUC.ImportScene.GetCtx())
End If End If
' Gestisco visualizzazione dei parametri ' Gestisco visualizzazione dei parametri
@@ -57,9 +58,9 @@ Public Class FiloTopUC
Parameter3TxBl.Visibility = Windows.Visibility.Visible Parameter3TxBl.Visibility = Windows.Visibility.Visible
' Aggiorno valori ' Aggiorno valori
m_dFiloTopOffset = GetPrivateProfileDouble( S_SIDES, K_FILOTOPOFFSET, 5, m_MainWindow.GetIniFile()) m_dFiloTopOffset = GetPrivateProfileDouble(S_SIDES, K_FILOTOPOFFSET, 5, m_MainWindow.GetIniFile())
ParameterTxBx.Text = LenToString( m_dFiloTopOffset, 3) ParameterTxBx.Text = LenToString(m_dFiloTopOffset, 3)
m_dFiloTopDepth = GetPrivateProfileDouble( S_SIDES, K_FILOTOPDEPTH, 5, m_MainWindow.GetIniFile()) m_dFiloTopDepth = GetPrivateProfileDouble(S_SIDES, K_FILOTOPDEPTH, 5, m_MainWindow.GetIniFile())
Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3) Parameter2TxBx.Text = LenToString(m_dFiloTopDepth, 3)
m_bCornerradius = GetPrivateProfileInt(S_SIDES, K_ROUNDOFF, 0, m_MainWindow.GetIniFile()) <> 0 m_bCornerradius = GetPrivateProfileInt(S_SIDES, K_ROUNDOFF, 0, m_MainWindow.GetIniFile()) <> 0
Parameter3ChBx.IsChecked = m_bCornerradius Parameter3ChBx.IsChecked = m_bCornerradius
@@ -80,8 +81,8 @@ Public Class FiloTopUC
Dim nLayId As Integer = EgtGetFirstLayer(nPartId) Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
While nLayId <> GDB_ID.NULL While nLayId <> GDB_ID.NULL
Dim sLayName As String = "" Dim sLayName As String = ""
If EgtGetName( nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo( nLayId, INFO_FILOTOP) Then If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
EgtSetInfo( nLayId, INFO_OFFSET, m_dFiloTopOffset) EgtSetInfo(nLayId, INFO_OFFSET, m_dFiloTopOffset)
End If End If
nLayId = EgtGetNextLayer(nLayId) nLayId = EgtGetNextLayer(nLayId)
End While End While
@@ -101,8 +102,8 @@ Public Class FiloTopUC
Dim nLayId As Integer = EgtGetFirstLayer(nPartId) Dim nLayId As Integer = EgtGetFirstLayer(nPartId)
While nLayId <> GDB_ID.NULL While nLayId <> GDB_ID.NULL
Dim sLayName As String = "" Dim sLayName As String = ""
If EgtGetName( nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo( nLayId, INFO_FILOTOP) Then If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
EgtSetInfo( nLayId, INFO_DEPTH, m_dFiloTopDepth) EgtSetInfo(nLayId, INFO_DEPTH, m_dFiloTopDepth)
End If End If
nLayId = EgtGetNextLayer(nLayId) nLayId = EgtGetNextLayer(nLayId)
End While End While
@@ -214,6 +215,9 @@ Public Class FiloTopUC
EgtErase(nLayFiloTop) EgtErase(nLayFiloTop)
EgtRemoveInfo(nLayId, "FiloTopRef") EgtRemoveInfo(nLayId, "FiloTopRef")
EgtOutLog("Error in generation OffsetPreView in TopEgde ") EgtOutLog("Error in generation OffsetPreView in TopEgde ")
Else
m_MainWindow.m_DrawPageUC.MessageTxBx.Text = ""
m_MainWindow.m_DrawPageUC.MessageBrd.Background = Brushes.Transparent
End If End If
' ---------------------- Fine GESTIONE PREVIEW percorso ------------------------------- ' ---------------------- Fine GESTIONE PREVIEW percorso -------------------------------
End If End If
+3 -1
View File
@@ -37,6 +37,8 @@
<ToggleButton Name="FiloTopBtn" Grid.Column="1" <ToggleButton Name="FiloTopBtn" Grid.Column="1"
Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/> Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/>
<ToggleButton Name="DripCutBtn" Grid.Column="2" Padding="0" <ToggleButton Name="DripCutBtn" Grid.Column="2" Padding="0"
Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/>
<ToggleButton Name="EngraveBtn" Grid.Column="2"
Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/> Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/>
<ToggleButton Name="DripDrillBtn" Grid.Column="3" Padding="0" <ToggleButton Name="DripDrillBtn" Grid.Column="3" Padding="0"
Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/> Style="{DynamicResource OmagCut_RightGrayYellowTextToggleButton}"/>
@@ -58,7 +60,7 @@
<ListBox Name="FileListBox" Grid.Row="1" Grid.RowSpan="2" ItemTemplate="{DynamicResource DataTemplateItem}" <ListBox Name="FileListBox" Grid.Row="1" Grid.RowSpan="2" ItemTemplate="{DynamicResource DataTemplateItem}"
ItemsSource="{Binding ItemList}"/> ItemsSource="{Binding ItemList}"/>
<Grid Grid.Row="3" Margin="0,0,8,0"> <Grid Name="FinderGrd" Grid.Row="3" Margin="0,0,8,0">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/> <ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
+301 -38
View File
@@ -19,6 +19,9 @@ Public Class ImportPageUC
Friend WithEvents ImportScene As New Scene Friend WithEvents ImportScene As New Scene
Private ImportSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost Private ImportSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost
Private m_SelListHole As New List(Of Integer)
Private m_DeselectListHole As New List(Of Integer)
' Properties ' Properties
Private m_sCurrDir As String = String.Empty Private m_sCurrDir As String = String.Empty
Private m_sCurrFile As String = String.Empty Private m_sCurrFile As String = String.Empty
@@ -35,6 +38,8 @@ Public Class ImportPageUC
Private Const FT_TRF As Integer = 51 Private Const FT_TRF As Integer = 51
' Costante per formato CUT ' Costante per formato CUT
Private Const FT_CUT As Integer = 52 Private Const FT_CUT As Integer = 52
' Indice del parcheggio corrente
Private NewParkInd As Integer = 0
' Indentificativo del pezzo selezionato ' Indentificativo del pezzo selezionato
Private m_nSelectedPart As Integer = GDB_ID.NULL Private m_nSelectedPart As Integer = GDB_ID.NULL
@@ -79,12 +84,13 @@ Public Class ImportPageUC
ResetBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 3) 'Reset ResetBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 3) 'Reset
mmBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 4) 'mm mmBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 4) 'mm
inchBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 5) 'inch inchBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 5) 'inch
OrderListBtn.Content = EgtMsg( 90398) 'Dati Csv OrderListBtn.Content = EgtMsg(90398) 'Dati Csv
TopBtn.Content = EgtMsg( 90384) 'Indica Lato Sopra TopBtn.Content = EgtMsg(90384) 'Indica Lato Sopra
PartNumTxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 15) 'Numero PartNumTxBl.Text = EgtMsg(MSG_IMPORTPAGEUC + 15) 'Numero
SideAngleBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 7) 'Inclina lati SideAngleBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 7) 'Inclina lati
FiloTopBtn.Content = EgtMsg( 90400) 'Filo Top FiloTopBtn.Content = EgtMsg(90400) 'Filo Top
DripCutBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 8) 'Incidi da sotto DripCutBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 8) 'Incidi da sotto
EngraveBtn.Content = "Engrave"
DripDrillBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 14) 'Foro da sotto DripDrillBtn.Content = EgtMsg(MSG_IMPORTPAGEUC + 14) 'Foro da sotto
Cad2dBtn.Content = "Cad 2d" Cad2dBtn.Content = "Cad 2d"
@@ -94,13 +100,14 @@ Public Class ImportPageUC
End Sub End Sub
Private Sub ImportPage_Loaded(sender As Object, e As RoutedEventArgs) Private Sub ImportPage_Loaded(sender As Object, e As RoutedEventArgs)
' abilitazione importazione TRF ' abilitazione importazione TRF
m_bEnableTrf = (m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut And m_bEnableTrf = (m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut And
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.TRF_IMPORT)) m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.TRF_IMPORT))
' abilitazione Ordine e Distinta per importazione DXF ' abilitazione Ordine e Distinta per importazione DXF
m_bEnableOrderList = (m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut And m_bEnableOrderList = (m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut And
GetPrivateProfileInt(S_COMPO, K_CSVDATA, 0, m_MainWindow.GetIniFile()) <> 0) GetPrivateProfileInt(S_COMPO, K_CSVDATA, 0, m_MainWindow.GetIniFile()) <> 0)
' rendo visibilie il pulsante di ricerca file
FinderGrd.Visibility = Visibility.Visible
If m_bFirst Then If m_bFirst Then
' imposto colore di default ' imposto colore di default
@@ -154,10 +161,14 @@ Public Class ImportPageUC
' Verifico esistenza Cad 2d ' Verifico esistenza Cad 2d
GetPrivateProfileString(S_CAD2D, K_CAD2D_NAME, "", m_sCad2dName, m_MainWindow.GetIniFile()) GetPrivateProfileString(S_CAD2D, K_CAD2D_NAME, "", m_sCad2dName, m_MainWindow.GetIniFile())
GetPrivateProfileString(S_CAD2D, K_CAD2D_EXEPATH, "", m_sCad2dPath, m_MainWindow.GetIniFile()) GetPrivateProfileString(S_CAD2D, K_CAD2D_EXEPATH, "", m_sCad2dPath, m_MainWindow.GetIniFile())
Cad2dBtn.IsEnabled = My.Computer.FileSystem.FileExists( m_sCad2dPath) Cad2dBtn.IsEnabled = My.Computer.FileSystem.FileExists(m_sCad2dPath)
' Pulisco tutto ' Pulisco tutto
ClearView() ClearView()
' Definizione di quale comando deve essere visualizzato
DripCutBtn.Visibility = If(String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw), Visibility.Hidden, Visibility.Visible)
EngraveBtn.Visibility = If(DripCutBtn.Visibility <> Visibility.Visible, Visibility.Visible, Visibility.Hidden)
FileListBox.UnselectAll() FileListBox.UnselectAll()
' inibisco selezione diretta da Scene ' inibisco selezione diretta da Scene
ImportScene.SetStatusNull() ImportScene.SetStatusNull()
@@ -169,7 +180,7 @@ Public Class ImportPageUC
UseClosedCurveBtn.Visibility = Windows.Visibility.Visible UseClosedCurveBtn.Visibility = Windows.Visibility.Visible
ResetBtn.Visibility = Windows.Visibility.Visible ResetBtn.Visibility = Windows.Visibility.Visible
SideAngleBtn.Visibility = Windows.Visibility.Visible SideAngleBtn.Visibility = Windows.Visibility.Visible
OrderListBtn.Visibility = If( m_bEnableOrderList, Windows.Visibility.Visible, Windows.Visibility.Hidden) OrderListBtn.Visibility = If(m_bEnableOrderList, Windows.Visibility.Visible, Windows.Visibility.Hidden)
TopBtn.Visibility = Windows.Visibility.Visible TopBtn.Visibility = Windows.Visibility.Visible
PartNumberGrd.Visibility = Windows.Visibility.Visible PartNumberGrd.Visibility = Windows.Visibility.Visible
Else Else
@@ -196,7 +207,8 @@ Public Class ImportPageUC
PartNumTxBx.Text = "1" PartNumTxBx.Text = "1"
' disabilito ok ' disabilito ok
OkBtn.IsEnabled = False OkBtn.IsEnabled = False
' Azzero l'idice di parcheggio
NewParkInd = 0
End Sub End Sub
Private Sub LoadGridData() Private Sub LoadGridData()
@@ -339,7 +351,12 @@ Public Class ImportPageUC
ResetBtn.IsEnabled = False ResetBtn.IsEnabled = False
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
' Evito di settare le proprietà di oggeti che sono con visibilità Hidden
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
Return True Return True
End Function End Function
@@ -357,6 +374,10 @@ Public Class ImportPageUC
Dim dScale As Double = If(m_bMM, ONEMM, ONEINCH) Dim dScale As Double = If(m_bMM, ONEMM, ONEINCH)
' Importo file DXF ' Importo file DXF
bOk = bOk AndAlso EgtImportDxf(sPath, dScale) bOk = bOk AndAlso EgtImportDxf(sPath, dScale)
' riporto al piano tutte le superifici
EgtSelectAll()
EgtScale(GDB_ID.SEL, Frame3d.GLOB, 1, 1, 0)
EgtDeselectAll()
ElseIf m_nFileType = FT.NGE Then ElseIf m_nFileType = FT.NGE Then
' Carico Nge ' Carico Nge
bOk = bOk AndAlso EgtOpenFile(sPath) bOk = bOk AndAlso EgtOpenFile(sPath)
@@ -396,7 +417,11 @@ Public Class ImportPageUC
OkBtn.IsEnabled = False OkBtn.IsEnabled = False
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
ElseIf m_nFileType = FT_TRF Or m_nFileType = FT_CUT Then ElseIf m_nFileType = FT_TRF Or m_nFileType = FT_CUT Then
' abilito bottone Insert, disabilito bottoni UseLayer, UseClosedCurve, UseRegion e Reset ' abilito bottone Insert, disabilito bottoni UseLayer, UseClosedCurve, UseRegion e Reset
@@ -412,7 +437,11 @@ Public Class ImportPageUC
OkBtn.IsEnabled = True OkBtn.IsEnabled = True
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
End If End If
' altrimenti import per cornici ' altrimenti import per cornici
@@ -425,12 +454,12 @@ Public Class ImportPageUC
End Function End Function
Private Sub OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ImportScene.OnMouseDownScene Private Sub OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ImportScene.OnMouseDownScene
If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Then If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Or EngraveBtn.IsChecked Then
OnMouseDownSceneSideAngle( e) OnMouseDownSceneSideAngle(e)
ElseIf DripDrillBtn.IsChecked() Then ElseIf DripDrillBtn.IsChecked() Then
OnMouseDownSceneUnderDrill( e) OnMouseDownSceneUnderDrill(e)
ElseIf FiloTopBtn.IsChecked() Then ElseIf FiloTopBtn.IsChecked() Then
OnMouseDownSceneFiloTop( e) OnMouseDownSceneFiloTop(e)
End If End If
End Sub End Sub
@@ -560,31 +589,35 @@ Public Class ImportPageUC
EgtDeselectObj(nId) EgtDeselectObj(nId)
EgtDeselectObj(nLayId) EgtDeselectObj(nLayId)
Dim sLayName As String = "" Dim sLayName As String = ""
If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo( nLayId, INFO_FILOTOP) Then If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP AndAlso EgtExistsInfo(nLayId, INFO_FILOTOP) Then
EgtRemoveInfo( nLayId, INFO_FILOTOP) EgtRemoveInfo(nLayId, INFO_FILOTOP)
EgtRemoveInfo( nLayId, INFO_OFFSET) EgtRemoveInfo(nLayId, INFO_OFFSET)
EgtRemoveInfo( nLayId, INFO_DEPTH) EgtRemoveInfo(nLayId, INFO_DEPTH)
Dim nEntId As Integer = EgtGetFirstInGroup( nLayId) Dim nEntId As Integer = EgtGetFirstInGroup(nLayId)
While nEntId <> GDB_ID.NULL While nEntId <> GDB_ID.NULL
EgtSetColor(nEntId, New Color3d(127, 63, 0)) EgtSetColor(nEntId, New Color3d(127, 63, 0))
nEntId = EgtGetNext( nEntId) nEntId = EgtGetNext(nEntId)
End While End While
m_DeselectListHole.Add(nLayId)
m_SelListHole.Remove(nLayId)
End If End If
Else Else
Dim nLayId As Integer = GDB_ID.NULL Dim nLayId As Integer = GDB_ID.NULL
EgtGetInfo(nId, "ID", nLayId) EgtGetInfo(nId, "ID", nLayId)
Dim sLayName As String = "" Dim sLayName As String = ""
If EgtGetName( nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then If EgtGetName(nLayId, sLayName) AndAlso sLayName = NAME_INLOOP Then
EgtSelectObj( nId) EgtSelectObj(nId)
EgtSelectObj( nLayId) EgtSelectObj(nLayId)
EgtSetInfo( nLayId, INFO_FILOTOP, 1) EgtSetInfo(nLayId, INFO_FILOTOP, 1)
EgtSetInfo( nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset) EgtSetInfo(nLayId, INFO_OFFSET, m_FiloTopUC.FiloTopOffset)
EgtSetInfo( nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth) EgtSetInfo(nLayId, INFO_DEPTH, m_FiloTopUC.FiloTopDepth)
Dim nEntId As Integer = EgtGetFirstInGroup( nLayId) Dim nEntId As Integer = EgtGetFirstInGroup(nLayId)
While nEntId <> GDB_ID.NULL While nEntId <> GDB_ID.NULL
EgtSetColor(nEntId, New Color3d(255, 255, 255)) EgtSetColor(nEntId, New Color3d(255, 255, 255))
nEntId = EgtGetNext( nEntId) nEntId = EgtGetNext(nEntId)
End While End While
m_SelListHole.Add(nLayId)
m_DeselectListHole.Remove(nLayId)
End If End If
End If End If
EgtDraw() EgtDraw()
@@ -592,6 +625,12 @@ Public Class ImportPageUC
End If End If
nId = EgtGetNextObjInSelWin() nId = EgtGetNextObjInSelWin()
End While End While
m_FiloTopUC.CreateFiloTopPreView(m_SelListHole)
m_FiloTopUC.EraseFiloTopPreview(m_DeselectListHole)
If m_SelListHole.Count > 0 Then
MessageTxBx.Text = ""
MessageBrd.Background = Brushes.Transparent
End If
End Sub End Sub
Private Sub OnShowDistanceVector(sender As Object, vtDist As Vector3d) Handles ImportScene.OnShowDistanceVector Private Sub OnShowDistanceVector(sender As Object, vtDist As Vector3d) Handles ImportScene.OnShowDistanceVector
@@ -601,7 +640,7 @@ Public Class ImportPageUC
Private Sub SelectedPartChanged() Private Sub SelectedPartChanged()
' Se sono in modalità inclinazioni o gocciolatoio calcolo lati inclinabili e creo testi ' Se sono in modalità inclinazioni o gocciolatoio calcolo lati inclinabili e creo testi
If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Then If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Or EngraveBtn.IsChecked() Then
m_SideAngleUC.ReLoadSideAnglePage() m_SideAngleUC.ReLoadSideAnglePage()
End If End If
End Sub End Sub
@@ -624,7 +663,7 @@ Public Class ImportPageUC
' Ciclo sulle regioni ' Ciclo sulle regioni
Dim EntId As Integer = EgtGetFirstInGroup(RegionId) Dim EntId As Integer = EgtGetFirstInGroup(RegionId)
While EntId <> GDB_ID.NULL While EntId <> GDB_ID.NULL
If EgtGetType( EntId) = GDB_TY.SRF_FRGN Then EgtSetColor(EntId, InsertColor) If EgtGetType(EntId) = GDB_TY.SRF_FRGN Then EgtSetColor(EntId, InsertColor)
EntId = EgtGetNext(EntId) EntId = EgtGetNext(EntId)
End While End While
RegionId = EgtGetNextName(PartId, NAME_REGION) RegionId = EgtGetNextName(PartId, NAME_REGION)
@@ -662,8 +701,12 @@ Public Class ImportPageUC
' abilito bottone angoli su lati esterni ' abilito bottone angoli su lati esterni
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
End Sub End Sub
@@ -694,8 +737,12 @@ Public Class ImportPageUC
' abilito bottone angoli su lati esterni ' abilito bottone angoli su lati esterni
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
End Sub End Sub
@@ -726,8 +773,12 @@ Public Class ImportPageUC
' abilito bottone angoli su lati esterni ' abilito bottone angoli su lati esterni
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
End Sub End Sub
@@ -808,19 +859,37 @@ Public Class ImportPageUC
End Sub End Sub
Private Sub OrderListBtn_Click(sender As Object, e As RoutedEventArgs) Handles OrderListBtn.Click Private Sub OrderListBtn_Click(sender As Object, e As RoutedEventArgs) Handles OrderListBtn.Click
Dim DlgOrderList As New CompoCsvData( m_MainWindow) Dim DlgOrderList As New CompoCsvData(m_MainWindow)
DlgOrderList.SetData( m_sOrder, m_sList) DlgOrderList.SetData(m_sOrder, m_sList)
If DlgOrderList.ShowDialog() Then If DlgOrderList.ShowDialog() Then
DlgOrderList.GetData( m_sOrder, m_sList) DlgOrderList.GetData(m_sOrder, m_sList)
End If End If
End Sub End Sub
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
m_SceneButtons.MeasureBtn.IsChecked = False m_SceneButtons.MeasureBtn.IsChecked = False
' Genero l'immagine solo se è abilitata la modalità
If GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, m_MainWindow.GetIniFile) <> 0 Then Print()
' Se import per pezzi piatti ' Se import per pezzi piatti
If m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut Then If m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut Then
' Eseguo importazione pezzi piatti ' Eseguo importazione pezzi piatti
LoadFlatParts() LoadFlatParts()
' Aggiorno la gestione dei parcheggi: spengo tutti i parcheggi tranne quello indicato
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd)
For Each ItemParkInd As ParkInd In ListParkInd
If ItemParkInd.Ind = NewParkInd Then
ItemParkInd.Status = GDB_ST.ON_
Else
ItemParkInd.Status = GDB_ST.OFF
End If
Next
' Aggiorno lo stato dei pezzi
For Each Item As ParkInd In ListParkInd
SelParkIndWD.SetStatusPartInParkInd(Item, False)
Next
' altrimenti import per cornici ' altrimenti import per cornici
Else Else
LoadFrame() LoadFrame()
@@ -831,6 +900,80 @@ Public Class ImportPageUC
m_MainWindow.m_ActivePage = m_MainWindow.m_PrevActivePage m_MainWindow.m_ActivePage = m_MainWindow.m_PrevActivePage
End Sub End Sub
' Creo una immagine del progetto da importare salvato nel percorso di progetto "..\(#ProjInd)_ParkInd_(#ParkInd).png"
Public Sub Print()
' recupero la lista degli indici di parcheggio
NewParkInd = SelParkIndWD.NewParkInd()
Dim SM_Select As SM = SM.SHADING
' SM_Select = SM.HIDDENLINE
' SM_Select = SM.WIREFRAME
Dim nProj As Integer = m_MainWindow.m_CurrentProjectPageUC.GetCurrentProject()
Dim sPath As String = SelParkIndWD.GetPathCurrProj() & NewParkInd.ToString & ".png"
' Recupero le dimensioni dell'area di stampa
Dim dW As Integer = 120
Dim dH As Integer = 120
If Not MainWindow.m_bShowSVGParkInd Then
Try
' Prendo l'immagine corrente per la stampa
Dim colBackTopColor As Color3d = GetBackTopColor()
Dim colBackBottomColor As Color3d = GetBackBottomColor()
' Recupero le dimensioni correnti della pagina di disegno
Dim nImgW As Integer = m_MainWindow.m_CurrentProjectPageUC.ActualWidth()
Dim nImgH As Integer = m_MainWindow.m_CurrentProjectPageUC.ActualHeight()
If Not EgtGetImage(SM_Select, colBackTopColor, colBackBottomColor, 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
Catch
' Rrror in executing print
EgtOutLog(EgtMsg(50182))
End Try
Else
' Assegno dei nomi ai pezzi (Da controllare bene se funzione sempre)...riassegno i nomi dopo?
Dim nIdPart As Integer = EgtGetFirstPart()
Dim nIndex As Integer = 0
While nIdPart <> GDB_ID.NULL
' recupero il primo layer del part
Dim nIdLay As Integer = EgtGetFirstLayer(nIdPart)
While nIdLay <> GDB_ID.NULL
Dim nIdEnt As Integer = EgtGetFirstInGroup(nIdLay)
While nIdEnt <> GDB_ID.NULL
EgtSetName(nIdEnt, nIndex.ToString)
nIdEnt = EgtGetNext(nIdEnt)
nIndex = nIndex + 1
End While
nIdLay = EgtGetNextLayer(nIdLay)
End While
nIdPart = EgtGetNextPart(nIdPart)
End While
EgtExportSvg(GDB_ID.ROOT, SelParkIndWD.GetPathCurrProj() & NewParkInd.ToString & ".svg")
End If
End Sub
Private Sub LoadFlatParts() Private Sub LoadFlatParts()
' Cancello regioni di selezione dai pezzi ' Cancello regioni di selezione dai pezzi
Dim PartId As Integer = EgtGetFirstPart() Dim PartId As Integer = EgtGetFirstPart()
@@ -903,21 +1046,37 @@ Public Class ImportPageUC
If My.Computer.FileSystem.FileExists(sTmpFile) Then If My.Computer.FileSystem.FileExists(sTmpFile) Then
My.Computer.FileSystem.DeleteFile(sTmpFile) My.Computer.FileSystem.DeleteFile(sTmpFile)
End If End If
' Calcolo l'area dei pezzi inseriti ' Calcolo l'area dei pezzi inseriti
Dim dNewArea As Double = 0 Dim dNewArea As Double = 0
Dim nId As Integer = nFirstId Dim nId As Integer = nFirstId
While nId <> GDB_ID.NULL While nId <> GDB_ID.NULL
' Definisco l'indice di parcheggio asssganto al pezzo
If GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, m_MainWindow.GetIniFile) <> 0 Then
EgtSetInfo(nId, INFO_PARKIND, NewParkInd.ToString)
' Imposto lo stato
EgtSetStatus(nId, GDB_ST.ON_)
' Salvo lo stato (per gestire la navigazione)
EgtSetInfo(nId, INFO_PARKSTATUS, GDB_ST.ON_)
End If
dNewArea += GeomCalc.GetPartArea(nId) dNewArea += GeomCalc.GetPartArea(nId)
' Passo al pezzo successivo ' Passo al pezzo successivo
nId = EgtGetNextPart(nId) nId = EgtGetNextPart(nId)
End While End While
' Nascondo tutti i pezzi inseriti (per evitare interferenze con pezzi in fase di parcheggio) ' Nascondo tutti i pezzi inseriti (per evitare interferenze con pezzi in fase di parcheggio)
nId = nFirstId nId = nFirstId
Dim GlobBBox As New BBox3d
While nId <> GDB_ID.NULL While nId <> GDB_ID.NULL
Dim bboxTemp As New BBox3d
EgtGetBBox(nId, 0, bboxTemp)
GlobBBox.Add(bboxTemp)
EgtSetStatus(nId, GDB_ST.OFF) EgtSetStatus(nId, GDB_ST.OFF)
' Passo al pezzo successivo ' Passo al pezzo successivo
nId = EgtGetNextPart(nId) nId = EgtGetNextPart(nId)
End While End While
Dim DimX As Double = GlobBBox.DimX
Dim DimY As Double = GlobBBox.DimY
Dim BBoxMaxPt As Point3d = GlobBBox.Max
' Ciclo sui pezzi inseriti ' Ciclo sui pezzi inseriti
nId = nFirstId nId = nFirstId
@@ -954,7 +1113,12 @@ Public Class ImportPageUC
' Imposto path di provenienza ' Imposto path di provenienza
EgtSetInfo(nId, INFO_SOU_PATH, IO.Path.Combine(m_sCurrDir, m_sCurrFile)) EgtSetInfo(nId, INFO_SOU_PATH, IO.Path.Combine(m_sCurrDir, m_sCurrFile))
' Inserisco in parcheggio ' Inserisco in parcheggio
If GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, m_MainWindow.GetIniFile) <> 0 Then
' Mantengo la posizione relativa tra i pezzi
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePartDXF(nId, DimX, DimY, BBoxMaxPt)
Else
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nId, True) m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nId, True)
End If
' Recupero Id di pezzo successivo ' Recupero Id di pezzo successivo
Dim nNextId As Integer = EgtGetNextPart(nId) Dim nNextId As Integer = EgtGetNextPart(nId)
' Se richiesto posizionamento diretto, lo eseguo ' Se richiesto posizionamento diretto, lo eseguo
@@ -1011,12 +1175,14 @@ Public Class ImportPageUC
' Salvo direttorio corrente ' Salvo direttorio corrente
WritePrivateProfileString(S_FLATPARTS, K_FLPCURRDIR, m_sCurrDir, m_MainWindow.GetIniFile()) WritePrivateProfileString(S_FLATPARTS, K_FLPCURRDIR, m_sCurrDir, m_MainWindow.GetIniFile())
' Tolgo pagina inclinazioni/gocciolatoi se attiva ' Tolgo pagina inclinazioni/gocciolatoi se attiva
If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Then If SideAngleBtn.IsChecked() Or DripCutBtn.IsChecked() Or EngraveBtn.IsChecked() Then
FilePathTxBl.Visibility = Windows.Visibility.Visible FilePathTxBl.Visibility = Windows.Visibility.Visible
FileListBox.Visibility = Windows.Visibility.Visible FileListBox.Visibility = Windows.Visibility.Visible
LeftGrid.Children.Remove(m_SideAngleUC) LeftGrid.Children.Remove(m_SideAngleUC)
If SideAngleBtn.IsChecked() Then If SideAngleBtn.IsChecked() Then
SideAngleBtn.IsChecked = False SideAngleBtn.IsChecked = False
ElseIf EngraveBtn.IsChecked() Then
EngraveBtn.IsChecked = False
Else Else
DripCutBtn.IsChecked() = False DripCutBtn.IsChecked() = False
End If End If
@@ -1040,6 +1206,7 @@ Public Class ImportPageUC
Private Sub SideAngleBtn_Click(sender As Object, e As RoutedEventArgs) Handles SideAngleBtn.Click Private Sub SideAngleBtn_Click(sender As Object, e As RoutedEventArgs) Handles SideAngleBtn.Click
If SideAngleBtn.IsChecked() Then If SideAngleBtn.IsChecked() Then
FinderGrd.Visibility = Visibility.Hidden
' Aggiungo regioni per percorsi interni ' Aggiungo regioni per percorsi interni
AdjustSelectRegions() AdjustSelectRegions()
' Dichiaro nessuna selezione ' Dichiaro nessuna selezione
@@ -1052,7 +1219,11 @@ Public Class ImportPageUC
FileListBox.Visibility = Windows.Visibility.Hidden FileListBox.Visibility = Windows.Visibility.Hidden
' Disabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura ' Disabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
mmBtn.IsEnabled = False mmBtn.IsEnabled = False
inchBtn.IsEnabled = False inchBtn.IsEnabled = False
@@ -1062,6 +1233,7 @@ Public Class ImportPageUC
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green") MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
Else Else
FinderGrd.Visibility = Visibility.Visible
' Rimuovo regioni per percorsi interni ' Rimuovo regioni per percorsi interni
RemoveSelectRegions() RemoveSelectRegions()
FilePathTxBl.Visibility = Windows.Visibility.Visible FilePathTxBl.Visibility = Windows.Visibility.Visible
@@ -1073,8 +1245,72 @@ Public Class ImportPageUC
EgtDeselectAll() EgtDeselectAll()
' Riabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura ' Riabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
mmBtn.IsEnabled = True
inchBtn.IsEnabled = True
' Elimino scritte angoli per input e inserisco quelle definitive
SideAngle.WriteSideAngleForNest(ImportScene.GetCtx())
' Riabilito bottone reset
ResetBtn.IsEnabled = True
' Pulisco area messaggi
MessageTxBx.Text = ""
MessageBrd.Background = Brushes.Transparent
End If
EgtZoom(ZM.ALL)
End Sub
Private Sub EngraveBtn_Click(sender As Object, e As RoutedEventArgs) Handles EngraveBtn.Click
If EngraveBtn.IsChecked() Then
FinderGrd.Visibility = Visibility.Hidden
' Aggiungo regioni per percorsi interni
AdjustSelectRegions()
' Dichiaro nessuna selezione
m_nSelectedPart = GDB_ID.NULL
m_nSelectedLayer = GDB_ID.NULL
' Imposto modalità sideangle
m_SideAngleUC.m_Mode = SideAngleUC.ModeOpt.ENGRAVE
LeftGrid.Children.Add(m_SideAngleUC)
FilePathTxBl.Visibility = Windows.Visibility.Hidden
FileListBox.Visibility = Windows.Visibility.Hidden
' Disabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura
SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False
mmBtn.IsEnabled = False
inchBtn.IsEnabled = False
' Disabilito bottone reset
ResetBtn.IsEnabled = False
' Messaggio di selezione da effettuare
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
Else
FinderGrd.Visibility = Visibility.Visible
' Rimuovo regioni per percorsi interni
RemoveSelectRegions()
FilePathTxBl.Visibility = Windows.Visibility.Visible
FileListBox.Visibility = Windows.Visibility.Visible
LeftGrid.Children.Remove(m_SideAngleUC)
' Deseleziono eventuali pezzi rimasti selezionati
m_nSelectedPart = GDB_ID.NULL
m_nSelectedLayer = GDB_ID.NULL
EgtDeselectAll()
' Riabilito FiloTopBtn, DripCutBtn, DripDrillBtn e unità di misura
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
mmBtn.IsEnabled = True mmBtn.IsEnabled = True
@@ -1092,6 +1328,7 @@ Public Class ImportPageUC
Private Sub DripCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles DripCutBtn.Click Private Sub DripCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles DripCutBtn.Click
If DripCutBtn.IsChecked() Then If DripCutBtn.IsChecked() Then
FinderGrd.Visibility = Visibility.Hidden
' Dichiaro nessuna selezione ' Dichiaro nessuna selezione
m_nSelectedPart = GDB_ID.NULL m_nSelectedPart = GDB_ID.NULL
m_nSelectedLayer = GDB_ID.NULL m_nSelectedLayer = GDB_ID.NULL
@@ -1103,6 +1340,9 @@ Public Class ImportPageUC
' Disabilito SideAngleBtn,FiloTop, DripDrillBtn e unità di misura ' Disabilito SideAngleBtn,FiloTop, DripDrillBtn e unità di misura
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility <> Visibility.Visible Then
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
mmBtn.IsEnabled = False mmBtn.IsEnabled = False
inchBtn.IsEnabled = False inchBtn.IsEnabled = False
@@ -1112,6 +1352,7 @@ Public Class ImportPageUC
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green") MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
Else Else
FinderGrd.Visibility = Visibility.Visible
FilePathTxBl.Visibility = Windows.Visibility.Visible FilePathTxBl.Visibility = Windows.Visibility.Visible
FileListBox.Visibility = Windows.Visibility.Visible FileListBox.Visibility = Windows.Visibility.Visible
LeftGrid.Children.Remove(m_SideAngleUC) LeftGrid.Children.Remove(m_SideAngleUC)
@@ -1122,8 +1363,9 @@ Public Class ImportPageUC
' Riabilito SideAngleBtn, FiloTop, DripDrillBtn e unità di misura ' Riabilito SideAngleBtn, FiloTop, DripDrillBtn e unità di misura
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And If DripCutBtn.Visibility <> Visibility.Visible Then
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
mmBtn.IsEnabled = True mmBtn.IsEnabled = True
inchBtn.IsEnabled = True inchBtn.IsEnabled = True
' Elimino scritte angoli per input e inserisco quelle definitive ' Elimino scritte angoli per input e inserisco quelle definitive
@@ -1142,6 +1384,7 @@ Public Class ImportPageUC
Private Sub DripDrillBtn_Click(sender As Object, e As RoutedEventArgs) Handles DripDrillBtn.Click Private Sub DripDrillBtn_Click(sender As Object, e As RoutedEventArgs) Handles DripDrillBtn.Click
If DripDrillBtn.IsChecked() Then If DripDrillBtn.IsChecked() Then
FinderGrd.Visibility = Visibility.Hidden
' Aggiungo regioni di selezione per percorsi interni ' Aggiungo regioni di selezione per percorsi interni
AdjustSelectRegions() AdjustSelectRegions()
' Imposto modalità fori da sotto ' Imposto modalità fori da sotto
@@ -1151,7 +1394,11 @@ Public Class ImportPageUC
' Disabilito SideAngleBtn, FiloTop, DripCutBtn e unità di misura ' Disabilito SideAngleBtn, FiloTop, DripCutBtn e unità di misura
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
FiloTopBtn.IsEnabled = False FiloTopBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
mmBtn.IsEnabled = False mmBtn.IsEnabled = False
inchBtn.IsEnabled = False inchBtn.IsEnabled = False
' Disabilito bottone reset ' Disabilito bottone reset
@@ -1160,6 +1407,7 @@ Public Class ImportPageUC
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 15) ' Selezionare uno o più fori MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 15) ' Selezionare uno o più fori
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green") MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
Else Else
FinderGrd.Visibility = Visibility.Visible
' Rimuovo regioni per percorsi interni ' Rimuovo regioni per percorsi interni
RemoveSelectRegions() RemoveSelectRegions()
FilePathTxBl.Visibility = Windows.Visibility.Visible FilePathTxBl.Visibility = Windows.Visibility.Visible
@@ -1172,8 +1420,12 @@ Public Class ImportPageUC
' Riabilito SideAngleBtn, FiloTop, DripCutBtn e unità di misura ' Riabilito SideAngleBtn, FiloTop, DripCutBtn e unità di misura
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling FiloTopBtn.IsEnabled = m_MainWindow.m_CurrentMachine.bMilling
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
mmBtn.IsEnabled = True mmBtn.IsEnabled = True
inchBtn.IsEnabled = True inchBtn.IsEnabled = True
' Riabilito bottone reset ' Riabilito bottone reset
@@ -1187,6 +1439,7 @@ Public Class ImportPageUC
Private Sub FiloTopBtn_Click(sender As Object, e As RoutedEventArgs) Handles FiloTopBtn.Click Private Sub FiloTopBtn_Click(sender As Object, e As RoutedEventArgs) Handles FiloTopBtn.Click
If FiloTopBtn.IsChecked() Then If FiloTopBtn.IsChecked() Then
FinderGrd.Visibility = Visibility.Hidden
' Aggiungo regioni per percorsi interni ' Aggiungo regioni per percorsi interni
AdjustSelectRegions() AdjustSelectRegions()
' Dichiaro nessuna selezione ' Dichiaro nessuna selezione
@@ -1198,7 +1451,11 @@ Public Class ImportPageUC
FileListBox.Visibility = Windows.Visibility.Hidden FileListBox.Visibility = Windows.Visibility.Hidden
' Disabilito SideAngleBtn, DripCutBtn, DripDrillBtn e unità di misura ' Disabilito SideAngleBtn, DripCutBtn, DripDrillBtn e unità di misura
SideAngleBtn.IsEnabled = False SideAngleBtn.IsEnabled = False
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = False DripCutBtn.IsEnabled = False
Else
EngraveBtn.IsEnabled = False
End If
DripDrillBtn.IsEnabled = False DripDrillBtn.IsEnabled = False
mmBtn.IsEnabled = False mmBtn.IsEnabled = False
inchBtn.IsEnabled = False inchBtn.IsEnabled = False
@@ -1208,6 +1465,7 @@ Public Class ImportPageUC
MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno interno MessageTxBx.Text = EgtMsg(MSG_DRAWPAGEUC + 6) ' Selezionare un contorno interno
MessageBrd.Background = Application.Current.FindResource("OmagCut_Green") MessageBrd.Background = Application.Current.FindResource("OmagCut_Green")
Else Else
FinderGrd.Visibility = Visibility.Visible
' Rimuovo regioni per percorsi interni ' Rimuovo regioni per percorsi interni
RemoveSelectRegions() RemoveSelectRegions()
FilePathTxBl.Visibility = Windows.Visibility.Visible FilePathTxBl.Visibility = Windows.Visibility.Visible
@@ -1219,8 +1477,12 @@ Public Class ImportPageUC
EgtDeselectAll() EgtDeselectAll()
' Riabilito SideAngleBtn, DripCutBtn, DripDrillBtn e unità di misura ' Riabilito SideAngleBtn, DripCutBtn, DripDrillBtn e unità di misura
SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle SideAngleBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
If DripCutBtn.Visibility = Visibility.Visible Then
DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripCutBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripSaw)
Else
EngraveBtn.IsEnabled = m_MainWindow.m_DrawPageUC.bEnableSideAngle
End If
DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And DripDrillBtn.IsEnabled = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.UNDER_CUT) And
Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill) Not String.IsNullOrWhiteSpace(m_MainWindow.m_CurrentMachine.sCurrDripDrill)
mmBtn.IsEnabled = True mmBtn.IsEnabled = True
@@ -1279,8 +1541,9 @@ Public Class ImportPageUC
If nType = GDB_TY.CRV_LINE Or nType = GDB_TY.CRV_ARC Or nType = GDB_TY.CRV_COMPO Then If nType = GDB_TY.CRV_LINE Or nType = GDB_TY.CRV_ARC Or nType = GDB_TY.CRV_COMPO Then
vCrvId.Add(nCrvId) vCrvId.Add(nCrvId)
End If End If
ElseIf DripDrillBtn.IsChecked ElseIf DripDrillBtn.IsChecked Then
if nType = GDB_TY.CRV_ARC
If nType = GDB_TY.CRV_ARC Then
vCrvId.Add(nCrvId) vCrvId.Add(nCrvId)
End If End If
End If End If
@@ -1306,11 +1569,11 @@ Public Class ImportPageUC
Private Sub Cad2dBtn_Click(sender As Object, e As RoutedEventArgs) Handles Cad2dBtn.Click Private Sub Cad2dBtn_Click(sender As Object, e As RoutedEventArgs) Handles Cad2dBtn.Click
Dim ProcsCad2d As Process() = Process.GetProcessesByName( m_sCad2dName) Dim ProcsCad2d As Process() = Process.GetProcessesByName(m_sCad2dName)
If ProcsCad2d.Length() > 0 Then If ProcsCad2d.Length() > 0 Then
ShowWindow( ProcsCad2d(0).MainWindowHandle, 3) ShowWindow(ProcsCad2d(0).MainWindowHandle, 3)
Else Else
Process.Start( m_sCad2dPath) Process.Start(m_sCad2dPath)
End If End If
End Sub End Sub
+98 -6
View File
@@ -33,14 +33,31 @@ Public Class MainComponentPageUC
m_bIsFirstPage = True m_bIsFirstPage = True
LoadPage() LoadPage()
CurrentBtn = Nothing CurrentBtn = Nothing
If m_MainWindow.FrameCutBtn.IsChecked Then
' se il numero delle componenti è superiore a 8 allora inserisco la seconda pagina
If GetPrivateProfileInt(S_FRAMECOMPO, K_CMP_COUNT, 0, m_MainWindow.GetIniFile()) > 8 Then
OthersBackGr.Visibility = Visibility.Visible
Compo9.SetValue(Grid.ColumnProperty, 0) Compo9.SetValue(Grid.ColumnProperty, 0)
Compo9.SetValue(Grid.ColumnSpanProperty, 2) Compo9.SetValue(Grid.ColumnSpanProperty, 2)
ImageCompo9.Visibility = Windows.Visibility.Hidden ImageCompo9.Visibility = Windows.Visibility.Hidden
LabelCompo9.Visibility = Windows.Visibility.Visible LabelCompo9.Visibility = Windows.Visibility.Visible
Else
OthersBackGr.Visibility = Visibility.Hidden
End If
Else
OthersBackGr.Visibility = Visibility.Visible
Compo9.SetValue(Grid.ColumnProperty, 0)
Compo9.SetValue(Grid.ColumnSpanProperty, 2)
ImageCompo9.Visibility = Windows.Visibility.Hidden
LabelCompo9.Visibility = Windows.Visibility.Visible
End If
m_MainWindow.m_DrawPageUC.SideAngleBtn.IsEnabled = False m_MainWindow.m_DrawPageUC.SideAngleBtn.IsEnabled = False
m_MainWindow.m_DrawPageUC.FiloTopBtn.IsEnabled = False m_MainWindow.m_DrawPageUC.FiloTopBtn.IsEnabled = False
m_MainWindow.m_DrawPageUC.EngraveBtn.IsEnabled = False m_MainWindow.m_DrawPageUC.EngraveBtn.IsEnabled = False
m_MainWindow.m_DrawPageUC.DripCutBtn.IsEnabled = False m_MainWindow.m_DrawPageUC.DripCutBtn.IsEnabled = False
m_MainWindow.m_DrawPageUC.m_bBackFromInternalCompo = False
End Sub End Sub
Private Function GetButton(ByVal nInd As Integer) As Button Private Function GetButton(ByVal nInd As Integer) As Button
@@ -167,7 +184,7 @@ Public Class MainComponentPageUC
Private Sub Compo_Click(sender As Object, e As RoutedEventArgs) Handles Compo1.Click, Compo2.Click, Compo3.Click, Compo4.Click, Compo5.Click, Compo6.Click, Compo7.Click, Compo8.Click Private Sub Compo_Click(sender As Object, e As RoutedEventArgs) Handles Compo1.Click, Compo2.Click, Compo3.Click, Compo4.Click, Compo5.Click, Compo6.Click, Compo7.Click, Compo8.Click
CurrentBtn = DirectCast(e.Source, Button) CurrentBtn = DirectCast(e.Source, Button)
Dim CompoName As String = S_COMPO & GetIndexFromButton(CurrentBtn).ToString Dim CompoName As String = If(m_MainWindow.FrameCutBtn.IsChecked, S_FRAMECOMPO, S_COMPO) & GetIndexFromButton(CurrentBtn).ToString
m_sCurrCompoFam = CompoName m_sCurrCompoFam = CompoName
m_SecondaryComponentPage.m_sCurrCompo = String.Empty m_SecondaryComponentPage.m_sCurrCompo = String.Empty
Dim nCount As Integer = GetPrivateProfileInt(CompoName, K_CMP_COUNT, 0, m_MainWindow.GetIniFile()) Dim nCount As Integer = GetPrivateProfileInt(CompoName, K_CMP_COUNT, 0, m_MainWindow.GetIniFile())
@@ -251,6 +268,11 @@ Public Class MainComponentPageUC
End Sub End Sub
Private Sub LoadPage() Private Sub LoadPage()
If m_MainWindow.FrameCutBtn.IsChecked Then
LoadFramePage()
Return
End If
Dim nDeltaSecondPage As Integer = 8 Dim nDeltaSecondPage As Integer = 8
' Leggo numero di componenti presenti ' Leggo numero di componenti presenti
Dim nCompoNumber As Integer = GetPrivateProfileInt(S_COMPO, K_CMP_COUNT, 0, m_MainWindow.GetIniFile()) Dim nCompoNumber As Integer = GetPrivateProfileInt(S_COMPO, K_CMP_COUNT, 0, m_MainWindow.GetIniFile())
@@ -325,16 +347,86 @@ Public Class MainComponentPageUC
End Sub End Sub
Private Sub LoadFramePage()
Dim nDeltaSecondPage As Integer = 8
' Leggo numero di componenti presenti
Dim nCompoNumber As Integer = GetPrivateProfileInt(S_FRAMECOMPO, K_CMP_COUNT, 0, m_MainWindow.GetIniFile())
' Calcolo indici a seconda della pagina in cui sono
If m_bIsFirstPage Then
ClearButton(nCompoNumber)
nDeltaSecondPage = 0
Else
ClearButton(nCompoNumber)
nDeltaSecondPage = 8
End If
' Creazione converter da String a ImageSource
Dim ImageConverter As New ImageSourceConverter
Dim ThicknessConverter As New ThicknessConverter
'Assegnazione immagine e testo ai Button
For index As Integer = 1 To 8
Dim CustomThickness As New Thickness(0)
Dim nCompoName As Integer = GetPrivateProfileInt(S_FRAMECOMPO & index + nDeltaSecondPage, "Name", 0, m_MainWindow.GetIniFile())
Dim sCompoImage As String = ""
Dim sCompoImageSource As ImageSource
'verifico presenza immagine e la aggiungo
If GetPrivateProfileString(S_FRAMECOMPO & index + nDeltaSecondPage, "Image", "", sCompoImage, m_MainWindow.GetIniFile()) <> 0 Then
Try
sCompoImageSource = ImageConverter.ConvertFromString(m_MainWindow.GetResourcesDir() & "\" & sCompoImage)
GetImage(index).Height = 65
GetImage(index).Width = 65
GetImage(index).Source = sCompoImageSource
Catch ex As Exception
EgtOutLog("Error loading image " & sCompoImage)
sCompoImage = String.Empty
GetImage(index).Height = 0
GetImage(index).Width = 0
CustomThickness.Right = 0
GetImage(index).Margin = CustomThickness
End Try
Else
'Se non c'è l'immagine azzero la distanza tra testo e immagine
CustomThickness.Right = 0
GetImage(index).Margin = CustomThickness
End If
'verifico presenza testo
If nCompoName > 0 Then
Dim sCompoName As String = EgtMsg(MSG_COMPONENTPAGEUC + nCompoName)
'verifico presenza immagine
If sCompoImage.Length > 0 Then
'se la lunghezza del testo è maggiore di 15 lo taglio
If sCompoName.Length > 15 Then
sCompoName = sCompoName.Substring(0, 15)
End If
GetLabel(index).Text = sCompoName
'Se ci sono sia testo che immagine imposto un margine di 10
CustomThickness.Right = 10
GetImage(index).Margin = CustomThickness
Else
'se l'immagine non c'è e il testo è maggiore di 20 lo taglio
If sCompoName.Length > 20 Then
sCompoName = sCompoName.Substring(0, 20)
End If
GetLabel(index).Text = sCompoName
End If
Else
'Se non c'è testo azzero la distanza tra testo e immagine
CustomThickness.Right = 0
GetImage(index).Margin = CustomThickness
End If
Next
End Sub
' Gestione bottone altri componenti ' Gestione bottone altri componenti
Private Sub Compo9_Click(sender As Object, e As RoutedEventArgs) Handles Compo9.Click Private Sub Compo9_Click(sender As Object, e As RoutedEventArgs) Handles Compo9.Click
If m_bIsFirstPage Then If m_bIsFirstPage Then
m_bIsFirstPage = False m_bIsFirstPage = False
LoadPage() LoadPage()
'Compo9.SetValue(Grid.ColumnProperty, 1)
'Compo9.SetValue(Grid.ColumnSpanProperty, 1)
'ImageCompo9.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NumericKeyboardArrow.png", UriKind.Relative))
'ImageCompo9.Visibility = Windows.Visibility.Visible
'LabelCompo9.Visibility = Windows.Visibility.Hidden
Compo9.SetValue(Grid.ColumnProperty, 0) Compo9.SetValue(Grid.ColumnProperty, 0)
Compo9.SetValue(Grid.ColumnSpanProperty, 2) Compo9.SetValue(Grid.ColumnSpanProperty, 2)
ImageCompo9.Visibility = Windows.Visibility.Hidden ImageCompo9.Visibility = Windows.Visibility.Hidden
+4
View File
@@ -226,6 +226,10 @@ Module SideAngle
EgtSetInfo(EntId, INFO_SIDE_ANGLE, dAng) EgtSetInfo(EntId, INFO_SIDE_ANGLE, dAng)
EgtSetInfo(EntId, INFO_ORIG_SIDE_ANGLE, dAng) EgtSetInfo(EntId, INFO_ORIG_SIDE_ANGLE, dAng)
EgtSetInfo(EntId, INFO_HEEL, dHeel) EgtSetInfo(EntId, INFO_HEEL, dHeel)
Dim sSawingTilted As String = m_MainWindow.m_CurrentMachine.sCurrSawingTilted
If Not String.IsNullOrEmpty(sSawingTilted) Then
EgtSetInfo(EntId, DEF_MACHINING, sSawingTilted)
End If
End If End If
End If End If
End If End If
+5
View File
@@ -1303,10 +1303,15 @@ Public Class SideAngleUC
If dSideAngle <> 0 Then If dSideAngle <> 0 Then
EgtSetInfo(CurrEntity.nGeomId, INFO_SIDE_ANGLE, dSideAngle) EgtSetInfo(CurrEntity.nGeomId, INFO_SIDE_ANGLE, dSideAngle)
EgtSetInfo(CurrEntity.nGeomId, INFO_ORIG_SIDE_ANGLE, dSideAngle) EgtSetInfo(CurrEntity.nGeomId, INFO_ORIG_SIDE_ANGLE, dSideAngle)
Dim sSawingTilted As String = m_MainWindow.m_CurrentMachine.sCurrSawingTilted
If Not String.IsNullOrEmpty(sSawingTilted) Then
EgtSetInfo(CurrEntity.nGeomId, DEF_MACHINING, sSawingTilted)
End If
' Cancello inclinazione nell'apposito campo info ' Cancello inclinazione nell'apposito campo info
Else Else
EgtRemoveInfo(CurrEntity.nGeomId, INFO_SIDE_ANGLE) EgtRemoveInfo(CurrEntity.nGeomId, INFO_SIDE_ANGLE)
EgtRemoveInfo(CurrEntity.nGeomId, INFO_ORIG_SIDE_ANGLE) EgtRemoveInfo(CurrEntity.nGeomId, INFO_ORIG_SIDE_ANGLE)
EgtRemoveInfo(CurrEntity.nGeomId, DEF_MACHINING)
End If End If
' Aggiorno lista entità con nuova inclinazione ' Aggiorno lista entità con nuova inclinazione
CurrEntity.dSideAngle = dSideAngle CurrEntity.dSideAngle = dSideAngle
+37 -6
View File
@@ -39,6 +39,15 @@
<Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}"> <Button Name="RawPartBtn" Grid.Column="1" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button> </Button>
<Button Name="CompoBtn" Grid.Column="2" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource DrawImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="SelSectionBtn" Grid.Column="3" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource Sezione-corniceImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
</Button>
<ToggleButton Name="MachiningBtn" Grid.Column="4" Style="{DynamicResource OmagCut_RightGrayYellowIconToggleButton}"> <ToggleButton Name="MachiningBtn" Grid.Column="4" Style="{DynamicResource OmagCut_RightGrayYellowIconToggleButton}">
<Image Source="{DynamicResource FrameMachiningImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource FrameMachiningImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</ToggleButton> </ToggleButton>
@@ -63,8 +72,10 @@
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.8*"/> <RowDefinition Height="0.8*"/>
<RowDefinition Height="2.5*"/> <RowDefinition Height="0.8*"/>
<RowDefinition Height="1.7*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<ComboBox Name="AlongAxCmBx" Grid.Row="0" Grid.ColumnSpan="3" Style="{StaticResource OmagCut_ComboBox}" <ComboBox Name="AlongAxCmBx" Grid.Row="0" Grid.ColumnSpan="3" Style="{StaticResource OmagCut_ComboBox}"
@@ -77,14 +88,13 @@
</ComboBox> </ComboBox>
<UniformGrid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" > <UniformGrid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" >
<Button Name="SelSectionBtn" <!--<Button Name="SelSectionBtn"
Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}"> Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource Sezione-corniceImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource Sezione-corniceImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
</Button> </Button>-->
<Grid> <Grid>
<Button Name="SelGuideBtn" <Button Name="SelGuideBtn" Style="{DynamicResource OmagCut_YellowTextButton}"/>
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<UniformGrid Name="ArcGrid" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" > <UniformGrid Name="ArcGrid" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Columns="2" >
<TextBlock Name="ArcRadTxBl" Grid.Row="2" Grid.ColumnSpan="2" <TextBlock Name="ArcRadTxBl" Grid.Row="2" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
@@ -113,7 +123,21 @@
<EgtWPFLib:EgtTextBox Name="OffsYyTxBx" Grid.Column="2" Grid.Row="4" Width="50" <EgtWPFLib:EgtTextBox Name="OffsYyTxBx" Grid.Column="2" Grid.Row="4" Width="50"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/> Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<UniformGrid Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3" Columns="2" > <Grid Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<TextBlock Name="OffsXInteryTxBl" Grid.Column="0"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<CheckBox Name="UseInteraxisChBx" Grid.Row="7" Grid.Column="1" Height="30" Width="40" HorizontalAlignment="Right"
Margin="-20,0,0,0"/>
<EgtWPFLib:EgtTextBox Name="OffsXInteryTxBx" Grid.Column="2" Width="50"
Style="{DynamicResource OmagCut_CalculatorTextBox}" IsEnabled="{Binding ElementName=UseInteraxisChBx, Path=IsChecked}"/>
</Grid>
<UniformGrid Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="3" Columns="2" >
<Button Name="MirrorPartBtn" <Button Name="MirrorPartBtn"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}"> Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource SpecchiaImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource SpecchiaImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
@@ -124,6 +148,13 @@
</Button> </Button>
</UniformGrid> </UniformGrid>
<!--<UniformGrid Grid.Column="0" Grid.Row="6" Grid.ColumnSpan="3" Columns="2" >
<Button Name="CompoBtn"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource DrawImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
</Button>
</UniformGrid>-->
<!--<TextBlock Name="SawRoughingTxBl" Grid.Row="4" Grid.ColumnSpan="3" <!--<TextBlock Name="SawRoughingTxBl" Grid.Row="4" Grid.ColumnSpan="3"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/> Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
+61 -3
View File
@@ -52,6 +52,10 @@ Public Class FrameCutPageUC
OffsXyTxBx.Text = LenToString(dOffsXY, 3) OffsXyTxBx.Text = LenToString(dOffsXY, 3)
Dim dOffsYY As Double = GetPrivateProfileDouble(S_FRAME, K_OFFSYY, 5, m_MainWindow.GetIniFile()) Dim dOffsYY As Double = GetPrivateProfileDouble(S_FRAME, K_OFFSYY, 5, m_MainWindow.GetIniFile())
OffsYyTxBx.Text = LenToString(dOffsYY, 3) OffsYyTxBx.Text = LenToString(dOffsYY, 3)
Dim dOffsXInterY As Double = GetPrivateProfileDouble(S_FRAME, K_OFFSXINTERY, 5, m_MainWindow.GetIniFile())
OffsXInteryTxBx.Text = LenToString(dOffsXInterY, 3)
Dim bOffsYInterYSawTh As Boolean = False
UseInteraxisChBx.IsChecked = (GetPrivateProfileInt(S_FRAME, K_OFFSXINTERYSAWTH, 0, m_MainWindow.GetIniFile()) <> 1)
' Imposto i messaggi letti dal file dei messaggi ' Imposto i messaggi letti dal file dei messaggi
m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 1)) 'Lungo X m_AlongAx.Add(EgtMsg(MSG_FRAMECUTPAGEUC + 1)) 'Lungo X
@@ -70,6 +74,18 @@ Public Class FrameCutPageUC
OffsZTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 8) 'Distanza sopra OffsZTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 8) 'Distanza sopra
OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 9) 'Distanza inizio OffsXyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 9) 'Distanza inizio
OffsYyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 22) 'Distanza Y OffsYyTxBl.Text = EgtMsg(MSG_FRAMECUTPAGEUC + 22) 'Distanza Y
OffsXInteryTxBl.Text = EgtMsg(90645) 'Interasse
Dim sChBxToolTip As String = EgtMsg(90646) 'Applica valore indicato\n altrienti spessore lama
sChBxToolTip = sChBxToolTip.Replace("/n", "£")
Dim sItems As String() = sChBxToolTip.Split("£")
For Index As Integer = 0 To sItems.Count - 1
If Index = 0 Then
sChBxToolTip = sItems(Index).Trim
Else
sChBxToolTip &= vbCrLf & sItems(Index).Trim
End If
Next
UseInteraxisChBx.ToolTip = sChBxToolTip
End Sub End Sub
Private Sub FrameCutPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub FrameCutPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -81,6 +97,12 @@ Public Class FrameCutPageUC
m_ProjectMgr.CSVBtn.Visibility = Windows.Visibility.Hidden m_ProjectMgr.CSVBtn.Visibility = Windows.Visibility.Hidden
m_ProjectMgr.VeinMatchingBtn.Visibility = Windows.Visibility.Hidden m_ProjectMgr.VeinMatchingBtn.Visibility = Windows.Visibility.Hidden
m_ProjectMgr.RegisterBtn.Visibility = Windows.Visibility.Hidden m_ProjectMgr.RegisterBtn.Visibility = Windows.Visibility.Hidden
' Visualizzo il bottone per l'importazione dei compo frame
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.COMPOFRAME) AndAlso GetPrivateProfileInt(S_FRAMECOMPO, K_CMP_COUNT, 0, m_MainWindow.GetIniFile()) > 0 Then
CompoBtn.Visibility = Visibility.Visible
Else
CompoBtn.Visibility = Visibility.Hidden
End If
' Recupero dimensioni e kerf del grezzo ' Recupero dimensioni e kerf del grezzo
m_nRawId = EgtGetFirstRawPart() m_nRawId = EgtGetFirstRawPart()
GetRawBox(m_RawBox) GetRawBox(m_RawBox)
@@ -271,7 +293,7 @@ Public Class FrameCutPageUC
End If End If
End Sub End Sub
Private Sub OffsXXTxBx_EgtClosed(sender As Object, e As EventArgs) Handles OffsZTxBx.EgtClosed, OffsXyTxBx.EgtClosed, OffsYyTxBx.EgtClosed Private Sub OffsXXTxBx_EgtClosed(sender As Object, e As EventArgs) Handles OffsZTxBx.EgtClosed, OffsXyTxBx.EgtClosed, OffsYyTxBx.EgtClosed, OffsXInteryTxBx.EgtClosed, UseInteraxisChBx.Click
' Forzo aggiornamento grezzo nella pagina di Nesting ' Forzo aggiornamento grezzo nella pagina di Nesting
m_MainWindow.m_CadCutPageUC.m_NestPage.CalcRawPart() m_MainWindow.m_CadCutPageUC.m_NestPage.CalcRawPart()
' Parcheggio pezzi presenti nel grezzo ' Parcheggio pezzi presenti nel grezzo
@@ -296,9 +318,18 @@ Public Class FrameCutPageUC
WritePrivateProfileString(S_FRAME, K_OFFSXY, DoubleToString(dOffsXy, 3), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_FRAME, K_OFFSXY, DoubleToString(dOffsXy, 3), m_MainWindow.GetIniFile())
End If End If
Dim dOffsYy As Double = 0 Dim dOffsYy As Double = 0
If StringToLen(OffsYyTxBx.Text, dOffsYY) Then If StringToLen(OffsYyTxBx.Text, dOffsYy) Then
WritePrivateProfileString(S_FRAME, K_OFFSYY, DoubleToString(dOffsYy, 3), m_MainWindow.GetIniFile()) WritePrivateProfileString(S_FRAME, K_OFFSYY, DoubleToString(dOffsYy, 3), m_MainWindow.GetIniFile())
End If End If
Dim dOffsXIntery As Double = 0
If StringToLen(OffsXInteryTxBx.Text, dOffsXIntery) Then
WritePrivateProfileString(S_FRAME, K_OFFSXINTERY, DoubleToString(dOffsXIntery, 3), m_MainWindow.GetIniFile())
End If
Dim sUseInteraxis As String = "1"
If UseInteraxisChBx.IsChecked Then
sUseInteraxis = "0"
End If
WritePrivateProfileString(S_FRAME, K_OFFSXINTERYSAWTH, sUseInteraxis, m_MainWindow.GetIniFile())
End Sub End Sub
Private Sub MirrorPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles MirrorPartBtn.Click Private Sub MirrorPartBtn_Click(sender As Object, e As RoutedEventArgs) Handles MirrorPartBtn.Click
@@ -436,6 +467,16 @@ Public Class FrameCutPageUC
End If End If
End Sub End Sub
Private Sub CompoBtn_Click(sender As Object, e As RoutedEventArgs) Handles CompoBtn.Click
m_MainWindow.TestOff()
m_MainWindow.DragRettangleOff()
m_MainWindow.SplitCurvWJOff()
m_MainWindow.StartCurvWJOff()
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_CurrentProjectPageUC)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_DrawPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.Draw
End Sub
Friend Function CreateFrame(nPartId As Integer) As Boolean Friend Function CreateFrame(nPartId As Integer) As Boolean
If Not MyCreateFrame( nPartId) Then If Not MyCreateFrame( nPartId) Then
EgtErase( nPartId) EgtErase( nPartId)
@@ -936,12 +977,29 @@ Public Class FrameCutPageUC
' Determino distanza da spessore lama ' Determino distanza da spessore lama
Dim dMinDist As Double = 0 Dim dMinDist As Double = 0
Dim dSawThick As Double = 0 Dim dSawThick As Double = 0
Dim dOffsXIntery As Double = 0
StringToLen(OffsXInteryTxBx.Text, dOffsXIntery)
If EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) AndAlso If EgtTdbSetCurrTool(m_MainWindow.m_CurrentMachine.sCurrSaw) AndAlso
EgtTdbGetCurrToolParam(MCH_TP.THICK, dSawThick) Then EgtTdbGetCurrToolParam(MCH_TP.THICK, dSawThick) Then
If UseInteraxisChBx.IsChecked Then
If dOffsXIntery < 0 Then
dMinDist = 5 * EPS_SMALL
OffsXInteryTxBx.Text = "0"
Else
dMinDist = dOffsXIntery + 5 * EPS_SMALL
End If
Else
dMinDist = dSawThick + 5 * EPS_SMALL dMinDist = dSawThick + 5 * EPS_SMALL
End If
'If dOffsXIntery <= dSawThick Then
' dMinDist = dSawThick + 5 * EPS_SMALL
' EgtOutLog("WARNINGS: Saw tickness is more width then interaxis")
'Else
' dMinDist = dOffsXIntery + 5 * EPS_SMALL
'End If
Else Else
EgtOutLog("Not found current saw for frames mindist") EgtOutLog("Not found current saw for frames mindist")
dMinDist = 0 dMinDist = dOffsXIntery
End If End If
' Inserisco il pezzo nel grezzo ' Inserisco il pezzo nel grezzo
Dim ptIns As Point3d Dim ptIns As Point3d
+63
View File
@@ -0,0 +1,63 @@
<Window x:Class="LicenseWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
Title="OpenFile" Height="587.4" Width="500.6" WindowStyle="None"
ResizeMode="NoResize" ShowInTaskbar="False" AllowsTransparency="True"
Background="Transparent">
<Border Style="{DynamicResource OmagCut_Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="5.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3"
Orientation="Horizontal"
HorizontalAlignment="Center">
<TextBlock Name="IconTxBl" Foreground="White" FontSize="32"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Name="LicenseTxBl"
Foreground="White" FontSize="20"
VerticalAlignment="Center" HorizontalAlignment="Left"
TextWrapping="Wrap"/>
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="2" Orientation="Horizontal"
HorizontalAlignment="Center">
<ScrollViewer Name="MyScrollViewer" VerticalScrollBarVisibility="Auto">
<TextBlock Name="LicenseMsgTxBl" MaxWidth="425"
HorizontalAlignment="Center"
Foreground="{DynamicResource Omag_White}" FontSize="20" VerticalAlignment="Center"
TextWrapping="Wrap"/>
</ScrollViewer>
</StackPanel>
<Grid Grid.Column="1" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Name="ExitBtn" Grid.Column="2" Style="{DynamicResource OmagCut_GradientBlueIconButton}" IsCancel="True">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+37
View File
@@ -0,0 +1,37 @@
Public Class LicenseWindow
Private m_sMessage As String = String.Empty
Private m_sTitle As String = String.Empty
Public Sub New(Owner As Window, sMsg As String, sTitle As String)
Me.Owner = Owner
m_sMessage = sMsg
m_sTitle = sTitle
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
End Sub
Public Sub Init() Handles Me.Initialized
IconTxBl.Text = "⚠️"
LicenseTxBl.Text = m_sTitle
m_sMessage = m_sMessage.Replace("/n", "£")
Dim sItems As String() = m_sMessage.Split("£")
For Index As Integer = 0 To sItems.Count - 1
If Index = 0 Then
m_sMessage = sItems(Index)
Else
m_sMessage &= vbCrLf & sItems(Index)
End If
Next
LicenseMsgTxBl.Text = m_sMessage
End Sub
Public Sub Exit_Click() Handles ExitBtn.Click
Me.Close()
End Sub
End Class
+58 -13
View File
@@ -184,6 +184,31 @@
</GroupBox> </GroupBox>
<!--Parametri rettifica tagli sottosquadra: 1 Parametro -->
<GroupBox Name="RectificationWJParamGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" >
<Grid Grid.Column="3" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Name="EnableRectificationTxBl" Grid.Row="0" Grid.ColumnSpan="2"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}" />
<CheckBox Name="EnableRectificationChBx" Grid.Row="0" Grid.ColumnSpan="2" Style="{StaticResource OmagCut_CheckBox_Single}"
HorizontalAlignment="Right" Margin="0,0,10,0"/>
<!--<TextBlock Name="OffsetRectificationTxBl" Grid.Row="1" Grid.Column="0"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="OffsetRectificationTxBx" Grid.Row="1" Grid.Column="1" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>-->
</Grid>
</GroupBox>
<!--Parametri WaterJet: 5 Parametro (se questo GroupBox attivo allora nascondo Fori/Fresatura)--> <!--Parametri WaterJet: 5 Parametro (se questo GroupBox attivo allora nascondo Fori/Fresatura)-->
<GroupBox Name="WjsParamGpBx" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="4" <GroupBox Name="WjsParamGpBx" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="4"
Style="{DynamicResource OmagCut_GroupBox}"> Style="{DynamicResource OmagCut_GroupBox}">
@@ -337,7 +362,17 @@
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
<Button Name="SetUpBtn" Grid.Column="1" Grid.Row="3" Grid.RowSpan="2" Visibility="Hidden" <TextBlock Name="CurrSawTiltedTxBl" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" Visibility="Hidden"/>
<ComboBox x:Name="CurrSawTiltedCmBx" Grid.Column="1" Grid.Row="3" Style="{DynamicResource OmagCut_ComboBox}" Visibility="Hidden">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button Name="SetUpBtn" Grid.Column="1" Grid.Row="4" Grid.RowSpan="2" Visibility="Hidden"
Style="{DynamicResource OmagCut_YellowTextButton}"/> Style="{DynamicResource OmagCut_YellowTextButton}"/>
</Grid> </Grid>
@@ -485,6 +520,9 @@
<GroupBox Name="MachiningsGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="1" <GroupBox Name="MachiningsGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="1"
Grid.Row="0" Grid.ColumnSpan="1" Grid.RowSpan="3"> Grid.Row="0" Grid.ColumnSpan="1" Grid.RowSpan="3">
<ScrollViewer VerticalScrollBarVisibility="Visible" Visibility="Visible"
Grid.Row="1" Grid.RowSpan="11" Grid.ColumnSpan="2">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/> <ColumnDefinition Width="2*"/>
@@ -505,25 +543,30 @@
<EgtWPFLib:EgtTextBox Name="CurrSawingTxBx" Grid.Column="1" Grid.Row="0" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrSawingTxBx" Grid.Column="1" Grid.Row="0" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrDrillingTxBl" Grid.Column="0" Grid.Row="1" <TextBlock Name="CurrSawingTiltedTxBl" Grid.Column="0" Grid.Row="1"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrDrillingTxBx" Grid.Column="1" Grid.Row="1" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrSawingTiltedTxBx" Grid.Column="1" Grid.Row="1" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrMillingTxBl" Grid.Column="0" Grid.Row="2" <TextBlock Name="CurrDrillingTxBl" Grid.Column="0" Grid.Row="2"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrMillingTxBx" Grid.Column="1" Grid.Row="2" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrDrillingTxBx" Grid.Column="1" Grid.Row="2" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrPocketingTxBl" Grid.Column="0" Grid.Row="3" <TextBlock Name="CurrMillingTxBl" Grid.Column="0" Grid.Row="3"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrPocketingTxBx" Grid.Column="1" Grid.Row="3" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrMillingTxBx" Grid.Column="1" Grid.Row="3" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrWaterJettingTxBl" Grid.Column="0" Grid.Row="4" <TextBlock Name="CurrPocketingTxBl" Grid.Column="0" Grid.Row="4"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrPocketingTxBx" Grid.Column="1" Grid.Row="4" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrWaterJettingTxBl" Grid.Column="0" Grid.Row="5"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<Grid Grid.Column="1" Grid.Row="4"> <Grid Grid.Column="1" Grid.Row="5">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/> <ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1.5*"/> <ColumnDefinition Width="1.5*"/>
@@ -535,18 +578,20 @@
</Grid> </Grid>
<TextBlock Name="CurrDripSawingTxBl" Grid.Column="0" Grid.Row="5" <TextBlock Name="CurrDripSawingTxBl" Grid.Column="0" Grid.Row="6"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrDripSawingTxBx" Grid.Column="1" Grid.Row="5" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrDripSawingTxBx" Grid.Column="1" Grid.Row="6" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
<TextBlock Name="CurrDripDrillingTxBl" Grid.Column="0" Grid.Row="6" <TextBlock Name="CurrDripDrillingTxBl" Grid.Column="0" Grid.Row="7"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="CurrDripDrillingTxBx" Grid.Column="1" Grid.Row="6" Margin="10,0,10,0" <EgtWPFLib:EgtTextBox Name="CurrDripDrillingTxBx" Grid.Column="1" Grid.Row="7" Margin="10,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" /> Style="{DynamicResource OmagCut_FixedTextBox}" />
</Grid> </Grid>
</ScrollViewer>
</GroupBox> </GroupBox>
<!--<GroupBox Name="SawGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="2" Grid.RowSpan="2"> <!--<GroupBox Name="SawGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Column="2" Grid.RowSpan="2">
+152 -6
View File
@@ -57,6 +57,7 @@ Public Class AlarmsPageUC
' Imposto i messaggi letti dal file dei messaggi ' Imposto i messaggi letti dal file dei messaggi
CurrSawTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 1) CurrSawTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 1)
CurrSawTiltedTxBl.Text = EgtMsg(91049) ' Current saw tilted
AuxiliaryToolTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 2) AuxiliaryToolTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 2)
CurrDrillTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 3) CurrDrillTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 3)
CurrCupWheelTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 20) CurrCupWheelTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 20)
@@ -97,7 +98,10 @@ Public Class AlarmsPageUC
HolesOffsetWJTxBl.Text = "Offset" HolesOffsetWJTxBl.Text = "Offset"
MinRadiusWJTxBl.Text = "Min Radius" MinRadiusWJTxBl.Text = "Min Radius"
OneHoleInCornerWJTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 26) OneHoleInCornerWJTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 26)
'-- FINE -- nuovi parametri per preforo lavello '-- INIZIO -- nuovi parametro Rettifica tagli sottosquadra WJ
REctificationWJParamGpBx.Header = "Rectification"
EnableRectificationTxBl.Text = "Enable (on subsquare angle)"
'-- FINE -- nuovi parametro Rettifica tagli sottosquadra WJ
NestingParamGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 31) ' Nesting NestingParamGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 31) ' Nesting
AlignTxBl.Text = EgtMsg(90932) ' Allineato AlignTxBl.Text = EgtMsg(90932) ' Allineato
GhigliottinaTxBl.Text = EgtMsg(91066) ' Ghigliottina GhigliottinaTxBl.Text = EgtMsg(91066) ' Ghigliottina
@@ -117,6 +121,7 @@ Public Class AlarmsPageUC
CfrPercTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 48) ' Riduzione % CfrPercTxBl.Text = EgtMsg(MSG_ALARMSPAGEUC + 48) ' Riduzione %
MachiningsGpBx.Header = EgtMsg(MSG_ALARMS2PAGEUC + 1) ' Lavorazioni MachiningsGpBx.Header = EgtMsg(MSG_ALARMS2PAGEUC + 1) ' Lavorazioni
CurrSawingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 2) ' Taglio lama CurrSawingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 2) ' Taglio lama
CurrSawingTiltedTxBl.Text = EgtMsg(91050) ' Taglio inclinato
CurrDrillingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 3) ' Foratura CurrDrillingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 3) ' Foratura
CurrMillingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 4) ' Fresatura CurrMillingTxBl.Text = EgtMsg(MSG_ALARMS2PAGEUC + 4) ' Fresatura
CurrPocketingTxBl.Text = EgtMsg(91069) ' Svuotatura CurrPocketingTxBl.Text = EgtMsg(91069) ' Svuotatura
@@ -156,7 +161,7 @@ Public Class AlarmsPageUC
HolesGpBx.Visibility = Windows.Visibility.Hidden HolesGpBx.Visibility = Windows.Visibility.Hidden
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL
'Non faccio alcunchè 'Non faccio alcunchè
Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER Case CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
'Da implementare 'Da implementare
End Select End Select
@@ -175,6 +180,7 @@ Public Class AlarmsPageUC
' Se non previsti tagli waterjet, disabilito relativo box ' Se non previsti tagli waterjet, disabilito relativo box
If Not m_CurrentMachine.bWaterJetting Then If Not m_CurrentMachine.bWaterJetting Then
WjsParamGpBx.Visibility = Visibility.Hidden WjsParamGpBx.Visibility = Visibility.Hidden
RectificationWJParamGpBx.Visibility = Visibility.Hidden
End If End If
' Abilitazione box per contorni grezzo da foto ' Abilitazione box per contorni grezzo da foto
@@ -288,6 +294,59 @@ Public Class AlarmsPageUC
' attivo il bottone per l'apertura della pagina che mostra la configurazione degli utensili in parcheggio ' attivo il bottone per l'apertura della pagina che mostra la configurazione degli utensili in parcheggio
SetUpBtn.Visibility = Windows.Visibility.Visible SetUpBtn.Visibility = Windows.Visibility.Visible
Case CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
' Aggiorno la lista delle lame con quelle montate sul portautensile automatico
Dim m_SawOnHolderList As New ObservableCollection(Of String)
Dim bOnHolder As Boolean = False
For Each sNameTool As String In m_SawList
If Not String.IsNullOrEmpty(sNameTool) Then
' Verifico che sia montata su un portautensile
EgtTdbSetCurrTool(sNameTool)
Dim sTCPos As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sTCPos)
If Not String.IsNullOrEmpty(sTCPos) Then
' Cerco nel porta utensili automaitico
For Each ToolPosition As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If ToolPosition.sTool <> String.Empty Then
If sNameTool = ToolPosition.sTool Then
m_SawOnHolderList.Add(sNameTool)
' Se il nome dell'utensile è lo stesso di quello impostato nella combo allora lo setto
If sNameTool = m_CurrentMachine.sCurrSaw Then
bOnHolder = True
End If
Exit For
End If
End If
Next
End If
End If
Next
m_SawList = m_SawOnHolderList
CurrSawCmBx.ItemsSource = m_SawList
If bOnHolder Then
' reimposto la lavorazione di lama e la lama impostate in macchina
EgtTdbSetCurrTool(m_CurrentMachine.sCurrSaw)
' Seleziono lama corrente
CurrSawCmBx.SelectedItem = m_CurrentMachine.sCurrSaw
Else
m_CurrentMachine.sCurrSawing = ""
End If
CurrSawTiltedCmBx.ItemsSource = m_SawList
If m_SawList.IndexOf(m_CurrentMachine.sCurrSawTilted) > -1 Then
' Seleziono lama corrente
CurrSawTiltedCmBx.SelectedItem = m_CurrentMachine.sCurrSawTilted
Else
m_CurrentMachine.sCurrSawingTilted = ""
End If
' attivo la selezione della lama per il taglio in inlinato
CurrSawTiltedTxBl.Visibility = Visibility.Visible
CurrSawTiltedCmBx.Visibility = Visibility.Visible
' attivo il bottone per l'apertura della pagina che mostra la configurazione degli utensili in parcheggio
SetUpBtn.Visibility = Windows.Visibility.Visible
End Select End Select
' aggiorno le TextBlock con le lavorazioni correnti ' aggiorno le TextBlock con le lavorazioni correnti
@@ -354,7 +413,9 @@ Public Class AlarmsPageUC
MinRadiusWJTxBx.Text = LenToString(dVal, 2) MinRadiusWJTxBx.Text = LenToString(dVal, 2)
OneHoleInCornerWJChBx.IsChecked = OneHoleInCornerWJChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, 1, m_MainWindow.GetMachIniFile()) <> 0) (GetPrivateProfileInt(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, 1, m_MainWindow.GetMachIniFile()) <> 0)
' leggo se attiva la rettifica degli angoli per WaterJet
EnableRectificationChBx.IsChecked =
(GetPrivateProfileInt(S_MACH_NEST, K_MACH_RECTIFICATION_ON_SUBSQUARE, 0, m_MainWindow.GetMachIniFile()) <> 0)
' Leggo accorciamento angoli con fresa ' Leggo accorciamento angoli con fresa
dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, m_MainWindow.GetMachIniFile()) dVal = GetPrivateProfileDouble(S_MACH_NEST, K_MACH_MILLING_SHORTENING, 0, m_MainWindow.GetMachIniFile())
ShortTxBx.Text = LenToString(dVal, 2) ShortTxBx.Text = LenToString(dVal, 2)
@@ -435,6 +496,21 @@ Public Class AlarmsPageUC
CurrSawingTxBl.Visibility = Windows.Visibility.Hidden CurrSawingTxBl.Visibility = Windows.Visibility.Hidden
CurrSawingTxBx.Visibility = Windows.Visibility.Hidden CurrSawingTxBx.Visibility = Windows.Visibility.Hidden
End If End If
If m_CurrentMachine.sCurrSawingTilted <> String.Empty Then
If Not m_CurrentMachine.bApplySawingTilted Then
CurrSawingTiltedTxBx.Foreground = Brushes.Gray
CurrSawingTiltedTxBx.TextDecorations = TextDecorations.Strikethrough
Else
CurrSawingTiltedTxBx.Foreground = Brushes.White
CurrSawingTiltedTxBx.TextDecorations = Nothing
End If
CurrSawingTiltedTxBx.Text = m_CurrentMachine.sCurrSawingTilted
CurrSawingTiltedTxBl.Visibility = Windows.Visibility.Visible
CurrSawingTiltedTxBx.Visibility = Windows.Visibility.Visible
Else
CurrSawingTiltedTxBl.Visibility = Windows.Visibility.Hidden
CurrSawingTiltedTxBx.Visibility = Windows.Visibility.Hidden
End If
If m_CurrentMachine.sCurrDrilling <> String.Empty Then If m_CurrentMachine.sCurrDrilling <> String.Empty Then
CurrDrillingTxBx.Text = m_CurrentMachine.sCurrDrilling CurrDrillingTxBx.Text = m_CurrentMachine.sCurrDrilling
CurrDrillingTxBl.Visibility = Windows.Visibility.Visible CurrDrillingTxBl.Visibility = Windows.Visibility.Visible
@@ -635,6 +711,42 @@ Public Class AlarmsPageUC
RefreschMachining() RefreschMachining()
End Sub End Sub
' -- SAW TILTED --
Private Sub CurrSawTiltedCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrSawTiltedCmBx.SelectionChanged
If IsNothing(CurrSawTiltedCmBx.SelectedItem) Then Return
' Assegno
m_CurrentMachine.sCurrSawTilted = CurrSawTiltedCmBx.SelectedItem.ToString()
' Se nuova lama incompatibile con lavorazione di taglio corrente, resetto quest'ultima
Dim sMchTuuid As String = String.Empty
Dim sMchTool As String = String.Empty
If Not EgtMdbSetCurrMachining(m_CurrentMachine.sCurrSawingTilted) Or
Not EgtMdbGetCurrMachiningParam(MCH_MP.TUUID, sMchTuuid) Or
Not EgtTdbGetToolFromUUID(sMchTuuid, sMchTool) Or
String.Compare(sMchTool, m_CurrentMachine.sCurrSawTilted, True) <> 0 Then
m_CurrentMachine.sCurrSawingTilted = String.Empty
End If
' Dim sVal As String = String.Empty
' Dim dVal As Double = 0
' If m_CurrentMachine.GetUserNote("FsevLength", sVal, m_CurrentMachine.sCurrSaw) Then
' StringToDouble(sVal, dVal)
' m_CurrentMachine.SetFsevLength(dVal)
' End If
' If m_CurrentMachine.GetUserNote("FsevPerc", sVal, m_CurrentMachine.sCurrSaw) Then
' StringToDouble(sVal, dVal)
' m_CurrentMachine.SetFsevPerc(dVal)
' End If
'
' ' Leggo parametri per variazione feed in tagli aggiornati in funzione della lama
' CfrLenTxBx.Text = LenToString(m_CurrentMachine.dFsevLength, 3)
' CfrPercTxBx.Text = DoubleToString(m_CurrentMachine.dFsevPerc, 0)
' Aggiorno utensili per lavoro in corso
m_MainWindow.m_WorkInProgressPageUC.UpdateTools()
' aggiorno la lista delle lavorazioni
RefreschMachining()
End Sub
' -- DRILL -- ' -- DRILL --
Private Sub CurrDrillCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrDrillCmBx.SelectionChanged Private Sub CurrDrillCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrDrillCmBx.SelectionChanged
If IsNothing(CurrDrillCmBx.SelectedItem) Then Return If IsNothing(CurrDrillCmBx.SelectedItem) Then Return
@@ -970,9 +1082,18 @@ Public Class AlarmsPageUC
WritePrivateProfileString(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, "0", m_MainWindow.GetMachIniFile()) WritePrivateProfileString(S_MACH_NEST, K_MACH_DRILLINGWJ_ON_CORNERS, "0", m_MainWindow.GetMachIniFile())
End If End If
End Sub End Sub
' -- FINE -- nuovi parametri per prefori WaterJet ' -- FINE -- nuovi parametri per prefori WaterJet
' -- INIZIO -- nuovi parametri per Rettifica angoli in sottosquadra WaterJet
Private Sub EnableRectificationChBx_Click(sender As Object, e As EventArgs) Handles EnableRectificationChBx.Click
If EnableRectificationChBx.IsChecked() Then
WritePrivateProfileString(S_MACH_NEST, K_MACH_RECTIFICATION_ON_SUBSQUARE, "1", m_MainWindow.GetMachIniFile)
Else
WritePrivateProfileString(S_MACH_NEST, K_MACH_RECTIFICATION_ON_SUBSQUARE, "0", m_MainWindow.GetMachIniFile)
End If
End Sub
' -- FINE -- nuovi parametri per Rettifica angoli in sottosquadra WaterJet
Private Sub TmEnableChBx_Click(sender As Object, e As RoutedEventArgs) Handles TmEnableChBx.Click Private Sub TmEnableChBx_Click(sender As Object, e As RoutedEventArgs) Handles TmEnableChBx.Click
If TmEnableChBx.IsChecked() Then If TmEnableChBx.IsChecked() Then
WritePrivateProfileString(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, "1", m_MainWindow.GetMachIniFile()) WritePrivateProfileString(S_MACH_NEST, K_MACH_ENGRAVING_WITHMILL, "1", m_MainWindow.GetMachIniFile())
@@ -1163,6 +1284,10 @@ Public Class AlarmsPageUC
Case 3 Case 3
Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(0) Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(0)
EgtOutLog("Impostata modalità automatica: esito " & nResult.ToString) EgtOutLog("Impostata modalità automatica: esito " & nResult.ToString)
Case 4
' FANUC - Manual:7, Edit:1
Dim nResult As Short = m_CN.DGeneralFunctions_WriteCncMode(7)
EgtOutLog("Impostata modalità manuale: esito " & nResult.ToString)
End Select End Select
' Recupero file LUA ' Recupero file LUA
EgtLuaExecFile(m_CurrentMachine.sMachDir() & "\DirectCmd\SawProbing.lua") EgtLuaExecFile(m_CurrentMachine.sMachDir() & "\DirectCmd\SawProbing.lua")
@@ -1174,6 +1299,7 @@ Public Class AlarmsPageUC
Dim dToolDiam As Double = 0 Dim dToolDiam As Double = 0
Dim dToolThick As Double = 0 Dim dToolThick As Double = 0
Dim dToolLen As Double = 0 Dim dToolLen As Double = 0
Dim dCore As Double = 0
Dim sToolParam As String = String.Empty Dim sToolParam As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.HEAD, sToolParam) EgtTdbGetCurrToolParam(MCH_TP.HEAD, sToolParam)
EgtLuaSetGlobStringVar("CMD.HEAD", sToolParam) EgtLuaSetGlobStringVar("CMD.HEAD", sToolParam)
@@ -1185,6 +1311,14 @@ Public Class AlarmsPageUC
EgtLuaSetGlobNumVar("CMD.THICK", dToolThick * 1000) EgtLuaSetGlobNumVar("CMD.THICK", dToolThick * 1000)
EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen) EgtTdbGetCurrToolParam(MCH_TP.LEN, dToolLen)
EgtLuaSetGlobNumVar("CMD.LENGTH", dToolLen * 1000) EgtLuaSetGlobNumVar("CMD.LENGTH", dToolLen * 1000)
EgtTdbGetCurrToolParam(MCH_TP.CORE, dCore)
EgtLuaSetGlobNumVar("CMD.CORE", dCore * 1000)
' Nuova varibile per gestione tastatura utensili Frankfurt (Polishing)
Dim nType As Integer
EgtTdbGetCurrToolParam(MCH_TP.TYPE, nType)
If m_CurrentMachine.bPolishingWheel AndAlso nType = MCH_TY.MILL_POLISHING Then
EgtLuaSetGlobStringVar("CMD.POLISHING", "1")
End If
EgtLuaSetGlobBoolVar("CMD.INCHES", m_MainWindow.m_CNCommunication.GetMachineInInches()) EgtLuaSetGlobBoolVar("CMD.INCHES", m_MainWindow.m_CNCommunication.GetMachineInInches())
EgtLuaCallFunction("CMD.CmdString") EgtLuaCallFunction("CMD.CmdString")
' Leggo variabili ' Leggo variabili
@@ -1228,11 +1362,16 @@ Public Class AlarmsPageUC
Return Return
End If End If
m_MainWindow.m_CurrentProjectPageUC.ClearMessage() m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
' Se fanuc passo in modalità AUTO e attivo
If m_MainWindow.m_CNCommunication.m_nNCType = 4 Then
Dim nResult As Short = m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_WriteCncMode(0)
EgtOutLog("Impostata modalità automatica: esito " & nResult.ToString)
End If
' Aspetto e lo avvio ' Aspetto e lo avvio
System.Threading.Thread.Sleep(300) System.Threading.Thread.Sleep(300)
m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_CycleStart() m_MainWindow.m_CNCommunication.m_CN.DGeneralFunctions_CycleStart()
' Creo MsgBox di attesa ' Creo MsgBox di attesa
Dim MsgBoxStateInfo As New EgtMsgBox(m_MainWindow, EgtMsg(MSG_DIRECTCUTPAGEUC + 41), EgtMsg(MSG_DIRECTCUTPAGEUC + 42), True, EgtMsgBox.Buttons.CANCEL, EgtMsgBox.Icons.NULL) Dim MsgBoxStateInfo As New EgtMsgBox(m_MainWindow, String.Format(EgtMsg(MSG_DIRECTCUTPAGEUC + 41), ToolForProbing.m_ToolName), EgtMsg(MSG_DIRECTCUTPAGEUC + 42), True, EgtMsgBox.Buttons.CANCEL, EgtMsgBox.Icons.NULL)
m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0
' Definisco flag tastatura ' Definisco flag tastatura
Dim bProbingOk As Boolean = False Dim bProbingOk As Boolean = False
@@ -1277,6 +1416,10 @@ Public Class AlarmsPageUC
Dim bRead As Boolean = False Dim bRead As Boolean = False
Dim SawDiameterNameVar As String = String.Empty Dim SawDiameterNameVar As String = String.Empty
GetPrivateProfileString(S_MACH_PROBING, K_SAWDIAMETER, "", SawDiameterNameVar, m_MainWindow.GetMachIniFile()) GetPrivateProfileString(S_MACH_PROBING, K_SAWDIAMETER, "", SawDiameterNameVar, m_MainWindow.GetMachIniFile())
' Se utensile non lama, allora la variabile in cui leggo il dato potrebbe essere differente
If Not ToolForProbing.m_IsSaw Then
GetPrivateProfileString(S_MACH_PROBING, K_TOOLLENGTH, SawDiameterNameVar, SawDiameterNameVar, m_MainWindow.GetMachIniFile())
End If
m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 0
For I As Integer = 0 To 20 For I As Integer = 0 To 20
' Devo rileggere la variabile ad ogni ciclo ' Devo rileggere la variabile ad ogni ciclo
@@ -1285,7 +1428,10 @@ Public Class AlarmsPageUC
If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 3 Then If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 3 Then
bRead = True bRead = True
Dim dVal As Double = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value Dim dVal As Double = m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value
' Se fanuc il dato è in mm (NON MICRON)
If m_MainWindow.m_CNCommunication.m_nNCType <> 4 Then
dVal = dVal / 1000 dVal = dVal / 1000
End If
MsgBoxStateInfo.LoadingPrBr_Value = 100 MsgBoxStateInfo.LoadingPrBr_Value = 100
' Tastatura conclusa con successo ' Tastatura conclusa con successo
Dim sOut As String = EgtMsg(MSG_DIRECTCUTPAGEUC + 43) & " : " & DoubleToString(dVal, 1) Dim sOut As String = EgtMsg(MSG_DIRECTCUTPAGEUC + 43) & " : " & DoubleToString(dVal, 1)
@@ -1335,7 +1481,7 @@ Public Class AlarmsPageUC
Select Case m_CurrentMachine.MountedToolConfig Select Case m_CurrentMachine.MountedToolConfig
Case CurrentMachine.MountedToolConfigs.SAW Case CurrentMachine.MountedToolConfigs.SAW
Return New ToolPos(m_CurrentMachine.sCurrSaw, "T100", True) Return New ToolPos(m_CurrentMachine.sCurrSaw, "T100", True)
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
Dim ChooseTool As New ChooseToolWD(m_MainWindow) Dim ChooseTool As New ChooseToolWD(m_MainWindow)
If ChooseTool.ShowDialog Then If ChooseTool.ShowDialog Then
Return ChooseTool.GetSelectedTool Return ChooseTool.GetSelectedTool
+12
View File
@@ -76,6 +76,18 @@ Public Class ChooseToolWD
End If End If
Next Next
Return True Return True
Case CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
m_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
End If
Next
For Each ToolChangerPos As ToolChangerPos In m_MainWindow.m_CurrentMachine.ManualToolChanger
If Not String.IsNullOrWhiteSpace(ToolChangerPos.sTool) Then
m_SetUpToolList.Add(New ToolPos(ToolChangerPos.sTool, ToolChangerPos.sName, False))
End If
Next
Return True
Case Else Case Else
Return False Return False
End Select End Select
+160 -13
View File
@@ -1,6 +1,7 @@
Imports System.Collections.ObjectModel Imports System.Collections.ObjectModel
Imports EgtWPFLib5 Imports EgtWPFLib5
Imports EgtUILib Imports EgtUILib
Imports System.IO
Public Class CurrentMachine Public Class CurrentMachine
@@ -51,6 +52,10 @@ Public Class CurrentMachine
Private m_sProdLiProbingState2Var As String = "" Private m_sProdLiProbingState2Var As String = ""
Private m_sProdLiProbingTcPos2Var As String = "" Private m_sProdLiProbingTcPos2Var As String = ""
Private m_sProdLiSawDiameter2Var As String = "" Private m_sProdLiSawDiameter2Var As String = ""
Private m_sClickState As String = "E80028"
Private m_sClickDir As String = ""
' Gestione speciale per canali CN
Private m_sExtFileCN As String = ".0"
' Numero e tipo di utensili correntemente disponibili sulla macchina ' Numero e tipo di utensili correntemente disponibili sulla macchina
Private m_MountedToolConfig As MountedToolConfigs = MountedToolConfigs.SAW Private m_MountedToolConfig As MountedToolConfigs = MountedToolConfigs.SAW
@@ -77,6 +82,9 @@ Public Class CurrentMachine
Private m_bPolishingWheel As Boolean = False Private m_bPolishingWheel As Boolean = False
Private m_bWaterJet As Boolean = False Private m_bWaterJet As Boolean = False
' Flag che indica se gesire l'inversione del taglio nei tagli singoli
Private m_bEnableInvetrt As Boolean = True
' Abilitazione DB WaterJet ' Abilitazione DB WaterJet
Private m_bFromDBWaterJet As Boolean = False Private m_bFromDBWaterJet As Boolean = False
@@ -99,6 +107,7 @@ Public Class CurrentMachine
' Variabili che contengono il nome degli utensili disponibili per tipo ' Variabili che contengono il nome degli utensili disponibili per tipo
Private m_sCurrSaw As String = String.Empty Private m_sCurrSaw As String = String.Empty
Private m_sCurrSawTilted As String = String.Empty
Private m_sCurrDrill As String = String.Empty Private m_sCurrDrill As String = String.Empty
Private m_sCurrMill As String = String.Empty Private m_sCurrMill As String = String.Empty
Private m_sCurrMillNoTip As String = String.Empty Private m_sCurrMillNoTip As String = String.Empty
@@ -108,6 +117,8 @@ Public Class CurrentMachine
' Variabili che contengono le lavorazioni correntemente attive (utilizzate per definire lavorazioni nel programma) ' Variabili che contengono le lavorazioni correntemente attive (utilizzate per definire lavorazioni nel programma)
Private m_sCurrSawing As String = String.Empty Private m_sCurrSawing As String = String.Empty
Private m_sCurrSawingTilted As String = String.Empty
Private m_bApplySawingTilted As Boolean = False
Private m_sCurrDrilling As String = String.Empty Private m_sCurrDrilling As String = String.Empty
Private m_sCurrMilling As String = String.Empty Private m_sCurrMilling As String = String.Empty
Private m_sCurrPocketing As String = String.Empty Private m_sCurrPocketing As String = String.Empty
@@ -131,6 +142,8 @@ Public Class CurrentMachine
Private m_dPhotoOffsetY As Double = 0 Private m_dPhotoOffsetY As Double = 0
Private m_dTab2PhotoOffsetX As Double = 0 Private m_dTab2PhotoOffsetX As Double = 0
Private m_dTab2PhotoOffsetY As Double = 0 Private m_dTab2PhotoOffsetY As Double = 0
Private m_dHQPhotoOffsetX As Double = 0
Private m_dHQPhotoOffsetY As Double = 0
' Abilitazione scelta restart ' Abilitazione scelta restart
Private m_bEnableRestart As Boolean = False Private m_bEnableRestart As Boolean = False
@@ -183,6 +196,7 @@ Public Class CurrentMachine
SAWANDAUXTOOL = 1 SAWANDAUXTOOL = 1
MANUALTOOLCHANGER = 2 MANUALTOOLCHANGER = 2
TOOLCHANGER = 3 TOOLCHANGER = 3
TOOLCHANGERWITHSAW = 4
End Enum End Enum
' Massimo numero di utensili su Tc ' Massimo numero di utensili su Tc
@@ -191,8 +205,18 @@ Public Class CurrentMachine
' Massimo numero di utensili su Tc manuale ' Massimo numero di utensili su Tc manuale
Friend MAX_TCMAN_TOOLS As Integer = 60 Friend MAX_TCMAN_TOOLS As Integer = 60
' Massima profondità lavorabile nei tagli diretti
Private m_MaxTabDepth As Double = 10.0
' Massima altezza lavorabile con lama grande
Private m_dHighPieceZ As Double = 200.0
#Region "Proprietà che leggono e scrivono i valori anche da o su file ini" #Region "Proprietà che leggono e scrivono i valori anche da o su file ini"
Friend ReadOnly Property MaxTabDepth As Double
Get
Return m_MaxTabDepth
End Get
End Property
Friend ReadOnly Property sMachineName As String Friend ReadOnly Property sMachineName As String
Get Get
@@ -321,6 +345,24 @@ Public Class CurrentMachine
End Get End Get
End Property End Property
Friend ReadOnly Property sClickState As String
Get
Return m_sClickState
End Get
End Property
Friend ReadOnly Property sClickDir As String
Get
Return m_sClickDir
End Get
End Property
Friend ReadOnly Property sExtFileCN As String
Get
Return m_sExtFileCN
End Get
End Property
Friend Function sProdLiProbingStateVar(nI As Integer) As String Friend Function sProdLiProbingStateVar(nI As Integer) As String
If nI = 1 Then Return m_sProdLiProbingStateVar If nI = 1 Then Return m_sProdLiProbingStateVar
If nI = 2 Then Return m_sProdLiProbingState2Var If nI = 2 Then Return m_sProdLiProbingState2Var
@@ -535,6 +577,18 @@ Public Class CurrentMachine
End Set End Set
End Property End Property
Friend Property sCurrSawTilted As String
Get
Return m_sCurrSawTilted
End Get
Set(value As String)
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWTILTED, value, sMachIniFile) Then
m_sCurrSawTilted = value
' m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text = value
End If
End Set
End Property
Friend Property sCurrDrill As String Friend Property sCurrDrill As String
Get Get
Return m_sCurrDrill Return m_sCurrDrill
@@ -609,18 +663,32 @@ Public Class CurrentMachine
If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWING, value, sMachIniFile) Then If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWING, value, sMachIniFile) Then
m_sCurrSawing = value m_sCurrSawing = value
m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
'' aggiorno il file ini della macchina con i valori correnti della lavorazione End If
'Dim sVal As String = String.Empty End Set
'Dim dVal As Double = m_dFsevLength End Property
'If GetUserNote("FsevLength", sVal, m_sCurrSawing, False) Then
' StringToDouble(sVal, dVal) Friend Property sCurrSawingTilted As String
' SetFsevLength(dVal) Get
'End If Return m_sCurrSawingTilted
'dVal = m_dFsevPerc End Get
'If GetUserNote("FsevPerc", sVal, m_sCurrSawing, False) Then Set(value As String)
' StringToDouble(sVal, m_dFsevPerc) If WritePrivateProfileString(S_MACH_MACH, K_CURRSAWINGTILTED, value, sMachIniFile) Then
' SetFsevPerc(dVal) m_sCurrSawingTilted = value
'End If 'm_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
End If
End Set
End Property
Friend Property bApplySawingTilted As Boolean
Get
Return m_bApplySawingTilted
End Get
Set(value As Boolean)
m_bApplySawingTilted = value
If m_bApplySawingTilted Then
WritePrivateProfileString(S_MACH_MACH, K_APPLYSAWINGTILTED, "1", sMachIniFile)
Else
WritePrivateProfileString(S_MACH_MACH, K_APPLYSAWINGTILTED, "0", sMachIniFile)
End If End If
End Set End Set
End Property End Property
@@ -731,6 +799,10 @@ Public Class CurrentMachine
Set(value As String) Set(value As String)
If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, value, sMachIniFile) Then If WritePrivateProfileString(S_MACH_MACH, K_CURRWATERJETTING, value, sMachIniFile) Then
m_sCurrWaterJetting = value m_sCurrWaterJetting = value
If m_MainWindow.m_CurrentMachine.bWaterJet And EgtGetHeadId("H1") = GDB_ID.NULL Then
m_MainWindow.m_CurrentProjectPageUC.MachiningTxBx.Text = value
End If
End If End If
End Set End Set
End Property End Property
@@ -752,6 +824,12 @@ Public Class CurrentMachine
End Get End Get
End Property End Property
Friend ReadOnly Property bEnableInvert As Boolean
Get
Return m_bEnableInvetrt
End Get
End Property
Friend Property dAdditionalTable As Double Friend Property dAdditionalTable As Double
Get Get
Select Case GetCurrentTable() Select Case GetCurrentTable()
@@ -821,6 +899,10 @@ Public Class CurrentMachine
Case 2 Case 2
Return New Vector3d(m_dTab2PhotoOffsetX, m_dTab2PhotoOffsetY, 0) Return New Vector3d(m_dTab2PhotoOffsetX, m_dTab2PhotoOffsetY, 0)
Case Else Case Else
' verifico quale delle due fotocamere è attualmente attiva
If GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, 0, m_MainWindow.GetMachIniFile()) = 1 Then
Return New Vector3d(m_dHQPhotoOffsetX, m_dHQPhotoOffsetY, 0)
End If
Return New Vector3d(m_dPhotoOffsetX, m_dPhotoOffsetY, 0) Return New Vector3d(m_dPhotoOffsetX, m_dPhotoOffsetY, 0)
End Select End Select
End Get End Get
@@ -1100,6 +1182,12 @@ Public Class CurrentMachine
End Get End Get
End Property End Property
Friend ReadOnly Property dHighPieceZ As Double
Get
Return m_dHighPieceZ
End Get
End Property
#End Region #End Region
Sub New() Sub New()
@@ -1111,6 +1199,8 @@ Public Class CurrentMachine
m_sMachIniFile = m_MainWindow.GetMachinesRootDir & "\" & sMachineName & "\" & sMachineName & ".ini" m_sMachIniFile = m_MainWindow.GetMachinesRootDir & "\" & sMachineName & "\" & sMachineName & ".ini"
' Leggo estensione del file programma pezzo ' Leggo estensione del file programma pezzo
GetPrivateProfileString(S_PARTPROGRAM, K_EXTENSION, "xpi", m_sIsoFileExt, sMachIniFile) GetPrivateProfileString(S_PARTPROGRAM, K_EXTENSION, "xpi", m_sIsoFileExt, sMachIniFile)
' per gestione canali separati (macchina NUM con più di 5 Assi) ver. 2.5g1
GetPrivateProfileString(S_PARTPROGRAM, K_EXTFILECN, ".0", m_sExtFileCN, sMachIniFile)
If m_sIsoFileExt(0) <> "." Then m_sIsoFileExt = "." & m_sIsoFileExt If m_sIsoFileExt(0) <> "." Then m_sIsoFileExt = "." & m_sIsoFileExt
' Leggo flag incremento asse C ' Leggo flag incremento asse C
m_dDeltaC = GetPrivateProfileDouble(S_AXES, K_DELTA_C, 0.0, sMachIniFile) m_dDeltaC = GetPrivateProfileDouble(S_AXES, K_DELTA_C, 0.0, sMachIniFile)
@@ -1144,6 +1234,13 @@ Public Class CurrentMachine
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOS2VAR, "0", m_sProdLiProbingTcPos2Var, sMachIniFile) GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLIPROBINGTCPOS2VAR, "0", m_sProdLiProbingTcPos2Var, sMachIniFile)
GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETER2VAR, "", m_sProdLiSawDiameter2Var, sMachIniFile) GetPrivateProfileString(S_PRODUCTIONLINE, K_PRODLISAWDIAMETER2VAR, "", m_sProdLiSawDiameter2Var, sMachIniFile)
GetPrivateProfileString(S_POLISHLINE, K_CLICKSTATE, "", m_sClickState, sMachIniFile)
GetPrivateProfileString(S_POLISHLINE, k_CLICKDIR, "", m_sClickDir, sMachIniFile)
If Not Directory.Exists(m_sClickDir) Then
m_sClickState = ""
EgtOutLog("Directory " & m_sClickDir & " does not exist")
End If
' Leggo configurazione degli utensili in macchina ' Leggo configurazione degli utensili in macchina
m_MountedToolConfig = GetPrivateProfileInt(S_TOOLS, K_MOUNTEDTOOLCONFIG, 0, sMachIniFile) m_MountedToolConfig = GetPrivateProfileInt(S_TOOLS, K_MOUNTEDTOOLCONFIG, 0, sMachIniFile)
' Leggo flag presenza tipologie utensili ' Leggo flag presenza tipologie utensili
@@ -1200,10 +1297,20 @@ Public Class CurrentMachine
m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_WJ) m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.ENABLE_WJ)
' possibilità di definire attacco speciale per materiali ceramici ' possibilità di definire attacco speciale per materiali ceramici
m_bSawingSpecialLeadIn = (GetPrivateProfileInt(S_MACHININGS, K_SAWINGSPECIALLEADIN, 0, sMachIniFile) > 0) m_bSawingSpecialLeadIn = (GetPrivateProfileInt(S_MACHININGS, K_SAWINGSPECIALLEADIN, 0, sMachIniFile) > 0)
' mantengo la direzione del taglio definita nel taglio diretto
m_bEnableInvetrt = (GetPrivateProfileInt(S_DIRECTCUTS, K_ENABLEINVERT, 1, sMachIniFile) <> 0)
' Leggo utensili correnti ' Leggo utensili correnti
' lama ' lama
GetPrivateProfileString(S_MACH_MACH, K_CURRSAW, Nothing, m_sCurrSaw, sMachIniFile) GetPrivateProfileString(S_MACH_MACH, K_CURRSAW, Nothing, m_sCurrSaw, sMachIniFile)
' lama inclinata
If m_nShowToolChanger = 4 Then
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWTILTED, Nothing, m_sCurrSawTilted, sMachIniFile)
Else
' se non è configurato il cambio utensile e allora imposto l'unica lama disponibile per i tagli inclinati
m_sCurrSawTilted = m_sCurrSaw
End If
' foretto ' foretto
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILL, Nothing, m_sCurrDrill, sMachIniFile) GetPrivateProfileString(S_MACH_MACH, K_CURRDRILL, Nothing, m_sCurrDrill, sMachIniFile)
' fresa ' fresa
@@ -1220,6 +1327,10 @@ Public Class CurrentMachine
' Leggo lavorazioni correnti ' Leggo lavorazioni correnti
' lama ' lama
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, m_sCurrSawing, sMachIniFile) GetPrivateProfileString(S_MACH_MACH, K_CURRSAWING, Nothing, m_sCurrSawing, sMachIniFile)
' lama inlicnata
GetPrivateProfileString(S_MACH_MACH, K_CURRSAWINGTILTED, Nothing, m_sCurrSawingTilted, sMachIniFile)
' applica lavorazione di lama inclinata
m_bApplySawingTilted = (GetPrivateProfileInt(S_MACH_MACH, K_APPLYSAWINGTILTED, 0, sMachIniFile) <> 0)
' foretto ' foretto
GetPrivateProfileString(S_MACH_MACH, K_CURRDRILLING, Nothing, m_sCurrDrilling, sMachIniFile) GetPrivateProfileString(S_MACH_MACH, K_CURRDRILLING, Nothing, m_sCurrDrilling, sMachIniFile)
' fresa ' fresa
@@ -1282,6 +1393,8 @@ Public Class CurrentMachine
m_dPhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_OFFSETY, 0, sMachIniFile) m_dPhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_OFFSETY, 0, sMachIniFile)
m_dTab2PhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETX, 0, sMachIniFile) m_dTab2PhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETX, 0, sMachIniFile)
m_dTab2PhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETY, 0, sMachIniFile) m_dTab2PhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_TAB2_OFFSETY, 0, sMachIniFile)
m_dHQPhotoOffsetX = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_HQ_OFFSETX, 0, sMachIniFile)
m_dHQPhotoOffsetY = GetPrivateProfileDouble(S_PHOTO, K_PHOTO_HQ_OFFSETY, 0, sMachIniFile)
' Leggo abilitazione per restart ' Leggo abilitazione per restart
m_bEnableRestart = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENABLERESTART, 0, sMachIniFile) <> 0) m_bEnableRestart = (GetPrivateProfileInt(S_MACH_NEST, K_MACH_ENABLERESTART, 0, sMachIniFile) <> 0)
@@ -1349,6 +1462,38 @@ Public Class CurrentMachine
m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0) m_HasRawProbe = (GetPrivateProfileInt(S_MACH_PROBING, K_ENABLERAWPROBE, 1, sMachIniFile) <> 0)
' leggo se la macchina ha il lettore di codice a barre della lastra ' leggo se la macchina ha il lettore di codice a barre della lastra
m_nEnableBarCodeReader = GetPrivateProfileInt(S_MACH_BARCODEREADER, K_ENABLEBCR, 0, sMachIniFile) m_nEnableBarCodeReader = GetPrivateProfileInt(S_MACH_BARCODEREADER, K_ENABLEBCR, 0, sMachIniFile)
' affonadamento massimo oltre la tavola (inidicata in positivo!)
m_MaxTabDepth = GetPrivateProfileDouble(S_MACH_NEST, "MaxTabDepth", 10.0, m_MainWindow.GetMachIniFile())
If m_MaxTabDepth < 0 Then
m_MaxTabDepth = 10.0
End If
' Massimo spessore lavorabile con lama grande
m_dHighPieceZ = GetPrivateProfileDouble(S_RAWMOVE, "MaxHeightPiece", 800.0, m_MainWindow.GetMachIniFile())
End Sub
' Per il controllo FANUC al momento dell'inizializzazione del CN devono essere lette alcune variabili
Public Sub InitFANUC(CN_Generic As CN_generico)
' Leggo ritardo tra reset e send per NUM
m_nResetSendDelay = GetPrivateProfileInt(S_NCFANUC, K_RESETSENDDELAY, 1000, sMachIniFile)
' Leggo ritardo tra reset e send per NUM
m_nThreadSleep = GetPrivateProfileInt(S_NCFANUC, K_THREADSLEEP, 150, sMachIniFile)
' Leggo i dati strettamente correlati alla comunicazione NC-PC
Dim CN As CN_generico = CN_Generic
' Leggo l'indirizzo in cui scrivere lo stato macchina
Dim dAddNcMode As String = CN.s_addr_set_nc_mode
GetPrivateProfileString(S_NCFANUC, K_SETNCMODE, CN.s_addr_set_nc_mode, CN.s_addr_set_nc_mode, sMachIniFile)
' Leggo primo indirizzo libero delle variabili di tipo intero
CN.n_Base_addr_int_vars = GetPrivateProfileInt(S_NCFANUC, K_BASEADDRINT, CN.n_Base_addr_int_vars, sMachIniFile)
' Leggo primo indirizzo libero delle variabili di tipo bit
CN.n_Base_addr_byte_for_bits_vars = GetPrivateProfileInt(S_NCFANUC, K_BASEADDRBIT, CN.n_Base_addr_byte_for_bits_vars, sMachIniFile)
' Leggo numero di variabili di tipo intero
CN.n_num_var_int_to_read = CShort(GetPrivateProfileInt(S_NCFANUC, K_NUMVARINT, CInt(CN.n_num_var_int_to_read), sMachIniFile))
' Leggo numero di varibili di tipo bit
CN.n_num_var_byte_for_bits_to_read = CShort(GetPrivateProfileInt(S_NCFANUC, K_NUMVARBIT, CInt(CN.n_num_var_byte_for_bits_to_read), sMachIniFile))
' Leggo variabile abilitata alla gestione di FeedHold
GetPrivateProfileString(S_NCFANUC, K_SETNCMODE, CN.s_addr_feedhold, CN.s_addr_feedhold, sMachIniFile)
End Sub End Sub
Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False) Public Sub LoadWJMaterial(Optional bIsStart As Boolean = False)
@@ -1571,7 +1716,9 @@ Public Class CurrentMachine
Dim dToolDiam As Double = 0 Dim dToolDiam As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam)
' Confronto con massimo ammesso ' Confronto con massimo ammesso
Return (dToolDiam <= dMaxSawDiamForProbe) Dim bOk As Boolean = dToolDiam <= dMaxSawDiamForProbe
If Not bOk Then EgtOutLog("WARNING: Saw diameter to big for probing")
Return bOk
End Function End Function
Friend Function GetPrivateProfileMaterial( Friend Function GetPrivateProfileMaterial(
+13
View File
@@ -87,6 +87,19 @@
</GroupBox> </GroupBox>
<GroupBox Name="CameraHQ" Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<ToggleButton Name="CameraHQBtn" Grid.Column="2"
Style="{DynamicResource OmagCut_GradientYellowIconToggleButton}"
Foreground="White"/>
</Grid>
</GroupBox>
<GroupBox Name="PartProgTransferGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="2" <GroupBox Name="PartProgTransferGpBx" Style="{DynamicResource OmagCut_GroupBox}" Grid.Row="2"
Grid.ColumnSpan="3"> Grid.ColumnSpan="3">
<Grid> <Grid>
+37
View File
@@ -29,6 +29,7 @@ Public Class MachineCNPageUC
MDICommandGpBx.Header = EgtMsg(MSG_MACHINECNPAGEUC + 16) MDICommandGpBx.Header = EgtMsg(MSG_MACHINECNPAGEUC + 16)
PartProgTransferGpBx.Header = EgtMsg(MSG_MACHINECNPAGEUC + 17) PartProgTransferGpBx.Header = EgtMsg(MSG_MACHINECNPAGEUC + 17)
ErrorLstGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 12) ErrorLstGpBx.Header = EgtMsg(MSG_ALARMSPAGEUC + 12)
' Attivo gruppo PartProgTransferGpBx leggendo la variabile nel file ini ' Attivo gruppo PartProgTransferGpBx leggendo la variabile nel file ini
If GetPrivateProfileInt(S_GENERAL, K_TESTINGPAGE, 0, m_MainWindow.GetIniFile()) = 1 Then If GetPrivateProfileInt(S_GENERAL, K_TESTINGPAGE, 0, m_MainWindow.GetIniFile()) = 1 Then
PartProgTransferGpBx.Visibility = Windows.Visibility.Visible PartProgTransferGpBx.Visibility = Windows.Visibility.Visible
@@ -44,6 +45,28 @@ Public Class MachineCNPageUC
Else Else
PowerGpBx.Visibility = Visibility.Collapsed PowerGpBx.Visibility = Visibility.Collapsed
End If End If
' verifico che sia attiva la modalità per l'uso di due fotocamere
If GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ENABLE, 0, m_MainWindow.GetMachIniFile()) = 1 Then
CameraHQ.Visibility = Visibility.Visible
CameraHQ.Header = "Photo on table"
CameraHQBtn.Content = "HQ"
' verifico quale camera è impostata
If GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, 0, m_MainWindow.GetMachIniFile()) = 1 Then
CameraHQBtn.IsChecked = True
If Not IsNothing(m_MainWindow.m_CadCutPageUC.PhotoIMG) Then
m_MainWindow.m_CadCutPageUC.PhotoIMG.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NewIcons/icone-tagli-1HQ.png", UriKind.Relative))
End If
Else
CameraHQBtn.IsChecked = False
If Not IsNothing(m_MainWindow.m_CadCutPageUC.PhotoIMG) Then
m_MainWindow.m_CadCutPageUC.PhotoIMG.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NewIcons/icone-tagli-1.png", UriKind.Relative))
End If
End If
Else
CameraHQ.Visibility = Visibility.Collapsed
End If
End Sub End Sub
Private Sub TestingPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub TestingPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -203,6 +226,20 @@ Public Class MachineCNPageUC
m_CN.DGeneralFunctions_WriteCncMode(8) m_CN.DGeneralFunctions_WriteCncMode(8)
End Sub End Sub
Private Sub CameraHQBtn_Click(sender As Object, e As RoutedEventArgs) Handles CameraHQBtn.Click
Dim sEnableHQ As String = If(CameraHQBtn.IsChecked, "1", "0")
WritePrivateProfileString(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, sEnableHQ, m_MainWindow.GetMachIniFile())
If CameraHQBtn.IsChecked Then
If Not IsNothing(m_MainWindow.m_CadCutPageUC.PhotoIMG) Then
m_MainWindow.m_CadCutPageUC.PhotoIMG.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NewIcons/icone-tagli-1HQ.png", UriKind.Relative))
End If
Else
If Not IsNothing(m_MainWindow.m_CadCutPageUC.PhotoIMG) Then
m_MainWindow.m_CadCutPageUC.PhotoIMG.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("/Resources/NewIcons/icone-tagli-1.png", UriKind.Relative))
End If
End If
End Sub
Private Sub MDITxBx_KeyDown(sender As Object, e As KeyEventArgs) Handles MDITxBx.KeyDown Private Sub MDITxBx_KeyDown(sender As Object, e As KeyEventArgs) Handles MDITxBx.KeyDown
If e.Key = Key.Return Then If e.Key = Key.Return Then
' leggo se stato reset ' leggo se stato reset
+2
View File
@@ -298,6 +298,8 @@ Public Class MachinePageUC
WaterJetBtn.IsChecked = False WaterJetBtn.IsChecked = False
MachinePageGrid.Children.Remove(m_WaterJetPageUC) MachinePageGrid.Children.Remove(m_WaterJetPageUC)
MachinePageGrid.Children.Add(m_MachiningDbPageUC) MachinePageGrid.Children.Add(m_MachiningDbPageUC)
' Aggiorno lista materiali
m_MainWindow.m_CurrentMachine.LoadWJMaterial()
m_ActiveMachinePage = MachinePages.MachiningDb m_ActiveMachinePage = MachinePages.MachiningDb
Case MachinePages.MachineCN Case MachinePages.MachineCN
MachiningDBBtn.IsChecked = True MachiningDBBtn.IsChecked = True
+35 -15
View File
@@ -248,16 +248,16 @@ Public Class MachineStatusUC
dL3 = ptTip.z dL3 = ptTip.z
End If End If
' Visualizzazione ' Visualizzazione
Axis1TxBx.Text = LenToString(dL1, -3) Axis1TxBx.Text = LenToString(dL1, -3, True)
Axis2TxBx.Text = LenToString(dL2, -3) Axis2TxBx.Text = LenToString(dL2, -3, True)
Axis3TxBx.Text = LenToString(dL3, -3) Axis3TxBx.Text = LenToString(dL3, -3, True)
Axis4TxBx.Text = DoubleToString(dR1, -3) Axis4TxBx.Text = DoubleToString(dR1, -3)
Axis5TxBx.Text = DoubleToString(dR2, -3) Axis5TxBx.Text = DoubleToString(dR2, -3)
If m_AxesNumber >= 6 Then Axis6TxBx.Text = DoubleToString(dA6, -3) If m_AxesNumber >= 6 Then Axis6TxBx.Text = DoubleToString(dA6, -3)
If m_AxesNumber >= 7 Then Axis7TxBx.Text = LenToString(dA7, -3) If m_AxesNumber >= 7 Then Axis7TxBx.Text = LenToString(dA7, -3, True)
If m_AxesNumber >= 8 Then Axis8TxBx.Text = LenToString(dA8, -3) If m_AxesNumber >= 8 Then Axis8TxBx.Text = LenToString(dA8, -3, True)
If m_AxesNumber >= 9 Then Axis9TxBx.Text = LenToString(dA9, -3) If m_AxesNumber >= 9 Then Axis9TxBx.Text = LenToString(dA9, -3, True)
If m_AxesNumber >= 10 Then Axis10TxBx.Text = LenToString(dA10, -3) If m_AxesNumber >= 10 Then Axis10TxBx.Text = LenToString(dA10, -3, True)
End Sub End Sub
Sub DisplayPositionDelta() Sub DisplayPositionDelta()
@@ -265,22 +265,32 @@ Public Class MachineStatusUC
Dim dL1, dL2, dL3, dR1, dR2, dA6, dA7, dA8, dA9, dA10 As Double Dim dL1, dL2, dL3, dR1, dR2, dA6, dA7, dA8, dA9, dA10 As Double
m_MainWindow.m_CNCommunication.GetAxesDeltas(dL1, dL2, dL3, dR1, dR2, dA6, dA7, dA8, dA9, dA10) m_MainWindow.m_CNCommunication.GetAxesDeltas(dL1, dL2, dL3, dR1, dR2, dA6, dA7, dA8, dA9, dA10)
' Visualizzazione ' Visualizzazione
DeltaAxis1TxBx.Text = LenToString(dL1, -3) DeltaAxis1TxBx.Text = LenToString(dL1, -3, True)
DeltaAxis2TxBx.Text = LenToString(dL2, -3) DeltaAxis2TxBx.Text = LenToString(dL2, -3, True)
DeltaAxis3TxBx.Text = LenToString(dL3, -3) DeltaAxis3TxBx.Text = LenToString(dL3, -3, True)
DeltaAxis4TxBx.Text = DoubleToString(dR1, -3) DeltaAxis4TxBx.Text = DoubleToString(dR1, -3)
DeltaAxis5TxBx.Text = DoubleToString(dR2, -3) DeltaAxis5TxBx.Text = DoubleToString(dR2, -3)
If m_AxesNumber >= 6 Then DeltaAxis6TxBx.Text = DoubleToString(dA6, -3) If m_AxesNumber >= 6 Then DeltaAxis6TxBx.Text = DoubleToString(dA6, -3)
If m_AxesNumber >= 7 Then DeltaAxis7TxBx.Text = LenToString(dA7, -3) If m_AxesNumber >= 7 Then DeltaAxis7TxBx.Text = LenToString(dA7, -3, True)
If m_AxesNumber >= 8 Then DeltaAxis8TxBx.Text = LenToString(dA8, -3) If m_AxesNumber >= 8 Then DeltaAxis8TxBx.Text = LenToString(dA8, -3, True)
If m_AxesNumber >= 9 Then DeltaAxis9TxBx.Text = LenToString(dA9, -3) If m_AxesNumber >= 9 Then DeltaAxis9TxBx.Text = LenToString(dA9, -3, True)
If m_AxesNumber >= 10 Then DeltaAxis10TxBx.Text = LenToString(dA10, -3) If m_AxesNumber >= 10 Then DeltaAxis10TxBx.Text = LenToString(dA10, -3, True)
End Sub End Sub
Sub DisplayFeed() Sub DisplayFeed()
Dim dRealFeed As Double = m_CN.d_DInterpo_Prog_Feed * m_CN.d_DInterpo_Feed_override / 100 Dim dRealFeed As Double = m_CN.d_DInterpo_Prog_Feed * m_CN.d_DInterpo_Feed_override / 100
'' modifica richiesta 26/05/2023 da Rosario per cliente Lanzetta (lettura feed per CN Fanuc)
'If m_MainWindow.m_CNCommunication.m_nNCType = 4 Then
' dRealFeed = m_CN.d_DInterpo_Prog_Feed
'Else
' dRealFeed = m_CN.d_DInterpo_Prog_Feed * m_CN.d_DInterpo_Feed_override / 100
'End If
' modifica richiesta 24/03/2025 da Fabio per cliente Frigerio
dRealFeed = m_CN.d_DInterpo_Prog_Feed * m_CN.d_DInterpo_Feed_override / 100
'Feed = DoubleToString(dRealFeed, 0) 'Feed = DoubleToString(dRealFeed, 0)
FeedTxBx.Text = LenToString(dRealFeed, 0) FeedTxBx.Text = LenToString(dRealFeed, 0, True)
'FeedOverride = DoubleToString(m_CN.d_DInterpo_Feed_override, 0) & "%" 'FeedOverride = DoubleToString(m_CN.d_DInterpo_Feed_override, 0) & "%"
Dim dFeedOverride As Double = m_CN.d_DInterpo_Feed_override Dim dFeedOverride As Double = m_CN.d_DInterpo_Feed_override
FeedOverrideTxBx.Text = DoubleToString(dFeedOverride, 0) & "%" FeedOverrideTxBx.Text = DoubleToString(dFeedOverride, 0) & "%"
@@ -302,8 +312,18 @@ Public Class MachineStatusUC
Dim dSpindleOvr As Double Dim dSpindleOvr As Double
' se attivi nuovi comandi MDI su siemens ' se attivi nuovi comandi MDI su siemens
If m_MainWindow.m_CNCommunication.m_nNCType = 3 AndAlso m_MainWindow.m_CNCommunication.m_CN.m_IsSiemensOne Then If m_MainWindow.m_CNCommunication.m_nNCType = 3 AndAlso m_MainWindow.m_CNCommunication.m_CN.m_IsSiemensOne Then
If m_MainWindow.m_CNCommunication.m_CN.m_IsSiemensOne Then
dSpindlePower = m_CN.d_spindle_power
'dSpindleOvr = If(m_CN.bPowerOvr > 0, m_CN.d_spindle_power / m_CN.bPowerOvr * 100, 0)
dSpindleOvr = m_CN.bPowerOvr
Else
' questo sistema è deprecabile dalla versione 2.6d2 (nuova gestione dei vettori)
dSpindlePower = m_CN.d_data(0) dSpindlePower = m_CN.d_data(0)
dSpindleOvr = m_CN.d_data(1) dSpindleOvr = m_CN.d_data(1)
End If
ElseIf m_MainWindow.m_CNCommunication.m_nNCType = 4 Then
dSpindlePower = m_CN.d_spindle_power / 1000
Else Else
dSpindlePower = m_CN.d_spindle_power dSpindlePower = m_CN.d_spindle_power
dSpindleOvr = If(m_CN.bPowerOvr > 0, m_CN.d_spindle_power / m_CN.bPowerOvr * 100, 0) dSpindleOvr = If(m_CN.bPowerOvr > 0, m_CN.d_spindle_power / m_CN.bPowerOvr * 100, 0)
+2 -2
View File
@@ -61,7 +61,7 @@ Public Class MachiningDbPageUC
StepType = {EgtMsg(MSG_COMBOBOXPARAM + 38), EgtMsg(MSG_COMBOBOXPARAM + 39), EgtMsg(MSG_COMBOBOXPARAM + 40)} StepType = {EgtMsg(MSG_COMBOBOXPARAM + 38), EgtMsg(MSG_COMBOBOXPARAM + 39), EgtMsg(MSG_COMBOBOXPARAM + 40)}
RouFinStepType = {EgtMsg(MSG_COMBOBOXPARAM + 38), EgtMsg(MSG_COMBOBOXPARAM + 39)} RouFinStepType = {EgtMsg(MSG_COMBOBOXPARAM + 38), EgtMsg(MSG_COMBOBOXPARAM + 39)}
ExtCornType = {EgtMsg(MSG_COMBOBOXPARAM + 43), EgtMsg(MSG_COMBOBOXPARAM + 44), EgtMsg(MSG_COMBOBOXPARAM + 45)} ExtCornType = {EgtMsg(MSG_COMBOBOXPARAM + 43), EgtMsg(MSG_COMBOBOXPARAM + 44), EgtMsg(MSG_COMBOBOXPARAM + 45)}
IntCornType = {EgtMsg(MSG_COMBOBOXPARAM + 43), EgtMsg(MSG_COMBOBOXPARAM + 44)} IntCornType = {EgtMsg(MSG_COMBOBOXPARAM + 43), EgtMsg(MSG_COMBOBOXPARAM + 44), EgtMsg(90852)}
' Assegno array a combobox ' Assegno array a combobox
WorkSideCmBx.ItemsSource = WorkSide WorkSideCmBx.ItemsSource = WorkSide
@@ -208,7 +208,7 @@ Public Class MachiningDbPageUC
MillTool.Clear() MillTool.Clear()
bFound = EgtTdbGetFirstTool(MCH_TF.MILL, sToolName, nType) bFound = EgtTdbGetFirstTool(MCH_TF.MILL, sToolName, nType)
While bFound While bFound
If nType = MCH_TY.MILL_STD Then MillTool.Add( sToolName) If nType = MCH_TY.MILL_STD And sToolName.Trim.ToLower <> "probe" Then MillTool.Add(sToolName)
bFound = EgtTdbGetNextTool(MCH_TF.MILL, sToolName, nType) bFound = EgtTdbGetNextTool(MCH_TF.MILL, sToolName, nType)
End While End While
PocketTool.Clear() PocketTool.Clear()
+2 -2
View File
@@ -61,8 +61,8 @@ Public Class PolishingsPageUC
RepeatTxBl.Text = EgtMsg(91093) ' Ripetizioni RepeatTxBl.Text = EgtMsg(91093) ' Ripetizioni
StepTxBl.Text = EgtMsg(90787) ' Passo StepTxBl.Text = EgtMsg(90787) ' Passo
OffSetTxBl.Text = EgtMsg(91089) ' Offset OffSetTxBl.Text = EgtMsg(91089) ' Offset
RadiusTxBl.Text = "Raggio" RadiusTxBl.Text = EgtMsg(91139) ' Raggio
DistanceTxBl.Text = "Distanza" DistanceTxBl.Text = EgtMsg(91140) ' Distanza
LiLoGpBx.Header = EgtMsg(91094) ' Attacco/Uscita LiLoGpBx.Header = EgtMsg(91094) ' Attacco/Uscita
LiLenTxBl.Text = EgtMsg(91097) ' Lunghezza LiLenTxBl.Text = EgtMsg(91097) ' Lunghezza
LiHeightTxBl.Text = EgtMsg(91095) ' Altezza LiHeightTxBl.Text = EgtMsg(91095) ' Altezza
+85 -32
View File
@@ -3,6 +3,8 @@ Imports System.ComponentModel
Imports OmagCUT.TreeViewItem Imports OmagCUT.TreeViewItem
Imports EgtUILib Imports EgtUILib
Imports EgtWPFLib Imports EgtWPFLib
Imports EgtWPFLib5
Imports FXServer
Public Class SetUpPage Public Class SetUpPage
@@ -13,6 +15,7 @@ Public Class SetUpPage
Private m_CurrMachine As CurrentMachine = m_MainWindow.m_CurrentMachine Private m_CurrMachine As CurrentMachine = m_MainWindow.m_CurrentMachine
Private m_ToolTreeList As New ObservableCollection(Of CathegoryItem) Private m_ToolTreeList As New ObservableCollection(Of CathegoryItem)
Private m_SawsList As CathegoryItem
Private m_DrillbitsList As CathegoryItem Private m_DrillbitsList As CathegoryItem
Private m_MillsList As CathegoryItem Private m_MillsList As CathegoryItem
Private m_CupsList As CathegoryItem Private m_CupsList As CathegoryItem
@@ -26,10 +29,10 @@ Public Class SetUpPage
' Assegno la lista utensili come sorgente dell'albero ' Assegno la lista utensili come sorgente dell'albero
ToolTree.ItemsSource = m_ToolTreeList ToolTree.ItemsSource = m_ToolTreeList
If m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then If m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Or m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
'' Cambio utensile macchina '' Cambio utensile macchina
' Modifico numero colonne della griglia in base al numero di porta utensili disponibili sulla macchina ' Modifico numero colonne della griglia in base al numero di porta utensili disponibili sulla macchina
Dim ColNum As Integer = CInt( Math.Ceiling( m_CurrMachine.ToolChangerNbr / 5.0)) Dim ColNum As Integer = CInt(Math.Ceiling(m_CurrMachine.ToolChangerNbr / 5.0))
If ColNum > 12 Then If ColNum > 12 Then
EgtOutLog("TC warning : too many tools (max 12 * 5)") EgtOutLog("TC warning : too many tools (max 12 * 5)")
ColNum = 12 ColNum = 12
@@ -59,7 +62,7 @@ Public Class SetUpPage
'' Cambio utensile manuale '' Cambio utensile manuale
' Modifico numero colonne della griglia in base al numero di porta utensili disponibili sulla macchina ' Modifico numero colonne della griglia in base al numero di porta utensili disponibili sulla macchina
Dim ManColNum As Integer = CInt( Math.Ceiling( m_CurrMachine.ManualToolChangerNbr / 5.0)) Dim ManColNum As Integer = CInt(Math.Ceiling(m_CurrMachine.ManualToolChangerNbr / 5.0))
If ManColNum > 12 Then If ManColNum > 12 Then
EgtOutLog("ManTC warning : too many tools (max 12 * 5)") EgtOutLog("ManTC warning : too many tools (max 12 * 5)")
ManColNum = 12 ManColNum = 12
@@ -85,7 +88,7 @@ Public Class SetUpPage
Next Next
' Se portautensili della macchina presente ' Se portautensili della macchina presente
If m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then If m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Or m_CurrMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
' Apro quello ' Apro quello
TlChScVw.Visibility = Windows.Visibility.Visible TlChScVw.Visibility = Windows.Visibility.Visible
ToolChangerBtn.IsChecked = True ToolChangerBtn.IsChecked = True
@@ -106,15 +109,25 @@ Public Class SetUpPage
Private Sub SetUpPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub SetUpPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Inizializzo le famiglie di utensili nell'albero ' Inizializzo le famiglie di utensili nell'albero
EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
InitializeToolGroup( m_CurrMachine.bDrill, MCH_TY.DRILL_STD, EgtMsg( 90752), m_DrillbitsList) If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then InitializeToolGroup(m_CurrMachine.bSaw, MCH_TY.SAW_STD, EgtMsg(90751), m_SawsList)
InitializeToolGroup( m_CurrMachine.bMill, MCH_TY.MILL_STD, EgtMsg( 90753), m_MillsList) InitializeToolGroup(m_CurrMachine.bDrill, MCH_TY.DRILL_STD, EgtMsg(90752), m_DrillbitsList)
InitializeToolGroup( m_CurrMachine.bCupWheel, MCH_TY.MILL_NOTIP, EgtMsg( 90754), m_CupsList) InitializeToolGroup(m_CurrMachine.bMill, MCH_TY.MILL_STD, EgtMsg(90753), m_MillsList)
InitializeToolGroup( m_CurrMachine.bPolishingWheel, MCH_TY.MILL_POLISHING, EgtMsg( 90756), m_PolishingsList) InitializeToolGroup(m_CurrMachine.bCupWheel, MCH_TY.MILL_NOTIP, EgtMsg(90754), m_CupsList)
InitializeToolGroup(m_CurrMachine.bPolishingWheel, MCH_TY.MILL_POLISHING, EgtMsg(90756), m_PolishingsList)
' Posiziono utensili già posizionati sul portautensili ' Posiziono utensili già posizionati sul portautensili
For Each ToolPosition As ToolChangerPos In m_CurrMachine.ToolChanger For Each ToolPosition As ToolChangerPos In m_CurrMachine.ToolChanger
If ToolPosition.sTool <> String.Empty Then If ToolPosition.sTool <> String.Empty Then
If Not IsNothing( m_DrillbitsList) Then If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW AndAlso Not IsNothing(m_SawsList) Then
For Each Item As CustomItem In m_SawsList.Items
If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item)
m_SawsList.Items.Remove(Item)
Exit For
End If
Next
End If
If Not IsNothing(m_DrillbitsList) Then
For Each Item As CustomItem In m_DrillbitsList.Items For Each Item As CustomItem In m_DrillbitsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -123,7 +136,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_MillsList) Then If Not IsNothing(m_MillsList) Then
For Each Item As CustomItem In m_MillsList.Items For Each Item As CustomItem In m_MillsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -132,7 +145,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_CupsList) Then If Not IsNothing(m_CupsList) Then
For Each Item As CustomItem In m_CupsList.Items For Each Item As CustomItem In m_CupsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -141,7 +154,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_PolishingsList) Then If Not IsNothing(m_PolishingsList) Then
For Each Item As CustomItem In m_PolishingsList.Items For Each Item As CustomItem In m_PolishingsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -158,7 +171,7 @@ Public Class SetUpPage
' Posiziono utensili già posizionati sul portautensili manuale ' Posiziono utensili già posizionati sul portautensili manuale
For Each ToolPosition As ToolChangerPos In m_CurrMachine.ManualToolChanger For Each ToolPosition As ToolChangerPos In m_CurrMachine.ManualToolChanger
If ToolPosition.sTool <> String.Empty Then If ToolPosition.sTool <> String.Empty Then
If Not IsNothing( m_DrillbitsList) Then If Not IsNothing(m_DrillbitsList) Then
For Each Item As CustomItem In m_DrillbitsList.Items For Each Item As CustomItem In m_DrillbitsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -167,7 +180,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_MillsList) Then If Not IsNothing(m_MillsList) Then
For Each Item As CustomItem In m_MillsList.Items For Each Item As CustomItem In m_MillsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -176,7 +189,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_CupsList) Then If Not IsNothing(m_CupsList) Then
For Each Item As CustomItem In m_CupsList.Items For Each Item As CustomItem In m_CupsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -185,7 +198,7 @@ Public Class SetUpPage
End If End If
Next Next
End If End If
If Not IsNothing( m_PolishingsList) Then If Not IsNothing(m_PolishingsList) Then
For Each Item As CustomItem In m_PolishingsList.Items For Each Item As CustomItem In m_PolishingsList.Items
If Item.Name = ToolPosition.sTool Then If Item.Name = ToolPosition.sTool Then
m_SetUpToolsList.Items.Add(Item) m_SetUpToolsList.Items.Add(Item)
@@ -710,16 +723,16 @@ Public Class SetUpPage
End Function End Function
' Funzione che carica gli utensili del Db nell'albero ' Funzione che carica gli utensili del Db nell'albero
Friend Sub InitializeToolGroup( bEnabled As Boolean, nTType As Integer, sFName As String, ByRef ToolCathegory As CathegoryItem) Friend Sub InitializeToolGroup(bEnabled As Boolean, nTType As Integer, sFName As String, ByRef ToolCathegory As CathegoryItem)
If Not bEnabled Then Return If Not bEnabled Then Return
' Inserisco categoria ed eventuali elementi ' Inserisco categoria ed eventuali elementi
ToolCathegory = New CathegoryItem( sFName, nTType) ToolCathegory = New CathegoryItem(sFName, nTType)
Dim nType As Integer = 0 Dim nType As Integer = 0
Dim ToolName As String = String.Empty Dim ToolName As String = String.Empty
Dim bFound As Boolean = EgtTdbGetFirstTool( nTType, ToolName, nType) Dim bFound As Boolean = EgtTdbGetFirstTool(nTType, ToolName, nType)
While bFound While bFound
If nType = nTType Then ToolCathegory.Items.Add( New CustomItem( ToolName, nType)) If nType = nTType Then ToolCathegory.Items.Add(New CustomItem(ToolName, nType))
bFound = EgtTdbGetNextTool( nTType, ToolName, nType) bFound = EgtTdbGetNextTool(nTType, ToolName, nType)
End While End While
m_ToolTreeList.Add(ToolCathegory) m_ToolTreeList.Add(ToolCathegory)
End Sub End Sub
@@ -771,14 +784,17 @@ Public Class SetUpPage
' Funzione che rimuove l'utensile selezionato dall'albero ' Funzione che rimuove l'utensile selezionato dall'albero
Private Sub RemoveToolFromList() Private Sub RemoveToolFromList()
If Not IsNothing( m_DrillbitsList) AndAlso m_DrillbitsList.Items.Contains( ToolTree.SelectedItem) Then If m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW AndAlso
m_DrillbitsList.Items.Remove( ToolTree.SelectedItem) Not IsNothing(m_SawsList) AndAlso m_SawsList.Items.Contains(ToolTree.SelectedItem) Then
ElseIf Not IsNothing( m_MillsList) AndAlso m_MillsList.Items.Contains( ToolTree.SelectedItem) Then m_SawsList.Items.Remove(ToolTree.SelectedItem)
m_MillsList.Items.Remove( ToolTree.SelectedItem) ElseIf Not IsNothing(m_DrillbitsList) AndAlso m_DrillbitsList.Items.Contains(ToolTree.SelectedItem) Then
ElseIf Not IsNothing( m_CupsList) AndAlso m_CupsList.Items.Contains( ToolTree.SelectedItem) Then m_DrillbitsList.Items.Remove(ToolTree.SelectedItem)
m_CupsList.Items.Remove( ToolTree.SelectedItem) ElseIf Not IsNothing(m_MillsList) AndAlso m_MillsList.Items.Contains(ToolTree.SelectedItem) Then
ElseIf Not IsNothing( m_PolishingsList) AndAlso m_PolishingsList.Items.Contains( ToolTree.SelectedItem) Then m_MillsList.Items.Remove(ToolTree.SelectedItem)
m_PolishingsList.Items.Remove( ToolTree.SelectedItem) ElseIf Not IsNothing(m_CupsList) AndAlso m_CupsList.Items.Contains(ToolTree.SelectedItem) Then
m_CupsList.Items.Remove(ToolTree.SelectedItem)
ElseIf Not IsNothing(m_PolishingsList) AndAlso m_PolishingsList.Items.Contains(ToolTree.SelectedItem) Then
m_PolishingsList.Items.Remove(ToolTree.SelectedItem)
End If End If
End Sub End Sub
@@ -786,7 +802,9 @@ Public Class SetUpPage
Private Sub RestoreToolInList(sToolName As String) Private Sub RestoreToolInList(sToolName As String)
For Each Tool As CustomItem In m_SetUpToolsList.Items For Each Tool As CustomItem In m_SetUpToolsList.Items
If Tool.Name = sToolName Then If Tool.Name = sToolName Then
If Tool.nType = MCH_TY.DRILL_STD Then If Tool.nType = MCH_TY.SAW_STD Then
m_SawsList.Items.Add(Tool)
ElseIf Tool.nType = MCH_TY.DRILL_STD Then
m_DrillbitsList.Items.Add(Tool) m_DrillbitsList.Items.Add(Tool)
ElseIf Tool.nType = MCH_TY.MILL_STD Then ElseIf Tool.nType = MCH_TY.MILL_STD Then
m_MillsList.Items.Add(Tool) m_MillsList.Items.Add(Tool)
@@ -1084,6 +1102,39 @@ Public Class SetUpPage
EgtTdbSave() EgtTdbSave()
End Sub End Sub
' Funzione che genera il file di setup corrente (per Cam5 e Office)
Private Sub SaveSetUpFile()
If m_CurrMachine.MountedToolConfig <> CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then Return
Dim sContentFile As String = "; this file has been created by program OmagCUT by current setup" & vbCrLf
sContentFile &= "[General]" & vbCrLf
For Each ToolPosition As ToolChangerPos In m_CurrMachine.ToolChanger
Dim sToolName As String = ToolPosition.sTool
Dim sPositionName As String = ToolPosition.sName
Dim sPosition As Integer = ToolPosition.nPosition
If Not String.IsNullOrEmpty(sToolName) Then
EgtTdbSetCurrTool(sToolName)
' Recupero l'uscita
Dim nExit As Integer = 1
EgtTdbGetCurrToolParam(MCH_TP.EXIT_, nExit)
' Recupero la testa
Dim sHead As String = ""
EgtTdbGetCurrToolParam(MCH_TP.HEAD, sHead)
' Recupero nome file nge dell'utensile
Dim sUUID As String = ""
EgtTdbGetCurrToolParam(MCH_TP.UUID, sUUID)
'local sRaw='Pos'..tostring(Index)..'='..TcPos..';'..EgtTdbGetCurrToolParam( MCH_TP.HEAD)..';'..EgtTdbGetCurrToolParam( MCH_TP.EXIT)..'/'..EgtTdbGetCurrToolParam( MCH_TP.UUID)..'/'..ToolName
sContentFile &= "Pos" & sPosition.ToString & "=" & sPositionName & ";" & sHead & ";" & nExit.ToString & "/" & sUUID & "/" & sToolName & vbCrLf
End If
Next
' Apro il file e lo sovrascrivo
Dim sFileOmagCutSetUp As String = m_CurrMachine.sMachDir & "\SetUp\CurrOmagCUT.stu"
Try
My.Computer.FileSystem.WriteAllText(sFileOmagCutSetUp, sContentFile, False)
Catch ex As Exception
EgtOutLog("Error in creatinf file CurrOmagCUT.stu: " & ex.ToString)
End Try
End Sub
' Evento che permette di aprire le cartelle degli utensili con un click singolo ' Evento che permette di aprire le cartelle degli utensili con un click singolo
Private Sub ToolTree_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ToolTree.PreviewMouseUp Private Sub ToolTree_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ToolTree.PreviewMouseUp
If TypeOf ToolTree.SelectedItem Is CathegoryItem Then If TypeOf ToolTree.SelectedItem Is CathegoryItem Then
@@ -1095,6 +1146,8 @@ Public Class SetUpPage
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
' Eseguo salvataggio (DB utensili + attrezzaggio) ' Eseguo salvataggio (DB utensili + attrezzaggio)
SaveToolChangerStatus() SaveToolChangerStatus()
' Salvo nel file di setup l'attuale configurazione
SaveSetUpFile()
' Esco ' Esco
m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Add(m_MainWindow.m_MachinePageUC.m_AlarmsPageUC) m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Add(m_MainWindow.m_MachinePageUC.m_AlarmsPageUC)
m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Remove(Me) m_MainWindow.m_MachinePageUC.MachinePageGrid.Children.Remove(Me)
@@ -1131,7 +1184,7 @@ Public Class SetUpPage
RemoveToolFromList() RemoveToolFromList()
Else Else
' Altrimenti segnalo che la posizione è già occupata ' Altrimenti segnalo che la posizione è già occupata
Dim InfoMsgBox As New EgtMsgBox(m_MainWindow, "", EgtMsg( 90759), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.ESCLAMATION) Dim InfoMsgBox As New EgtMsgBox(m_MainWindow, "", EgtMsg(90759), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.ESCLAMATION)
End If End If
Return Return
End If End If
@@ -1149,7 +1202,7 @@ Public Class SetUpPage
RemoveToolFromList() RemoveToolFromList()
Else Else
' Altrimenti segnalo che la posizione è già occupata ' Altrimenti segnalo che la posizione è già occupata
Dim InfoMsgBox As New EgtMsgBox(m_MainWindow, "", EgtMsg( 90759), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.ESCLAMATION) Dim InfoMsgBox As New EgtMsgBox(m_MainWindow, "", EgtMsg(90759), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.ESCLAMATION)
End If End If
Return Return
End If End If
+3 -3
View File
@@ -9,7 +9,7 @@
<!-- Definizione del ToolHolderUc --> <!-- Definizione del ToolHolderUc -->
<Grid> <Grid>
<Image Source="/Resources/ToolChangerPos.png"/> <Image Source="/Resources/ToolChangerPos.png"/>
<ToggleButton Name="Tool" Width="50" Height="50" Margin="22,40,26,8" Background="#7FB4B4B4"> <ToggleButton Name="Tool" Width="50" Height="50" Margin="62,10,16,10" Background="#7FB4B4B4">
<ToggleButton.Template> <ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}"> <ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid> <Grid>
@@ -18,14 +18,14 @@
</Grid> </Grid>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True"> <Trigger Property="IsChecked" Value="True">
<Setter Property="Fill" TargetName="Ellipse" Value="#FFB4B4B4"/> <Setter Property="Fill" TargetName="Ellipse" Value="#414141"/>
</Trigger> </Trigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
</ControlTemplate> </ControlTemplate>
</ToggleButton.Template> </ToggleButton.Template>
</ToggleButton> </ToggleButton>
<TextBlock Name="PositionNameTxBl" Height="22" Width="68" FontSize="16" Margin="12,16,41,61"/> <TextBlock Name="PositionNameTxBl" Height="22" Width="50" FontSize="16" Margin="20,40,70,53"/>
</Grid> </Grid>
</UserControl> </UserControl>
+35 -4
View File
@@ -237,8 +237,18 @@
<ColumnDefinition Width="2*"/> <ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Name="TCPosTxBl" Grid.Column="0" <TextBlock Name="TCPosTxBl" Grid.Column="0">
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> <TextBlock.Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource OmagCut_LowerCaseCharacterTextBlock}">
<Setter Property="Margin" Value="10,0,0,0"/>
<Style.Triggers>
<Trigger Property="ToolTip" Value="">
<Setter Property="ToolTipService.IsEnabled" Value="False" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<EgtWPFLib:EgtTextBox Name="TCPosTxBx" Grid.Column="1" Grid.Row="0" Margin="0,0,15,0" <EgtWPFLib:EgtTextBox Name="TCPosTxBx" Grid.Column="1" Grid.Row="0" Margin="0,0,15,0"
Style="{DynamicResource OmagCut_KeyboardTextBox}" /> Style="{DynamicResource OmagCut_KeyboardTextBox}" />
@@ -420,11 +430,32 @@
<CheckBox Name="EndLifeChBx" Grid.Column="3" Grid.Row="31" Grid.RowSpan="3" <CheckBox Name="EndLifeChBx" Grid.Column="3" Grid.Row="31" Grid.RowSpan="3"
Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,8,0,0"/> Style="{StaticResource OmagCut_CheckBox_Single}" Margin="0,8,0,0"/>
<TextBlock Name="UserNotesTxBl" Grid.Column="0" Grid.Row="33" Grid.RowSpan="3" <Grid Grid.Column="0" Grid.Row="33" Grid.RowSpan="3" Grid.ColumnSpan="4">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Name="UserNotesTxBl"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/> Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="UserNotesTxBx" Grid.Column="1" Grid.Row="33" <EgtWPFLib:EgtTextBox Name="UserNotesTxBx"
Grid.RowSpan="3" Grid.ColumnSpan="3" Margin="0,0,15,0" Grid.RowSpan="3" Grid.ColumnSpan="3" Margin="0,0,15,0"
Style="{DynamicResource OmagCut_KeyboardTextBox}"/> Style="{DynamicResource OmagCut_KeyboardTextBox}"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,12,0">
<TextBlock Name="ColorTxBl" Margin="0,0,15,0"
Style="{DynamicResource OmagCut_ToolsDBTextBlock}"/>
<Button Name="ColorBtn"
Style="{StaticResource Color_Button}" />
</StackPanel>
</Grid>
</Grid> </Grid>
+106 -3
View File
@@ -1,6 +1,5 @@
Imports System.Collections.ObjectModel Imports System.Collections.ObjectModel
Imports OmagCUT.TreeViewItem Imports OmagCUT.TreeViewItem
Imports System.ComponentModel
Imports EgtUILib Imports EgtUILib
Imports EgtWPFLib Imports EgtWPFLib
Imports EgtWPFLib5 Imports EgtWPFLib5
@@ -84,6 +83,7 @@ Public Class ToolsDbPageUC
CodeTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 27) ' Code CodeTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 27) ' Code
SupplierTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 28) ' Supplier SupplierTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 28) ' Supplier
EndLifeTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 29) ' End Life EndLifeTxBl.Text = EgtMsg(MSG_TOOLSDBPAGEUC + 29) ' End Life
ColorTxBl.Text = EgtMsg(91018) ' Colore lavorazione
' Associo TextBox e Label ' Associo TextBox e Label
Dim TempLabel1 As New Label Dim TempLabel1 As New Label
@@ -122,7 +122,6 @@ Public Class ToolsDbPageUC
Dim TempLabel12 As New Label Dim TempLabel12 As New Label
TempLabel12.Content = MaxMatTxBl.Text TempLabel12.Content = MaxMatTxBl.Text
MaxMatTxBx.Tag = TempLabel12 MaxMatTxBx.Tag = TempLabel12
End Sub End Sub
Private Sub ToolsDbPage_Loaded(sender As Object, e As RoutedEventArgs) Private Sub ToolsDbPage_Loaded(sender As Object, e As RoutedEventArgs)
@@ -568,6 +567,15 @@ Public Class ToolsDbPageUC
End If End If
End Sub End Sub
Private Sub ColorBtn_Click(sender As Object, e As RoutedEventArgs) Handles ColorBtn.Click
' Il click sul bottone aprirà la finestra ChooseColor che permetterà la scelta del colore
m_MainWindow.m_brCurrentColor = ColorBtn.Background
Dim ChooseColor As New ChooseColor(m_MainWindow)
If ChooseColor.ShowDialog() Then
ColorBtn.Background = m_MainWindow.m_brCurrentColor
End If
End Sub
Private Function AlreadyExist(ToolName As String) As Boolean Private Function AlreadyExist(ToolName As String) As Boolean
Dim ToolFamily As CathegoryItem Dim ToolFamily As CathegoryItem
For Each ToolFamily In ToolsList For Each ToolFamily In ToolsList
@@ -695,7 +703,16 @@ Public Class ToolsDbPageUC
Dim ToolName As String = String.Empty Dim ToolName As String = String.Empty
Dim bFound As Boolean = EgtTdbGetFirstTool(nTType, ToolName, nType) Dim bFound As Boolean = EgtTdbGetFirstTool(nTType, ToolName, nType)
While bFound While bFound
If nType = nTType Then ToolCathegory.Items.Add(New CustomItem(ToolName, nType)) Dim nDebug As Integer = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile)
If nType = nTType Then
If nTType <> MCH_TY.MILL_STD Then
' se utensile diverso da MILL
ToolCathegory.Items.Add(New CustomItem(ToolName, nType))
ElseIf nTType = MCH_TY.MILL_STD And (ToolName.Trim.ToLower <> "probe" Or nDebug > 4) Then
' Se utensile MILL con nome "probe" aggiungo solo se livello debug maggiore di 4
ToolCathegory.Items.Add(New CustomItem(ToolName, nType))
End If
End If
bFound = EgtTdbGetNextTool(nTType, ToolName, nType) bFound = EgtTdbGetNextTool(nTType, ToolName, nType)
End While End While
ToolsList.Add(ToolCathegory) ToolsList.Add(ToolCathegory)
@@ -757,6 +774,50 @@ Public Class ToolsDbPageUC
EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, ToolString) EgtTdbGetCurrToolParam(MCH_TP.USERNOTES, ToolString)
UserNotesTxBx.Text = ToolString UserNotesTxBx.Text = ToolString
End If End If
' Inizializzo colore di default
Dim EgtCol As Color3d = Utility.GetColorPV()
ColorBtn.Background = New SolidColorBrush(Color.FromRgb(EgtCol.R, EgtCol.G, EgtCol.B))
' Eventualmente verifico se inserito nel setup
VerifyToolInSetUp(m_sToolName, TCPosTxBx.Text)
End Sub
Private Sub VerifyToolInSetUp(sNameTool As String, sTCPos As String)
' Se configurato cambio utensile lama
If m_MainWindow.m_CurrentMachine.MountedToolConfig <> CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then Return
Dim bFound As Boolean = False
Dim sCurrTCPos As String = String.Empty
For Each ToolPosition As ToolChangerPos In m_MainWindow.m_CurrentMachine.ToolChanger
If ToolPosition.sTool <> String.Empty Then
If sNameTool = ToolPosition.sTool Then
sCurrTCPos = ToolPosition.sName
bFound = True
Exit For
End If
End If
Next
If Not bFound Then
TCPosTxBl.Foreground = Brushes.Red
If String.IsNullOrEmpty(sTCPos) Then
TCPosTxBl.ToolTip = EgtMsg(91019)
Else
TCPosTxBl.ToolTip = EgtMsg(91020)
End If
Else
If String.IsNullOrEmpty(sTCPos) Then
TCPosTxBl.Foreground = Brushes.Gold
TCPosTxBl.ToolTip = EgtMsg(91021) & " " & sCurrTCPos
Else
If sTCPos <> sCurrTCPos Then
TCPosTxBl.Foreground = Brushes.Gold
TCPosTxBl.ToolTip = EgtMsg(91022) & " " & sCurrTCPos
Else
TCPosTxBl.Foreground = Brushes.White
TCPosTxBl.ToolTip = ""
End If
End If
End If
End Sub End Sub
Private Sub SetToolParams() Private Sub SetToolParams()
@@ -812,8 +873,40 @@ Public Class ToolsDbPageUC
If Not SetSpecials() Then If Not SetSpecials() Then
EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, UserNotesTxBx.Text) EgtTdbSetCurrToolParam(MCH_TP.USERNOTES, UserNotesTxBx.Text)
End If End If
EgtTdbSetCurrToolValInNotes(MCH_TP.SYSNOTES, "COLOR", ColorToString(ColorBtn.Background.ToString()))
End Sub End Sub
Private Function ColorToString(color As String) As String
Dim colorCut As Color = HexToRbgNew(color)
Return colorCut.R & "," & colorCut.G & "," & colorCut.B
End Function
Public Function HexToRbgNew(ByVal Hex As String) As Color
If Hex.StartsWith("#") Then
Hex = Hex.Remove(0, 3)
End If
Dim red As Byte = CByte(HexadecimalToDecimal(Hex.Substring(0, 2)))
Dim green As Byte = CByte(HexadecimalToDecimal(Hex.Substring(2, 2)))
Dim blue As Byte = CByte(HexadecimalToDecimal(Hex.Substring(4, 2)))
Return Color.FromArgb(255, red, green, blue)
End Function
Private Shared Function HexadecimalToDecimal(hex As String) As Integer
hex = hex.ToUpper()
Dim hexLength As Integer = hex.Length
Dim dec As Double = 0
For i As Integer = 0 To hexLength - 1
Dim b As Byte = CByte(AscW(hex(i)))
If b >= 48 AndAlso b <= 57 Then
b -= 48
ElseIf b >= 65 AndAlso b <= 70 Then
b -= 55
End If
dec += b * Math.Pow(16, ((hexLength - i) - 1))
Next
Return CInt(Math.Truncate(dec))
End Function
Private Sub ViewToolParams() Private Sub ViewToolParams()
NameTxBl.Visibility = Windows.Visibility.Visible NameTxBl.Visibility = Windows.Visibility.Visible
NameTxBx.Visibility = Windows.Visibility.Visible NameTxBx.Visibility = Windows.Visibility.Visible
@@ -854,6 +947,9 @@ Public Class ToolsDbPageUC
SupplierTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) SupplierTxBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
EndLifeTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndLifeTxBl.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
EndLifeChBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden) EndLifeChBx.Visibility = If(bShowSpecials, Windows.Visibility.Visible, Windows.Visibility.Hidden)
ColorTxBl.Visibility = If(m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW, Visibility.Visible, Visibility.Hidden)
ColorBtn.Visibility = If(m_MainWindow.m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW, Visibility.Visible, Visibility.Hidden)
End Sub End Sub
Private Sub HideToolParams() Private Sub HideToolParams()
@@ -881,6 +977,9 @@ Public Class ToolsDbPageUC
SupplierTxBx.Visibility = Windows.Visibility.Hidden SupplierTxBx.Visibility = Windows.Visibility.Hidden
EndLifeTxBl.Visibility = Windows.Visibility.Hidden EndLifeTxBl.Visibility = Windows.Visibility.Hidden
EndLifeChBx.Visibility = Windows.Visibility.Hidden EndLifeChBx.Visibility = Windows.Visibility.Hidden
ColorTxBl.Visibility = Visibility.Hidden
ColorBtn.Visibility = Visibility.Hidden
End Sub End Sub
Private Sub ToolTreeView_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ToolTreeView.PreviewMouseUp Private Sub ToolTreeView_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles ToolTreeView.PreviewMouseUp
@@ -1329,4 +1428,8 @@ Public Class ToolsDbPageUC
End If End If
End Sub End Sub
Private Sub TCPosTxBx_EgtClosed(sender As Object, e As EventArgs) Handles TCPosTxBx.EgtClosed
VerifyToolInSetUp(m_sToolName, TCPosTxBx.Text)
End Sub
End Class End Class
+2 -2
View File
@@ -27,7 +27,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Border Name="LogoBrd" Background="Transparent"> <Border Name="LogoBrd" Background="Transparent">
<Image Source="{DynamicResource LogoOmagImg}" Stretch="Uniform" Margin="1"/> <Image Source="../Resources/NewIcons/logo-OmCut.png" Stretch="Uniform" Margin="1"/>
</Border> </Border>
<!-- ** Definizione della Grid delle tab ** --> <!-- ** Definizione della Grid delle tab ** -->
@@ -53,7 +53,7 @@
</ToggleButton> </ToggleButton>
</Grid> </Grid>
<Button Grid.Column="2" Style="{DynamicResource OmagCut_BlueIconButton}" Click="ExitBtn_Click"> <Button Name="ExitBtn" Grid.Column="2" Style="{DynamicResource OmagCut_BlueIconButton}" Click="ExitBtn_Click">
<Image Source="{DynamicResource XImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource XImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
</Button> </Button>
+151 -27
View File
@@ -23,6 +23,11 @@ Class MainWindow
' Coefficiente di scalatura della finestra rispetto a standard ' Coefficiente di scalatura della finestra rispetto a standard
Friend m_dMWinScale As Double = 1 Friend m_dMWinScale As Double = 1
' Variabile che definisce l'avvio forzato in modalità FRAME
Friend m_OnlyFrame As Boolean = False
Public Shared m_bShowSVGParkInd As Boolean = False
' Dichiarazione delle Page UserControl ' Dichiarazione delle Page UserControl
Friend m_WorkInProgressPageUC As WorkInProgressPageUC Friend m_WorkInProgressPageUC As WorkInProgressPageUC
Friend m_CurrentProjectPageUC As CurrentProjectPageUC Friend m_CurrentProjectPageUC As CurrentProjectPageUC
@@ -38,6 +43,8 @@ Class MainWindow
Friend m_MachinePageUC As MachinePageUC Friend m_MachinePageUC As MachinePageUC
Friend m_OptionsPageUC As OptionsPageUC Friend m_OptionsPageUC As OptionsPageUC
Friend m_IsClosingApplication As Integer = 0
' Dichiarazione variabili direttori ' Dichiarazione variabili direttori
Private m_sExeRoot As String = String.Empty Private m_sExeRoot As String = String.Empty
Private m_sDataRoot As String = String.Empty Private m_sDataRoot As String = String.Empty
@@ -98,6 +105,8 @@ Class MainWindow
OFFICE_TYPE = 2 ^ 19 ' 524288 OFFICE_TYPE = 2 ^ 19 ' 524288
REGISTRATION = 2 ^ 20 ' 1048576 REGISTRATION = 2 ^ 20 ' 1048576
SIMPLESTATISTICS = 2 ^ 21 ' 2097152 SIMPLESTATISTICS = 2 ^ 21 ' 2097152
COMPOFRAME = 2 ^ 22 ' 4194304
CUT_LIGHT = 2 ^ 23 ' 8388608
End Enum End Enum
' Opzione nesting automatico ' Opzione nesting automatico
Private m_bAutoNest As Boolean = False Private m_bAutoNest As Boolean = False
@@ -321,15 +330,30 @@ Class MainWindow
Dim sNestKey As String = "" Dim sNestKey As String = ""
EgtUILib.GetPrivateProfileString(S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile) EgtUILib.GetPrivateProfileString(S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
EgtSetNestKey(sNestKey) EgtSetNestKey(sNestKey)
Dim bNetHwKey As Boolean = ( GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1) Dim bNetHwKey As Boolean = (GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1)
EgtSetNetHwKey( bNetHwKey) EgtSetNetHwKey(bNetHwKey)
' Impostazioni per chiave di rete
Dim bNetKey As Boolean = (GetPrivateProfileInt(S_GENERAL, K_NETKEY, 0, m_sIniFile) = 1)
EgtSetNetHwKey(bNetKey)
Dim sLockId As String = ""
EgtUILib.GetPrivateProfileString(S_LICENCE, K_LOCKID, "", sLockId, sLicFile)
If Not String.IsNullOrEmpty(sLockId) Then
EgtSetLockId(sLockId)
End If
' Verifico abilitazione nesting automatico ' Verifico abilitazione nesting automatico
m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey) m_bAutoNest = Not String.IsNullOrWhiteSpace(sNestKey)
' Recupero opzioni della chiave ' Recupero opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2501, 1, m_nKeyLevel) And Dim bKey As Boolean = EgtGetKeyLevel(9423, 2705, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2501, 1, m_nKeyOptions) EgtGetKeyOptions(9423, 2705, 1, m_nKeyOptions)
' Verifico abilitazione prodotto ' Verifico abilitazione prodotto
Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE) Dim bProd As Boolean = GetKeyOption(KEY_OPT.CUT_BASE)
' Impostazione per programma OnlyFrame: solo se CUT_BASE non attivo
If Not bProd Then
m_OnlyFrame = GetKeyOption(KEY_OPT.CUT_LIGHT)
End If
' Inizializzazione generale di EgtInterface ' Inizializzazione generale di EgtInterface
m_nDebug = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile) m_nDebug = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile)
m_sVersion = My.Application.Info.Version.Major.ToString() & "." & m_sVersion = My.Application.Info.Version.Major.ToString() & "." &
@@ -437,8 +461,9 @@ Class MainWindow
' abilito il bottone per la gestione del comando di Check-Up-Start (posziona lama prelavorazione) ' abilito il bottone per la gestione del comando di Check-Up-Start (posziona lama prelavorazione)
If GetPrivateProfileInt(S_GENERAL, "Test", "0", m_sIniFile) = 0 OrElse If GetPrivateProfileInt(S_GENERAL, "Test", "0", m_sIniFile) = 0 OrElse
Not File.Exists( m_CurrentMachine.sMachDir() & "\DirectCmd\TestWork.lua") Then Not File.Exists(m_CurrentMachine.sMachDir() & "\DirectCmd\TestWork.lua") Then
m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Collapsed m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Collapsed
EgtOutLog("Warning: Missing file 'TestWork.lua' in folder 'DirectCmd', buttun 'TEST' collapsed!")
Else Else
m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Visible m_CadCutPageUC.m_ProjectMgr.TestBtn.Visibility = Visibility.Visible
End If End If
@@ -558,7 +583,7 @@ Class MainWindow
End If End If
End If End If
' --------------------------------- SLAB DB ------------------------------------------------------- ' --------------------------------- SLAB DB -------------------------------------------------------
ExitBtn.ToolTip = "Exit" & vbCrLf & "Minimize (Shift)"
End Sub End Sub
Private Sub ManageSingleIstance() Private Sub ManageSingleIstance()
@@ -631,6 +656,41 @@ Class MainWindow
m_IdleTimer.Interval = TimeSpan.FromMilliseconds(100) m_IdleTimer.Interval = TimeSpan.FromMilliseconds(100)
m_IdleTimer.Start() m_IdleTimer.Start()
Dim sAssStatus As String = " discontinued"
Dim nAssLeftDays As Integer
' MESSAGGIO...
If EgtGetKeyAssLeftDays(nAssLeftDays) And nAssLeftDays >= 0 Then
If nAssLeftDays > 0 Then
sAssStatus = "expires within " & nAssLeftDays.ToString() & " days"
'sAssStatus = "to be renewed within " & nAssLeftDays.ToString() & " days"
Else
sAssStatus = "Expired"
End If
End If
Dim bShowInfoAssistance As Boolean = True
bShowInfoAssistance = (GetPrivateProfileInt(S_GENERAL, K_SHOWEXPIREASSITANCE, "1", GetIniFile) <> 0)
' Or nAssLeftDays = 358
If bShowInfoAssistance And ((nAssLeftDays <= 7 And nAssLeftDays >= 0) Or nAssLeftDays = 14 Or nAssLeftDays = 21 Or nAssLeftDays = 28) Then
' 91145=Avviso importante
Dim sMsg_Title As String = EgtMsg(91145)
' 91146=Il contratto di aggiornamento della licenza in uso scadrà tra {0} giorni./n
Dim sMsg_AssStatus As String = String.Format(EgtMsg(91146), nAssLeftDays.ToString())
' 91147=Se desiderate rimanere aggiornati e continuare ad usufruire dei benefici del servizio, vi invitiamo a contattare la nostra assistenza al seguente indirizzo:/n
Dim sMsg_RefAssistance As String = EgtMsg(91147)
Dim sAssistance As String = String.Empty
GetPrivateProfileString(S_GENERAL, "Assistances", "", sAssistance, GetIniFile)
Dim sItems As String() = sAssistance.Split(","c)
For Each Item As String In sItems
sMsg_RefAssistance &= "" & Item.Trim & " /n"
Next
' 91148=Grazie per la vostra collaborazione.
Dim sMsg_ThankYou As String = EgtMsg(91148)
Dim MyLicWn As New LicenseWindow(Me, sMsg_AssStatus & sMsg_RefAssistance & sMsg_ThankYou, sMsg_Title)
MyLicWn.WindowStartupLocation = WindowStartupLocation.CenterOwner
MyLicWn.Show()
End If
' inizilizzo ' inizilizzo
End Sub End Sub
@@ -995,6 +1055,16 @@ Class MainWindow
' Se già visualizzato errore, lo nascondo ' Se già visualizzato errore, lo nascondo
If m_CurrentProjectPageUC.OutMessageBrd.IsMouseOver Then If m_CurrentProjectPageUC.OutMessageBrd.IsMouseOver Then
m_CurrentProjectPageUC.ClearMessage() m_CurrentProjectPageUC.ClearMessage()
' se è premuto il pulsante Shift allora provvedo ad aprire il file di Log
If Keyboard.Modifiers And ModifierKeys.Shift Then
' Genero file CNC (lancio anche se errore in precedenza)
Dim sTemoDirect As String = GetTempDir() & "\OmagCUTLog.txt"
Try
Process.Start("Notepad.exe", sTemoDirect)
Catch ex As Exception
EgtOutLog(ex.ToString)
End Try
End If
End If End If
' Condizioni che impediscono di clickare fuori dalla calcolatrice o tastiera quando una di queste è aperta ' Condizioni che impediscono di clickare fuori dalla calcolatrice o tastiera quando una di queste è aperta
If EgtWPFLib.EgtCalculator.GetbIsActive Then If EgtWPFLib.EgtCalculator.GetbIsActive Then
@@ -1085,6 +1155,19 @@ Class MainWindow
m_CurrentProjectPageUC.SaveNamedProject() m_CurrentProjectPageUC.SaveNamedProject()
m_CurrentProjectPageUC.SaveProject() m_CurrentProjectPageUC.SaveProject()
End If End If
' Inizio la chiusura del programma (se NUM_OLD verifico di aver terminato il processo DripFeed)
EgtOutLog("Iniziato processo di chiusura programma")
m_IsClosingApplication = If(m_CNCommunication.m_nNCType = 1, 1, 2)
Dim nCount As Integer = 0
While m_IsClosingApplication <> 2
If nCount > 5 Then
Exit While
End If
' verifico che il processo DripFeed sia terminato
EgtOutLog("Stato chiusura programma: " & m_IsClosingApplication.ToString)
Thread.Sleep(100)
nCount += 1
End While
' Uscita ' Uscita
MainWindowExit() MainWindowExit()
End Sub End Sub
@@ -1135,13 +1218,17 @@ Class MainWindow
m_DirectCutPageUC.m_ControlsDirectCutUC.m_GridCut.GridCut_Unloaded(sender, e) m_DirectCutPageUC.m_ControlsDirectCutUC.m_GridCut.GridCut_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.FlatteningCut Case ControlsDirectCutUC.DirectCutPages.FlatteningCut
m_DirectCutPageUC.m_ControlsDirectCutUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e) m_DirectCutPageUC.m_ControlsDirectCutUC.m_FlatteningCut.FlatteningCut_Unloaded(sender, e)
End Select
Select Case m_DirectCutPageUC.m_ControlsDirectCutUC1.m_ActiveDirectCutPage
Case ControlsDirectCutUC.DirectCutPages.CopyTemplate Case ControlsDirectCutUC.DirectCutPages.CopyTemplate
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_CopyTemplate.CopyTemplate_Unloaded(sender, e) m_DirectCutPageUC.m_ControlsDirectCutUC1.m_CopyTemplate.CopyTemplate_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.Polishing Case ControlsDirectCutUC.DirectCutPages.Polishing
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_Polishing.Polishing_Unloaded(sender, e) m_DirectCutPageUC.m_ControlsDirectCutUC1.m_Polishing.Polishing_Unloaded(sender, e)
Case ControlsDirectCutUC.DirectCutPages.SawTest Case ControlsDirectCutUC1.DirectCutPages.SawTest
m_DirectCutPageUC.m_ControlsDirectCutUC1.m_SawTest.SawTest_Unloaded(sender, e) m_DirectCutPageUC.m_ControlsDirectCutUC1.m_SawTest.SawTest_Unloaded(sender, e)
End Select End Select
Return True Return True
End Function End Function
@@ -1201,7 +1288,7 @@ Class MainWindow
Private Sub MainWindow_ContentRendered(sender As Object, e As EventArgs) Handles Me.ContentRendered Private Sub MainWindow_ContentRendered(sender As Object, e As EventArgs) Handles Me.ContentRendered
' Verifico presenza del collegamento al CN ' Verifico presenza del collegamento al CN
m_bNCLink = (GetPrivateProfileInt(S_GENERAL, K_CNLINK, 0, m_sIniFile) <> 0) And m_bNCLink = (GetPrivateProfileInt(S_GENERAL, K_CNLINK, 0, m_sIniFile) <> 0) And
Not GetKeyOption( KEY_OPT.OFFICE_TYPE) Not GetKeyOption(KEY_OPT.OFFICE_TYPE)
m_CNCommunication.CNCommunication_Initialization() m_CNCommunication.CNCommunication_Initialization()
' Se linea di produzione abilitata e collegata, lancio relativo timer ' Se linea di produzione abilitata e collegata, lancio relativo timer
If m_bNCLink And m_CurrentMachine.bProdLine Then If m_bNCLink And m_CurrentMachine.bProdLine Then
@@ -1211,11 +1298,17 @@ Class MainWindow
m_ProdLineTimer.Interval = TimeSpan.FromMilliseconds(2000) m_ProdLineTimer.Interval = TimeSpan.FromMilliseconds(2000)
m_ProdLineTimer.Start() m_ProdLineTimer.Start()
End If End If
' di default attivo la pagina CadCut
If m_OnlyFrame Then
m_ActivePage = MainWindow.Pages.FrameCut
Else
m_ActivePage = MainWindow.Pages.CadCut
End If
' seleziono il tipo di avvio ' seleziono il tipo di avvio
m_CurrentProjectPageUC.StartProgram() m_CurrentProjectPageUC.StartProgram()
' aggiorno la grafica ' aggiorno la grafica
EgtZoom(ZM.ALL, True) EgtZoom(ZM.ALL, True)
End Sub End Sub
Friend Sub EgtWPFInit() Friend Sub EgtWPFInit()
@@ -1247,8 +1340,34 @@ Class MainWindow
Dim bHeadH1 As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL) Dim bHeadH1 As Boolean = (EgtGetHeadId("H1") <> GDB_ID.NULL)
EgtSetCurrentContext(nCurrCtx) EgtSetCurrentContext(nCurrCtx)
' Aggiorno interfaccia ' Aggiorno interfaccia
If m_OnlyFrame Then
If nPrjType = CurrentProjectPageUC.PRJ_TYPE.FLATS And
m_ActivePage <> Pages.RawPart And m_ActivePage <> Pages.DirectCut And m_ActivePage <> Pages.Simulation Then
Dim FrameWnd As New EgtMsgBox(Me, EgtMsg(91141), EgtMsg(91142), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL)
'' Gestione stato FastGrid
'm_CadCutPageUC.m_FastGridSlabManager.OnPreNewProject()
' Cancello progetto salvato con nome da file ini
WritePrivateProfileString(S_GENERAL, K_LASTNAMEPROJ, "", GetIniFile())
' Scelta tavola della macchina
Dim nTabInd As Integer = m_CadCutPageUC.m_ProjectMgr.ChooseTable()
' Creo nuovo progetto
m_CurrentProjectPageUC.NewProject(nTabInd, False)
'' Gestione stato FastGrid
'm_CadCutPageUC.m_FastGridSlabManager.OnPostNewProject()
FrameCutBtn_Click(Nothing, Nothing)
CadCutBtn.IsEnabled = False
Else
FrameCutBtn.IsEnabled = True
CadCutBtn.IsEnabled = False
' Attivo il pulsante FRAME
'FrameCutBtn.IsChecked = True
'CadCutBtn.IsChecked = False
End If
Else
CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES) CadCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FRAMES)
FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso bHeadH1 FrameCutBtn.IsEnabled = (nPrjType <> CurrentProjectPageUC.PRJ_TYPE.FLATS) AndAlso bHeadH1
End If
' DirectCutBtn.IsEnabled = bHeadH1 ' DirectCutBtn.IsEnabled = bHeadH1
End Sub End Sub
@@ -1277,7 +1396,9 @@ Class MainWindow
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjFinished, 1) m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjFinished, 1)
Dim nVarFin As Integer = 0 Dim nVarFin As Integer = 0
For I As Integer = 1 To 4 For I As Integer = 1 To 4
If Not m_CurrentMachine.bDemo Then
System.Threading.Thread.Sleep(50) System.Threading.Thread.Sleep(50)
End If
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
nVarFin = CInt(m_CNCommunication.m_CN.d_DReadELS_value) nVarFin = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
Exit For Exit For
@@ -1290,11 +1411,11 @@ Class MainWindow
' Salvo in INI indice del progetto terminato ' Salvo in INI indice del progetto terminato
WritePrivateProfileString(S_GENERAL, K_LASTPROJFINISHED, nVarFin.ToString("D4"), GetIniFile()) WritePrivateProfileString(S_GENERAL, K_LASTPROJFINISHED, nVarFin.ToString("D4"), GetIniFile())
' Salvo in INI data e ora attuali di termine lavorazione del progetto (solo gli ultimi 10 tramite modulo) ' Salvo in INI data e ora attuali di termine lavorazione del progetto (solo gli ultimi 10 tramite modulo)
Dim sKey As String = K_DATETIMEFINISHED & "." & ( nVarFin Mod 10).ToString() Dim sKey As String = K_DATETIMEFINISHED & "." & (nVarFin Mod 10).ToString()
Dim sDateTime As String = My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH\:mm\:ss") Dim sDateTime As String = My.Computer.Clock.LocalTime.ToString("dd.MM.yyyy HH\:mm\:ss")
WritePrivateProfileString(S_GENERAL, sKey, sDateTime, GetIniFile()) WritePrivateProfileString(S_GENERAL, sKey, sDateTime, GetIniFile())
' Eseguo script ' Eseguo script
ExecFinishedProgScript( nVarFin, sDateTime) ExecFinishedProgScript(nVarFin, sDateTime)
End If End If
End If End If
' Se OmagVIEW blocca, esco (riproverò al prossimo giro) ' Se OmagVIEW blocca, esco (riproverò al prossimo giro)
@@ -1332,14 +1453,16 @@ Class MainWindow
StandardAndSpecialViewFileManagement() StandardAndSpecialViewFileManagement()
' altrimenti modalità custom ' altrimenti modalità custom
Else Else
CustomViewFileManagement( nProjInd) CustomViewFileManagement(nProjInd)
End If End If
' Leggo variabile con indice progetto da copiare per OmagVIEW (standard E80025) ' Leggo variabile con indice progetto da copiare per OmagVIEW (standard E80025)
m_CNCommunication.m_CN.n_DReadELS_handle = 0 m_CNCommunication.m_CN.n_DReadELS_handle = 0
m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjCopy, 1) m_CNCommunication.m_CN.ReadEls_Add_Parameter(m_CurrentMachine.sVarProjCopy, 1)
Dim nVarCopy As Integer = 0 Dim nVarCopy As Integer = 0
For I As Integer = 1 To 10 For I As Integer = 1 To 10
If Not m_CurrentMachine.bDemo Then
System.Threading.Thread.Sleep(50) System.Threading.Thread.Sleep(50)
End If
If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then If m_CNCommunication.m_CN.n_DReadELS_handle = 1 Then
nVarCopy = CInt(m_CNCommunication.m_CN.d_DReadELS_value) nVarCopy = CInt(m_CNCommunication.m_CN.d_DReadELS_value)
Exit For Exit For
@@ -1751,7 +1874,7 @@ Class MainWindow
Return True Return True
End Function End Function
Private Function CustomViewFileManagement( nProjInd As Integer) As Boolean Private Function CustomViewFileManagement(nProjInd As Integer) As Boolean
' Se non esiste file EPL, esco ' Se non esiste file EPL, esco
Dim sSouEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL Dim sSouEplFile As String = m_CurrentMachine.sLineDataDir & "\" & CURR_PROJ_EPL
If Not My.Computer.FileSystem.FileExists(sSouEplFile) Then Return True If Not My.Computer.FileSystem.FileExists(sSouEplFile) Then Return True
@@ -1790,7 +1913,7 @@ Class MainWindow
' Verifico progetto restituito da View ' Verifico progetto restituito da View
If nProjInd = 0 Then nProjInd = nLastCopy If nProjInd = 0 Then nProjInd = nLastCopy
' Leggo variabile con data termine lavorazione ' Leggo variabile con data termine lavorazione
Dim sKey As String = K_DATETIMEFINISHED & "." & ( nProjInd Mod 10).ToString() Dim sKey As String = K_DATETIMEFINISHED & "." & (nProjInd Mod 10).ToString()
GetPrivateProfileString(S_GENERAL, sKey, sDateTime, sDateTime, GetIniFile()) GetPrivateProfileString(S_GENERAL, sKey, sDateTime, sDateTime, GetIniFile())
' Recupero direttorio per pezzi rovinati ' Recupero direttorio per pezzi rovinati
Dim sRuPartsDir As String = GetRuinedPartsDir() Dim sRuPartsDir As String = GetRuinedPartsDir()
@@ -1817,7 +1940,7 @@ Class MainWindow
Return True Return True
End Function End Function
Friend Function ExecSentProgScript( bDirectCut As Boolean, Optional bAlreadySent As Boolean = False) As Boolean Friend Function ExecSentProgScript(bDirectCut As Boolean, Optional bAlreadySent As Boolean = False) As Boolean
' Verifico esistenza script ' Verifico esistenza script
Dim sLuaPath As String = m_CurrentMachine.sMachDir() & "\Scripts\SentProg.lua" Dim sLuaPath As String = m_CurrentMachine.sMachDir() & "\Scripts\SentProg.lua"
If Not My.Computer.FileSystem.FileExists(sLuaPath) Then Return True If Not My.Computer.FileSystem.FileExists(sLuaPath) Then Return True
@@ -1919,15 +2042,15 @@ Class MainWindow
End If End If
' Dichiaro progetto passato da View ' Dichiaro progetto passato da View
If nProjInd = m_CurrentProjectPageUC.GetCurrentProject() Then If nProjInd = m_CurrentProjectPageUC.GetCurrentProject() Then
EgtSetInfo( EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1) EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1)
Else Else
Dim nTmpCtx As Integer = EgtInitContext() Dim nTmpCtx As Integer = EgtInitContext()
If nTmpCtx <> 0 Then If nTmpCtx <> 0 Then
Dim sNgeFile As String = GetSaveDir() & "\" & nProjInd.ToString("D4") & ".nge" Dim sNgeFile As String = GetSaveDir() & "\" & nProjInd.ToString("D4") & ".nge"
EgtOpenFile( sNgeFile) EgtOpenFile(sNgeFile)
EgtSetInfo( EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1) EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_UNLOADSAVED, 1)
EgtSaveFile( sNgeFile, NGE.CMPTEXT) EgtSaveFile(sNgeFile, NGE.CMPTEXT)
EgtDeleteContext( nTmpCtx) EgtDeleteContext(nTmpCtx)
EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) EgtSetCurrentContext(m_CurrentProjectPageUC.CurrentProjectScene.GetCtx())
End If End If
End If End If
@@ -1961,21 +2084,21 @@ Class MainWindow
' Evento che apre AboutBox quando viene clickato il logo ' Evento che apre AboutBox quando viene clickato il logo
Private Sub LogoBrd_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles LogoBrd.MouseDown Private Sub LogoBrd_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles LogoBrd.MouseDown
' Se non premuto Shift -> AboutBox ' Se non premuto Shift -> AboutBox
If ( Keyboard.Modifiers And ModifierKeys.Shift) = 0 Then If (Keyboard.Modifiers And ModifierKeys.Shift) = 0 Then
Dim AboutBox As New AboutBoxWD( Me) Dim AboutBox As New AboutBoxWD(Me)
' Altrimenti lancio cambio macchina (solo uso interno) ' Altrimenti lancio cambio macchina (solo uso interno)
Else Else
If m_ActivePage = Pages.CadCut Or m_ActivePage = Pages.FrameCut Then If m_ActivePage = Pages.CadCut Or m_ActivePage = Pages.FrameCut Then
' Cambio macchina ' Cambio macchina
EgtLuaCreateGlobTable( "CHM") EgtLuaCreateGlobTable("CHM")
EgtLuaExecFile( GetConfigDir() & "\ChangeMachine.lua") EgtLuaExecFile(GetConfigDir() & "\ChangeMachine.lua")
Dim nRestart As Integer = 0 Dim nRestart As Integer = 0
EgtLuaGetGlobIntVar( "CHM.RESTART", nRestart) EgtLuaGetGlobIntVar("CHM.RESTART", nRestart)
EgtLuaResetGlobVar( "CHM") EgtLuaResetGlobVar("CHM")
' Riavvio ' Riavvio
If nRestart = 1 Then If nRestart = 1 Then
Close() Close()
Process.Start( Application.ResourceAssembly.Location) Process.Start(Application.ResourceAssembly.Location)
End If End If
End If End If
End If End If
@@ -1997,6 +2120,7 @@ Class MainWindow
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv) EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv) EgtDeselectObj(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
EgtResetMark(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv) EgtResetMark(m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
m_CadCutPageUC.m_NestPage.m_CurrToolFromSelectedSawCurv = String.Empty
m_CadCutPageUC.m_ProjectMgr.TestBtn.IsChecked = False m_CadCutPageUC.m_ProjectMgr.TestBtn.IsChecked = False
Me.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False Me.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
End Sub End Sub
+3 -3
View File
@@ -22,7 +22,7 @@ Imports System.Windows
#End If #End If
<Assembly: AssemblyCompany("Egalware s.r.l.")> <Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("OmagCUT")> <Assembly: AssemblyProduct("OmagCUT")>
<Assembly: AssemblyCopyright("Copyright © 2015-2023 by Egalware s.r.l.")> <Assembly: AssemblyCopyright("Copyright © 2015-2025 by Egalware s.r.l.")>
<Assembly: AssemblyTrademark("")> <Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)> <Assembly: ComVisible(False)>
@@ -62,5 +62,5 @@ Imports System.Windows
' by using the '*' as shown below: ' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.5.1.2")> <Assembly: AssemblyVersion("2.7.5.1")>
<Assembly: AssemblyFileVersion("2.5.1.2")> <Assembly: AssemblyFileVersion("2.7.5.1")>
+844 -78
View File
File diff suppressed because it is too large Load Diff
+10 -4
View File
@@ -87,6 +87,7 @@ Public Class CN_Siemens
Case 8 ' Modalita Ref Point Case 8 ' Modalita Ref Point
sDBVarPath &= "REF_POINT" sDBVarPath &= "REF_POINT"
End Select End Select
' /plc/"OmagCUT_DB".CTRL.AUTO
DVariables_WriteVariables3(sDBVarPath, 1, 1, 0, 0, "") DVariables_WriteVariables3(sDBVarPath, 1, 1, 0, 0, "")
Return 0 Return 0
Else Else
@@ -132,7 +133,7 @@ Public Class CN_Siemens
Public Overrides Function read_active_mode() As Short Public Overrides Function read_active_mode() As Short
'EgtOutLog("Modo attivo: " & M_MMFiles.SiemensRet.n_param2) 'EgtOutLog("Modo attivo: " & M_MMFiles.SiemensRet.n_param2)
If m_IsSiemensOne Or m_IsActiveModeSubscription Then If m_IsSiemensOne Or m_IsActiveModeSubscription Then
Select Case n_data(3) Select Case n_data(n_index_mode)
Case 1 Case 1
Return 0 Return 0
Case 2 Case 2
@@ -144,7 +145,7 @@ Public Class CN_Siemens
End Select End Select
Else Else
' per verificare che la comunicazione funzioni correttamente ' per verificare che la comunicazione funzioni correttamente
EgtOutLog("Modo -read_active_mode-: " & M_MMFiles.SiemensRet.n_param2.ToString) ' EgtOutLog("Modo -read_active_mode-: " & M_MMFiles.SiemensRet.n_param2.ToString)
Return M_MMFiles.read_active_mode() Return M_MMFiles.read_active_mode()
'Return CShort(M_MMFiles.SiemensRet.n_param2) 'Return CShort(M_MMFiles.SiemensRet.n_param2)
End If End If
@@ -152,7 +153,12 @@ Public Class CN_Siemens
Public Overrides Function Is_G24_active() As Boolean Public Overrides Function Is_G24_active() As Boolean
If m_IsSiemensOne Or m_IsActiveModeSubscription Then
Return b_data(n_index_is_G24_active)
Else
Return M_MMFiles.SiemensRet.b_interf_G24 Return M_MMFiles.SiemensRet.b_interf_G24
End If
End Function End Function
@@ -217,12 +223,12 @@ Public Class CN_Siemens
Public Overrides Sub DVariables_WriteVariables3(VarAddr As String, ParType As Short, nVarValue As Integer, lVarValue As Long, dVarValue As Double, sVarValue As String) Public Overrides Sub DVariables_WriteVariables3(VarAddr As String, ParType As Short, nVarValue As Integer, lVarValue As Long, dVarValue As Double, sVarValue As String)
Dim n_ret As Short = Write_var(VarAddr, ParType, nVarValue, lVarValue, dVarValue, sVarValue) Dim n_ret As Short = Write_var(VarAddr, ParType, nVarValue, lVarValue, dVarValue, sVarValue)
'EgtOutLog("CN SIEMENS Dopo scrittura variabile") 'EgtOutLog("CN SIEMENS Dopo scrittura variabile")
End Sub End Sub
Public Overrides Sub DVariables_Read_Subscription(VarAddr As String, ParType As Short, Index As Integer) Public Overrides Sub DVariables_Read_Subscription(VarAddr As String, ParType As Short, Index As Integer)
' Ricevo il percorso della varibile, il tipo
Dim n_ret As Short = Read_subscription(VarAddr, ParType, Index) Dim n_ret As Short = Read_subscription(VarAddr, ParType, Index)
'EgtOutLog("CN SIEMENS Dopo lettura abbonamento") EgtOutLog(" ABBONAMENTO (Esito: " & n_ret.ToString & ") -> Address: " & VarAddr & ", Type: " & ParType.ToString & ", Index: " & Index.ToString)
End Sub End Sub
' '
+74 -4
View File
@@ -8,7 +8,7 @@ Public MustInherit Class CN_generico
Public Const MAX_VAR As Short = 100 Public Const MAX_VAR As Short = 100
Public Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array Public Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array
Public Const MAX_TOOLS As Short = 100 Public Const MAX_TOOLS As Short = 100
Public Const NUM_DATA = 55 ' Numero di dati del CN (Speed,Feed,...) Public Const NUM_DATA = 58 ' Numero di dati del CN (Speed,Feed,...)
Public m_NewVariable As Boolean = False ' per scrittura delle vairbaili Apllication del PLC Public m_NewVariable As Boolean = False ' per scrittura delle vairbaili Apllication del PLC
@@ -70,8 +70,22 @@ Public MustInherit Class CN_generico
Parking = 52 Parking = 52
EnableZone = 53 EnableZone = 53
EnablePC = 54 EnablePC = 54
nAxes = 55
ResetStatus = 56
CPos = 57
End Enum End Enum
Public Enum Type As Short
TBoolean = 0
TInteger = 1
TLong = 2
TDouble = 3
TString = 4
End Enum
#End Region #End Region
#Region " Struct" #Region " Struct"
@@ -128,6 +142,9 @@ Public MustInherit Class CN_generico
Public d_param1 As Double Public d_param1 As Double
Public sz_string As String ' ( MAX 200 caratteri ) Public sz_string As String ' ( MAX 200 caratteri )
' Indice del vettore n_data associato alla lettura nMode
Public n_index_mode As Integer = 0
Public n_index_is_G24_active As Integer = 0
Public b_data(14) As Boolean Public b_data(14) As Boolean
Public n_data(14) As Int16 Public n_data(14) As Int16
Public l_data(14) As Long Public l_data(14) As Long
@@ -218,10 +235,31 @@ Public MustInherit Class CN_generico
Public bRemote As Boolean Public bRemote As Boolean
' Nuovi di bottoni ------------------------------------------- ' Nuovi di bottoni -------------------------------------------
' gestione speciale asse C
Public bCPos As Boolean = False
Public dCPos As Double
' solo per NumOld
Public bIsDripFeed As Boolean = False
' usato nel FANUC per leggere lo stato macchina se 5 assi attivo
Public b5AxesActive As Boolean
Public nMachineMode As Integer Public nMachineMode As Integer
Public m_szCnDataVar(NUM_DATA - 1) As String Public m_szCnDataVar(NUM_DATA - 1) As String
'
' nuovi dal 29-III-2023 per Fanuc
'
Public n_Base_addr_int_vars As Integer = 59800
Public n_Base_addr_byte_for_bits_vars As Integer = 59820
Public n_num_var_int_to_read As Short = 10
Public n_num_var_byte_for_bits_to_read As Short = 30
Public s_addr_set_nc_mode As String = "D59825"
Public s_addr_feedhold As String = "D59850.6"
'
' Eventi
'
Public Event NewPositionData(ByVal sender As Object) Public Event NewPositionData(ByVal sender As Object)
Public Event NewPosDeltaData(ByVal sender As Object) Public Event NewPosDeltaData(ByVal sender As Object)
Public Event NewVarChanged(ByVal sender As Object) Public Event NewVarChanged(ByVal sender As Object)
@@ -294,8 +332,8 @@ Public MustInherit Class CN_generico
Public MustOverride Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short Public MustOverride Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short
Public MustOverride Function DTool_write_tool(n_tool_number As Short, Length_X As Double, Radius As Double, TipRadius_Z As Double, _ Public MustOverride Function DTool_write_tool(n_tool_number As Short, Length_X As Double, Radius As Double, TipRadius_Z As Double,
DLength_X As Double, DTipRadius_Z As Double, _ DLength_X As Double, DTipRadius_Z As Double,
nDirection As Short, nType As Short, nH As Integer) As Short nDirection As Short, nType As Short, nH As Integer) As Short
Public Overridable Function SetProgramMainOrSub(bMain As Boolean) As Boolean Public Overridable Function SetProgramMainOrSub(bMain As Boolean) As Boolean
@@ -341,4 +379,36 @@ Public MustInherit Class CN_generico
#End Region #End Region
#Region " Nuovi metodi pubblici"
Public Overridable Function NC_read_var_short(VarAddr As String, ByRef value As Short) As Boolean
Return False
End Function
Public Overridable Function NC_read_var_short_range(VarStartAddr As String, VarEndAddr As String, ByRef values() As Short) As Boolean
Return False
End Function
Public Overridable Function NC_write_var_short(VarAddr As String, ByRef value As Short) As Boolean
Return False
End Function
Public Overridable Function NC_read_var_bit(VarAddr As String, ByRef value As Boolean) As Boolean
Return False
End Function
Public Overridable Function NC_write_var_bit(VarAddr As String, ByRef value As Boolean) As Boolean
Return False
End Function
Public Overridable Function NC_pulse_bit(VarAddr As String) As Boolean
Return False
End Function
Public Overridable Function Geppo() As Boolean
Return False
End Function
#End Region
End Class End Class
+1720
View File
File diff suppressed because it is too large Load Diff
+1349
View File
File diff suppressed because it is too large Load Diff
+17 -12
View File
@@ -19,8 +19,8 @@ Module M_MMFiles
#Region " Structures" #Region " Structures"
' Struttura per spedire un "comando" al Siemens
<StructLayout(LayoutKind.Sequential)> _ <StructLayout(LayoutKind.Sequential)>
Structure SiemensSendStruct Structure SiemensSendStruct
Public n_Flag As Integer Public n_Flag As Integer
@@ -46,7 +46,7 @@ Module M_MMFiles
Private SiemensSend As SiemensSendStruct Private SiemensSend As SiemensSendStruct
' Struttura per leggere l'esito di un "comando" al Siemens
<StructLayout(LayoutKind.Sequential)> _ <StructLayout(LayoutKind.Sequential)> _
Structure SiemensRetStruct Structure SiemensRetStruct
@@ -75,6 +75,7 @@ Module M_MMFiles
Public b_is_laser_ON As Boolean Public b_is_laser_ON As Boolean
Public b_is_spindle_ON As Boolean Public b_is_spindle_ON As Boolean
' Vettore assi macchina (file SiemensComm: axes_0_M, axes_0_P)
<MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.R8, SizeConst:=16)> _ <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.R8, SizeConst:=16)> _
Public d_interf_axis_position() As Double Public d_interf_axis_position() As Double
@@ -176,7 +177,7 @@ Module M_MMFiles
#End Region #End Region
#Region " Commands constants" #Region " Commands constants"
' Elenco codici comandi per spedire programma a SiemensComm.exe
Enum CMD As Short Enum CMD As Short
CMD_Download_NC_prog = 1 CMD_Download_NC_prog = 1
@@ -205,6 +206,7 @@ Module M_MMFiles
End Enum End Enum
Friend Enum VarType As Short Friend Enum VarType As Short
TBoolean = 0
TInteger = 1 TInteger = 1
TLong = 2 TLong = 2
TDouble = 3 TDouble = 3
@@ -343,6 +345,9 @@ Module M_MMFiles
Function ActivateProgram(ByVal sz_part_program As String) As Short Function ActivateProgram(ByVal sz_part_program As String) As Short
'EgtOutLog("ActivateProgram start dell'm_mmFiles") 'EgtOutLog("ActivateProgram start dell'm_mmFiles")
EgtOutLog("Flag di comando: " & CMD.CMD_ActivateProgram.ToString)
EgtOutLog("Stringa di comando: " & sz_part_program.ToString)
SiemensSend.n_Command = CMD.CMD_ActivateProgram SiemensSend.n_Command = CMD.CMD_ActivateProgram
SiemensSend.sz_string = sz_part_program SiemensSend.sz_string = sz_part_program
@@ -370,7 +375,8 @@ Module M_MMFiles
SiemensSend.n_Command = CMD.CMD_CycleStart SiemensSend.n_Command = CMD.CMD_CycleStart
execute_command() execute_command()
'EgtOutLog("CycleStart end dell'm_mmFiles") ' Rimango in attesa
EgtOutLog(" → CycleStart")
Return SiemensRet.n_result Return SiemensRet.n_result
End Function End Function
@@ -597,16 +603,15 @@ Module M_MMFiles
'EgtOutLog("Write_Nc_var start dell'm_mmFiles") 'EgtOutLog("Write_Nc_var start dell'm_mmFiles")
SiemensSend.n_Command = CMD.CMD_Read_NC_subscription SiemensSend.n_Command = CMD.CMD_Read_NC_subscription
SiemensSend.sz_string_2 = VarAddr ' indirizzo su CN dell' oggetto da scrivere SiemensSend.sz_string_2 = VarAddr ' indirizzo su CN dell' oggetto da scrivere
EgtOutLog(" → Sottoscrivo lettura di '" & VarAddr & "'")
SiemensSend.n_param1 = Index ' tipo di dato da scrivere SiemensSend.n_param1 = Index ' tipo di dato da scrivere
EgtOutLog(" Indice del vettore associato '" & Index & "'")
SiemensSend.n_param2 = ParType ' tipo di dato da scrivere SiemensSend.n_param2 = ParType ' tipo di dato da scrivere
EgtOutLog(" Indice tipo di variabile '" & ParType & "'")
execute_command() execute_command()
m_MainWindow.m_CNCommunication.m_CN.sz_interf_error_message = SiemensRet.sz_interf_error_message m_MainWindow.m_CNCommunication.m_CN.sz_interf_error_message = SiemensRet.sz_interf_error_message
EgtOutLog(" sz_interf_error_message: " & m_MainWindow.m_CNCommunication.m_CN.sz_interf_error_message)
EgtOutLog("sz_interf_error_message: " & m_MainWindow.m_CNCommunication.m_CN.sz_interf_error_message) EgtOutLog(" n_result: " & SiemensRet.n_result)
EgtOutLog("n_result: " & SiemensRet.n_result)
Return SiemensRet.n_result Return SiemensRet.n_result
End Function End Function
@@ -765,7 +770,7 @@ Module M_MMFiles
End If End If
' copio variabili in abbonamento ' copio variabili in abbonamento
For Index As Integer = 0 To 5 For Index As Integer = 0 To 14
CurrCN.b_data(Index) = SiemensRet.b_data(Index) CurrCN.b_data(Index) = SiemensRet.b_data(Index)
CurrCN.n_data(Index) = SiemensRet.n_data(Index) CurrCN.n_data(Index) = SiemensRet.n_data(Index)
CurrCN.l_data(Index) = SiemensRet.l_data(Index) CurrCN.l_data(Index) = SiemensRet.l_data(Index)
+11 -8
View File
@@ -53,14 +53,14 @@ Namespace Num
Dim WithEvents objDRunTimeSystem As FXServer.DRunTimeSystem Dim WithEvents objDRunTimeSystem As FXServer.DRunTimeSystem
Dim WithEvents objDGroupManager As FXServer.DGroupManager Dim WithEvents objDGroupManager As FXServer.DGroupManager
Dim WithEvents objDReadELS As FXServer.DReadELS Dim WithEvents objDReadELS As FXServer.DReadELS
' questa è classe che serve a scrivere i dati nel PLC ' questa classe che serve a scrivere i dati nel PLC
Dim WithEvents objDPlcVariables As FXServer.DPlcVariables Dim WithEvents objDPlcVariables As FXServer.DPlcVariables
' questa è la classe che serve a scrivere i dati nelle variabili E ' questa la classe che serve a scrivere i dati nelle variabili E
Dim WithEvents objDVariables As FXServer.DVariables Dim WithEvents objDVariables As FXServer.DVariables
Dim WithEvents objDReadTestExectime As FXServer.DReadTestExectime Dim WithEvents objDReadTestExectime As FXServer.DReadTestExectime
Dim WithEvents objDPosition As FXServer.DPosition Dim WithEvents objDPosition As FXServer.DPosition
Dim WithEvents objDNCKParameter As FXServer.DNCKParameter Dim WithEvents objDNCKParameter As FXServer.DNCKParameter
' questa è la classe che serve a scrivere i comandi MDI (come ad esempio le funzioni M) ' questa la classe che serve a scrivere i comandi MDI (come ad esempio le funzioni M)
Dim WithEvents objDMdiCommand As FXServer.DMdiCommand Dim WithEvents objDMdiCommand As FXServer.DMdiCommand
Dim WithEvents objDMainCncData As FXServer.DMainCncData Dim WithEvents objDMainCncData As FXServer.DMainCncData
@@ -458,7 +458,7 @@ Namespace Num
'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.WCNC.Spindle[2].Override") ' segnaposto per la speed override 'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.WCNC.Spindle[2].Override") ' segnaposto per la speed override
'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_Vel_prog") ' FEED 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_Vel_prog") ' FEED
'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabRPM") ' Speed 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabRPM") ' Speed
'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabAmper") ' Ampère = *0.01 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabAmper") ' Ampre = *0.01
' Creo lista nomi variabili PLC da leggere ' Creo lista nomi variabili PLC da leggere
m_nCnDataVarNum = 0 m_nCnDataVarNum = 0
@@ -823,7 +823,7 @@ Namespace Num
' Only for FX Server >= 3.9.0.0 ' Only for FX Server >= 3.9.0.0
' poi in realtà ritorna sempre tipo = -1 per cui è eguale alle altre..... ' poi in realt ritorna sempre tipo = -1 per cui eguale alle altre.....
Private Sub objDReadELS_ValueChanged3(nHandle As Integer, value As Object, DataType As Short, Writable As Short, nerrorCode As Short) Handles objDReadELS.ValueChanged3 Private Sub objDReadELS_ValueChanged3(nHandle As Integer, value As Object, DataType As Short, Writable As Short, nerrorCode As Short) Handles objDReadELS.ValueChanged3
Dim edata_type As eDatatype Dim edata_type As eDatatype
@@ -996,7 +996,7 @@ Namespace Num
d_spindle_eff(0) = CDbl(values(n)) d_spindle_eff(0) = CDbl(values(n))
Case CnData.SpeedOvr ' (5) Potenziom. speed = ... Case CnData.SpeedOvr ' (5) Potenziom. speed = ...
n_spindle_override(0) = CShort(Math.Round((CDbl(values(n)) * 50 / 255) + 50)) n_spindle_override(0) = CShort(Math.Round((CDbl(values(n)) * 50 / 255) + 50))
Case CnData.Power ' (6) Ampère = * 0.01 Case CnData.Power ' (6) Ampre = * 0.01
d_spindle_power = CDbl(CLng(values(n))) * 0.01 d_spindle_power = CDbl(CLng(values(n))) * 0.01
b_spindle_power_changed = True b_spindle_power_changed = True
Case CnData.Spindle ' (7) Stato rotazione mandrino Case CnData.Spindle ' (7) Stato rotazione mandrino
@@ -1095,6 +1095,9 @@ Namespace Num
Case CnData.EnablePC ' (54) Case CnData.EnablePC ' (54)
nEnablePc = CInt(values(n)) nEnablePc = CInt(values(n))
Case CnData.CPos ' (57)
dCPos = CDbl(values(n))
End Select End Select
Next Next
@@ -1701,11 +1704,11 @@ Namespace Num
nTimeOut += 1 nTimeOut += 1
End While End While
If Not bSetModeDone Then If Not bSetModeDone Then
EgtOutLog("Errore cambio modalità in MDI: " & TIMEOUT) EgtOutLog("Errore cambio modalit in MDI: " & TIMEOUT)
Return TIMEOUT 'Errore di timeout Return TIMEOUT 'Errore di timeout
End If End If
If nSetModeResult <> 0 Then If nSetModeResult <> 0 Then
EgtOutLog("Errore 2 cambio modalità in MDI: " & nSetModeResult) EgtOutLog("Errore 2 cambio modalit in MDI: " & nSetModeResult)
End If End If
Return nSetModeResult Return nSetModeResult
+172 -15
View File
@@ -9,12 +9,50 @@ Imports System.Text
Imports System.Windows.Forms Imports System.Windows.Forms
Imports System.Runtime.InteropServices Imports System.Runtime.InteropServices
Imports EgtUILib Imports EgtUILib
Imports System.IO
Imports System.Threading
Imports System.Windows.Threading
Namespace Num Namespace Num
Public Class NumNCOld Public Class NumNCOld
Inherits CN_generico Inherits CN_generico
'Public bIsDripFeed As Boolean = False
' costruisco il riferimento alla pagina principale
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
' costruisco il riferimento alla barra ProjectMng
Private m_ProjectMng As ProjectMgrUC
' Messaggi ricevuti direttamente dal Thread che gestisce la comunicazione DripFeed
Private m_nMsg As Integer = 0
' Colore originale del bottone WorkBtn
Private m_BackgroundOrig As SolidColorBrush
' Timer per la lettura aggiornata dei messaggi in fase di comunicazione DriFeed
Private m_RefreshTimer As New DispatcherTimer
' funzione richiamata ad ogni clik
Private Sub RefreshTimer_tick()
' verifico se ci sono messaggi da stampare (Se n_Msg > 0 è una info, Se n_Msg < 0 è un errore)
If m_nMsg > 0 Then
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
m_MainWindow.m_CurrentProjectPageUC.SetInfoMessage(EgtMsg(m_nMsg))
ElseIf m_nMsg < 0 Then
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
m_MainWindow.m_CurrentProjectPageUC.SetWarningMessage(EgtMsg(Math.Abs(m_nMsg)))
End If
' dopo la stampa del messaggio resetto l'indice
m_nMsg = 0
' se ha terminato la trasmissione DripFeed fermo il timer
If Not bIsDripFeed Then
m_RefreshTimer.Stop()
' reimposto il colore originale del bottone WorkBtn della pagina ProjectMng
If Not IsNothing(m_ProjectMng) Then
m_ProjectMng.WorkBtn.Background = m_BackgroundOrig
End If
End If
End Sub
#Region " Classes" #Region " Classes"
#End Region #End Region
@@ -79,6 +117,10 @@ Public Class NumNCOld
Const TSi = 1, TFi = 2, SPi = 3, THi = 4, INI = 5, TABSYMB = 10, ALLMODULE = 16, CMODULE = 65, TXTFILE = 97 Const TSi = 1, TFi = 2, SPi = 3, THi = 4, INI = 5, TABSYMB = 10, ALLMODULE = 16, CMODULE = 65, TXTFILE = 97
Const IHMFNT = 98, IHMBMP = 99, IHMRSC = 100, IHMINI = 101, IHMTXT = 102, IHMICO = 103, IHMCOD = 104 Const IHMFNT = 98, IHMBMP = 99, IHMRSC = 100, IHMINI = 101, IHMTXT = 102, IHMICO = 103, IHMCOD = 104
' Const DNC_MODE_FIRST = &H3A00, DNC_MODE_CONTINUE = &H3B00, DNC_MODE_ABORT = &H3C00
Const DNC_MODE_FIRST = 0, DNC_MODE_CONTINUE = 1, DNC_MODE_ABORT = 2
Const DNC_IN_PROGRES = &HC8, DNC_RING_BUFFER_FULL = &H7
#End Region #End Region
#Region " Structures" #Region " Structures"
@@ -115,7 +157,7 @@ Public Class NumNCOld
Dim Type As Long Dim Type As Long
End Structure End Structure
<StructLayout(LayoutKind.Explicit)> _ <StructLayout(LayoutKind.Explicit)>
Public Structure tDNC20_ObjectList Public Structure tDNC20_ObjectList
<FieldOffset(0)> Public ElemNum As UInt16 <FieldOffset(0)> Public ElemNum As UInt16
<FieldOffset(2)> Public First As UInt16 <FieldOffset(2)> Public First As UInt16
@@ -123,7 +165,7 @@ Public Class NumNCOld
End Structure End Structure
Public Structure My_data_struct Public Structure My_data_struct
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> _ <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)>
Public data As Byte() Public data As Byte()
End Structure End Structure
@@ -149,6 +191,7 @@ Public Class NumNCOld
Private iFirstVar As UInt16 Private iFirstVar As UInt16
Private n_portNC As Int16 Private n_portNC As Int16
Private n_PPport As Int16
Private Vmminch As Long = 1000 Private Vmminch As Long = 1000
Private NumCifreDecP4 As Long = 1000 Private NumCifreDecP4 As Long = 1000
@@ -209,6 +252,9 @@ Public Class NumNCOld
Declare Function UpLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16 Declare Function UpLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16
Declare Function DownLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16 Declare Function DownLoadFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal filename As String) As Int16
Declare Function DownLoadFileAsyn Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal ringsize As Int32, ByVal filename As String, ByVal Mode As UInt16, ByRef Index As UInt16) As Int16
Declare Function DownLoadPPPFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal ringsize As Int32, ByVal filename As String) As Int16
Declare Function DownLoadPPPFile2 Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32, ByVal ringsize As Int32, ByVal filename As String, ByVal Offset As Int16, ByVal Mode As UInt16, ByRef Index As UInt16) As Int16
Declare Function DncDeleteFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32) As Int16 Declare Function DncDeleteFile Lib "dnc2.dll" (ByVal Port As Int16, ByVal prog As Int32) As Int16
Declare Function DNC20_Position_OM Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal Groupe As Int16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16 Declare Function DNC20_Position_OM Lib "dnc20_2.dll" (ByVal Port As Int16, ByVal Groupe As Int16, ByRef d As My_data_struct, ByVal Mode As UInt16) As Int16
@@ -243,6 +289,7 @@ Public Class NumNCOld
' Stringhe valide : "COM" o "XIP01, 0, 10, 0, 0, 0" ' Stringhe valide : "COM" o "XIP01, 0, 10, 0, 0, 0"
Dim nret As Integer = NC_connect(m_szCnDataVar(CnData.Comm)) Dim nret As Integer = NC_connect(m_szCnDataVar(CnData.Comm))
EgtOutLog(" → Risultatao apertura connessiione: " & nret)
If nret <> 0 Then Return False If nret <> 0 Then Return False
n_state = 2 n_state = 2
@@ -316,6 +363,14 @@ Public Class NumNCOld
EgtOutLog(msga) EgtOutLog(msga)
End If End If
nret = Get_Port(n_PPport)
If nret <> 0 Then
msga = " PP Port not available (Get_Port) : " & nret.ToString
EgtOutLog(msga)
Else
EgtOutLog("PP Port available: " & n_PPport.ToString)
End If
' eventualmente aggiungere apertura porta per PPP ' eventualmente aggiungere apertura porta per PPP
'iport3 = 3 'iport3 = 3
'nret = Get_Port(iport3) 'nret = Get_Port(iport3)
@@ -333,6 +388,7 @@ Public Class NumNCOld
End If End If
Dim nret As Int16 = Free_Port(n_portNC) Dim nret As Int16 = Free_Port(n_portNC)
nret = Free_Port(n_PPport)
global_state = eStateType.NOT_INIT global_state = eStateType.NOT_INIT
@@ -481,6 +537,8 @@ Public Class NumNCOld
If nret <> 0 Then If nret <> 0 Then
EgtOutLog("Error in set_NC_mode(" & n_mode.ToString() & ") : " & nret.ToString()) EgtOutLog("Error in set_NC_mode(" & n_mode.ToString() & ") : " & nret.ToString())
Else
EgtOutLog("set_NC_mode(" & n_mode.ToString() & ") : " & nret.ToString() & " → ok")
End If End If
global_state = eStateType.READY global_state = eStateType.READY
@@ -526,7 +584,6 @@ Public Class NumNCOld
End Function End Function
Function Read_machine_pos() As Int16 Function Read_machine_pos() As Int16
Dim nret As Int16 Dim nret As Int16
Dim i, n As Integer Dim i, n As Integer
@@ -693,7 +750,7 @@ Public Class NumNCOld
' Set DPOsition Mode OP/OM ' Set DPOsition Mode OP/OM
' '
Public Overrides Sub set_OP_OM(n As Short) Public Overrides Sub set_OP_OM(n As Short)
b_OM_pos = ( n = 0) b_OM_pos = (n = 0)
End Sub End Sub
' '
' Read Once position ' Read Once position
@@ -792,33 +849,133 @@ Public Class NumNCOld
Return nret Return nret
End Function End Function
' '
' da PC a CN ' da PC a CN (sincrono)
' '
Public Overrides Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 Public Overrides Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16
' Verifico accessibilità CN ' Verifico accessibilità CN
If VerifyBusy() <> eStateType.READY Then If VerifyBusy() <> eStateType.READY Then
EgtOutLog("Stato CN " & global_state.ToString)
Return global_state Return global_state
End If End If
' Dichiaro CN occupato
global_state = eStateType.BUSY
' Determino numero programma ( %900.0 -> 9000) ' Determino numero programma ( %900.0 -> 9000)
Dim l As Int32 = get_Num_prog_number(sz_NC_filename) Dim l As Int32 = get_Num_prog_number(sz_NC_filename)
' Trasmetto il programma ' verifico la dimensione del file
Dim nRet As Int16 = DownLoadFile(n_portNC, l, sz_PC_filename) Dim myFile As New FileInfo(sz_PC_filename)
' determino dimensione file
Dim sizeInBytes As Long = myFile.Length
EgtOutLog(" --- Dimensione file CadCut " & sizeInBytes.ToString)
' Verifico se dimensione file è maggiore del Buffer
If sizeInBytes > 32000 Then
' Trasmetto il programma (PPPFile2)
EgtOutLog(" --- START DOWNLOAD PPP FILE --- ")
' Imposto la modalità AUTO
set_NC_mode(0)
' Dichiaro CN occupato
global_state = eStateType.BUSY
' Attesa opportuna
System.Threading.Thread.Sleep(1000)
' 90969=Drip feed has been started
m_nMsg = 90969
bIsDripFeed = True
' cambio lo sfondo del pulsante WorkBtn
If Not IsNothing(m_MainWindow.m_FrameCutPageUC) AndAlso Not IsNothing(m_MainWindow.m_FrameCutPageUC.m_ProjectMgr) Then
m_ProjectMng = m_MainWindow.m_FrameCutPageUC.m_ProjectMgr
ElseIf Not IsNothing(m_MainWindow.m_CadCutPageUC) AndAlso Not IsNothing(m_MainWindow.m_CadCutPageUC.m_ProjectMgr) Then
m_ProjectMng = m_MainWindow.m_CadCutPageUC.m_ProjectMgr
End If
If Not IsNothing(m_ProjectMng) Then
m_BackgroundOrig = m_ProjectMng.WorkBtn.Background
Dim MyLinearGradientBrush As LinearGradientBrush = Application.Current.FindResource("OmagCut_GradientYellow")
m_ProjectMng.WorkBtn.Background = MyLinearGradientBrush
End If
' avvio il timer per la lettura dei messaggi, imposto il clock a 1s
AddHandler m_RefreshTimer.Tick, AddressOf RefreshTimer_tick
m_RefreshTimer.Interval = TimeSpan.FromMilliseconds(1000)
m_RefreshTimer.Start()
Dim thread As New Thread(Sub()
Download_Drip_CN_prog(sz_PC_filename, sz_NC_filename)
End Sub)
thread.Start()
Return 1
Else
' Dichiaro CN occupato
global_state = eStateType.BUSY
' Trasmetto il programma (interamente)
Dim nRet As Int16 = DownLoadFile(n_portNC, l, sz_PC_filename)
If nRet <> 0 Then If nRet <> 0 Then
EgtOutLog("Error in Download_NC_prog : " & nRet.ToString()) EgtOutLog("Error in Download_NC_prog : " & nRet.ToString())
End If End If
' Dichiaro CN libero ' Dichiaro CN libero
global_state = eStateType.READY global_state = eStateType.READY
Return nRet
End If
End Function
'
' da PC a CN (asincrono)
'
Private Function Download_Drip_CN_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16
' Determino numero programma ( %900.0 -> 9000)
Dim l As Int32 = get_Num_prog_number(sz_NC_filename)
' Ultimo numero di segmento invaito
Dim i As UInt16
' Invia il primo segmento (dati comunicazione)
EgtOutLog(" -> Invia il primo segmento " & " → PPport: " & n_PPport & " → NC file name: " & sz_PC_filename & " → Dnc Mode: " & DNC_MODE_FIRST)
Dim nRet As Int16 = DownLoadPPPFile2(n_PPport, l, 32768, sz_PC_filename, Nothing, DNC_MODE_FIRST, i)
' Inserisco un tempo di attesa di sicurezza
Thread.Sleep(100)
' Verifico che il primo invio sia andato a buon fine (il CN deve esser in modalità IN_PROGRESS oppure RING_BUFFER_FULL)
If nRet <> DNC_IN_PROGRES And nRet <> DNC_RING_BUFFER_FULL And m_MainWindow.m_IsClosingApplication <> 1 Then
' 90970=Drip feed has been failed (Error)
m_nMsg = -90970
EgtOutLog("Error in Download_NC_prog/DownLoadPPPFile : " & nRet.ToString())
Else
' 90969=Drip feed has been started (Info)
m_nMsg = 90969
' Se il primo invio è andato a buon fine allora invio i segmenti seguenti
While (nRet = DNC_IN_PROGRES Or nRet = DNC_RING_BUFFER_FULL) And m_MainWindow.m_IsClosingApplication <> 1
nRet = DownLoadPPPFile2(n_portNC, l, 32768, sz_PC_filename, Nothing, DNC_MODE_CONTINUE, i)
Thread.Sleep(10)
End While
End If
' Verifico che il processo sia terminato correttamente
If nRet <> 0 Then
' 90971=Drip feed hes been aborted (Error)
If m_nMsg > 0 Then
' se in precedenza non è stato generato un messaggio di errore (m_nMsg = -90970) comunico che il processo è stato interrotto
m_nMsg = -90971
End If
EgtOutLog("Error in Download_NC_prog/DownLoadPPPFile : " & nRet.ToString() & ", DownLoadPPPFile is aborted")
Else
' 90972=Drip feed has been ended (Info)
m_nMsg = 90972
End If
' prima di terminare (a prescinere dall'esito della comunicazione) forzo la terminazione
nRet = DownLoadPPPFile2(n_PPport, l, 32768, sz_PC_filename, Nothing, DNC_MODE_ABORT, i)
' Dichiaro CN libero
global_state = eStateType.READY
bIsDripFeed = False
EgtOutLog("IsDripFeed : " & bIsDripFeed.ToString)
EgtOutLog(" --- END DOWNLOAD PPP FILE --- ")
' se richiesta chiusura del programma, notifico che è stata chiusa correttmanete la comunicazione DripFeed
If m_MainWindow.m_IsClosingApplication = 1 Then
m_MainWindow.m_IsClosingApplication = 2
End If
' chiudo il thread aperto
Return nRet Return nRet
End Function End Function
' '
' da CN a pc ' da CN a pc
' '
@@ -973,7 +1130,7 @@ Public Class NumNCOld
End Function End Function
Public Overrides Function Is_G24_active() As Boolean Public Overrides Function Is_G24_active() As Boolean
Return (( Var6003 And &H2) <> 0) Return ((Var6003 And &H2) <> 0)
End Function End Function
Public Overrides Function get_program_status() As Int16 Public Overrides Function get_program_status() As Int16
@@ -1140,20 +1297,20 @@ Public Class NumNCOld
End Function End Function
Function VerifyBusy() As eStateType Function VerifyBusy() As eStateType
For I As Integer = 0 To 50 For I As Integer = 0 To 150
If global_state <> eStateType.READY Then If global_state <> eStateType.READY Then
System.Threading.Thread.Sleep(SLEEP_TIME) System.Threading.Thread.Sleep(SLEEP_TIME)
Else Else
Exit For Exit For
End If End If
Next Next
EgtOutLog("eStateType: " & global_state.ToString & " -- if eStateType=0 it means READY")
Return global_state Return global_state
End Function End Function
#End Region #End Region
End Class End Class
End Namespace End Namespace
+10794
View File
File diff suppressed because it is too large Load Diff
+105 -8
View File
@@ -115,6 +115,9 @@
<Reference Include="AxInterop.FXLib"> <Reference Include="AxInterop.FXLib">
<HintPath>..\..\EgtProg\OmagCUT\AxInterop.FXLib.dll</HintPath> <HintPath>..\..\EgtProg\OmagCUT\AxInterop.FXLib.dll</HintPath>
</Reference> </Reference>
<Reference Include="DotNetZip">
<HintPath>..\..\EgtProg\OmagCUT\DotNetZip.dll</HintPath>
</Reference>
<Reference Include="EgtPHOTOLib"> <Reference Include="EgtPHOTOLib">
<HintPath>..\..\EgtProg\Dll32\EgtPHOTOLib.dll</HintPath> <HintPath>..\..\EgtProg\Dll32\EgtPHOTOLib.dll</HintPath>
</Reference> </Reference>
@@ -122,11 +125,13 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\DllD32\EgtUILib.dll</HintPath> <HintPath>..\..\EgtProg\DllD32\EgtUILib.dll</HintPath>
</Reference> </Reference>
<Reference Include="EgtWPFLib"> <Reference Include="EgtWPFLib, Version=2.5.2.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\EgtProg\DllD32\EgtWPFLib.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\EgtWPFLib.dll</HintPath>
</Reference> </Reference>
<Reference Include="EgtWPFLib5"> <Reference Include="EgtWPFLib5, Version=2.5.2.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\EgtProg\OmagCUT\EgtWPFLib5.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\EgtWPFLib5.dll</HintPath>
</Reference> </Reference>
<Reference Include="Interop.FXLib"> <Reference Include="Interop.FXLib">
<HintPath>..\..\EgtProg\OmagCUT\Interop.FXLib.dll</HintPath> <HintPath>..\..\EgtProg\OmagCUT\Interop.FXLib.dll</HintPath>
@@ -140,9 +145,6 @@
<HintPath>..\..\EgtProg\OmagCUT\Interop.FXServer.dll</HintPath> <HintPath>..\..\EgtProg\OmagCUT\Interop.FXServer.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="Ionic.Zip">
<HintPath>..\..\EgtProg\OmagCUT\Ionic.Zip.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework.Aero" /> <Reference Include="PresentationFramework.Aero" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"> <Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
@@ -172,9 +174,18 @@
<Compile Include="AboutBox\AboutBoxWD.xaml.vb"> <Compile Include="AboutBox\AboutBoxWD.xaml.vb">
<DependentUpon>AboutBoxWD.xaml</DependentUpon> <DependentUpon>AboutBoxWD.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="CadCuts\ChooseTestToolWD.xaml.vb">
<DependentUpon>ChooseTestToolWD.xaml</DependentUpon>
</Compile>
<Compile Include="CadCuts\ChangeToolWD.xaml.vb">
<DependentUpon>ChangeToolWD.xaml</DependentUpon>
</Compile>
<Compile Include="CadCuts\SelectPartFromFamilyWD.xaml.vb"> <Compile Include="CadCuts\SelectPartFromFamilyWD.xaml.vb">
<DependentUpon>SelectPartFromFamilyWD.xaml</DependentUpon> <DependentUpon>SelectPartFromFamilyWD.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="CadCuts\SelParkIndWD.xaml.vb">
<DependentUpon>SelParkIndWD.xaml</DependentUpon>
</Compile>
<Compile Include="CAM\CamPolishing.vb" /> <Compile Include="CAM\CamPolishing.vb" />
<Compile Include="DirectCuts\ControlsDirectCutUC.xaml.vb"> <Compile Include="DirectCuts\ControlsDirectCutUC.xaml.vb">
<DependentUpon>ControlsDirectCutUC.xaml</DependentUpon> <DependentUpon>ControlsDirectCutUC.xaml</DependentUpon>
@@ -207,6 +218,9 @@
<Compile Include="DrawImport\UnderDrillUC.xaml.vb"> <Compile Include="DrawImport\UnderDrillUC.xaml.vb">
<DependentUpon>UnderDrillUC.xaml</DependentUpon> <DependentUpon>UnderDrillUC.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="LicenseWindow.xaml.vb">
<DependentUpon>LicenseWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Machine\AlarmsPageUC.xaml.vb"> <Compile Include="Machine\AlarmsPageUC.xaml.vb">
<DependentUpon>AlarmsPageUC.xaml</DependentUpon> <DependentUpon>AlarmsPageUC.xaml</DependentUpon>
</Compile> </Compile>
@@ -225,6 +239,9 @@
<Compile Include="Machine\WaterJetPageUC.xaml.vb"> <Compile Include="Machine\WaterJetPageUC.xaml.vb">
<DependentUpon>WaterJetPageUC.xaml</DependentUpon> <DependentUpon>WaterJetPageUC.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="NcComm\fwlib32.vb" />
<Compile Include="NcComm\M_Fanuc.vb" />
<Compile Include="NcComm\M_Fanuc_hi.vb" />
<Compile Include="Project\AddToDataBaseUC.xaml.vb"> <Compile Include="Project\AddToDataBaseUC.xaml.vb">
<DependentUpon>AddToDataBaseUC.xaml</DependentUpon> <DependentUpon>AddToDataBaseUC.xaml</DependentUpon>
</Compile> </Compile>
@@ -240,6 +257,9 @@
<Compile Include="Project\CicloStartWD.xaml.vb"> <Compile Include="Project\CicloStartWD.xaml.vb">
<DependentUpon>CicloStartWD.xaml</DependentUpon> <DependentUpon>CicloStartWD.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="RawPhoto\OtherRefTabWD.xaml.vb">
<DependentUpon>OtherRefTabWD.xaml</DependentUpon>
</Compile>
<Compile Include="RawPhoto\SlabIdWD.xaml.vb"> <Compile Include="RawPhoto\SlabIdWD.xaml.vb">
<DependentUpon>SlabIdWD.xaml</DependentUpon> <DependentUpon>SlabIdWD.xaml</DependentUpon>
</Compile> </Compile>
@@ -433,10 +453,22 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="CadCuts\ChooseTestToolWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CadCuts\ChangeToolWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CadCuts\SelectPartFromFamilyWD.xaml"> <Page Include="CadCuts\SelectPartFromFamilyWD.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="CadCuts\SelParkIndWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DirectCuts\ControlsDirectCutUC.xaml"> <Page Include="DirectCuts\ControlsDirectCutUC.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@@ -477,6 +509,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>XamlIntelliSenseFileGenerator</Generator> <Generator>XamlIntelliSenseFileGenerator</Generator>
</Page> </Page>
<Page Include="LicenseWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Machine\AlarmsPageUC.xaml"> <Page Include="Machine\AlarmsPageUC.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@@ -514,6 +550,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="RawPhoto\OtherRefTabWD.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="RawPhoto\SlabIdWD.xaml"> <Page Include="RawPhoto\SlabIdWD.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@@ -896,7 +936,7 @@
<Resource Include="Resources\MachineStatusImage\Single.png" /> <Resource Include="Resources\MachineStatusImage\Single.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Resource Include="Resources\ToolChangerPos.png" /> <Resource Include="Resources\ToolChangerPos_OLD.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Resource Include="Resources\Manual.png" /> <Resource Include="Resources\Manual.png" />
@@ -1322,6 +1362,63 @@
<ItemGroup> <ItemGroup>
<Resource Include="Resources\NewIcons\Quality.png" /> <Resource Include="Resources\NewIcons\Quality.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="Resources\ToolChangerPos.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\RefTab.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\PhotoHQ.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\icone-tagli-1HQ.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ImportPageListBoxImages\4.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\ImportPageListBoxImages\5.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Muovi-grezzo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\ON_OFF-REG.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Move-Spot-Reg.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Logo-Egalware.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Logo-Egalware %282%29.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Logo-Egalware %283%29.png" />
<Resource Include="Resources\NewIcons\RawHeight.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\LightArrowOff.png" />
<Resource Include="Resources\NewIcons\LightArrowOn.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Park_Busy.png" />
<Resource Include="Resources\NewIcons\icoRight-3D.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\icoLeft-3D.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\icoBack-3D.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\icoFront-3D.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\icoBottom-3D.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagCUT\OmagCUTR32.exe <PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagCUT\OmagCUTR32.exe
+13 -2
View File
@@ -11,7 +11,8 @@
x:Class="OmagCUTDarkDictionary"> x:Class="OmagCUTDarkDictionary">
<!--Importo EgtDictionary--><!-- <!--Importo EgtDictionary-->
<!--
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="EgtDictionary.xaml" /> <ResourceDictionary Source="EgtDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>--> </ResourceDictionary.MergedDictionaries>-->
@@ -32,6 +33,7 @@
<BitmapImage x:Key="AlignPiecesImg" UriSource="Resources/NewIcons/ruota-oggetto-inclinato.png"></BitmapImage> <BitmapImage x:Key="AlignPiecesImg" UriSource="Resources/NewIcons/ruota-oggetto-inclinato.png"></BitmapImage>
<BitmapImage x:Key="BarCodeImg" UriSource="Resources/NewIcons/BarCode.png"></BitmapImage> <BitmapImage x:Key="BarCodeImg" UriSource="Resources/NewIcons/BarCode.png"></BitmapImage>
<BitmapImage x:Key="SlabIdImg" UriSource="Resources/NewIcons/SlabId.png"></BitmapImage> <BitmapImage x:Key="SlabIdImg" UriSource="Resources/NewIcons/SlabId.png"></BitmapImage>
<BitmapImage x:Key="RefTabImg" UriSource="Resources/NewIcons/RefTab.png"></BitmapImage>
<BitmapImage x:Key="BottomLeftImg" UriSource="Resources/NewIcons/1-BottomLeft.png"></BitmapImage> <BitmapImage x:Key="BottomLeftImg" UriSource="Resources/NewIcons/1-BottomLeft.png"></BitmapImage>
<BitmapImage x:Key="BottomRightImg" UriSource="Resources/NewIcons/2-BottomRight.png"></BitmapImage> <BitmapImage x:Key="BottomRightImg" UriSource="Resources/NewIcons/2-BottomRight.png"></BitmapImage>
<BitmapImage x:Key="PartRotOnImg" UriSource="Resources/NewIcons/PartRotOn.png"></BitmapImage> <BitmapImage x:Key="PartRotOnImg" UriSource="Resources/NewIcons/PartRotOn.png"></BitmapImage>
@@ -52,6 +54,11 @@
<BitmapImage x:Key="ImportImg" UriSource="Resources/NewIcons/icone-tagli-6.png"></BitmapImage> <BitmapImage x:Key="ImportImg" UriSource="Resources/NewIcons/icone-tagli-6.png"></BitmapImage>
<BitmapImage x:Key="LeftArrowImg" UriSource="Resources/NewIcons/LeftArrow.png"></BitmapImage> <BitmapImage x:Key="LeftArrowImg" UriSource="Resources/NewIcons/LeftArrow.png"></BitmapImage>
<BitmapImage x:Key="LookFromTOPImg" UriSource="Resources/NewIcons/ico-3D.png"></BitmapImage> <BitmapImage x:Key="LookFromTOPImg" UriSource="Resources/NewIcons/ico-3D.png"></BitmapImage>
<BitmapImage x:Key="LookFromRIGHTImg" UriSource="Resources/NewIcons/icoRight-3D.png"></BitmapImage>
<BitmapImage x:Key="LookFromLEFTImg" UriSource="Resources/NewIcons/icoLeft-3D.png"></BitmapImage>
<BitmapImage x:Key="LookFromBACKImg" UriSource="Resources/NewIcons/icoBack-3D.png"></BitmapImage>
<BitmapImage x:Key="LookFromFRONTImg" UriSource="Resources/NewIcons/icoFront-3D.png"></BitmapImage>
<BitmapImage x:Key="LookFromBOTTOMImg" UriSource="Resources/NewIcons/icoBottom-3D.png"></BitmapImage>
<BitmapImage x:Key="ManualImg" UriSource="Resources/NewIcons/Manual.png"></BitmapImage> <BitmapImage x:Key="ManualImg" UriSource="Resources/NewIcons/Manual.png"></BitmapImage>
<BitmapImage x:Key="MeasureImg" UriSource="Resources/NewIcons/ico-righello.png"></BitmapImage> <BitmapImage x:Key="MeasureImg" UriSource="Resources/NewIcons/ico-righello.png"></BitmapImage>
<BitmapImage x:Key="MHTImg" UriSource="Resources/NewIcons/MHT.png"></BitmapImage> <BitmapImage x:Key="MHTImg" UriSource="Resources/NewIcons/MHT.png"></BitmapImage>
@@ -62,12 +69,13 @@
<BitmapImage x:Key="PhotoImg" UriSource="Resources/NewIcons/icone-tagli-1.png"></BitmapImage> <BitmapImage x:Key="PhotoImg" UriSource="Resources/NewIcons/icone-tagli-1.png"></BitmapImage>
<BitmapImage x:Key="RawPartImg" UriSource="Resources/NewIcons/icone-tagli-5.png"></BitmapImage> <BitmapImage x:Key="RawPartImg" UriSource="Resources/NewIcons/icone-tagli-5.png"></BitmapImage>
<BitmapImage x:Key="RawProbeImg" UriSource="Resources/NewIcons/RawProbe.png"></BitmapImage> <BitmapImage x:Key="RawProbeImg" UriSource="Resources/NewIcons/RawProbe.png"></BitmapImage>
<BitmapImage x:Key="RawHeightImg" UriSource="Resources/NewIcons/RawHeight.png"></BitmapImage>
<BitmapImage x:Key="RightArrowImg" UriSource="Resources/NewIcons/RightArrow.png"></BitmapImage> <BitmapImage x:Key="RightArrowImg" UriSource="Resources/NewIcons/RightArrow.png"></BitmapImage>
<BitmapImage x:Key="SawProbeImg" UriSource="Resources/NewIcons/SawProbe.png"></BitmapImage> <BitmapImage x:Key="SawProbeImg" UriSource="Resources/NewIcons/SawProbe.png"></BitmapImage>
<BitmapImage x:Key="SendImg" UriSource="Resources/NewIcons/Send.png"></BitmapImage> <BitmapImage x:Key="SendImg" UriSource="Resources/NewIcons/Send.png"></BitmapImage>
<BitmapImage x:Key="SplitImg" UriSource="Resources/NewIcons/Split.png"></BitmapImage> <BitmapImage x:Key="SplitImg" UriSource="Resources/NewIcons/Split.png"></BitmapImage>
<!--<BitmapImage x:Key="SplitImg" UriSource="Resources/NewIcons/icone-tagli-2.png"></BitmapImage>--> <!--<BitmapImage x:Key="SplitImg" UriSource="Resources/NewIcons/icone-tagli-2.png"></BitmapImage>-->
<BitmapImage x:Key="ToolChangerPosImg" UriSource="Resources/NewIcons/ToolChengerPos.png"></BitmapImage> <BitmapImage x:Key="ToolChangerPosImg" UriSource="Resources/NewIcons/ToolChangerPos.png"></BitmapImage>
<BitmapImage x:Key="TopLeftImg" UriSource="Resources/NewIcons/4-TopLeft.png"></BitmapImage> <BitmapImage x:Key="TopLeftImg" UriSource="Resources/NewIcons/4-TopLeft.png"></BitmapImage>
<BitmapImage x:Key="TopRightImg" UriSource="Resources/NewIcons/3-TopRight.png"></BitmapImage> <BitmapImage x:Key="TopRightImg" UriSource="Resources/NewIcons/3-TopRight.png"></BitmapImage>
<BitmapImage x:Key="UpArrowImg" UriSource="Resources/NewIcons/UpArrow.png"></BitmapImage> <BitmapImage x:Key="UpArrowImg" UriSource="Resources/NewIcons/UpArrow.png"></BitmapImage>
@@ -236,7 +244,10 @@
<Setter Property="Foreground" Value="White"/> <Setter Property="Foreground" Value="White"/>
<Setter Property="IsReadOnly" Value="True"/> <Setter Property="IsReadOnly" Value="True"/>
<Setter Property="IsEnabled" Value="False"/> <Setter Property="IsEnabled" Value="False"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Template" Value="{StaticResource FixedTextBoxTemplate}" /> <Setter Property="Template" Value="{StaticResource FixedTextBoxTemplate}" />
<Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/>
</Style> </Style>
<Style x:Key="OmagCut_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> <Style x:Key="OmagCut_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
+61
View File
@@ -102,6 +102,7 @@
<BitmapImage x:Key="AlignPiecesImg" UriSource="Resources/AlignPieces.png"></BitmapImage> <BitmapImage x:Key="AlignPiecesImg" UriSource="Resources/AlignPieces.png"></BitmapImage>
<BitmapImage x:Key="BarCodeImg" UriSource="Resources/BarCode.png"></BitmapImage> <BitmapImage x:Key="BarCodeImg" UriSource="Resources/BarCode.png"></BitmapImage>
<BitmapImage x:Key="SlabIdImg" UriSource="Resources/SlabId.png"></BitmapImage> <BitmapImage x:Key="SlabIdImg" UriSource="Resources/SlabId.png"></BitmapImage>
<BitmapImage x:Key="RefTabImg" UriSource="Resources/NewIcons/RefTab.png"></BitmapImage>
<BitmapImage x:Key="BottomLeftImg" UriSource="Resources/BottomLeft.png"></BitmapImage> <BitmapImage x:Key="BottomLeftImg" UriSource="Resources/BottomLeft.png"></BitmapImage>
<BitmapImage x:Key="BottomRightImg" UriSource="Resources/BottomRight.png"></BitmapImage> <BitmapImage x:Key="BottomRightImg" UriSource="Resources/BottomRight.png"></BitmapImage>
<BitmapImage x:Key="PartRotOnImg" UriSource="Resources/PartRotOn.png"></BitmapImage> <BitmapImage x:Key="PartRotOnImg" UriSource="Resources/PartRotOn.png"></BitmapImage>
@@ -132,6 +133,7 @@
<BitmapImage x:Key="PhotoImg" UriSource="Resources/Photo.png"></BitmapImage> <BitmapImage x:Key="PhotoImg" UriSource="Resources/Photo.png"></BitmapImage>
<BitmapImage x:Key="RawPartImg" UriSource="Resources/RawPart.png"></BitmapImage> <BitmapImage x:Key="RawPartImg" UriSource="Resources/RawPart.png"></BitmapImage>
<BitmapImage x:Key="RawProbeImg" UriSource="Resources/RawProbe.png"></BitmapImage> <BitmapImage x:Key="RawProbeImg" UriSource="Resources/RawProbe.png"></BitmapImage>
<BitmapImage x:Key="RawHeightImg" UriSource="Resources/NewIcons/RawHeight.png"></BitmapImage>
<BitmapImage x:Key="RightArrowImg" UriSource="Resources/RightArrow.png"></BitmapImage> <BitmapImage x:Key="RightArrowImg" UriSource="Resources/RightArrow.png"></BitmapImage>
<BitmapImage x:Key="SawProbeImg" UriSource="Resources/SawProbe.png"></BitmapImage> <BitmapImage x:Key="SawProbeImg" UriSource="Resources/SawProbe.png"></BitmapImage>
<BitmapImage x:Key="SendImg" UriSource="Resources/Send.png"></BitmapImage> <BitmapImage x:Key="SendImg" UriSource="Resources/Send.png"></BitmapImage>
@@ -170,6 +172,7 @@
<BitmapImage x:Key="Vein-matchImg" UriSource="Resources/NewIcons/Vein-match.png"></BitmapImage> <BitmapImage x:Key="Vein-matchImg" UriSource="Resources/NewIcons/Vein-match.png"></BitmapImage>
<BitmapImage x:Key="Test-lamaImg" UriSource="Resources/NewIcons/Test-lama.png"></BitmapImage> <BitmapImage x:Key="Test-lamaImg" UriSource="Resources/NewIcons/Test-lama.png"></BitmapImage>
<BitmapImage x:Key="Parcheggia-pezzoImg" UriSource="Resources/NewIcons/Parcheggia-pezzo.png"></BitmapImage> <BitmapImage x:Key="Parcheggia-pezzoImg" UriSource="Resources/NewIcons/Parcheggia-pezzo.png"></BitmapImage>
<BitmapImage x:Key="Muovi-grezzoImg" UriSource="Resources/NewIcons/Muovi-grezzo.png"></BitmapImage>
<BitmapImage x:Key="Inserisci-pezzoImg" UriSource="Resources/NewIcons/Inserisci-pezzo.png"></BitmapImage> <BitmapImage x:Key="Inserisci-pezzoImg" UriSource="Resources/NewIcons/Inserisci-pezzo.png"></BitmapImage>
<BitmapImage x:Key="Elimina-pezzoImg" UriSource="Resources/NewIcons/Elimina-pezzo.png"></BitmapImage> <BitmapImage x:Key="Elimina-pezzoImg" UriSource="Resources/NewIcons/Elimina-pezzo.png"></BitmapImage>
<BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage> <BitmapImage x:Key="Seleziona-tuttoImg" UriSource="Resources/NewIcons/Seleziona-tutto.png"></BitmapImage>
@@ -224,6 +227,7 @@
<BitmapImage x:Key="QualityWJImg" UriSource="Resources/NewIcons/Quality.png"></BitmapImage> <BitmapImage x:Key="QualityWJImg" UriSource="Resources/NewIcons/Quality.png"></BitmapImage>
<BitmapImage x:Key="Fine-Allunga-AccorciaImg" UriSource="Resources/NewIcons/Fine-allunga-o-accorcia.png"></BitmapImage> <BitmapImage x:Key="Fine-Allunga-AccorciaImg" UriSource="Resources/NewIcons/Fine-allunga-o-accorcia.png"></BitmapImage>
<BitmapImage x:Key="ON_OFF-singolo-taglioImg" UriSource="Resources/NewIcons/ON_OFF-singolo-taglio.png"></BitmapImage> <BitmapImage x:Key="ON_OFF-singolo-taglioImg" UriSource="Resources/NewIcons/ON_OFF-singolo-taglio.png"></BitmapImage>
<BitmapImage x:Key="ON_OFF-REGImg" UriSource="Resources/NewIcons/ON_OFF-REG.png"></BitmapImage>
<BitmapImage x:Key="Tutti-ONImg" UriSource="Resources/NewIcons/Tutti-ON.png"></BitmapImage> <BitmapImage x:Key="Tutti-ONImg" UriSource="Resources/NewIcons/Tutti-ON.png"></BitmapImage>
<BitmapImage x:Key="Tutti-OFFImg" UriSource="Resources/NewIcons/Tutti-OFF.png"></BitmapImage> <BitmapImage x:Key="Tutti-OFFImg" UriSource="Resources/NewIcons/Tutti-OFF.png"></BitmapImage>
<BitmapImage x:Key="Inizio-Centro-FuoriImg" UriSource="Resources/NewIcons/Inizio-centro-fuori.png"></BitmapImage> <BitmapImage x:Key="Inizio-Centro-FuoriImg" UriSource="Resources/NewIcons/Inizio-centro-fuori.png"></BitmapImage>
@@ -239,6 +243,7 @@
<BitmapImage x:Key="Tutti-allungaImg" UriSource="Resources/NewIcons/Tutti-allunga.png"></BitmapImage> <BitmapImage x:Key="Tutti-allungaImg" UriSource="Resources/NewIcons/Tutti-allunga.png"></BitmapImage>
<BitmapImage x:Key="Tutti-accorciaImg" UriSource="Resources/NewIcons/Tutti-accorcia.png"></BitmapImage> <BitmapImage x:Key="Tutti-accorciaImg" UriSource="Resources/NewIcons/Tutti-accorcia.png"></BitmapImage>
<BitmapImage x:Key="LastProjImg" UriSource="Resources/NewIcons/PlayStep.png"></BitmapImage> <BitmapImage x:Key="LastProjImg" UriSource="Resources/NewIcons/PlayStep.png"></BitmapImage>
<BitmapImage x:Key="Move-Spot-RegImg" UriSource="Resources/NewIcons/Move-Spot-Reg.png"></BitmapImage>
<FontFamily x:Key="OmagCut_Font">./Resources/Fonts/#Century Gothic</FontFamily> <FontFamily x:Key="OmagCut_Font">./Resources/Fonts/#Century Gothic</FontFamily>
@@ -333,6 +338,35 @@
</Style.Triggers> </Style.Triggers>
</Style> </Style>
<Style x:Key="Color_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="BorderThickness" Value="{StaticResource BorderThickness}"/>
<Setter Property="project:ButtonExtensions.CornerRadius" Value="{StaticResource Button_CornerRadius}"/>
<Setter Property="Margin" Value="{StaticResource Button_MarginThickness}"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="Width" Value="60"/>
<Setter Property="Height" Value="35"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FFB8C3CD"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="OpacityMask" Value="#33FF0000"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" Value="#FFADB2B5"/>
<Setter Property="TextElement.Foreground" Value="#FF838383"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="OmagCut_Button_Wrap" TargetType="{x:Type Button}" BasedOn="{StaticResource OmagCut_Button}"> <Style x:Key="OmagCut_Button_Wrap" TargetType="{x:Type Button}" BasedOn="{StaticResource OmagCut_Button}">
<Setter Property="ContentTemplate" Value="{StaticResource Button_DataTemplate_Wrap}" /> <Setter Property="ContentTemplate" Value="{StaticResource Button_DataTemplate_Wrap}" />
<Setter Property="FontSize" Value="{DynamicResource FontSize_LowerCaseCharacter}" /> <Setter Property="FontSize" Value="{DynamicResource FontSize_LowerCaseCharacter}" />
@@ -790,6 +824,12 @@
<Setter Property="Margin" Value="0,8,6,4"/> <Setter Property="Margin" Value="0,8,6,4"/>
</Style> </Style>
<!--Style di un immagine in al posto di una text-->
<Style x:Key="OmagCut_TextIcon" TargetType="{x:Type Image}" >
<Setter Property="Width" Value="30"/>
<Setter Property="Height" Value="30"/>
</Style>
<!-- ______________________________________________________________________________________________________________________ --> <!-- ______________________________________________________________________________________________________________________ -->
<!-- ScrollBar & it's component (RepeatButton, Thumb) --> <!-- ScrollBar & it's component (RepeatButton, Thumb) -->
@@ -1187,6 +1227,13 @@
<Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/>
</Style> </Style>
<Style x:Key="OmagCut_ErrorTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource OmagCut_UpperCaseCharacterTextBlock}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<!-- ______________________________________________________________________________________________________________________ --> <!-- ______________________________________________________________________________________________________________________ -->
<!--TextBox--> <!--TextBox-->
@@ -1265,7 +1312,10 @@
<Setter Property="Background" Value="White"/> <Setter Property="Background" Value="White"/>
<Setter Property="IsReadOnly" Value="True"/> <Setter Property="IsReadOnly" Value="True"/>
<Setter Property="IsEnabled" Value="False"/> <Setter Property="IsEnabled" Value="False"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Template" Value="{StaticResource FixedTextBoxTemplate}" /> <Setter Property="Template" Value="{StaticResource FixedTextBoxTemplate}" />
<Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/>
</Style> </Style>
<!-- ______________________________________________________________________________________________________________________ --> <!-- ______________________________________________________________________________________________________________________ -->
@@ -2733,4 +2783,15 @@
<!-- *************************************************************************** --> <!-- *************************************************************************** -->
<!--Stile Rettangolo in SplitPaceUC-->
<Style x:Key="Rect_SplitPage" TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{Binding SawColor}"/>
<Setter Property="Stroke" Value="Black"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Height" Value="20"/>
<Setter Property="Width" Value="5"/>
<Setter Property="StrokeThickness" Value="0.5"/>
</Style>
</ResourceDictionary> </ResourceDictionary>
+2
View File
@@ -1304,6 +1304,8 @@ Public Class OptionsPageUC
End If End If
Try Try
Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out) Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out)
zip.AlternateEncodingUsage = Ionic.Zip.ZipOption.Always
zip.AlternateEncoding = Text.Encoding.UTF8
' aggiungo file macchine ' aggiungo file macchine
For Each sMachineName As String In Machines For Each sMachineName As String In Machines
Dim sMachineDir As String = m_MainWindow.GetMachinesRootDir() & "\" & sMachineName Dim sMachineDir As String = m_MainWindow.GetMachinesRootDir() & "\" & sMachineName
+24 -16
View File
@@ -26,7 +26,6 @@
<ColumnDefinition Width="5*"/> <ColumnDefinition Width="5*"/>
<ColumnDefinition Width="7*"/> <ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
</Grid> </Grid>
<!-- Definizione della Grid laterale --> <!-- Definizione della Grid laterale -->
@@ -41,7 +40,7 @@
<Border Name="CurrProjGrid" Style="{DynamicResource OmagCut_MachiningBorder}" Grid.Row="0" > <Border Name="CurrProjGrid" Style="{DynamicResource OmagCut_MachiningBorder}" Grid.Row="0" >
<Grid > <Grid >
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@@ -51,26 +50,28 @@
<RowDefinition Height="0.5*"/> <RowDefinition Height="0.5*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Name="MaterialTxBl" Grid.Row="0" <Image Name="MaterialTxBl"
Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"/> Source="{DynamicResource RawPartImg}" Style="{StaticResource OmagCut_TextIcon}"/>
<EgtWPFLib:EgtTextBox Name="MaterialTxBx" Grid.Column="1" Grid.Row="0" Width="100" <EgtWPFLib:EgtTextBox Name="MaterialTxBx" Grid.Column="1" Grid.Row="0" Margin="0,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}"/> TextAlignment="Right" Style="{DynamicResource OmagCut_FixedTextBox}"/>
<TextBlock Name="HeightTxBl" Grid.Row="1" <Image Name="HeightTxBl" Grid.Row="1"
Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"/> Source="{DynamicResource RawHeightImg}" Style="{StaticResource OmagCut_TextIcon}"/>
<EgtWPFLib:EgtTextBox Name="HeightTxBx" Grid.Column="1" Grid.Row="1" Width="100" <EgtWPFLib:EgtTextBox Name="HeightTxBx" Grid.Column="1" Grid.Row="1" Margin="0,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" TextAlignment="Right"/>
<Image Name="ToolTxBl" Grid.Row="2"
Source="{DynamicResource DB-utensiliImg}" Style="{StaticResource OmagCut_TextIcon}"/>
<EgtWPFLib:EgtTextBox Name="ToolTxBx" Grid.Column="1" Grid.Row="2" Margin="0,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" TextAlignment="Right"/>
<Image Name="MachiningTxBl" Grid.Row="3"
Source="{DynamicResource DB-lavorazioniImg}" Style="{StaticResource OmagCut_TextIcon}"/>
<EgtWPFLib:EgtTextBox Name="MachiningTxBx" Grid.Column="1" Grid.Row="3" Margin="0,0,10,0"
Style="{DynamicResource OmagCut_FixedTextBox}" TextAlignment="Right"/> Style="{DynamicResource OmagCut_FixedTextBox}" TextAlignment="Right"/>
<TextBlock Name="ToolTxBl" Grid.Row="2" Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="ToolTxBx" Grid.Column="1" Grid.Row="2" Width="100"
Style="{DynamicResource OmagCut_FixedTextBox}"/>
<TextBlock Name="MachiningTxBl" Grid.Row="3"
Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="MachiningTxBx" Grid.Column="1" Grid.Row="3" Width="100"
Style="{DynamicResource OmagCut_FixedTextBox}"/>
</Grid> </Grid>
</Border> </Border>
<ProgressBar Name="PhotoProgress" Grid.Row="2" Height="50" Margin="10,0,10,0" Minimum="0" Maximum="100"/> <ProgressBar Name="PhotoProgress" Grid.Row="2" Height="50" Margin="10,0,10,0" Minimum="0" Maximum="100"/>
<Border Name="OutMessageBrd" Grid.Row="2" > <Border Name="OutMessageBrd" Grid.Row="2" >
@@ -80,6 +81,13 @@
</Grid> </Grid>
<Grid Name="SceneHostGrid" Grid.Row="1" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
</Grid>
</Grid> </Grid>
</UserControl> </UserControl>
+154 -51
View File
@@ -1,4 +1,5 @@
Imports System.IO Imports System.IO
Imports System.Security.Cryptography
Imports System.Windows.Interop Imports System.Windows.Interop
Imports EgtUILib Imports EgtUILib
Imports EgtWPFLib Imports EgtWPFLib
@@ -7,8 +8,10 @@ Imports EgtWPFLib5
Public Class CurrentProjectPageUC Public Class CurrentProjectPageUC
' Dichiarazione eventi ' Dichiarazione eventi
Friend Event OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Friend Event OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseDownScene_DoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Friend Event OnMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Friend Event OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Friend Event OnKeyCancelDownScene(sender As Object, e As System.Windows.Forms.KeyEventArgs)
' Riferimento alla MainWindow ' Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
' Dichiarazione delle Page UserControl ' Dichiarazione delle Page UserControl
@@ -17,7 +20,8 @@ Public Class CurrentProjectPageUC
Private m_bFirst As Boolean = True Private m_bFirst As Boolean = True
' Dichiarazione Scene ' Dichiarazione Scene
Friend WithEvents CurrentProjectScene As New Scene Friend WithEvents CurrentProjectScene As New Scene
Private CurrentProjectSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost ' Nella pagina Nest gestisco la dimensione della scena per visualizzare la lista dei parcheggi
Public CurrentProjectSceneHost As New System.Windows.Forms.Integration.WindowsFormsHost
' Identificativo progetto corrente ' Identificativo progetto corrente
Private m_nCurrProj As Integer = 0 Private m_nCurrProj As Integer = 0
' Dati del grezzo ' Dati del grezzo
@@ -53,15 +57,17 @@ Public Class CurrentProjectPageUC
'Assegnazione scena all'host e posizionamento nella PlacePageGrid 'Assegnazione scena all'host e posizionamento nella PlacePageGrid
CurrentProjectSceneHost.Child = CurrentProjectScene CurrentProjectSceneHost.Child = CurrentProjectScene
CurrentProjectSceneHost.SetValue(Grid.ColumnProperty, 1) CurrentProjectSceneHost.SetValue(Grid.ColumnProperty, 0)
CurrentProjectSceneHost.SetValue(Grid.RowProperty, 1) CurrentProjectSceneHost.SetValue(Grid.ColumnSpanProperty, 2)
Me.CurrentProjectPageGrid.Children.Add(CurrentProjectSceneHost) ' CurrentProjectSceneHost.SetValue(Grid.RowProperty, 1)
'Me.CurrentProjectPageGrid.Children.Add(CurrentProjectSceneHost)
Me.SceneHostGrid.Children.Add(CurrentProjectSceneHost)
'Imposto i messaggi letti dal file dei messaggi 'Imposto i messaggi letti dal file dei messaggi
MaterialTxBl.Text = EgtMsg(MSG_RAWPARTPAGEUC + 9) 'Material - Materiale MaterialTxBl.ToolTip = EgtMsg(MSG_RAWPARTPAGEUC + 9) 'Material - Materiale
HeightTxBl.Text = EgtMsg(MSG_RAWPARTPAGEUC + 5) 'Height - Spessore HeightTxBl.ToolTip = EgtMsg(MSG_RAWPARTPAGEUC + 5) 'Height - Spessore
ToolTxBl.Text = EgtMsg(MSG_CADCUTPAGEUC + 11) 'Tool - Utensile ToolTxBl.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 11) 'Tool - Utensile
MachiningTxBl.Text = EgtMsg(MSG_CADCUTPAGEUC + 12) 'Machining - Lavorazione MachiningTxBl.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 12) 'Machining - Lavorazione
End Sub End Sub
@@ -107,7 +113,7 @@ Public Class CurrentProjectPageUC
Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile()) Dim nDepthBits As Integer = GetPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32, m_MainWindow.GetIniFile())
CurrentProjectScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits) CurrentProjectScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
' inizializzo la scena (DB geometrico + visualizzazione) e verifico presenza chiave ' inizializzo la scena (DB geometrico + visualizzazione) e verifico presenza chiave
Dim bProd As Boolean = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_BASE) Dim bProd As Boolean = m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_BASE) Or m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.CUT_LIGHT)
If Not CurrentProjectScene.Init() Or Not bProd Then If Not CurrentProjectScene.Init() Or Not bProd Then
' Rimuovo l'host della scena perchè altrimenti rimarrebbe il buco!! ' Rimuovo l'host della scena perchè altrimenti rimarrebbe il buco!!
Me.CurrentProjectPageGrid.Children.Remove(CurrentProjectSceneHost) Me.CurrentProjectPageGrid.Children.Remove(CurrentProjectSceneHost)
@@ -118,11 +124,25 @@ Public Class CurrentProjectPageUC
#Else #Else
' Se manca la chiave ' Se manca la chiave
If m_MainWindow.GetKeyLevel() = -1 Or m_MainWindow.GetKeyLevel() = -2 Then If m_MainWindow.GetKeyLevel() = -1 Or m_MainWindow.GetKeyLevel() = -2 Then
If Not EgtGetNetHwKey() Then
EgtOutLog("Missing Dongle") EgtOutLog("Missing Dongle")
' Box di avviso chiave mancante : "Chiave non presente. \n Inserirla e riavviare il programma." "Errore" ' Box di avviso chiave mancante : "Chiave non presente. \n Inserirla e riavviare il programma." "Errore"
Dim sText As String = EgtMsg(MSG_MISSINGKEYWD + 2) & vbCrLf & EgtMsg(MSG_MISSINGKEYWD + 3) Dim sText As String = EgtMsg(MSG_MISSINGKEYWD + 2) & vbCrLf & EgtMsg(MSG_MISSINGKEYWD + 3)
Dim sTitle As String = EgtMsg(MSG_MISSINGKEYWD + 1) Dim sTitle As String = EgtMsg(MSG_MISSINGKEYWD + 1)
Dim MissingKeyWnd As New EgtMsgBox(m_MainWindow, EgtMsg(MSG_MISSINGKEYWD + 1), EgtMsg(MSG_MISSINGKEYWD + 2) & " " & EgtMsg(MSG_MISSINGKEYWD + 3), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL) Dim MissingKeyWnd As New EgtMsgBox(m_MainWindow, EgtMsg(MSG_MISSINGKEYWD + 1), EgtMsg(MSG_MISSINGKEYWD + 2) & " " & EgtMsg(MSG_MISSINGKEYWD + 3), EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL)
Else
EgtOutLog("NetDongle is full")
' Box di avviso slot chiave di rete occupato : "Chiave di Rete completamente occupata. \n Uscire dal programma su un altro PC." "Errore"
Dim sText As String = EgtMsg(10110) & vbCrLf & EgtMsg(10111)
Dim sTitle As String = EgtMsg(10101)
Dim MissingKeyWnd As New EgtMsgBox(m_MainWindow, sTitle, sText, EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL)
End If
ElseIf m_MainWindow.GetKeyLevel() = -9 Then
EgtOutLog("Missing Link with Net Dongle")
' Box di avviso chiave mancante : "Collegamento con la Chiave di rete non riuscito. \n Verificare la connessione." "Errore"
Dim sText As String = EgtMsg(10108) & vbCrLf & EgtMsg(10109)
Dim sTitle As String = EgtMsg(10101)
Dim MissingKeyWnd As New EgtMsgBox(m_MainWindow, sTitle, sText, EgtMsgBox.Buttons.OK, EgtMsgBox.Icons.NULL)
' Altrimenti manca la licenza ' Altrimenti manca la licenza
Else Else
EgtOutLog("Problems with Licence") EgtOutLog("Problems with Licence")
@@ -176,7 +196,8 @@ Public Class CurrentProjectPageUC
' Inizializzo gestore lavorazioni ' Inizializzo gestore lavorazioni
EgtInitMachMgr(m_MainWindow.GetMachinesRootDir(), m_MainWindow.GetToolMakersDir()) EgtInitMachMgr(m_MainWindow.GetMachinesRootDir(), m_MainWindow.GetToolMakersDir())
m_bFirst = False m_bFirst = False
Dim bOrtoGraphic As Boolean = (GetPrivateProfileInt(S_SCENE, K_ORTOGRAPHIC, 1, m_MainWindow.GetIniFile()) <> 0)
EgtSetCameraType(bOrtoGraphic, True)
' creo nuovo progetto ' creo nuovo progetto
m_nCurrProj = GetPrivateProfileInt(S_GENERAL, K_LASTPROJ, 0, m_MainWindow.GetIniFile()) m_nCurrProj = GetPrivateProfileInt(S_GENERAL, K_LASTPROJ, 0, m_MainWindow.GetIniFile())
'NewProject() 'NewProject()
@@ -196,9 +217,17 @@ Public Class CurrentProjectPageUC
Else Else
MaterialTxBx.Text = "-----" MaterialTxBx.Text = "-----"
End If End If
' Visualizzo lama e lavorazione correnti
' se macchina waterjet e senza una lama corrente impostata allora visualizzo info WJ
If m_MainWindow.m_CurrentMachine.bWaterJet And String.IsNullOrEmpty(m_MainWindow.m_CurrentMachine.sCurrSaw) Then
ToolTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrWaterJet
MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrWaterJetting
'& "-" & m_MainWindow.m_CurrentMachine.sCurrWaterJettingQuality
Else
ToolTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSaw ToolTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSaw
MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSawing MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSawing
End If
End Sub End Sub
Public Sub StartProgram() Public Sub StartProgram()
@@ -276,7 +305,7 @@ Public Class CurrentProjectPageUC
' se apro la finestra "OpenFolder" l'assegnazione dei Children è fatta direttamente nella classe ProjectMgrUC ' se apro la finestra "OpenFolder" l'assegnazione dei Children è fatta direttamente nella classe ProjectMgrUC
If MyStartLancherWD.CurrSelection <> MODE_LAUNCHER.OpenFolder Then If MyStartLancherWD.CurrSelection <> MODE_LAUNCHER.OpenFolder Then
' Carico sottopagina opportuna ' Carico sottopagina opportuna
If GetProjectType() <> PRJ_TYPE.FRAMES Then If GetProjectType() <> PRJ_TYPE.FRAMES And Not m_MainWindow.m_OnlyFrame Then
CurrentProjectPageGrid.Children.Add(m_MainWindow.m_CadCutPageUC) CurrentProjectPageGrid.Children.Add(m_MainWindow.m_CadCutPageUC)
m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut m_MainWindow.m_ActivePage = MainWindow.Pages.CadCut
m_MainWindow.CadCutBtn.IsChecked = True m_MainWindow.CadCutBtn.IsChecked = True
@@ -314,6 +343,10 @@ Public Class CurrentProjectPageUC
RaiseEvent OnMouseDownScene(sender, e) RaiseEvent OnMouseDownScene(sender, e)
End Sub End Sub
Private Sub OnMyMouseDownScene_DoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles CurrentProjectScene.MouseDoubleClick
RaiseEvent OnMouseDownScene_DoubleClick(sender, e)
End Sub
Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles CurrentProjectScene.OnMouseMoveScene Private Sub OnMyMouseMoveScene(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles CurrentProjectScene.OnMouseMoveScene
RaiseEvent OnMouseMoveScene(sender, e) RaiseEvent OnMouseMoveScene(sender, e)
End Sub End Sub
@@ -326,6 +359,10 @@ Public Class CurrentProjectPageUC
SetInfoMessage(DistToString(vtDist)) SetInfoMessage(DistToString(vtDist))
End Sub End Sub
Private Sub OnMyKeyCancelDownScene(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles CurrentProjectScene.KeyDown
RaiseEvent OnKeyCancelDownScene(sender, e)
End Sub
' Gestione progetto ' Gestione progetto
Friend Sub SetNextProjectIndex() Friend Sub SetNextProjectIndex()
@@ -399,25 +436,44 @@ Public Class CurrentProjectPageUC
' prima di parcheggiare svuoto dei pezzi in parcheggio sia vuota ' prima di parcheggiare svuoto dei pezzi in parcheggio sia vuota
m_MainWindow.m_CadCutPageUC.m_NestPage.ResetListOfGruopInPark() m_MainWindow.m_CadCutPageUC.m_NestPage.ResetListOfGruopInPark()
' Parcheggio correttamente i pezzi precedentemente salvati ' Parcheggio correttamente i pezzi precedentemente salvati
Dim nIdList As New List(Of Integer)
Dim nStatList As New List(Of Integer)
Dim nId2 As Integer = EgtGetFirstPart() Dim nId2 As Integer = EgtGetFirstPart()
While nId2 <> GDB_ID.NULL While nId2 <> GDB_ID.NULL
' Forzo lo stato per avere il giusto calcolo delle posizioni per evitare sovrapposizioni
EgtSetStatus(nId2, GDB_ST.ON_)
' Inserisco correttamente in parcheggio ' Inserisco correttamente in parcheggio
m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nId2, True) m_MainWindow.m_CadCutPageUC.m_NestPage.StoreOnePart(nId2, True)
' Aggiorno lo stato di visualizzazione
Dim nInfoStatus As Integer = 1
' Salvo lo stato (per gestire la navigazione)
EgtGetInfo(nId2, INFO_PARKSTATUS, nInfoStatus)
' Salvo l'Id e lo stato da impostare successivamente al posizionamento
nIdList.Add(nId2)
nStatList.Add(nInfoStatus)
' Notifica a WeinMatching per modifica Id ' Notifica a WeinMatching per modifica Id
VeinMatching.UpdatePart(nId2) VeinMatching.UpdatePart(nId2)
' Passo al pezzo successivo ' Passo al pezzo successivo
nId2 = EgtGetNextPart(nId2) nId2 = EgtGetNextPart(nId2)
End While End While
For IndIndex As Integer = 0 To nIdList.Count - 1
EgtSetStatus(nIdList(IndIndex), nStatList(IndIndex))
Next
' Aggiorno Aree totale e da lavorare dei pezzi ' Aggiorno Aree totale e da lavorare dei pezzi
SetTotalArea(dTotArea) SetTotalArea(dTotArea)
UpdateToProduceArea() UpdateToProduceArea()
ShowAreas() ShowAreas()
' Salvo info di C home
Dim dCHome As Double
EgtGetAxisHomePos("C", dCHome)
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME, DoubleToString(dCHome, 0))
EgtZoom(ZM.ALL)
' Dichiaro progetto non modificato ' Dichiaro progetto non modificato
EgtResetModified() EgtResetModified()
Return True Return True
End Function End Function
Friend Function AdjustAdditionalTable( Optional bForced As Boolean = False) As Boolean Friend Function AdjustAdditionalTable(Optional bForced As Boolean = False) As Boolean
' Recupero altezza sottotavola corrente ' Recupero altezza sottotavola corrente
Dim nFixtId As Integer = EgtGetFirstNameInGroup(EgtGetFirstMachGroup(), MACH_FIXT_GROUP) Dim nFixtId As Integer = EgtGetFirstNameInGroup(EgtGetFirstMachGroup(), MACH_FIXT_GROUP)
Dim nAddTabId As Integer = EgtGetFirstNameInGroup(nFixtId, MACH_ADD_TABLE) Dim nAddTabId As Integer = EgtGetFirstNameInGroup(nFixtId, MACH_ADD_TABLE)
@@ -429,7 +485,10 @@ Public Class CurrentProjectPageUC
End If End If
' Se valore cambiato, aggiorno... ' Se valore cambiato, aggiorno...
Dim dDeltaZ As Double = m_MainWindow.m_CurrentMachine.dAdditionalTable - dCurrAddTab Dim dDeltaZ As Double = m_MainWindow.m_CurrentMachine.dAdditionalTable - dCurrAddTab
If Math.Abs(dDeltaZ) > EPS_SMALL Or bForced Then Dim bChanged As Boolean = (Math.Abs(dDeltaZ) > EPS_SMALL)
If bChanged Or bForced Then
Dim bOldEnMod As Boolean = EgtGetEnableModified()
If Not bChanged AndAlso bOldEnMod Then EgtDisableModified()
AddAdditionalTable() AddAdditionalTable()
UpdateAllRawsZ(dDeltaZ) UpdateAllRawsZ(dDeltaZ)
If GetPhoto() <> GDB_ID.NULL Then If GetPhoto() <> GDB_ID.NULL Then
@@ -439,12 +498,13 @@ Public Class CurrentProjectPageUC
ShowPhoto(False) ShowPhoto(False)
Dim nRawGrpId As Integer = EgtGetFirstRawPart() Dim nRawGrpId As Integer = EgtGetFirstRawPart()
While nRawGrpId <> GDB_ID.NULL While nRawGrpId <> GDB_ID.NULL
Dim nRawSolidId As Integer = EgtGetFirstNameInGroup( nRawGrpId, NAME_RAW_SOLID) Dim nRawSolidId As Integer = EgtGetFirstNameInGroup(nRawGrpId, NAME_RAW_SOLID)
If nRawSolidId <> GDB_ID.NULL Then EgtSetTextureName( nRawSolidId, PHOTO_NAME) If nRawSolidId <> GDB_ID.NULL Then EgtSetTextureName(nRawSolidId, PHOTO_NAME)
nRawGrpId = EgtGetNextRawPart( nRawGrpId) nRawGrpId = EgtGetNextRawPart(nRawGrpId)
End While End While
End If End If
End If End If
If Not bChanged AndAlso bOldEnMod Then EgtEnableModified()
End If End If
Return True Return True
End Function End Function
@@ -464,11 +524,13 @@ Public Class CurrentProjectPageUC
' Nuova geometria ' Nuova geometria
Dim nAddTabId As Integer = GDB_ID.NULL Dim nAddTabId As Integer = GDB_ID.NULL
' Se esiste geometria di riferimento ' Se esiste geometria di riferimento
Dim nRefAddTabId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( EgtGetTableId( MAIN_TAB), "SOLID"), MACH_ADD_TABLE) Dim sNameTable As String = MAIN_TAB
EgtGetTableName(sNameTable)
Dim nRefAddTabId = EgtGetFirstNameInGroup(EgtGetFirstNameInGroup(EgtGetTableId(sNameTable), "SOLID"), MACH_ADD_TABLE)
If nRefAddTabId <> GDB_ID.NULL Then If nRefAddTabId <> GDB_ID.NULL Then
nAddTabId = EgtCopyGlob( nRefAddTabId, nFixtId) nAddTabId = EgtCopyGlob(nRefAddTabId, nFixtId)
EgtSetStatus( nAddTabId, GDB_ST.ON_) EgtSetStatus(nAddTabId, GDB_ST.ON_)
EgtScale( nAddTabId, new Frame3d( ptMin), 1, 1, dAddTable / 10) EgtScale(nAddTabId, New Frame3d(ptMin), 1, 1, dAddTable / 10)
' altrimenti la creo ' altrimenti la creo
Else Else
' Aggiungo sovratavola nel gruppo dei bloccaggi ' Aggiungo sovratavola nel gruppo dei bloccaggi
@@ -480,7 +542,7 @@ Public Class CurrentProjectPageUC
' Sistemazioni finali ' Sistemazioni finali
If nAddTabId = GDB_ID.NULL Then Return False If nAddTabId = GDB_ID.NULL Then Return False
EgtSetName(nAddTabId, MACH_ADD_TABLE) EgtSetName(nAddTabId, MACH_ADD_TABLE)
EgtSetColor(nAddTabId, New Color3d(150, 75, 0, 100), True) If nRefAddTabId = GDB_ID.NULL Then EgtSetColor(nAddTabId, New Color3d(150, 75, 0, 100), True)
EgtSetInfo(nAddTabId, KEY_ADD_TABLE, dAddTable) EgtSetInfo(nAddTabId, KEY_ADD_TABLE, dAddTable)
Return True Return True
End Function End Function
@@ -522,7 +584,24 @@ Public Class CurrentProjectPageUC
m_MainWindow.m_CurrentMachine.dAdditionalTable = dValue m_MainWindow.m_CurrentMachine.dAdditionalTable = dValue
End If End If
' forzo visualizzazione eventuali dati su aree ' forzo visualizzazione eventuali dati su aree
SetAreasStatus( True) SetAreasStatus(True)
' Recupero info C Home
Dim dCHomeCurrMach As Double
Dim dCHomeCurrproj As Double
EgtGetAxisHomePos("C", dCHomeCurrMach)
' Verifico che esista l'info del progetto
If EgtExistsInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME) Then
EgtGetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME, dCHomeCurrproj)
' Se la macchina indicata ha C Home differente allora comunico un errore del progetto
If Math.Abs(dCHomeCurrproj - dCHomeCurrMach) > EPS_ANG_SMALL Then
EgtOutLog(" WARNING -> C axes home project is different from current machine, delta ang C home:" & DoubleToString(dCHomeCurrproj - dCHomeCurrMach, 2))
End If
Else
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME, DoubleToString(dCHomeCurrMach, 0))
End If
'SelParkIndWD.UpdateViewOnParkInd(False)
' Dichiaro progetto non modificato ' Dichiaro progetto non modificato
EgtResetModified() EgtResetModified()
Return True Return True
@@ -547,7 +626,7 @@ Public Class CurrentProjectPageUC
End If End If
' Se la macchina del file è quella impostata ' Se la macchina del file è quella impostata
If String.Compare(sFileMachine, m_MainWindow.GetCurrMachine(), True) = 0 Then If String.Compare(sFileMachine, m_MainWindow.GetCurrMachine(), True) = 0 Then
AdjustAdditionalTable( True) AdjustAdditionalTable(True)
' altrimenti avverto, porto i pezzi in parcheggio e cancello il grezzo ' altrimenti avverto, porto i pezzi in parcheggio e cancello il grezzo
Else Else
' Emetto messaggio ' Emetto messaggio
@@ -698,6 +777,17 @@ Public Class CurrentProjectPageUC
' Notifico a foto il cambio di path ' Notifico a foto il cambio di path
EgtChangePhotoPath(nPhotoId, sNewPhoto) EgtChangePhotoPath(nPhotoId, sNewPhoto)
End If End If
'--------------------------------------------------------------------------------
If GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, m_MainWindow.GetIniFile) <> 0 Then
' Gestione visulizzazione lista pezzi in parcheggio
Dim sNewFileName As String = SelParkIndWD.GetPathCurrProj()
SelParkIndWD.CopyImgSvg(sPath)
SelParkIndWD.sActualProj = String.Empty
SelParkIndWD.CopyImgSvg(sNewFileName)
End If
'--------------------------------------------------------------------------------
' Se assente, inserisco contrassegno di progetto OmagCut valido ' Se assente, inserisco contrassegno di progetto OmagCut valido
AddProjectMark() AddProjectMark()
' Eseguo ' Eseguo
@@ -711,15 +801,15 @@ Public Class CurrentProjectPageUC
Return True Return True
End Function End Function
Friend Function ExportProject( sPath As String) As Boolean Friend Function ExportProject(sPath As String) As Boolean
' Copio eventuale fotografia ' Copio eventuale fotografia
Dim nPhotoId As Integer = GetPhoto() Dim nPhotoId As Integer = GetPhoto()
If nPhotoId <> GDB_ID.NULL Then If nPhotoId <> GDB_ID.NULL Then
' Path originale ' Path originale
Dim sPhoto As String = String.Empty Dim sPhoto As String = String.Empty
EgtGetPhotoPath( nPhotoId, sPhoto) EgtGetPhotoPath(nPhotoId, sPhoto)
' Nuova path ' Nuova path
Dim sNewPhoto As String = Path.ChangeExtension( sPath, Path.GetExtension( sPhoto)) Dim sNewPhoto As String = Path.ChangeExtension(sPath, Path.GetExtension(sPhoto))
' Se diverse, eseguo copia ' Se diverse, eseguo copia
If Not String.Equals(sPhoto, sNewPhoto, StringComparison.InvariantCultureIgnoreCase) Then If Not String.Equals(sPhoto, sNewPhoto, StringComparison.InvariantCultureIgnoreCase) Then
Try Try
@@ -734,7 +824,7 @@ Public Class CurrentProjectPageUC
' Se assente, inserisco contrassegno di progetto OmagCut valido ' Se assente, inserisco contrassegno di progetto OmagCut valido
AddProjectMark() AddProjectMark()
' Eseguo copia ' Eseguo copia
Return SaveFile( sPath) Return SaveFile(sPath)
End Function End Function
Friend Function GetCurrentProject() As Integer Friend Function GetCurrentProject() As Integer
@@ -977,7 +1067,13 @@ Public Class CurrentProjectPageUC
End Sub End Sub
Friend Sub UpdateMachiningTxBx() Friend Sub UpdateMachiningTxBx()
' se macchina waterjet e senza uscita lama allora visualizzo info WJ
If m_MainWindow.m_CurrentMachine.bWaterJet And EgtGetHeadId("H1") = GDB_ID.NULL Then
MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrWaterJetting
'& "-" & m_MainWindow.m_CurrentMachine.sCurrWaterJettingQuality
Else
MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSawing MachiningTxBx.Text = m_MainWindow.m_CurrentMachine.sCurrSawing
End If
End Sub End Sub
' Gestione fotografia della lastra (compreso riconoscimento contorno) ' Gestione fotografia della lastra (compreso riconoscimento contorno)
@@ -1274,23 +1370,23 @@ Public Class CurrentProjectPageUC
' Gestione area pezzi totale e area pezzi da produrre ' Gestione area pezzi totale e area pezzi da produrre
Friend Function SetTotalArea( dTotArea As Double) As Boolean Friend Function SetTotalArea(dTotArea As Double) As Boolean
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
Return EgtSetInfo(nMarkId, INFO_TOTAREA, dTotArea) Return EgtSetInfo(nMarkId, INFO_TOTAREA, dTotArea)
End Function End Function
Friend Function UpdateTotalArea( dNewArea As Double) As Boolean Friend Function UpdateTotalArea(dNewArea As Double) As Boolean
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
Dim dTotArea As Double = 0 Dim dTotArea As Double = 0
EgtGetInfo( nMarkId, INFO_TOTAREA, dTotArea) EgtGetInfo(nMarkId, INFO_TOTAREA, dTotArea)
dTotArea = Math.Max( dTotArea + dNewArea, 0) dTotArea = Math.Max(dTotArea + dNewArea, 0)
Return EgtSetInfo(nMarkId, INFO_TOTAREA, dTotArea) Return EgtSetInfo(nMarkId, INFO_TOTAREA, dTotArea)
End Function End Function
Friend Function GetTotalArea() As Double Friend Function GetTotalArea() As Double
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
Dim dTotArea As Double = 0 Dim dTotArea As Double = 0
EgtGetInfo( nMarkId, INFO_TOTAREA, dTotArea) EgtGetInfo(nMarkId, INFO_TOTAREA, dTotArea)
Return dTotArea Return dTotArea
End Function End Function
@@ -1298,17 +1394,17 @@ Public Class CurrentProjectPageUC
Dim dToProdArea As Double = 0 Dim dToProdArea As Double = 0
' Se programma non ancora inviato al CN, ciclo sui pezzi nella lastra ' Se programma non ancora inviato al CN, ciclo sui pezzi nella lastra
If GetProjectNcProgSent() = 0 Then If GetProjectNcProgSent() = 0 Then
Dim nPartInRawId As Integer = EgtGetFirstPartInRawPart( CamAuto.GetCurrentRaw()) Dim nPartInRawId As Integer = EgtGetFirstPartInRawPart(CamAuto.GetCurrentRaw())
While nPartInRawId <> GDB_ID.NULL While nPartInRawId <> GDB_ID.NULL
dToProdArea += GeomCalc.GetPartArea( nPartInRawId) dToProdArea += GeomCalc.GetPartArea(nPartInRawId)
nPartInRawId = EgtGetNextPartInRawPart( nPartInRawId) nPartInRawId = EgtGetNextPartInRawPart(nPartInRawId)
End While End While
End If End If
' Ciclo sui pezzi in parcheggio ' Ciclo sui pezzi in parcheggio
Dim nPartId As Integer = EgtGetFirstPart() Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL While nPartId <> GDB_ID.NULL
dToProdArea += GeomCalc.GetPartArea( nPartId) dToProdArea += GeomCalc.GetPartArea(nPartId)
nPartId = EgtGetNextPart( nPartId) nPartId = EgtGetNextPart(nPartId)
End While End While
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
Return EgtSetInfo(nMarkId, INFO_TOPRODAREA, dToProdArea) Return EgtSetInfo(nMarkId, INFO_TOPRODAREA, dToProdArea)
@@ -1317,16 +1413,16 @@ Public Class CurrentProjectPageUC
Friend Function GetToProduceArea() As Double Friend Function GetToProduceArea() As Double
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
Dim dToProdArea As Double = 0 Dim dToProdArea As Double = 0
EgtGetInfo( nMarkId, INFO_TOPRODAREA, dToProdArea) EgtGetInfo(nMarkId, INFO_TOPRODAREA, dToProdArea)
Return dToProdArea Return dToProdArea
End Function End Function
Friend Sub ShowAreas() Friend Sub ShowAreas()
' Recupero il gruppo di Mark e lo svuoto ' Recupero il gruppo di Mark e lo svuoto
Dim nMarkId As Integer = AddProjectMark() Dim nMarkId As Integer = AddProjectMark()
EgtEmptyGroup( nMarkId) EgtEmptyGroup(nMarkId)
' Se non sono da visualizzare esco ' Se non sono da visualizzare esco
if GetPrivateProfileInt( S_STATISTICS, K_SHOWAREAS, 0, m_MainWindow.GetMachIniFile()) = 0 Then Return If GetPrivateProfileInt(S_STATISTICS, K_SHOWAREAS, 0, m_MainWindow.GetMachIniFile()) = 0 Then Return
' Recupero dati ' Recupero dati
Dim dTotArea As Double = GetTotalArea() Dim dTotArea As Double = GetTotalArea()
Dim dToProdArea As Double = GetToProduceArea() Dim dToProdArea As Double = GetToProduceArea()
@@ -1338,23 +1434,29 @@ Public Class CurrentProjectPageUC
End If End If
' Scritte ' Scritte
Const TEXT_DIST As Double = 100 Const TEXT_DIST As Double = 100
Dim ptIns As New Point3d( b3Tab.Center().x, b3Tab.Max().y + TEXT_DIST, b3Tab.Max().z) Dim ptIns As New Point3d(b3Tab.Center().x, b3Tab.Max().y + TEXT_DIST, b3Tab.Max().z)
Dim dCoeff As Double = 1.0 / 1000000.0 Dim dCoeff As Double = 1.0 / 1000000.0
Dim sUnit As String = "" Dim sUnit As String = ""
If Not EgtUiUnitsAreMM() Then If Not EgtUiUnitsAreMM() Then
dCoeff = 1.0 / ( 12 * ONEINCH * 12 * ONEINCH) dCoeff = 1.0 / (12 * ONEINCH * 12 * ONEINCH)
sUnit = " ft²" sUnit = " ft²"
End If End If
Dim sText As String = EgtMsg( 90328) & " " & DoubleToString( dTotArea * dCoeff, 3) & sUnit & " " & Dim sText As String = EgtMsg(90328) & " " & DoubleToString(dTotArea * dCoeff, 3) & sUnit & " " &
EgtMsg( 90329) & " " & DoubleToString( dToProdArea * dCoeff, 3) & sUnit EgtMsg(90329) & " " & DoubleToString(dToProdArea * dCoeff, 3) & sUnit
Dim nText As Integer = EgtCreateTextAdv( nMarkId, ptIns, 0, sText, "", 500, False, 100, 1, 0, INS_POS.MC) Dim nText As Integer = EgtCreateTextAdv(nMarkId, ptIns, 0, sText, "", 500, False, 100, 1, 0, INS_POS.MC)
EgtSetColor( nText, New Color3d( 0, 0, 0)) EgtSetColor(nText, New Color3d(0, 0, 0))
End Sub End Sub
Friend Sub SetAreasStatus(bShow As Boolean)
Friend Sub SetAreasStatus( bShow As Boolean)
Dim nMarkId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK) Dim nMarkId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK)
If nMarkId = GDB_ID.NULL Then Return If nMarkId = GDB_ID.NULL Then Return
EgtSetStatus( nMarkId, If( bShow, GDB_ST.ON_, GDB_ST.OFF))
' Disabilito impostazione modificato
Dim bOldEnMod As Boolean = EgtGetEnableModified()
If bOldEnMod Then EgtDisableModified()
' Cambio stato visualizzazione
EgtSetStatus(nMarkId, If(bShow, GDB_ST.ON_, GDB_ST.OFF))
' Se necessario riabilito impostazione modificato
If bOldEnMod Then EgtEnableModified()
End Sub End Sub
' Gestione messaggi in interfaccia ' Gestione messaggi in interfaccia
@@ -1381,7 +1483,8 @@ Public Class CurrentProjectPageUC
Friend Sub ClearMessage() Friend Sub ClearMessage()
OutMessageBrd.Background = Brushes.Transparent OutMessageBrd.Background = Brushes.Transparent
OutMessageBrd.Visibility = Windows.Visibility.Hidden OutMessageTxBl.Text = ""
'OutMessageBrd.Visibility = Windows.Visibility.Hidden
End Sub End Sub
End Class End Class
+7
View File
@@ -30,6 +30,13 @@
</Grid> </Grid>
<Grid Name="SceneHostGrid" Grid.Row="2" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
</Grid>
<TextBlock Name="FilePathTxBl" Grid.Row="0" Foreground="White" Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/> <TextBlock Name="FilePathTxBl" Grid.Row="0" Foreground="White" Style="{DynamicResource OmagCut_LowerCaseCharacterTextBlock}"/>
<Grid Grid.Row="1" Grid.RowSpan="2"> <Grid Grid.Row="1" Grid.RowSpan="2">
+63 -3
View File
@@ -5,6 +5,7 @@ Public Class OpenPageUC
'Riferimento alla MainWindow 'Riferimento alla MainWindow
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_SelParkInd As SelParkIndWD
'Dichiarazione dello UserControl SceneButtons 'Dichiarazione dello UserControl SceneButtons
Private m_SceneButtons As SceneButtonsUC Private m_SceneButtons As SceneButtonsUC
@@ -35,11 +36,12 @@ Public Class OpenPageUC
' Assegnazione scena all'host e posizionamento nella OpenPageGrid ' Assegnazione scena all'host e posizionamento nella OpenPageGrid
OpenSceneHost.Child = OpenScene OpenSceneHost.Child = OpenScene
OpenSceneHost.SetValue(Grid.ColumnProperty, 1) OpenSceneHost.SetValue(Grid.ColumnProperty, 0) '1
OpenSceneHost.SetValue(Grid.RowProperty, 2) OpenSceneHost.SetValue(Grid.RowProperty, 0) ' 2
' OpenSceneHost.SetValue(Grid.RowSpanProperty, 1) ' OpenSceneHost.SetValue(Grid.RowSpanProperty, 1)
OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 2) OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 2)
Me.OpenPageGrid.Children.Add(OpenSceneHost) 'Me.OpenPageGrid.Children.Add(OpenSceneHost)
SceneHostGrid.Children.Add(OpenSceneHost)
' Definizione del collegamento tra ItemList e ListBox1 ' Definizione del collegamento tra ItemList e ListBox1
FileListBox.ItemsSource = m_MainWindow.m_OpenItemList FileListBox.ItemsSource = m_MainWindow.m_OpenItemList
@@ -100,6 +102,10 @@ Public Class OpenPageUC
LoadCurrDir() LoadCurrDir()
m_bFirst = False m_bFirst = False
Else Else
GetPrivateProfileString(S_SLABDXF, K_SLABLAYER, "SlabBoundary", m_sSlabLayer, m_MainWindow.GetIniFile())
GetPrivateProfileString(S_SLABDXF, K_PARTSLAYER, "Counters", m_sPartsLayer, m_MainWindow.GetIniFile())
GetPrivateProfileString(S_SLABDXF, K_SCRAPLAYER, "ReservedAreaBoundary", m_sScrapLayer, m_MainWindow.GetIniFile())
m_dSlabThick = GetPrivateProfileDouble(S_SLABDXF, K_STDTHICK, 20, m_MainWindow.GetIniFile())
EgtSetCurrentContext(OpenScene.GetCtx()) EgtSetCurrentContext(OpenScene.GetCtx())
End If End If
' Pulisco tutto ' Pulisco tutto
@@ -237,6 +243,14 @@ Public Class OpenPageUC
Private Function ClearView() As Boolean Private Function ClearView() As Boolean
' Pulisco il DB geometrico locale ' Pulisco il DB geometrico locale
EgtNewFile() EgtNewFile()
' Elimino elenco dei parcheggi
If Not IsNothing(m_SelParkInd) Then
OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 2)
SceneHostGrid.Children.Remove(m_SelParkInd)
m_SelParkInd = Nothing
End If
' Pulisco la selezione dei dati
SelParkIndWD.sActualProj = String.Empty
' Eseguo zoom ' Eseguo zoom
OpenScene.ZoomAll() OpenScene.ZoomAll()
' Cancello messaggio ' Cancello messaggio
@@ -298,6 +312,24 @@ Public Class OpenPageUC
MessageBrd.Background = Brushes.Tomato MessageBrd.Background = Brushes.Tomato
OkBtn.IsEnabled = False OkBtn.IsEnabled = False
End If End If
' Recupero il percorso del progetto per caricare le immagini
SelParkIndWD.sActualProj = sPath
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd, OpenScene.GetCtx)
If ListParkInd.Count > 2 And GetPrivateProfileInt(S_GENERAL, K_ENABLEDXFPARK, 0, m_MainWindow.GetIniFile) <> 0 Then
m_SelParkInd = New SelParkIndWD(m_MainWindow, OpenScene.GetCtx)
OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 1)
m_SelParkInd.SetValue(Grid.ColumnProperty, 1)
SceneHostGrid.Children.Add(m_SelParkInd)
Else
OpenSceneHost.SetValue(Grid.ColumnSpanProperty, 2)
If Not IsNothing(m_SelParkInd) Then
SceneHostGrid.Children.Remove(m_SelParkInd)
m_SelParkInd = Nothing
End If
End If
' Eseguo zoom ' Eseguo zoom
OpenScene.ZoomAll() OpenScene.ZoomAll()
Return bOk Return bOk
@@ -471,11 +503,21 @@ Public Class OpenPageUC
' Se file dxf devo processarlo opportunamente ' Se file dxf devo processarlo opportunamente
Dim bFileDxf As Boolean = (EgtGetFileType(m_sCurrFile) = FT.DXF) Dim bFileDxf As Boolean = (EgtGetFileType(m_sCurrFile) = FT.DXF)
If bFileDxf Then AdjustSlabDxf() If bFileDxf Then AdjustSlabDxf()
' Istruzioni per chiudere OpenPageUC e aprire currentproject ' Istruzioni per chiudere OpenPageUC e aprire currentproject
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_OpenPage) m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_OpenPage)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
' Lancio caricamento nuovo progetto corrente ' Lancio caricamento nuovo progetto corrente
m_MainWindow.m_CadCutPageUC.m_ProjectMgr.PostLoad(m_sCurrDir, m_sCurrFile) m_MainWindow.m_CadCutPageUC.m_ProjectMgr.PostLoad(m_sCurrDir, m_sCurrFile)
'--------------------------------------------------------------------------------
' Gestione visulizzazione lista pezzi in parcheggio
Dim nProj As Integer = m_MainWindow.m_CurrentProjectPageUC.GetCurrentProject()
Dim sNewFileName As String = m_MainWindow.GetSaveDir() & "\" & Math.Abs(nProj).ToString("D4") & "_ParkInd_"
SelParkIndWD.CopyImgSvg(sNewFileName, OpenScene.GetCtx)
SelParkIndWD.sActualProj = String.Empty
'--------------------------------------------------------------------------------
' Se file dxf ' Se file dxf
If bFileDxf Then If bFileDxf Then
' Applico le lavorazioni ' Applico le lavorazioni
@@ -491,12 +533,30 @@ Public Class OpenPageUC
m_SceneButtons.MeasureBtn.IsChecked = False m_SceneButtons.MeasureBtn.IsChecked = False
' Istruzioni per chiudere OpenPageUC e aprire currentproject e cadcut page ' Istruzioni per chiudere OpenPageUC e aprire currentproject e cadcut page
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_OpenPage) m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_OpenPage)
If m_MainWindow.m_PrevActivePage = MainWindow.Pages.CadCut Then
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
If Not m_MainWindow.CadCutBtn.IsChecked Then
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_CadCutPageUC)
m_MainWindow.CadCutBtn.IsChecked = True
End If
ElseIf m_MainWindow.m_PrevActivePage = MainWindow.Pages.FrameCut Then
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
If Not m_MainWindow.FrameCutBtn.IsChecked Then
m_MainWindow.m_CurrentProjectPageUC.CurrentProjectPageGrid.Children.Add(m_MainWindow.m_FrameCutPageUC)
m_MainWindow.FrameCutBtn.IsChecked = True
End If
End If
' Non modifico progetto corrente ' Non modifico progetto corrente
m_MainWindow.m_ActivePage = m_MainWindow.m_PrevActivePage m_MainWindow.m_ActivePage = m_MainWindow.m_PrevActivePage
End Sub End Sub
Private Sub OpenPage_Unloaded(sender As Object, e As RoutedEventArgs) Private Sub OpenPage_Unloaded(sender As Object, e As RoutedEventArgs)
If Not IsNothing(m_SelParkInd) Then
SceneHostGrid.Children.Remove(m_SelParkInd)
m_SelParkInd = Nothing
End If
' resetto il nome del progetto corrente
SelParkIndWD.sActualProj = String.Empty
End Sub End Sub
End Class End Class
+21
View File
@@ -43,8 +43,29 @@
<ToggleButton Name="RegisterBtn" <ToggleButton Name="RegisterBtn"
Style="{DynamicResource OmagCut_YellowToggleButton}"></ToggleButton> Style="{DynamicResource OmagCut_YellowToggleButton}"></ToggleButton>
<Button Name="ResetCutBtn" <Button Name="ResetCutBtn"
Style="{DynamicResource OmagCut_YellowTextButton}"></Button> Style="{DynamicResource OmagCut_YellowTextButton}"></Button>
<Popup Name="ResetCutPopUp"
IsOpen="False"
AllowsTransparency="False"
PopupAnimation="Scroll"
StaysOpen="False"
Placement="Top"
PlacementTarget="{Binding ElementName=ResetCutBtn}">
<WrapPanel Orientation="Vertical"
Background="{DynamicResource OmagCut_Gray}">
<Button x:Name="ResetCut1Btn"
Width ="78" Height="78"
Style="{DynamicResource OmagCut_YellowTextButton}"></Button>
<Button x:Name="ResetCut2Btn"
Width ="78" Height="78"
Style="{DynamicResource OmagCut_YellowTextButton}"></Button>
</WrapPanel>
</Popup>
<!--Abilito la selezione delle linee da disegno--> <!--Abilito la selezione delle linee da disegno-->
<ToggleButton Name="TestBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}"> <ToggleButton Name="TestBtn" Style="{DynamicResource OmagCut_YellowIconToggleButton}">
<Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource Test-lamaImg}" Style="{DynamicResource OmagCut_ButtonIcon}"/>
+450 -31
View File
@@ -1,4 +1,7 @@
Imports System.IO Imports System.ComponentModel
Imports System.Drawing
Imports System.IO
Imports System.Windows.Forms.Integration
Imports EgtUILib Imports EgtUILib
Imports EgtWPFLib Imports EgtWPFLib
@@ -23,6 +26,8 @@ Public Class ProjectMgrUC
RegisterBtn.Content = "REG" 'Shape Registration RegisterBtn.Content = "REG" 'Shape Registration
ResetCutBtn.Content = EgtMsg(MSG_NESTPAGEUC + 6) 'Reset ResetCutBtn.Content = EgtMsg(MSG_NESTPAGEUC + 6) 'Reset
ResetCut2Btn.Content = EgtMsg(91024) 'Reset lavorazioni
ResetCut1Btn.Content = EgtMsg(91025) 'Aggiorna feed/speed
SimulateBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1) 'Simulate - Simula SimulateBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 1) 'Simulate - Simula
If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then If m_MainWindow.GetKeyOption(MainWindow.KEY_OPT.OFFICE_TYPE) Then
WorkBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 10) 'Export - Esporta WorkBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 10) 'Export - Esporta
@@ -30,6 +35,7 @@ Public Class ProjectMgrUC
WorkBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 2) 'Work - Lavora WorkBtn.ToolTip = EgtMsg(MSG_CADCUTPAGEUC + 2) 'Work - Lavora
End If End If
TestBtn.ToolTip = EgtMsg(90255) 'Test TestBtn.ToolTip = EgtMsg(90255) 'Test
ResetCutBtn.ToolTip = "Reset Cuts" & vbCrLf & "Other Reset (Shift)"
End Sub End Sub
Private Sub ProjectMgrUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Private Sub ProjectMgrUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
@@ -95,11 +101,42 @@ Public Class ProjectMgrUC
End If End If
' Scelta tavola della macchina ' Scelta tavola della macchina
Dim nTabInd As Integer = ChooseTable() Dim nTabInd As Integer = ChooseTable()
' Creo una copia di tutte le immagini usata nella lista dei parcheggi
Dim ListParkInd As New List(Of ParkInd)
SelParkIndWD.LoadParkInd(ListParkInd)
' Creo nuovo progetto ' Creo nuovo progetto
m_CurrProjPage.NewProject(nTabInd, bRetainParkedParts) m_CurrProjPage.NewProject(nTabInd, bRetainParkedParts)
' Gestione visulizzazione lista pezzi in parcheggio
m_MainWindow.m_CadCutPageUC.m_NestPage.ReloadListParkInd()
Dim sNewFileName As String = SelParkIndWD.GetPathCurrProj()
SelParkIndWD.CopyImgSvg(sNewFileName)
'Dim Extension As String = ".svg"
'If Not MainWindow.m_bShowSVGParkInd Then Extension = ".png"
'For Each ItemParkInd As ParkInd In ListParkInd
' If ItemParkInd.Ind <> 0 And ItemParkInd.Ind <> 999 And ItemParkInd.nPartInPark > 0 Then
' Try
' Dim sNewFile As String = sNewFileName & ItemParkInd.Ind.ToString & Extension
' If MainWindow.m_bShowSVGParkInd Then
' WriteMyXML(sNewFile, ItemParkInd.LocalMyCanvas)
' Else
' If File.Exists(sNewFile) Then
' File.Delete(sNewFile)
' End If
' File.Copy(If(Extension = ".svg", ItemParkInd.Svg, ItemParkInd.Img), sNewFile)
' End If
' Catch ex As Exception
' EgtOutLog("Copia immagine " & If(Extension = ".svg", ItemParkInd.Svg, ItemParkInd.Img) & " di ParkInd non roiscita")
' End Try
' End If
'Next
m_MainWindow.m_CadCutPageUC.m_NestPage.ReloadListParkInd()
' Gestione stato FastGrid ' Gestione stato FastGrid
m_MainWindow.m_CadCutPageUC.m_FastGridSlabManager.OnPostNewProject() m_MainWindow.m_CadCutPageUC.m_FastGridSlabManager.OnPostNewProject()
EgtZoom(ZM.ALL)
End Sub End Sub
Friend Function ChooseTable() As Integer Friend Function ChooseTable() As Integer
@@ -230,6 +267,9 @@ Public Class ProjectMgrUC
If m_MainWindow.m_ActivePage = MainWindow.Pages.FrameCut Then If m_MainWindow.m_ActivePage = MainWindow.Pages.FrameCut Then
ShowAllCurrPhaseMachinings() ShowAllCurrPhaseMachinings()
End If End If
'SelParkIndWD.UpdateViewOnParkInd(False)
EgtDraw() EgtDraw()
End Sub End Sub
@@ -249,6 +289,25 @@ Public Class ProjectMgrUC
End Sub End Sub
Private Sub ResetCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles ResetCutBtn.Click Private Sub ResetCutBtn_Click(sender As Object, e As RoutedEventArgs) Handles ResetCutBtn.Click
If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then
If ResetCutPopUp.IsOpen Then
ResetCutPopUp.IsOpen = False
Else
ResetCutPopUp.IsOpen = True
End If
Else
ResetCut3Btn_Click()
End If
End Sub
' Reimposto le feed di tutte le lavorazioni
Private Sub ResetCut1Btn_Click(sender As Object, e As RoutedEventArgs) Handles ResetCut1Btn.Click
' eseguo il ricalcolo delle sole FEED di lavorazione
UpdateFeedAllMachining()
End Sub
' Reimposto le lavorazioni di default e ripristino i parametri
Private Sub ResetCut2Btn_Click(sender As Object, e As RoutedEventArgs) Handles ResetCut2Btn.Click
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx()) EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Cancello eventuali messaggi ' Cancello eventuali messaggi
m_CurrProjPage.ClearMessage() m_CurrProjPage.ClearMessage()
@@ -258,10 +317,51 @@ Public Class ProjectMgrUC
ResetAllStartCurv() ResetAllStartCurv()
' cancello tutti i ponticelli disegnati ' cancello tutti i ponticelli disegnati
ResetAllBRidges() ResetAllBRidges()
' cancella tutti i tagli di separazione inseriti in OFFICE
ResetAllSplitCut()
' assegno la lavorazione corrente per i tagli di lama inclinati (solo se specificato nella ComboBox della ChooseMachinig)
RestoreDef_Machinig(True)
' assegno la lavorazione corrente per i tagli verticali
RestoreDef_Machinig(False)
' Ricalcolo tutte le lavorazioni ' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0 Dim nWarn As Integer = 0
ResetAllMachinings(nWarn) ResetAllMachinings(nWarn)
If nWarn = 1 Then m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_SPLITPAGEUC + 11)) ' Lama troppo grande per utilizzo ventosa If nWarn = 1 Then m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_SPLITPAGEUC + 11)) ' Lama troppo grande per utilizzo ventosa
' Se eistono elimino i grezzi delle fasi che non contengono lavorazioni
ResetAllRawPart()
' Aggiorno Info C Home
Dim dCHome As Double
EgtGetAxisHomePos("C", dCHome)
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME, DoubleToString(dCHome, 0))
' Aggiorno visualizzazione
EgtDraw()
End Sub
' Resetta i valori dei parametri (ma non le lavorazioni)
Private Sub ResetCut3Btn_Click()
EgtSetCurrentContext(m_CurrProjPage.CurrentProjectScene.GetCtx())
' Cancello eventuali messaggi
m_CurrProjPage.ClearMessage()
' cancello tutti i tagli di separazione (Waterjet)
ResetAllSplitCurv()
' cancello tutti i punti di inizio (Waterjet)
ResetAllStartCurv()
' cancello tutti i ponticelli disegnati
ResetAllBRidges()
' cancella tutti i tagli di separazione inseriti in OFFICE
ResetAllSplitCut()
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
If nWarn = 1 Then m_CurrProjPage.SetWarningMessage(EgtMsg(MSG_SPLITPAGEUC + 11)) ' Lama troppo grande per utilizzo ventosa
' Se eistono elimino i grezzi delle fasi che non contengono lavorazioni
ResetAllRawPart()
' Aggiorno Info C Home
Dim dCHome As Double
EgtGetAxisHomePos("C", dCHome)
EgtSetInfo(EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK), INFO_CAXESHOME, DoubleToString(dCHome, 0))
' Aggiorno visualizzazione ' Aggiorno visualizzazione
EgtDraw() EgtDraw()
End Sub End Sub
@@ -298,47 +398,117 @@ Public Class ProjectMgrUC
Dim m_ptRawMax, m_ptRawMin As Point3d Dim m_ptRawMax, m_ptRawMin As Point3d
If Not GetRawBox(m_ptRawMin, m_ptRawMax) Then Return If Not GetRawBox(m_ptRawMin, m_ptRawMax) Then Return
Dim dRawHeight As Double = m_ptRawMax.z - m_ptRawMin.z Dim dRawHeight As Double = m_ptRawMax.z - m_ptRawMin.z
' Recupero spessore lama corrente ' Recupero spessore lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw Dim TestToolWD As New ChooseTestToolWD(m_MainWindow)
EgtTdbSetCurrTool(sSaw) TestToolWD.ShowDialog()
If Not TestToolWD.DialogResult Then Return
Dim CurrTestTool As TestTool = TestToolWD.GetSelectedTool
'Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
'EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0 Dim dThick As Double = 0
Dim dHeight As Double = 0
If CurrTestTool.ToolIsSaw Then
' Spessore LAMA
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick) EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
Dim dDiam As Double = 0 ' Diametro
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dDiam) EgtTdbGetCurrToolParam(MCH_TP.DIAM, dHeight)
' Raggio lama
dHeight = dHeight / 2
ElseIf CurrTestTool.ToolIsLaser Then
' Raggio
dThick = 0
dHeight = 0
Else
' Diametro FRESA/FORETTO (l'altezza non serve: posizione calcolata tiene conto del Tip Tool)
EgtTdbGetCurrToolParam(MCH_TP.DIAM, dThick)
' Raggio
dThick = dThick / 2
End If
'recupero il lato selezionato 'recupero il lato selezionato
Dim nIdSelected As Integer = m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv Dim nIdSelected As Integer = m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv
If nIdSelected = -1 Then Return If nIdSelected = -1 Then Return
' recupero gli estremi del latovda tagliare ' recupero il vettore nel punto medio dell'entità
Dim ptStart As Point3d Dim vtDirLine As Vector3d
EgtStartPoint(nIdSelected, GDB_ID.ROOT, ptStart) EgtMidVector(nIdSelected, GDB_ID.ROOT, vtDirLine)
Dim ptEnd As Point3d
EgtEndPoint(nIdSelected, GDB_ID.ROOT, ptEnd) ' calcolo il versore della linea di taglio
Dim vtDirLine As Vector3d = ptEnd - ptStart
' calcolo il versore perpendicolare alla linea di taglio (diretto verso l'interno del pezzo)
Dim vtDirT As Vector3d = vtDirLine Dim vtDirT As Vector3d = vtDirLine
vtDirT.Normalize() vtDirT.Normalize()
' calcolo la direzione di offset da applicare all'utensile
Dim vtOffset As New Vector3d(vtDirT.x, vtDirT.y, vtDirT.z)
vtOffset.Rotate(Vector3d.Z_AX, 90)
If CurrTestTool.ToolIsSaw Then
' calcolo il versore perpendicolare alla linea di taglio (diretto verso l'interno del pezzo)
vtDirT.Rotate(Vector3d.Z_AX, 90) vtDirT.Rotate(Vector3d.Z_AX, 90)
Else
' calcolo il versore perpendicolare alla linea di taglio (diretto verso l'interno del pezzo)
vtDirT.Rotate(Vector3d.Z_AX, 90)
' calcolo il versore perpendicolare al piano di taglio (diretto verso l'interno dell'utensile)
vtDirT.Rotate(vtDirLine, 90)
End If
' Calcolo punto di posizionamemto (punto medio) ' Calcolo punto di posizionamemto (punto medio)
Dim ptMid, m_ptTabOri As Point3d Dim ptMid, m_ptTabOri As Point3d
If Not EgtGetTableRef(1, m_ptTabOri) Then Return If Not EgtGetTableRef(1, m_ptTabOri) Then Return
ptMid.x = (ptEnd.x + ptStart.x) / 2 ' recupero il punto medio della curva
ptMid.y = (ptEnd.y + ptStart.y) / 2 EgtMidPoint(nIdSelected, GDB_ID.ROOT, ptMid)
ptMid.z = (ptEnd.z + ptStart.z) / 2 + dDiam / 2 ptMid.z = m_ptTabOri.z + CamAuto.GetRawHeight() + dHeight + m_MainWindow.m_CurrentMachine.dAdditionalTable
ptMid -= vtDirT * dThick ' Offset dovuto allo spessore Utensile
ptMid -= vtOffset * dThick
'--------------------------- Imposto la posizione della macchina ---------------------------- '--------------------------- Imposto la posizione della macchina ----------------------------
' Recupero la posizione macchina ' Recupero la posizione macchina
Dim dL1, dL2, dL3, dR1, dR2 As Double Dim dL1, dL2, dL3, dR1, dR2 As Double
If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return If Not m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2) Then Return
' Imposto la lama corrente
If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return ' Imposto la lama corrente, preso dalla scelta precedente
'If Not EgtSetCalcTool(sSaw, "H1", 1) Then Return
If Not EgtSetCalcTool(CurrTestTool.ToolName, CurrTestTool.ToolHead, CurrTestTool.ToolExit) Then Return
' calcolo la posizione degli assi rotanti C, B ' calcolo la posizione degli assi rotanti C, B
Dim nStat As Integer Dim nStat As Integer
Dim dC1, dB1, dC2, dB2 As Double Dim dC1, dB1, dC2, dB2 As Double
If CurrTestTool.ToolIsSaw Then
' Se LAMA
EgtGetCalcAngles(vtDirT, Vector3d.Z_AX(), nStat, dC1, dB1, dC2, dB2) EgtGetCalcAngles(vtDirT, Vector3d.Z_AX(), nStat, dC1, dB1, dC2, dB2)
ElseIf CurrTestTool.ToolIsLaser Then
' Se LASER
Dim dHomeC As Double = 90
EgtGetAxisHomePos("C", dHomeC)
Dim vtPrefAuxDir As Vector3d = -Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, dHomeC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
' Forzo B90
dB1 = 90
' Forzo la pozione in Z alla quota di Home (per evitare l'errore di fine corsa asse Z)
Dim dHomeZ As Double = 0
EgtGetAxisHomePos("Z", dHomeZ)
ptMid.z = dHomeZ
Else
' Se utensile speciale
If CurrTestTool.ToolType = MCH_TY.MILL_STD Or CurrTestTool.ToolType = MCH_TY.DRILL_STD Then
' Se FRESA/FORETTO
Dim nStepRotC As Integer = GetPrivateProfileInt(S_NEST, K_MACH_DRILL_MILL_C90, 1, m_MainWindow.GetMachIniFile())
Dim vtPrefAuxDir As Vector3d = -Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, 90 * nStepRotC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
ElseIf CurrTestTool.ToolType = MCH_TY.WATERJET Then
' Se WJ
Dim dHomeC As Double = 90
EgtGetAxisHomePos("C", dHomeC)
Dim vtPrefAuxDir As Vector3d = Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, dHomeC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
End If
End If
' calcolo la posizione degli assi lineari X, Y, Z ' calcolo la posizione degli assi lineari X, Y, Z
Dim dX, dY, dZ As Double Dim dX, dY, dZ As Double
EgtGetCalcPositions(ptMid, dC1, dB1, nStat, dX, dY, dZ) EgtGetCalcPositions(ptMid, dC1, dB1, nStat, dX, dY, dZ)
@@ -346,16 +516,49 @@ Public Class ProjectMgrUC
' verifica assi lineari ' verifica assi lineari
EgtVerifyOutstroke(dX, dY, dZ, dC1, dB1, nStat) EgtVerifyOutstroke(dX, dY, dZ, dC1, dB1, nStat)
If nStat <> 0 Then If nStat <> 0 Then
EgtOutLog("Out of stroke: " & nStat)
vtDirT = -vtDirT vtDirT = -vtDirT
ptMid -= vtDirT * dThick ptMid -= vtDirT * dThick
If CurrTestTool.ToolIsSaw Then
EgtGetCalcAngles(vtDirT, Vector3d.Z_AX(), nStat, dC1, dB1, dC2, dB2) EgtGetCalcAngles(vtDirT, Vector3d.Z_AX(), nStat, dC1, dB1, dC2, dB2)
ElseIf CurrTestTool.ToolIsLaser Then
' Se LASER
Dim dHomeC As Double = 90
EgtGetAxisHomePos("C", dHomeC)
Dim vtPrefAuxDir As Vector3d = -Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, dHomeC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
' Forzo B90
dB1 = 90
Else
If CurrTestTool.ToolType = MCH_TY.MILL_STD Or CurrTestTool.ToolType = MCH_TY.DRILL_STD Then
' Se FRESA/FORETTO
Dim nStepRotC As Integer = GetPrivateProfileInt(S_NEST, K_MACH_DRILL_MILL_C90, 1, m_MainWindow.GetMachIniFile())
Dim vtPrefAuxDir As Vector3d = -Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, 90 * nStepRotC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
ElseIf CurrTestTool.ToolType = MCH_TY.WATERJET Then
' Se WJ
Dim dHomeC As Double = 90
EgtGetAxisHomePos("C", dHomeC)
Dim vtPrefAuxDir As Vector3d = Vector3d.X_AX()
vtPrefAuxDir.Rotate(Vector3d.Z_AX, dHomeC)
EgtGetCalcAngles(vtDirT, vtPrefAuxDir, nStat, dC1, dB1, dC2, dB2)
End If
End If
' calcolo la posizione degli assi lineari X, Y, Z ( correggere il punto ptMid.z sommando il raggio utensile) ' calcolo la posizione degli assi lineari X, Y, Z ( correggere il punto ptMid.z sommando il raggio utensile)
EgtGetCalcPositions(ptMid, dC1, dB1, nStat, dX, dY, dZ) EgtGetCalcPositions(ptMid, dC1, dB1, nStat, dX, dY, dZ)
' verifica assi lineari
EgtVerifyOutstroke(dX, dY, dZ, dC1, dB1, nStat)
If nStat <> 0 Then
EgtOutLog("2nd attemp out of stroke: " & nStat)
End If
End If End If
'--------------------------- Comunico i movimenti in origine macchina al CN ---------------------------------------- '--------------------------- Comunico i movimenti in origine macchina al CN ----------------------------------------
Dim ptMachine As Point3d = New Point3d(dX, dY, dZ) Dim ptMachine As Point3d = New Point3d(dX, dY, If(CurrTestTool.ToolIsLaser, 0, dZ))
ExecuteCommandCNC(ptMachine, dC1, dB1) ExecuteCommandCNC(ptMachine, dC1, dB1, CurrTestTool)
Return Return
End If End If
' ---------------------------- Fine modalità test -------------------------------------------- ' ---------------------------- Fine modalità test --------------------------------------------
@@ -478,7 +681,6 @@ Public Class ProjectMgrUC
If Not (m_CurrMachine.bProdLine Or m_CurrMachine.bDemo) Then If Not (m_CurrMachine.bProdLine Or m_CurrMachine.bDemo) Then
' Download programma (eventuali errori sono segnalati dalla funzione) ' Download programma (eventuali errori sono segnalati dalla funzione)
If m_CurrNcComm.SendProgram(sCncPath, 900) Then If m_CurrNcComm.SendProgram(sCncPath, 900) Then
' copio il progetto corrente come progetto in lavorazione
Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge" Dim sWrkPath As String = m_MainWindow.GetTempDir() & "\" & "WorkProj.nge"
My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True) My.Computer.FileSystem.CopyFile(sMchPath, sWrkPath, True)
' se abilitato e non è restart, lancio eventuale lua post-trasmissione ' se abilitato e non è restart, lancio eventuale lua post-trasmissione
@@ -504,7 +706,6 @@ Public Class ProjectMgrUC
' apro la finestra con l'elenco degli sfridi ' apro la finestra con l'elenco degli sfridi
Dim MyScrapsWD As New ScrapsWD(m_MainWindow, Me, NewScrapsList) Dim MyScrapsWD As New ScrapsWD(m_MainWindow, Me, NewScrapsList)
MyScrapsWD.ShowDialog() MyScrapsWD.ShowDialog()
End If End If
' ------------------ FINE gestione SCRAPS ----------------------------- ' ------------------ FINE gestione SCRAPS -----------------------------
@@ -574,6 +775,13 @@ Public Class ProjectMgrUC
EgtDraw() EgtDraw()
' Dichiaro che il progetto è nuovo ' Dichiaro che il progetto è nuovo
bAlreadySent = False bAlreadySent = False
' reimposto tutti gli sfridi come nuovi sfridi
Dim CurrScrapsList As New List(Of Scrap)
' procedo all'aggiornamento della lista degli sfridi
UpDateScrapList(CurrScrapsList)
For Each ItemScrap As Scrap In CurrScrapsList
ItemScrap.ResetState()
Next
End If End If
End If End If
If bAlreadySent Then If bAlreadySent Then
@@ -584,6 +792,18 @@ Public Class ProjectMgrUC
End If End If
End If End If
' ------------------ INIZIO gestione SCRAPS ---------------------------
Dim NewScrapsList As New List(Of Scrap)
' procedo all'aggiornamento della lista degli sfridi
UpDateScrapList(NewScrapsList)
' se esiste almeno uno sfrido da inserire come nuovo grezzo
If NewScrapsList.Count > 0 Then
' apro la finestra con l'elenco degli sfridi
Dim MyScrapsWD As New ScrapsWD(m_MainWindow, Me, NewScrapsList)
MyScrapsWD.ShowDialog()
End If
' ------------------ FINE gestione SCRAPS -----------------------------
' Se non collegato alla macchina ' Se non collegato alla macchina
If Not m_MainWindow.m_bNCLink Then If Not m_MainWindow.m_bNCLink Then
' salvo il progetto corrente incrementando il valore del progetto ' salvo il progetto corrente incrementando il valore del progetto
@@ -623,6 +843,12 @@ Public Class ProjectMgrUC
Exit For Exit For
End If End If
Next Next
' leggo il nome della tavola da cui sto lanciando il progetto
Dim sTabeName As String = String.Empty
EgtGetTableName(sTabeName)
Dim bDoubleProg As Boolean = (GetPrivateProfileInt(S_PRODUCTIONLINE, "DoubleProg", 0, m_MainWindow.GetMachIniFile()) <> 0)
' Leggo eventuale variabile per lavorazione con 2 tavole in parallelo (standard E80027) ' Leggo eventuale variabile per lavorazione con 2 tavole in parallelo (standard E80027)
Dim nVarProgTwins As Integer = 1 Dim nVarProgTwins As Integer = 1
If Not String.IsNullOrWhiteSpace(m_CurrMachine.sVarProgTwins) Then If Not String.IsNullOrWhiteSpace(m_CurrMachine.sVarProgTwins) Then
@@ -636,8 +862,26 @@ Public Class ProjectMgrUC
End If End If
Next Next
End If End If
' Verifico se posso scrivere nell'area 1 ' Verifico se posso scrivere nell'area 1
If nVarProg1 = 0 And (nVarProg2 <> 1 Or nVarProgTwins = 2) Then Dim bSendToAre1 As Boolean = (nVarProg1 = 0 And (nVarProg2 <> 1 Or nVarProgTwins = 2))
Dim bSendToAre2 As Boolean = (nVarProg2 = 0 And (nVarProg1 <> 1 Or nVarProgTwins = 2))
If bDoubleProg Then
If sTabeName = MAIN_TAB Then
' spedisco il programma da tavola 1 solo se CN ha terminato programma 901
bSendToAre1 = (nVarProg1 = 0)
bSendToAre2 = False
EgtOutLog(" Invio programma da tavola 1")
Else
' spedisco il programma da tavola 2 solo se CN ha terminato programma 902
bSendToAre1 = False
bSendToAre2 = (nVarProg2 = 0)
EgtOutLog(" Invio programma da tavola 2")
End If
End If
If bSendToAre1 Then
m_CurrNcComm.SetProgramMainOrSub(False) m_CurrNcComm.SetProgramMainOrSub(False)
If m_CurrNcComm.SendProgram(sCncPath, m_CurrMachine.nProg1, False) Then If m_CurrNcComm.SendProgram(sCncPath, m_CurrMachine.nProg1, False) Then
' Dichiaro part program inviato ' Dichiaro part program inviato
@@ -654,7 +898,7 @@ Public Class ProjectMgrUC
End If End If
m_CurrNcComm.SetProgramMainOrSub(True) m_CurrNcComm.SetProgramMainOrSub(True)
' Altrimenti verifico se posso scrivere nell'area 2 ' Altrimenti verifico se posso scrivere nell'area 2
ElseIf nVarProg2 = 0 And (nVarProg1 <> 1 Or nVarProgTwins = 2) Then ElseIf bSendToAre2 Then
m_CurrNcComm.SetProgramMainOrSub(False) m_CurrNcComm.SetProgramMainOrSub(False)
If m_CurrNcComm.SendProgram(sCncPath, m_CurrMachine.nProg2, False) Then If m_CurrNcComm.SendProgram(sCncPath, m_CurrMachine.nProg2, False) Then
' Dichiaro part program inviato ' Dichiaro part program inviato
@@ -674,6 +918,12 @@ Public Class ProjectMgrUC
Else Else
m_CurrProjPage.SetErrorMessage(EgtMsg(90318)) 'La macchina non accetta il programma CN m_CurrProjPage.SetErrorMessage(EgtMsg(90318)) 'La macchina non accetta il programma CN
End If End If
' avvio programma solo se DoubleProg
If (GetPrivateProfileInt(S_GENERAL, K_STARTPROGRAM, 0, m_MainWindow.GetIniFile()) <> 0 And bDoubleProg) And
(bSendToAre1 Or bSendToAre2) Then
Dim MyCicloStartWD As New CicloStartWD(m_MainWindow)
MyCicloStartWD.ShowDialog()
End If
End If End If
#End If #End If
@@ -705,8 +955,114 @@ Public Class ProjectMgrUC
End While End While
End Sub End Sub
Public Sub UpdateFeedAllMachining()
' recupero il valore di Feed della lavorazione corrente
Dim sMachiningName As String = String.Empty
If Not EgtMdbGetCurrMachiningParam(MCH_MP.NAME, sMachiningName) Then
' errore: lavorazione non trovata
EgtOutLog(" - Prima di 'Reset Feed' accedere alla pagina MACCHINA!")
'm_MainWindow.m_CurrentProjectPageUC.SetErrorMessage("Salvare la lavorazione corrente")
Return
End If
Dim dFeed As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.FEED, dFeed)
Dim dFeedStarted As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.STARTFEED, dFeedStarted)
Dim dFeedEnded As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.ENDFEED, dFeedEnded)
Dim dFeedTipped As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.TIPFEED, dFeedTipped)
Dim dFeedBack As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.BACKFEED, dFeedBack)
Dim dFeedSideAng As Double = 0
EgtMdbGetCurrMachiningParam(MCH_MP.SIDEANGFEED, dFeedSideAng)
Dim MachiningList As New List(Of SplitMach)
' Recupero l'indice della fase corrente
Dim nCurrPhase As Integer = 1
' recupero in numero di fasi presenti nel progetto
Dim nCountPhase As Integer = EgtGetPhaseCount()
' ciclo su tutte le fasi di lavorazione
Dim nMach As Integer = 0
Dim nMachUpdated As Integer = 0
For IndexPhase As Integer = 1 To nCountPhase
' imposto la fase corrente
nCurrPhase = IndexPhase
' Preparo la lista delle lavorazioni
CalculateSplitMachList(nCurrPhase, MachiningList)
' per ogni lavorazione corrente procedo ad aggiornare la feed
For IndexMachining As Integer = 0 To MachiningList.Count - 1
nMach += 1
Dim nOperId As Integer = MachiningList(IndexMachining).m_nId
' setto la lavorazione come corrente
If EgtSetCurrMachining(nOperId) Then
Dim bUpdate As Boolean = False
' STANDARD
Dim dOrigFeed As Double
EgtGetMachiningParam(MCH_MP.FEED, dOrigFeed)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeed - dFeed) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.FEED, dFeed)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' STARTED
Dim dOrigFeedStarted As Double
EgtGetMachiningParam(MCH_MP.STARTFEED, dOrigFeedStarted)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeedStarted - dFeedStarted) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.STARTFEED, dFeedStarted)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' ENDED
Dim dOrigFeedEnded As Double
EgtGetMachiningParam(MCH_MP.ENDFEED, dOrigFeedEnded)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeedEnded - dFeedEnded) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.ENDFEED, dFeedEnded)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' TIPPED
Dim dOrigFeedTipped As Double
EgtGetMachiningParam(MCH_MP.TIPFEED, dOrigFeedTipped)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeedTipped - dFeedTipped) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.TIPFEED, dFeedTipped)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' BACK
Dim dOrigFeedBack As Double
EgtGetMachiningParam(MCH_MP.BACKFEED, dOrigFeedBack)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeedBack - dFeedBack) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.BACKFEED, dFeedBack)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' SIDEANG
Dim dOrigFeedSideAng As Double
EgtMdbGetCurrMachiningParam(MCH_MP.SIDEANGFEED, dOrigFeedSideAng)
' imposto il valore di Feed solo se differente da quello nuovo
If Math.Abs(dOrigFeedBack - dFeedSideAng) > 0.1 Then
bUpdate = bUpdate Or EgtSetMachiningParam(MCH_MP.SIDEANGFEED, dFeedSideAng)
' aggiorno la lavorazione (senza il ricalcolo dell'intera lavorazione)
EgtApplyMachining(True)
End If
' conto il numero di lavorazioni aggiornate
If bUpdate Then
nMachUpdated += 1
End If
End If
Next
Next
m_MainWindow.m_CurrentProjectPageUC.SetInfoMessage("Lavorazione aggiornate: " & nMachUpdated & "/ " & nMach)
End Sub
' ------------------------------------------------ GENERA COMANDI CNC MOVIMENTO ------------------------------------------------ ' ------------------------------------------------ GENERA COMANDI CNC MOVIMENTO ------------------------------------------------
Private Sub ExecuteCommandCNC(ptMid As Point3d, dAngC As Double, dAngB As Double) Private Sub ExecuteCommandCNC(ptMid As Point3d, dAngC As Double, dAngB As Double, SelTestTool As TestTool)
Dim CmdString As String = String.Empty Dim CmdString As String = String.Empty
If Not EgtLuaExecFile(m_MainWindow.m_CurrentMachine.sMachDir() & "\DirectCmd\TestWork.lua") Then If Not EgtLuaExecFile(m_MainWindow.m_CurrentMachine.sMachDir() & "\DirectCmd\TestWork.lua") Then
@@ -732,12 +1088,23 @@ Public Class ProjectMgrUC
EgtLuaSetGlobNumVar("CMD.R1", dR1) EgtLuaSetGlobNumVar("CMD.R1", dR1)
EgtLuaSetGlobNumVar("CMD.R2", dR2) EgtLuaSetGlobNumVar("CMD.R2", dR2)
' Recupero spessore lama corrente '' Recupero spessore lama corrente
Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw 'Dim sSaw As String = m_MainWindow.m_CurrentMachine.sCurrSaw
EgtTdbSetCurrTool(sSaw) 'EgtTdbSetCurrTool(sSaw)
'Dim dThick As Double = 0
'EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
'EgtLuaSetGlobNumVar("CMD.SAWTH", dThick)
EgtTdbSetCurrTool(SelTestTool.ToolName)
EgtLuaSetGlobStringVar("CMD.TLNAME", SelTestTool.ToolName)
EgtLuaSetGlobStringVar("CMD.TLALIAS", SelTestTool.ToolAlias)
Dim dThick As Double = 0 Dim dThick As Double = 0
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick) EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
EgtLuaSetGlobNumVar("CMD.SAWTH", dThick) EgtLuaSetGlobNumVar("CMD.SAWTH", dThick)
Dim sTCPos As String = String.Empty
EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sTCPos)
EgtLuaSetGlobStringVar("CMD.TCPOS", sTCPos)
'----------- ASSEGNO POSIZIONE DI ARRIVO MACCHINA ----------- '----------- ASSEGNO POSIZIONE DI ARRIVO MACCHINA -----------
' Assegno valore ad ogni asse da muovere (in zero macchina) ' Assegno valore ad ogni asse da muovere (in zero macchina)
@@ -796,6 +1163,7 @@ Public Class ProjectMgrUC
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False m_MainWindow.m_CadCutPageUC.m_NestPage.m_bSelectCurv = False
EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv) EgtDeselectObj(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedCurv)
EgtResetMark(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv) EgtResetMark(m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrSelectedSawCurv)
m_MainWindow.m_CadCutPageUC.m_NestPage.m_CurrToolFromSelectedSawCurv = String.Empty
End If End If
' aggiorno il disegno ' aggiorno il disegno
EgtDraw() EgtDraw()
@@ -845,6 +1213,7 @@ Public Class ProjectMgrUC
ResetCutBtn.Visibility = Windows.Visibility.Hidden ResetCutBtn.Visibility = Windows.Visibility.Hidden
SimulateBtn.Visibility = Windows.Visibility.Hidden SimulateBtn.Visibility = Windows.Visibility.Hidden
WorkBtn.Visibility = Windows.Visibility.Hidden WorkBtn.Visibility = Windows.Visibility.Hidden
If TestBtn.Visibility = Windows.Visibility.Visible Then TestBtn.Visibility = Windows.Visibility.Hidden
' Nascondo bottoni CadCutPageUC ' Nascondo bottoni CadCutPageUC
m_MainWindow.m_CadCutPageUC.PhotoBtn.Visibility = Windows.Visibility.Hidden m_MainWindow.m_CadCutPageUC.PhotoBtn.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CadCutPageUC.RawPartBtn.Visibility = Windows.Visibility.Hidden m_MainWindow.m_CadCutPageUC.RawPartBtn.Visibility = Windows.Visibility.Hidden
@@ -860,6 +1229,19 @@ Public Class ProjectMgrUC
m_MainWindow.m_CadCutPageUC.m_NestPage.RemovePartBtn.Visibility = Windows.Visibility.Hidden m_MainWindow.m_CadCutPageUC.m_NestPage.RemovePartBtn.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CadCutPageUC.m_NestPage.SelectAllBtn.Visibility = Windows.Visibility.Hidden m_MainWindow.m_CadCutPageUC.m_NestPage.SelectAllBtn.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CadCutPageUC.m_NestPage.DeselectAllBtn.Visibility = Windows.Visibility.Hidden m_MainWindow.m_CadCutPageUC.m_NestPage.DeselectAllBtn.Visibility = Windows.Visibility.Hidden
' nuovi bottoni pagina di Nesting
m_MainWindow.m_CadCutPageUC.m_NestPage.DragRettanleBtn.Visibility = Windows.Visibility.Hidden
If m_MainWindow.m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.Visibility = Windows.Visibility.Visible Then
m_MainWindow.m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.Visibility = Windows.Visibility.Hidden
End If
' Nascondo bottoni rawpage
m_MainWindow.m_RawPartPage.OtherRefTabBtn.Visibility = Windows.Visibility.Hidden
m_MainWindow.m_CadCutPageUC.m_NestPage.LoadParams()
' Rendo visibili i bottoni per la definizione degli Spotreg
m_MainWindow.m_CadCutPageUC.m_NestPage.UG0_Reg.Visibility = Visibility.Visible
m_MainWindow.m_CadCutPageUC.m_NestPage.UG1_Reg.Visibility = Visibility.Visible
' Deseleziono tutto ' Deseleziono tutto
EgtDeselectAll() EgtDeselectAll()
' Se c'è la foto devo sistemare ' Se c'è la foto devo sistemare
@@ -891,8 +1273,15 @@ Public Class ProjectMgrUC
End If End If
' Visualizzo step adatti alla scelta fatta ' Visualizzo step adatti alla scelta fatta
m_MainWindow.m_CadCutPageUC.m_NestPage.UpdateStepsOnUI() m_MainWindow.m_CadCutPageUC.m_NestPage.UpdateStepsOnUI()
' Cancello eventuali messaggi di errore/avvertimento ' Cancello eventuali messaggi di errore/avvertimento
m_CurrProjPage.ClearMessage() m_CurrProjPage.ClearMessage()
' visualizzo i punti di SpotReg
EgtSetStatus(m_MainWindow.m_CadCutPageUC.m_NestPage.m_nRegGroupId, GDB_ST.ON_)
' eventualmente risistemo tutti i punti Spotreg in funzione dell'altezza del grezzo
m_MainWindow.m_CadCutPageUC.m_NestPage.UpdateSpotRegistration()
EgtDraw()
End Sub End Sub
Private Sub RegisterBtn_Unchecked(sender As Object, e As RoutedEventArgs) Handles RegisterBtn.Unchecked Private Sub RegisterBtn_Unchecked(sender As Object, e As RoutedEventArgs) Handles RegisterBtn.Unchecked
@@ -920,6 +1309,7 @@ Public Class ProjectMgrUC
m_MainWindow.m_CadCutPageUC.DrawBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.DrawBtn.Visibility = Windows.Visibility.Visible
m_MainWindow.m_CadCutPageUC.ImportBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.ImportBtn.Visibility = Windows.Visibility.Visible
m_MainWindow.m_CadCutPageUC.SplitBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.SplitBtn.Visibility = Windows.Visibility.Visible
If TestBtn.Visibility = Windows.Visibility.Hidden Then TestBtn.Visibility = Windows.Visibility.Visible
' Visualizzo bottoni nesting ' Visualizzo bottoni nesting
m_MainWindow.m_CadCutPageUC.m_NestPage.m_bRegister = False m_MainWindow.m_CadCutPageUC.m_NestPage.m_bRegister = False
m_MainWindow.m_CadCutPageUC.m_NestPage.MaximizeMoveBtn.IsEnabled = True m_MainWindow.m_CadCutPageUC.m_NestPage.MaximizeMoveBtn.IsEnabled = True
@@ -929,6 +1319,22 @@ Public Class ProjectMgrUC
m_MainWindow.m_CadCutPageUC.m_NestPage.RemovePartBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.m_NestPage.RemovePartBtn.Visibility = Windows.Visibility.Visible
m_MainWindow.m_CadCutPageUC.m_NestPage.SelectAllBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.m_NestPage.SelectAllBtn.Visibility = Windows.Visibility.Visible
m_MainWindow.m_CadCutPageUC.m_NestPage.DeselectAllBtn.Visibility = Windows.Visibility.Visible m_MainWindow.m_CadCutPageUC.m_NestPage.DeselectAllBtn.Visibility = Windows.Visibility.Visible
' nuovi bottoni pagina di Nesting
m_MainWindow.m_CadCutPageUC.m_NestPage.DragRettanleBtn.Visibility = Windows.Visibility.Visible
If m_MainWindow.m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.Visibility = Windows.Visibility.Hidden Then
m_MainWindow.m_CadCutPageUC.m_NestPage.SplitCurveWJBtn.Visibility = Windows.Visibility.Visible
End If
' disabilito i comandi per gestioen SpotReg
m_MainWindow.m_CadCutPageUC.m_NestPage.PointRegCheckedOff()
m_MainWindow.m_CadCutPageUC.m_NestPage.UG0_Reg.Visibility = Visibility.Hidden
m_MainWindow.m_CadCutPageUC.m_NestPage.UG1_Reg.Visibility = Visibility.Hidden
' Nascondo bottoni rawpage
m_MainWindow.m_RawPartPage.OtherRefTabBtn.Visibility = Windows.Visibility.Visible
' Nascondo i bottoni per la definizione degli Spotreg
m_MainWindow.m_CadCutPageUC.m_NestPage.UG0_Reg.Visibility = Visibility.Hidden
' Se c'è la foto devo sistemare ' Se c'è la foto devo sistemare
If m_CurrProjPage.GetPhoto() <> GDB_ID.NULL Then If m_CurrProjPage.GetPhoto() <> GDB_ID.NULL Then
' Recupero il riferimento originale del primo grezzo ' Recupero il riferimento originale del primo grezzo
@@ -973,6 +1379,11 @@ Public Class ProjectMgrUC
End If End If
' Visualizzo step adatti alla scelta fatta ' Visualizzo step adatti alla scelta fatta
m_MainWindow.m_CadCutPageUC.m_NestPage.UpdateStepsOnUI() m_MainWindow.m_CadCutPageUC.m_NestPage.UpdateStepsOnUI()
' nascondi i punti di SpotReg
EgtSetStatus(m_MainWindow.m_CadCutPageUC.m_NestPage.m_nRegGroupId, GDB_ST.OFF)
EgtDraw()
' Cancello eventuali messaggi di errore/avvertimento ' Cancello eventuali messaggi di errore/avvertimento
m_CurrProjPage.ClearMessage() m_CurrProjPage.ClearMessage()
End Sub End Sub
@@ -984,6 +1395,7 @@ Public Class Scrap
Private m_iPictureID As Integer Private m_iPictureID As Integer
Private m_sName As String Private m_sName As String
Private m_IdRaw As Integer Private m_IdRaw As Integer
' nState=1 -> da inserire in DB, nState=2 -> già inserito in DB
Private m_nState As Integer Private m_nState As Integer
Public Property PictureID() As Integer Public Property PictureID() As Integer
@@ -1016,9 +1428,16 @@ Public Class Scrap
End Get End Get
End Property End Property
Public ReadOnly Property PictureString() As String Public Sub ResetState(Optional nNewState As Integer = 1)
m_nState = nNewState
EgtSetInfo(m_IdRaw, K_ISNEWSCRAPS, nNewState)
EgtRemoveInfo(m_IdRaw, K_DATABASEID)
End Sub
Public ReadOnly Property PreviewState As System.Windows.Media.Imaging.BitmapImage
Get Get
Return "/Resources/ImportPageListBoxImages/" + PictureID.ToString() + ".png" Dim sPath As String = "/Resources/ImportPageListBoxImages/" & PictureID.ToString() & ".png"
Return New System.Windows.Media.Imaging.BitmapImage(New Uri(sPath, UriKind.Relative))
End Get End Get
End Property End Property
+37
View File
@@ -39,6 +39,43 @@
<Button Name="TopViewBtn" Grid.Column="6" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}"> <Button Name="TopViewBtn" Grid.Column="6" Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromTOPImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource LookFromTOPImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button> </Button>
<Popup Name="ViewPopUp"
IsOpen="False"
AllowsTransparency="False"
PopupAnimation="Scroll"
StaysOpen="False"
Placement="Bottom"
PlacementTarget="{Binding ElementName=TopViewBtn}">
<WrapPanel Orientation="Vertical"
Width="78"
Background="{DynamicResource OmagCut_Gray}">
<Button x:Name="BottomViewBtn"
ToolTip="Bottom View"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromBOTTOMImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button x:Name="FrontViewBtn"
ToolTip="Front View"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromFRONTImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button x:Name="BackViewBtn"
ToolTip="Back View"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromBACKImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button x:Name="LeftViewBtn"
ToolTip="Left View"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromLEFTImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button x:Name="RightViewBtn"
ToolTip="Right View"
Style="{DynamicResource OmagCut_RightGrayGradientYellowButton}">
<Image Source="{DynamicResource LookFromRIGHTImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</WrapPanel>
</Popup>
</Grid> </Grid>
+38
View File
@@ -5,6 +5,10 @@ Public Class SceneButtonsUC
'Riferimento alla MainWindow 'Riferimento alla MainWindow
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private Sub Init() Handles Me.Initialized
TopViewBtn.ToolTip = "Top View" & vbCrLf & "Select View (Shift)"
End Sub
Private Sub MeasureBtn_Checked(sender As Object, e As RoutedEventArgs) Handles MeasureBtn.Checked Private Sub MeasureBtn_Checked(sender As Object, e As RoutedEventArgs) Handles MeasureBtn.Checked
GetCurrScene.SetStatusGetDistance() GetCurrScene.SetStatusGetDistance()
Dim ptRef1 As Point3d Dim ptRef1 As Point3d
@@ -49,6 +53,12 @@ Public Class SceneButtonsUC
'End Sub 'End Sub
Private Sub PanBtn_Click(sender As Object, e As RoutedEventArgs) Handles PanBtn.Click Private Sub PanBtn_Click(sender As Object, e As RoutedEventArgs) Handles PanBtn.Click
If Keyboard.IsKeyDown(Key.LeftShift) Then
Dim bOrtoGraphic As Boolean = (GetPrivateProfileInt(S_SCENE, K_ORTOGRAPHIC, 1, m_MainWindow.GetIniFile()) <> 0)
EgtSetCameraType(Not bOrtoGraphic, True)
WritePrivateProfileString(S_SCENE, K_ORTOGRAPHIC, If(Not bOrtoGraphic, "1", "0"), m_MainWindow.GetIniFile())
Return
End If
GetCurrScene.SetStatusPan() GetCurrScene.SetStatusPan()
End Sub End Sub
@@ -69,7 +79,35 @@ Public Class SceneButtonsUC
End Sub End Sub
Private Sub TopViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles TopViewBtn.Click Private Sub TopViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles TopViewBtn.Click
If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 Then
If ViewPopUp.IsOpen Then
ViewPopUp.IsOpen = False
Else
ViewPopUp.IsOpen = True
End If
Else
EgtSetView(VT.TOP) EgtSetView(VT.TOP)
End If
End Sub
Private Sub BottomViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles BottomViewBtn.Click
EgtSetView(VT.BOTTOM)
End Sub
Private Sub FrontViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles FrontViewBtn.Click
EgtSetView(VT.FRONT)
End Sub
Private Sub BackViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackViewBtn.Click
EgtSetView(VT.BACK)
End Sub
Private Sub LeftViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles LeftViewBtn.Click
EgtSetView(VT.LEFT)
End Sub
Private Sub RightViewBtn_Click(sender As Object, e As RoutedEventArgs) Handles RightViewBtn.Click
EgtSetView(VT.RIGHT)
End Sub End Sub
Private Function GetCurrScene() As EgtUILib.Scene Private Function GetCurrScene() As EgtUILib.Scene
+18 -2
View File
@@ -22,8 +22,24 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Name="TitleTxBl" Grid.Column="1" Grid.Row="1" Foreground="White" FontSize="20" VerticalAlignment="Center"/> <Label Name="TitleTxBl" Grid.Column="1" Grid.Row="1" Foreground="White" FontSize="20" VerticalAlignment="Center"/>
<ListBox Name="ScrapsListBox" Grid.Column="1" Grid.Row="2" ItemTemplate="{DynamicResource DataTemplateItem}" <ListBox Name="ScrapsListBox" Grid.Column="1" Grid.Row="2">
ItemsSource="{Binding ItemList, NotifyOnSourceUpdated=True}"/> <ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding PreviewState}" VerticalAlignment="Center"
MaxWidth="50" MaxHeight="50"
Stretch="Uniform" Grid.Column="0" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center"
Style="{StaticResource OmagCut_CurrProjSummeryTextBlock}"
Grid.Column="1"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Column="1" Grid.Row="4"> <Grid Grid.Column="1" Grid.Row="4">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
+8 -2
View File
@@ -96,16 +96,22 @@ Public Class StartLauncherWD
Dim ItemFile As String = String.Empty Dim ItemFile As String = String.Empty
'carico la liste dei file recenti 'carico la liste dei file recenti
Dim sFileName As String = String.Empty Dim sFileName As String = String.Empty
Dim MruFileListRemove As New List(Of String)
For Each ItemFile In m_MainWindow.m_CurrentProjectPageUC.m_MruFiles.FileNames For Each ItemFile In m_MainWindow.m_CurrentProjectPageUC.m_MruFiles.FileNames
sFileName = ItemFile.Replace("__", "_") sFileName = ItemFile.Replace("__", "_")
If Not String.IsNullOrEmpty(sFileName) Then If Not String.IsNullOrEmpty(sFileName) AndAlso File.Exists(sFileName) Then
m_RecentFileList.Add(New FileNameLsBxItem(sFileName, File.GetLastAccessTime(sFileName))) m_RecentFileList.Add(New FileNameLsBxItem(sFileName, File.GetLastAccessTime(sFileName)))
m_RecentFileList.Add(New FileNameLsBxItem(sFileName, File.GetLastAccessTime(sFileName))) m_RecentFileList.Add(New FileNameLsBxItem(sFileName, File.GetLastAccessTime(sFileName)))
Else Else
m_MainWindow.m_CurrentProjectPageUC.m_MruFiles.Remove(ItemFile) MruFileListRemove.Add(ItemFile)
End If End If
Next Next
For Each ItemFileRemove As String In MruFileListRemove
m_MainWindow.m_CurrentProjectPageUC.m_MruFiles.Remove(ItemFileRemove)
EgtOutLog(" WARNING: File " & ItemFileRemove & " does not exist or is not accessible, it's been removed from MruFiles list")
Next
' posiziono la fistra in centro alla pagina ' posiziono la fistra in centro alla pagina
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2 Me.Top = Owner.Top + Owner.Height / 2 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2 Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
+83
View File
@@ -205,6 +205,12 @@ Public Class Camera
Dim nInd As Integer = 1 Dim nInd As Integer = 1
If m_nCameraCount = 2 Then If m_nCameraCount = 2 Then
nInd = GetCurrentTable() nInd = GetCurrentTable()
' verifico se la macchina è configurata per fotocamera sulla tavola di lavoro
If (GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ENABLE, 0, m_MainWindow.GetMachIniFile()) <> 0) AndAlso
(GetPrivateProfileInt(S_CAMERAHQ, K_CAMERAHQ_ACTIVATE, 0, m_MainWindow.GetMachIniFile()) <> 0) Then
' forzo l'utilizzo della seconda camera (sopra alla tavola di lavoro)
nInd = 2
End If
If nInd <> 1 And nInd <> 2 Then Return 0 If nInd <> 1 And nInd <> 2 Then Return 0
End If End If
' Se gestore macchina non attivo, lo lancio in modo cieco ' Se gestore macchina non attivo, lo lancio in modo cieco
@@ -315,6 +321,16 @@ Public Class Camera
GetPrivateProfileString(S_NCDATA, K_SPOTLIGHT2, "", sPLCVarSpotLight2, m_MainWindow.GetMachIniFile()) GetPrivateProfileString(S_NCDATA, K_SPOTLIGHT2, "", sPLCVarSpotLight2, m_MainWindow.GetMachIniFile())
Dim nPhotoDeley As Integer = GetPrivateProfileInt(S_NCNUM, K_PHOTODELEY, "100", m_MainWindow.GetMachIniFile()) Dim nPhotoDeley As Integer = GetPrivateProfileInt(S_NCNUM, K_PHOTODELEY, "100", m_MainWindow.GetMachIniFile())
' eventualmente rimuovo inizio stringa: "PLC, ___"
Dim sItemString1() As String = Split(sPLCVarSpotLight1, ","c)
If sItemString1.Count > 1 Then
sPLCVarSpotLight1 = sItemString1(1).Trim
End If
Dim sItemString2() As String = Split(sPLCVarSpotLight2, ","c)
If sItemString2.Count > 1 Then
sPLCVarSpotLight2 = sItemString2(1).Trim
End If
Select Case m_MainWindow.m_CNCommunication.m_nNCType Select Case m_MainWindow.m_CNCommunication.m_nNCType
Case 1, 2 Case 1, 2
If m_MainWindow.m_CNCommunication.m_nNCType = 2 Then If m_MainWindow.m_CNCommunication.m_nNCType = 2 Then
@@ -331,6 +347,13 @@ Public Class Camera
' ------------------------------------ accensione riflettori ------------------------------------ ' ------------------------------------ accensione riflettori ------------------------------------
' ------------------------------------ mando la testa in home ------------------------------------
If Not GoHomeForPhoto() Then
EgtOutLog("Error in positioning")
End If
' ------------------------------------ mando la testa in home ------------------------------------
' Scatto una foto con eventuale riconoscimento del contorno (il programma deve essere già attivo) ' Scatto una foto con eventuale riconoscimento del contorno (il programma deve essere già attivo)
Dim bOk As Boolean = False Dim bOk As Boolean = False
Dim sArgs As String = "2 0" Dim sArgs As String = "2 0"
@@ -348,6 +371,66 @@ Public Class Camera
Return bOk Return bOk
End Function End Function
Private Function GoHomeForPhoto() As Boolean
Dim bGoHome As Boolean = GetPrivateProfileInt(S_PHOTO, K_ENABELE_GOHOME_FOR_PHOTO, 0, m_MainWindow.GetMachIniFile()) <> 0
' Se non configurato esco senza generare errore
If Not bGoHome Then Return True
' Costruisco il bottone per potere eseguire il comando MDI
Dim GoHome As MachineButton = Nothing
Dim sDirectCmdFile As String = String.Empty
GetPrivateProfileString(S_PHOTO, K_CAMERA_DIRECT_CMD, "", sDirectCmdFile, m_MainWindow.GetMachIniFile())
If String.IsNullOrEmpty(sDirectCmdFile) Then
Return False
Else
EgtOutLog("Direct command for positionig head: " & sDirectCmdFile)
End If
GoHome = New TwoStateButton("", sDirectCmdFile, "", "", "")
' eseguo lo script lua associato
GoHome.ExecuteMDICommand(GoHome.TLuaScriptName)
' Leggo nome variabile posizione home raggiunta
Dim CameraStateNameVar As String = String.Empty
GetPrivateProfileString(S_PHOTO, K_CAMERA_STATE_VAR, "", CameraStateNameVar, m_MainWindow.GetMachIniFile())
Dim nSteps As Integer = 20
nSteps = GetPrivateProfileInt(S_PHOTO, K_PENDIG_TIME_FOR_PHOTO, nSteps, m_MainWindow.GetMachIniFile())
If String.IsNullOrEmpty(CameraStateNameVar) Then
'Return False
Else
EgtOutLog("Variable for read status of positioning head: " & CameraStateNameVar)
End If
' 91144=Going home
m_MainWindow.m_CurrentProjectPageUC.SetInfoMessage(EgtMsg(91144))
UpdateUI()
' Eseguo reset variabile posizione home raggiunta
m_MainWindow.m_CNCommunication.m_CN.DVariables_WriteVariables2(CameraStateNameVar, "0")
System.Threading.Thread.Sleep(300)
' Definisco flag posizionamento completato
Dim bPositionOk As Boolean = False
For I As Integer = 0 To nSteps
' Devo rileggere la variabile ad ogni ciclo
m_MainWindow.m_CNCommunication.m_CN.ReadEls_Add_Parameter(CameraStateNameVar, 3)
System.Threading.Thread.Sleep(100)
If m_MainWindow.m_CNCommunication.m_CN.n_DReadELS_handle = 3 Then
Dim CameraStateVal As Integer = CInt(m_MainWindow.m_CNCommunication.m_CN.d_DReadELS_value)
Select Case CameraStateVal
Case 0
' Non faccio alcunchè perchè si sta posizionando
Case 1
' Posizionamento completato
bPositionOk = True
Exit For
Case 2
' Errore
bPositionOk = False
Exit For
End Select
End If
System.Threading.Thread.Sleep(900)
Next
m_MainWindow.m_CurrentProjectPageUC.ClearMessage()
UpdateUI()
Return bPositionOk
End Function
Private Function WaitPhoto(nInd As Integer) As Boolean Private Function WaitPhoto(nInd As Integer) As Boolean
' Ciclo di ricerca foto scattata ' Ciclo di ricerca foto scattata
Dim nMaxThick = 10 * m_nTimeout Dim nMaxThick = 10 * m_nTimeout
+35
View File
@@ -35,6 +35,41 @@
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
<!--TAGLIO TILTED-->
<Grid Grid.Column="1" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="9*"/>
</Grid.ColumnDefinitions>
<CheckBox Name ="ApplySawingTiltedChBx" Grid.Column="0"
Style="{StaticResource OmagCut_CheckBox_Single}"
Margin="1.5,0,0,0"/>
<TextBlock Name="CurrSawingTiltedTxBl" Grid.Column="1"
Style="{StaticResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
</Grid>
<ComboBox Name="CurrSawingTiltedCmBx" Grid.Column="1" Grid.Row="1">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="20">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource OmagCut_CurrProjSummeryTextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ApplySawingTiltedChBx, Path=IsChecked}" Value="False">
<Setter Property="TextDecorations" Value="Strikethrough"/>
<Setter Property="Foreground" Value="{StaticResource OmagCut_White}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ApplySawingTiltedChBx, Path=IsChecked}" Value="True">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!--LAVORAZIONE SECONDARIA--> <!--LAVORAZIONE SECONDARIA-->
<TextBlock Name="AuxiliaryMachiningTxBl" Grid.Column="1" Grid.Row="2" <TextBlock Name="AuxiliaryMachiningTxBl" Grid.Column="1" Grid.Row="2"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" Visibility="Hidden"/> Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}" Visibility="Hidden"/>
+64 -4
View File
@@ -8,6 +8,7 @@ Public Class ChooseMachining
Private m_CurrentMachine As CurrentMachine = m_MainWindow.m_CurrentMachine Private m_CurrentMachine As CurrentMachine = m_MainWindow.m_CurrentMachine
' Liste che contengono gli elementi appartenenti alle ComboBox ' Liste che contengono gli elementi appartenenti alle ComboBox
Private m_SawingList As New List(Of String) Private m_SawingList As New List(Of String)
Private m_SawingTiltedList As New List(Of String)
Private m_AuxMachTypeList As New List(Of StringIdCmBx) Private m_AuxMachTypeList As New List(Of StringIdCmBx)
Private m_DrillingList As New List(Of String) Private m_DrillingList As New List(Of String)
Private m_MillingList As New List(Of String) Private m_MillingList As New List(Of String)
@@ -36,6 +37,7 @@ Public Class ChooseMachining
Me.Top = Owner.Top + Owner.Height / 2 - Me.Height Me.Top = Owner.Top + Owner.Height / 2 - Me.Height
Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2 Me.Left = Owner.Left + Owner.Width / 2 - Me.Width / 2
CurrSawingCmBx.ItemsSource = m_SawingList CurrSawingCmBx.ItemsSource = m_SawingList
CurrSawingTiltedCmBx.ItemsSource = m_SawingTiltedList
AuxiliaryMachiningCmBx.ItemsSource = m_AuxMachTypeList AuxiliaryMachiningCmBx.ItemsSource = m_AuxMachTypeList
CurrDrillingCmBx.ItemsSource = m_DrillingList CurrDrillingCmBx.ItemsSource = m_DrillingList
CurrMillingCmBx.ItemsSource = m_MillingList CurrMillingCmBx.ItemsSource = m_MillingList
@@ -44,6 +46,7 @@ Public Class ChooseMachining
CurrWJettingQualityCmBx.ItemsSource = m_CurrentMachine.Qualities CurrWJettingQualityCmBx.ItemsSource = m_CurrentMachine.Qualities
CurrSawingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 1) CurrSawingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 1)
CurrSawingTiltedTxBl.Text = EgtMsg(91023) ' Lavorazione inclinata
AuxiliaryMachiningTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 2) AuxiliaryMachiningTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 2)
CurrDrillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 3) CurrDrillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 3)
CurrMillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 4) CurrMillingTxBl.Text = EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 4)
@@ -69,7 +72,13 @@ Public Class ChooseMachining
' -- TAGLIO -- ' -- TAGLIO --
CreateMachiningList(MCH_MY.SAWING, m_CurrentMachine.sCurrSaw, m_SawingList) CreateMachiningList(MCH_MY.SAWING, m_CurrentMachine.sCurrSaw, m_SawingList)
' aggiungo un campo vuoto ' aggiungo un campo vuoto
m_SawingList.Add( "") m_SawingList.Add("")
' -- TAGLIO TILTED --
CurrSawingTiltedCmBx.IsEnabled = m_MainWindow.m_CurrentMachine.bApplySawingTilted
ApplySawingTiltedChBx.IsChecked = m_MainWindow.m_CurrentMachine.bApplySawingTilted
CreateMachiningList(MCH_MY.SAWING, m_CurrentMachine.sCurrSawTilted, m_SawingTiltedList)
' aggiungo un campo vuoto
m_SawingTiltedList.Add("")
' Verifico la configurazione della macchina per creare i combobox ' Verifico la configurazione della macchina per creare i combobox
Select Case m_CurrentMachine.MountedToolConfig Select Case m_CurrentMachine.MountedToolConfig
@@ -78,7 +87,7 @@ Public Class ChooseMachining
ChooseMachiningGrid.Children.Remove(AuxiliaryMachiningTxBl) ChooseMachiningGrid.Children.Remove(AuxiliaryMachiningTxBl)
ChooseMachiningGrid.Children.Remove(AuxiliaryMachiningCmBx) ChooseMachiningGrid.Children.Remove(AuxiliaryMachiningCmBx)
Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER Case CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL, CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGER, CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW
' Creo lista lavorazioni foretto e fresa ' Creo lista lavorazioni foretto e fresa
If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Then If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.SAWANDAUXTOOL Then
CreateMachiningList(MCH_MY.DRILLING, m_CurrentMachine.sCurrDrill, m_DrillingList) CreateMachiningList(MCH_MY.DRILLING, m_CurrentMachine.sCurrDrill, m_DrillingList)
@@ -114,7 +123,10 @@ Public Class ChooseMachining
' ---- MACCHINA CON CAMBIO UTENSILE ---- ' ---- MACCHINA CON CAMBIO UTENSILE ----
ElseIf m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER Or ElseIf m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER Or
m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Or
m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
' -- TAGLIO --
' Il taglio è aggiunto sempre (all'inizio di questo metodo)
' -- FORATURA -- ' -- FORATURA --
CreateMachiningList(MCH_MY.DRILLING, m_DrillingList) CreateMachiningList(MCH_MY.DRILLING, m_DrillingList)
' Se la lista è vuota cancello la lavorazione corrente di questo tipo ' Se la lista è vuota cancello la lavorazione corrente di questo tipo
@@ -175,6 +187,9 @@ Public Class ChooseMachining
End Select End Select
If m_CurrentMachine.bWaterJet And EgtGetHeadId("H1") = GDB_ID.NULL Then
Else
' verifico che lista delle lavorazioni di lama non sia vuoto ' verifico che lista delle lavorazioni di lama non sia vuoto
If m_SawingList.Count > 0 Then If m_SawingList.Count > 0 Then
' provo ad assegnare la lama corrente (se l'associazione fallisce corrispoende ad impostare un campo vuoto) ' provo ad assegnare la lama corrente (se l'associazione fallisce corrispoende ad impostare un campo vuoto)
@@ -190,6 +205,7 @@ Public Class ChooseMachining
End If End If
m_MainWindow.m_CurrentMachine.sCurrSawing = String.Empty m_MainWindow.m_CurrentMachine.sCurrSawing = String.Empty
End If End If
End If
' definizione della lista delle lavorazioni secondarie -- DA RIMUOVERE COMPLETAMENTE -- ' definizione della lista delle lavorazioni secondarie -- DA RIMUOVERE COMPLETAMENTE --
If m_bNotShowAuxilaryCmBx Then If m_bNotShowAuxilaryCmBx Then
@@ -202,7 +218,8 @@ Public Class ChooseMachining
m_AuxMachTypeList.Add(New StringIdCmBx(4, EgtMsg(91069))) m_AuxMachTypeList.Add(New StringIdCmBx(4, EgtMsg(91069)))
End If End If
If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER Or If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.MANUALTOOLCHANGER Or
m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Then m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGER Or
m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
m_AuxMachTypeList.Add(New StringIdCmBx(3, EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 8))) m_AuxMachTypeList.Add(New StringIdCmBx(3, EgtMsg(MSG_CHOOSEMACHININGPAGEUC + 8)))
End If End If
End If End If
@@ -486,6 +503,8 @@ Public Class ChooseMachining
Dim nDeltaRow As Integer = 4 Dim nDeltaRow As Integer = 4
Dim nNewRow As Integer = 2 Dim nNewRow As Integer = 2
' nascondo tutte le CmBx e TxBl ' nascondo tutte le CmBx e TxBl
CurrSawingTiltedTxBl.Visibility = Windows.Visibility.Hidden
CurrSawingTiltedCmBx.Visibility = Windows.Visibility.Hidden
CurrDrillingTxBl.Visibility = Windows.Visibility.Hidden CurrDrillingTxBl.Visibility = Windows.Visibility.Hidden
CurrDrillingCmBx.Visibility = Windows.Visibility.Hidden CurrDrillingCmBx.Visibility = Windows.Visibility.Hidden
CurrMillingTxBl.Visibility = Windows.Visibility.Hidden CurrMillingTxBl.Visibility = Windows.Visibility.Hidden
@@ -495,6 +514,33 @@ Public Class ChooseMachining
CurrWJettingTxBl.Visibility = Windows.Visibility.Hidden CurrWJettingTxBl.Visibility = Windows.Visibility.Hidden
CurrWJettingCmBx.Visibility = Windows.Visibility.Hidden CurrWJettingCmBx.Visibility = Windows.Visibility.Hidden
' -- LAMA TILTED -- se definito il cambio utensile con lama
'If m_CurrentMachine.MountedToolConfig = CurrentMachine.MountedToolConfigs.TOOLCHANGERWITHSAW Then
If Not String.IsNullOrEmpty(m_CurrentMachine.sCurrSawTilted) Then
' Definizione di due righe della tabella con la giusta altezza
For Index As Integer = 1 To nNewRow
Dim Row As New RowDefinition
Row.Height = New GridLength(0.5, GridUnitType.Star)
ChooseMachiningGrid.RowDefinitions.Add(Row)
Next
m_RowNumber = m_RowNumber + nNewRow
' titolo della ComboBox
CurrSawingTiltedTxBl.SetValue(Grid.RowProperty, m_RowNumber - nDeltaRow - nNewRow)
' ComboBox (nella riga successiva al titolo)
CurrSawingTiltedCmBx.SetValue(Grid.RowProperty, m_RowNumber - nDeltaRow - nNewRow + 1)
'ButtonsGrid.SetValue(Grid.RowProperty, 5)
If m_CurrentMachine.sCurrSawingTilted <> String.Empty Then
CurrSawingTiltedCmBx.SelectedItem = m_CurrentMachine.sCurrSawingTilted
End If
' verifico che la selezione sia andata a buon fine, altrimenti comunico l'avvenuta modifica
If String.IsNullOrEmpty(CurrSawingTiltedCmBx.SelectedItem) Then
' verifico che sia stato inserito veramente una lavorazione prima di comunicare una modifica
If CurrSawingTiltedCmBx.SelectedItem <> m_CurrentMachine.sCurrSawingTilted Then m_MachIsModified = True
End If
CurrSawingTiltedTxBl.Visibility = Windows.Visibility.Visible
CurrSawingTiltedCmBx.Visibility = Windows.Visibility.Visible
End If
' -- FORATURA -- se foretto presente ' -- FORATURA -- se foretto presente
If m_CurrentMachine.bDrill And m_DrillingList.Count() > 0 Then If m_CurrentMachine.bDrill And m_DrillingList.Count() > 0 Then
' Definizione di due righe della tabella con la giusta altezza ' Definizione di due righe della tabella con la giusta altezza
@@ -617,6 +663,20 @@ Public Class ChooseMachining
m_MainWindow.m_CurrentMachine.sCurrSawing = CurrSawingCmBx.SelectedItem.ToString() m_MainWindow.m_CurrentMachine.sCurrSawing = CurrSawingCmBx.SelectedItem.ToString()
End Sub End Sub
Private Sub ApplySawingTiltedChBx_Checked() Handles ApplySawingTiltedChBx.Click
If ApplySawingTiltedChBx.IsChecked Then
CurrSawingTiltedCmBx.IsEnabled = True
m_MainWindow.m_CurrentMachine.bApplySawingTilted = True
Else
CurrSawingTiltedCmBx.IsEnabled = False
m_MainWindow.m_CurrentMachine.bApplySawingTilted = False
End If
End Sub
Private Sub CurrSawingTiltedCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrSawingTiltedCmBx.SelectionChanged
m_MainWindow.m_CurrentMachine.sCurrSawingTilted = CurrSawingTiltedCmBx.SelectedItem.ToString()
End Sub
Private Sub CurrDrillingCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrDrillingCmBx.SelectionChanged Private Sub CurrDrillingCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles CurrDrillingCmBx.SelectionChanged
m_MainWindow.m_CurrentMachine.sCurrDrilling = CurrDrillingCmBx.SelectedItem.ToString() m_MainWindow.m_CurrentMachine.sCurrDrilling = CurrDrillingCmBx.SelectedItem.ToString()
End Sub End Sub
+98
View File
@@ -0,0 +1,98 @@
<Window x:Class="OtherRefTabWD"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib="clr-namespace:EgtWPFLib;assembly=EgtWPFLib"
FontFamily="{DynamicResource OmagCut_Font}"
ResizeMode="NoResize" WindowStyle="None" AllowsTransparency="True" Background="Transparent"
Title="ModifStartEndWD" Height="350" Width="320" ShowInTaskbar="False">
<!--Definizione della pagina di scelta del nome con cui salvare il progetto-->
<Border Style="{DynamicResource OmagCut_Border}">
<Grid x:Name="SaveNameGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!--<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>-->
<RowDefinition Height="0.2*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.2*"/>
</Grid.RowDefinitions>
<TextBlock Name="SelRefTxbl" Grid.Column="1" Grid.Row="1"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<ComboBox Name="RefTabCmBx" Grid.Column="2" Grid.Row="1" Style="{StaticResource OmagCut_ComboBox}"
MaxDropDownHeight="300" Margin="0,0,0,0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Name="RefRawTxbl" Grid.Column="1" Grid.Row="3"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<ComboBox Name="RefTabOrientationCmBx" Grid.Column="2" Grid.Row="3" Style="{StaticResource OmagCut_ComboBox}"
MaxDropDownHeight="300" Margin="0,0,0,0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource OmagCut_LowerCaseCharacterTextBlock}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Name="RefTabXTxbl" Grid.Column="1" Grid.Row="5"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="RefTabXTxBx" Grid.Column="2" Grid.Row="5"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<TextBlock Name="RefTabYTxbl" Grid.Column="1" Grid.Row="7"
Style="{DynamicResource OmagCut_CenteredLowerCaseCharacterTextBlock}"/>
<EgtWPFLib:EgtTextBox Name="RefTabYTxBx" Grid.Column="2" Grid.Row="7"
Style="{DynamicResource OmagCut_CalculatorTextBox}"/>
<Grid Name="ButtonsGrid" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="10" Grid.RowSpan="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Button Name="OkBtn" Grid.Column="1"
Style="{DynamicResource OmagCut_GradientBlueIconButton}">
<Image Source="{DynamicResource VImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ExitBtn" Grid.Column="3"
IsCancel="True"
Style="{DynamicResource OmagCut_GradientBlueIconButton}">
<Image Source="{DynamicResource XImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
</Grid>
</Grid>
</Border>
</Window>
+229
View File
@@ -0,0 +1,229 @@
Imports System.IO
Imports System.Reflection
Imports EgtUILib
Imports EgtWPFLib
Public Class OtherRefTabWD
Dim m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Dim m_RawPartPage As RawPartPageUC
Private m_sPosX As String = "0"
Private m_sPosY As String = "0"
Private m_dPrevOffsetX As Double = 0
Private m_dPrevOffsetY As Double = 0
Private m_bModifX As Boolean = False
Private m_bModifY As Boolean = False
Private m_SelIndex As Integer = 0
Private m_SelRef As Integer = 0
Sub New(Owner As Window, PosX As String, PosY As String, OffsetX As Double, OffsetY As Double, OtherRefMode As Integer, SelRef As Integer)
Me.Owner = Owner
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
m_sPosX = PosX
m_sPosY = PosY
m_dPrevOffsetX = OffsetX
m_dPrevOffsetY = OffsetY
m_SelIndex = OtherRefMode
m_SelRef = SelRef
End Sub
Private Sub OtherRrefTabWD_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
' costruisco il riferimento alla pagina Raw
m_RawPartPage = m_MainWindow.m_RawPartPage
' posiziono la finestra
Me.Top = Owner.Top + Owner.Height / 4 - Me.Height / 2
Me.Left = Owner.Left + Owner.Width / 6 - Me.Width / 2
RefRawTxbl.Text = "Raw reference"
RefTabXTxbl.Text = "Position X"
RefTabYTxbl.Text = "Position Y"
SelRefTxbl.Text = "Sel reference"
RefTabOrientationCmBx.ItemsSource = m_RawPartPage.m_OtherRefTabOrientationList
RefTabOrientationCmBx.SelectedIndex = m_RawPartPage.m_OtherRefTabPos
RefTabCmBx.ItemsSource = m_RawPartPage.m_OtherRefTabList
RefTabCmBx.SelectedIndex = m_RawPartPage.m_CurrRefTab
End Sub
Private Sub OtherRrefTabWD_Load(sender As Object, e As EventArgs) Handles Me.Loaded
RefTabXTxBx.Text = m_sPosX
RefTabYTxBx.Text = m_sPosY
End Sub
Private Sub RefTabCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles RefTabCmBx.SelectionChanged
If m_bModifX Or m_bModifY Then
Dim SaveCurrToolWnd = New EgtMsgBox(m_MainWindow, "", EgtMsg(MSG_EGTMSGBOX + 2), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL)
Select Case SaveCurrToolWnd.m_nPressedBtn
Case 0 ' Annulla
' annullo l'operazione di cambio indice
RefTabCmBx.SelectedIndex = m_RawPartPage.m_CurrRefTab
Return
Case 1 ' Si
' salvo i valori modificati
UpdateCurrOffset()
' recupero l'oggetto precedentemente selezionato e lo aggiorno (per evitare di rileggere il file ini)
Dim temp_RefTab As ReferenceTable = m_RawPartPage.m_OtherRefTabList(m_RawPartPage.m_CurrRefTab)
temp_RefTab.dOffsetX = m_RawPartPage.m_OtherRefTabX
temp_RefTab.dOffsetY = m_RawPartPage.m_OtherRefTabY
temp_RefTab.nPos = m_RawPartPage.m_OtherRefTabPos
Case 2 ' No
' Non salvo e vado oltre
m_bModifX = False
m_bModifY = False
End Select
End If
' recupero l'oggetto selezionato
Dim local_RefTab As ReferenceTable = m_RawPartPage.m_OtherRefTabList(RefTabCmBx.SelectedIndex)
m_RawPartPage.m_CurrRefTab = RefTabCmBx.SelectedIndex
' Imposto gli Offset del riferimento selezionato
RefTabXTxBx.Text = LenToString(local_RefTab.dOffsetX, 2)
m_RawPartPage.m_OtherRefTabX = local_RefTab.dOffsetX
RefTabYTxBx.Text = LenToString(local_RefTab.dOffsetY, 2)
m_RawPartPage.m_OtherRefTabY = local_RefTab.dOffsetY
' Aggiorno la posizine del grezzo
m_RawPartPage.RefTabModeChange()
m_bModifX = False
m_bModifY = False
End Sub
Private Sub RefTabOrientationCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles RefTabOrientationCmBx.SelectionChanged
m_RawPartPage.m_OtherRefTabPos = RefTabOrientationCmBx.SelectedIndex
m_RawPartPage.RefTabModeChange()
End Sub
Private Sub RefTabXTxBx_EgtClosed(sender As Object, e As EventArgs) Handles RefTabXTxBx.EgtClosed
Dim ptMin, ptMax As Point3d
If EgtGetTableArea(1, ptMin, ptMax) Then
Dim dX As Double = 0
StringToLen(RefTabXTxBx.Text, dX)
If Not (dX > 0 And dX < ptMax.x - ptMin.x) Then
If dX > 0 Then
dX = ptMax.x - ptMin.x
Else
dX = 0
End If
RefTabXTxBx.Text = LenToString(dX, 2)
' errore, posizione fuori dalla tavola
End If
m_RawPartPage.m_OtherRefTabX = dX
m_bModifX = True
m_RawPartPage.RefTabModeChange()
End If
End Sub
Private Sub RefTabYTxBx_EgtClosed(sender As Object, e As EventArgs) Handles RefTabYTxBx.EgtClosed
Dim ptMin, ptMax As Point3d
If EgtGetTableArea(1, ptMin, ptMax) Then
Dim dY As Double = 0
StringToLen(RefTabYTxBx.Text, dY)
If Not (dY > 0 And dY < ptMax.y - ptMin.y) Then
If dY > 0 Then
dY = ptMax.y - ptMin.y
Else
dY = 0
End If
RefTabYTxBx.Text = LenToString(dY, 2)
' errore, posizione fuori dalla tavola
End If
m_RawPartPage.m_OtherRefTabY = dY
m_bModifY = True
m_RawPartPage.RefTabModeChange()
End If
End Sub
Private Sub OkBtn_Click() Handles OkBtn.Click
WritePrivateProfileString(S_RAWPART, K_CURRENTREFTAB, m_RawPartPage.m_CurrRefTab.ToString, m_MainWindow.GetIniFile())
' Aggiorno il valore del riferimento correntemente modificato
UpdateCurrOffset()
m_RawPartPage.RefTabModeChange()
Me.Close()
End Sub
Private Sub UpdateCurrOffset()
Dim sKeyMsg As String = K_REFTAB & m_RawPartPage.m_CurrRefTab.ToString
Dim sValMsg As String = DoubleToString(m_RawPartPage.m_OtherRefTabX, 2) & "," & DoubleToString(m_RawPartPage.m_OtherRefTabY, 2) & "," & m_RawPartPage.m_OtherRefTabPos.ToString
WritePrivateProfileString(S_RAWPART, sKeyMsg, sValMsg, m_MainWindow.GetIniFile())
End Sub
Private Sub ExitBtn_Click() Handles ExitBtn.Click
' Recupero la prima selezione eseguita
m_RawPartPage.m_CurrRefTab = m_SelRef
Dim temp_RefTab As ReferenceTable = m_RawPartPage.m_OtherRefTabList(m_RawPartPage.m_CurrRefTab)
' aggiorno i valori
m_RawPartPage.m_OtherRefTabX = temp_RefTab.dOffsetX
m_RawPartPage.m_OtherRefTabY = temp_RefTab.dOffsetY
m_RawPartPage.m_OtherRefTabPos = temp_RefTab.nPos
m_RawPartPage.RefTabModeChange()
End Sub
End Class
Public Class ReferenceTable
Private m_dOffsetX As Double
Private m_dOffsetY As Double
Private m_nPos As RawPartPageUC.OTHERREFMODE = RawPartPageUC.OTHERREFMODE.BL
Private m_nIndexRef As Integer = 0
Public Property dOffsetX As Double
Get
Return m_dOffsetX
End Get
Set(value As Double)
m_dOffsetX = value
End Set
End Property
Public Property dOffsetY As Double
Get
Return m_dOffsetY
End Get
Set(value As Double)
m_dOffsetY = value
End Set
End Property
Public Property nPos As Integer
Get
Return m_nPos
End Get
Set(value As Integer)
m_nPos = value
End Set
End Property
Public Property nIndexRef As Integer
Get
Return m_nIndexRef
End Get
Set(value As Integer)
m_nIndexRef = value
End Set
End Property
Public ReadOnly Property Name As String
Get
Return "REF_" & m_nIndexRef.ToString()
End Get
End Property
Public ReadOnly bOk As Boolean = True
Sub New(sStringFromIni As String, IndexRef As Integer)
Dim sItems() As String = sStringFromIni.Split(","c)
If sItems.Count = 3 Then
bOk = bOk And StringToLen(sItems(0), m_dOffsetX)
bOk = bOk And StringToLen(sItems(1), m_dOffsetY)
bOk = bOk And StringToInt(sItems(2), m_nPos)
m_nIndexRef = IndexRef
Else
bOk = False
End If
End Sub
End Class
+20 -3
View File
@@ -136,7 +136,9 @@
Style="{DynamicResource OmagCut_YellowToggleButton}"/> Style="{DynamicResource OmagCut_YellowToggleButton}"/>
<ToggleButton Name="RemoveBtn" Grid.Column="1" <ToggleButton Name="RemoveBtn" Grid.Column="1"
Style="{DynamicResource OmagCut_YellowToggleButton}"/> Style="{DynamicResource OmagCut_YellowToggleButton}"/>
<Button Name="CloseBtn" Grid.Row="1" Grid.ColumnSpan="2" <Button Name="CloseBtn" Grid.Row="1"
Style="{DynamicResource OmagCut_YellowTextButton}"/>
<Button Name="RectangleBtn" Grid.Row="1" Grid.Column="1"
Style="{DynamicResource OmagCut_YellowTextButton}"/> Style="{DynamicResource OmagCut_YellowTextButton}"/>
</Grid> </Grid>
@@ -157,6 +159,10 @@
</GroupBox> </GroupBox>
<TextBlock Name="OtherRefTabTxBl" Grid.Row="5" Grid.ColumnSpan="2" Style="{DynamicResource OmagCut_CurrProjSummeryTextBlock}"/>
<CheckBox Name="OtherRefTabChBx" Grid.Row="5" Grid.Column="1" Style="{StaticResource OmagCut_CheckBox}"
HorizontalAlignment="Right" Margin="0,0,6,0"/>
<Button Name="ConfirmPhotoBtn" Grid.Row="4" Grid.ColumnSpan="2" Visibility="Hidden" <Button Name="ConfirmPhotoBtn" Grid.Row="4" Grid.ColumnSpan="2" Visibility="Hidden"
Style="{DynamicResource OmagCut_YellowTextButton}"/> Style="{DynamicResource OmagCut_YellowTextButton}"/>
@@ -169,7 +175,10 @@
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="6*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
@@ -186,7 +195,15 @@
<Image Source="{DynamicResource SlabIdImg}" Style="{StaticResource OmagCut_ButtonIcon}"/> <Image Source="{DynamicResource SlabIdImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button> </Button>
<Button Name="OkBtn" Grid.Column="5" Style="{DynamicResource OmagCut_GradientBlueIconButton}"> <Button Name="OtherRefTabBtn" Grid.Column="4" Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource RefTabImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="ManualModeBtn" Grid.Column="6" Style="{DynamicResource OmagCut_YellowGradientYellowIconButton}">
<Image Source="{DynamicResource ManualImg}" Style="{StaticResource OmagCut_ButtonIcon}"/>
</Button>
<Button Name="OkBtn" Grid.Column="8" Style="{DynamicResource OmagCut_GradientBlueIconButton}">
<Image Source="{DynamicResource VImg}" Width="65" Height="65" HorizontalAlignment="Center" <Image Source="{DynamicResource VImg}" Width="65" Height="65" HorizontalAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Button> </Button>
File diff suppressed because it is too large Load Diff

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