Compare commits

..

300 Commits

Author SHA1 Message Date
DarioS c2a3fdfbd4 EgtBeamWall 2.4c1 :
- versione 2403
- dopo esecuzione NestProcess.lua si resettano tutte le tabelle lua.
2022-03-08 11:12:02 +01:00
Emmanuele Sassi 0218880d93 - Gestita traduzione messaggi lua
- Aggiunto passaggio da ottimizzatore a supervisore e viceversa
- Introdotto nesting da BTL
- Gestione ricalcolo pezzi con collisione
2022-03-07 21:02:24 +01:00
Emmanuele Sassi 3752846faa - introdotta apertura ottimizzatore con progetto specificato da riga di comando 2022-02-24 20:37:30 +01:00
Emmanuele Sassi 31822c78a4 - aggiunto flag in ini per attivare update btl 2022-02-23 17:00:19 +01:00
Emmanuele Sassi a36313b9b2 - Correzione impedita modifica rot e flip in supervisore 2022-02-23 16:40:49 +01:00
Emmanuele Sassi bd13256399 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-02-21 17:16:05 +01:00
Emmanuele Sassi 83bfe07c50 - spostata gestione portare altro programma in primo piano in core
- corretti valori assi macchina su Tpa
- correzione lettura risultati calc in supervisore
- migliorat partenza tick di comunicazione con la macchina
- correttie liste colori in Tpa
- gestita visibilita' pagine input, output su Tpa
- Aggiunto GoToProd in supervisore
- Aggiunto GoToSupervisor in ottimizzatore
- correzione su gestione tick dei thread di comunicazione
- Aggiunto nesting travi su dimensioni diverse e abilitazione dimensioni
- Correzione caricamento prod da supervisore
2022-02-21 16:39:57 +01:00
DarioS ae7474445d EgtBEAMWALL 2.4b2 :
- corretta gestione ricalcolo pezzi con errori.
2022-02-17 19:23:18 +01:00
Emmanuele Sassi ebec1bb583 - Aggiunto StartCut a lunghezza in creazione grezzo travi
- Aggiunti filtri su BTLPart DoAll
- Correzione su selezione pareti
- Aggiunta visibilita' bottone supervisore
- Correzione su ShowAll parts
- Correzione disattivazione assemblato durante import BTL
- Correzione selezione pezzi in finestre pareti
- Correzione tipo di progetto in warehouse
2022-02-16 18:59:15 +01:00
Emmanuele Sassi acd66d7738 - Correzione visibilita' barra ottimizzazione su caricamento ottimizzazione 2022-02-16 10:36:12 +01:00
Emmanuele Sassi 7be48bd00a - Corretta rotazione/inversione su copia trave 2022-02-15 19:50:41 +01:00
Emmanuele Sassi 136de45c47 - Aggiunta finestra loading a importa, esporta, gotoProj
- Aggiunta traduzione messaggi di loading
2022-02-15 13:01:40 +01:00
Emmanuele Sassi 93c4e02633 - Migliorati header DataGrid
- Aggiunto check DoAll su BTlPart
- Correzione IsEnabled di alcuni bottoni durante verifica
- Correzione eliminazione duplo su creazione barre con pezzi piu' grandi della barra
- Corretta doppio refresh grafico su selezione Machgroup
- Spostato PartManager sotto GridSplitter
- Miglioramenti grafici vari
2022-02-14 17:07:01 +01:00
Emmanuele Sassi f47bf047b8 - Correzione su commit precedente 2022-02-12 13:03:22 +01:00
Emmanuele Sassi b0c6bb52f8 - Aggiunta finestra LoadingWnd per caricamenti
- Nascosto parametri Q in ottimizzatore per travi
2022-02-11 19:23:05 +01:00
Emmanuele Sassi f8dc8d075b - Aggiunte colonne Grouppo e Sottogruppo
- Correzione scrittura parametri Q in vista
- Correzione quote sezione durante assemblato
- Gestione filtri di ricerca
- Gestione nesting su filtri
2022-02-08 20:31:07 +01:00
Emmanuele Sassi 927f171cd6 - Correzione colonne supervisore per travi
- impostazione stato manuale TPA dopo avvio connessione
- Aggiunta lettura StartCut in supevisore per travi
- Impostazione tempo inizio se nullo e si deve impostare fine
- gestione visibilita' bottone PartDone in supervisore
- Bloccato edit parametri Q in ottimizzatore quando mandati a supervisore
- Nascosti parametri Q in ottimizzatore quando progetto travi
2022-02-07 19:40:29 +01:00
Emmanuele Sassi 5ca6f13899 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2022-02-07 09:23:56 +01:00
Emmanuele Sassi b68f6bfeee - nascosto i parametri Q in ottimizzazione travi
- gestita selezione MachGroup in supervisore dopo comandi
- Aggiunta verifica di non entrare nel ciclo comunicazione programmi se gia' all'interno
- annullato CALC dopo aver inserito pezzo in grezzo
- annullato CALC dopo avermodificato dimensioni grezzo
- disabilitata registrazione modifica su s/blocco duplo
- aggiornato DB su eliminazione Part in RawPart
-
2022-02-07 09:21:18 +01:00
Emmanuele Sassi b5daa71abf Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-02-04 08:33:11 +01:00
Emmanuele Sassi ee558cecd6 - Migliorie Calc pezzi
- Correzione flip e rot dei duplo
- Cambiata gestione ricalcolo in supervisore
- Aggiunti controlli su comunicazione tra programmi
- Gestione apertura progetto con s/blocco duplo
- Gestione errore ricalcolo in supervisore
- Aggiunti controlli su cicli di comunicazione tra programmi
2022-02-03 21:49:05 +01:00
DarioS c87210873f EgtBEAMWALL :
- modifiche pe rimpostare vista e origini default macchina quando fallisce l'esecuzione del relativo file lua.
2022-02-03 21:21:31 +01:00
RenzoL 0535036d36 - Piccola correzione ad un EgtSetInfo che prendeva nType di tipo sbagliato 2022-02-02 11:04:29 +01:00
RenzoL 77333dfc9e Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-02 10:19:49 +01:00
RenzoL a6b9fcd2ba - Correzione UpdateBTL per avere i part aggiunti distanziati sempre di un offset fisso pari a 500
- Correzione UpdateBTL per avere lista part e disegno aggiornati senza riaprire il progetto ogni volta
- Reso visibile il bottone UpdateBTL
2022-02-02 10:09:06 +01:00
Emmanuele Sassi 568e98aec8 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-02-01 15:52:39 +01:00
DarioS 4548e468a1 EgtBEAMWALL 2.4b1 :
- corretta gestione flip e rotazione dei duplo e loro aggiornamento.
2022-02-01 15:25:47 +01:00
Emmanuele Sassi a73af5928f - Inizio correzione sblocco duplo
- Trasformazione di flip da boolean a integer
- Aggiornamento modifica Q su pezzi
2022-02-01 12:14:16 +01:00
RenzoL 5385547af6 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-02-01 10:02:41 +01:00
Emmanuele Sassi 46f2db3415 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2022-01-31 16:37:20 +01:00
Samuele Locatelli 2aa61e5141 Update gestione DB con using x nON riutilizzare singleton DB 2022-01-31 16:36:18 +01:00
Samuele Locatelli 007c9c0edc Merge remote-tracking branch 'origin/develop' into DataLayer 2022-01-31 16:21:30 +01:00
Emmanuele Sassi ba807e89bc Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-01-31 14:47:45 +01:00
DarioS 53ca42389e EgtBEAMWALL :
- in Viewer corretto ritorno da Cam5 edit pezzo.
2022-01-31 13:26:04 +01:00
Emmanuele Sassi 35cc8959da - Agiunto se pezzo in supervisore impossibile cambiarne le dimensioni
- Gestito sblocco duplo su apertura progetto in prod
- Gestita conservazione parametri duplo su sblocco
2022-01-31 12:49:45 +01:00
RenzoL 467284d008 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2022-01-31 08:51:50 +01:00
Emmanuele Sassi 51a2cbf17c EgtBEAMWALL 2.4a5 :
- ricompilazione per cambio versione
- Aggiunta nuova gestione parametri Q per pareti
2022-01-31 08:47:53 +01:00
Emmanuele Sassi 8e8d1c2a91 - Migliorata gestione assemblato non presente
- Correzione viste per travi
- Introdotto s/blocco dei duplo
- Introdotta traduzione dei messaggi macchina
- Migliorata gestione attivazione bottoni
- Bloccate colonne in edit durante Calc
- Aggiornamento quantita' in prod dopo cambio dimensioni
- Impedito Flip e Rot durante Calc
- Limitata considerazione pezzi in nesting a quelli ancora da aggiungere
- Gestione errori import BTL con messaggio errori
2022-01-29 10:24:24 +01:00
RenzoL 7a2c45fc4b - Aggiunto comando UpdateBTL al ProjManager 2022-01-28 17:01:07 +01:00
RenzoL 19b1b8d984 - Aggiunto salvataggio path ultimi file importati e apertura dialog di importazione con directory iniziale settata da quelli 2022-01-27 11:59:29 +01:00
RenzoL 1767aa7f97 - Aggiunta funzionalità LockTable al ContextMenu sugli header delle colonne di EgtDataGrid 2022-01-26 15:42:49 +01:00
RenzoL 652ce25a83 - Correzione su aggiornamento della visibilità delle colonne di una EgtDataGrid per tutta la tabella (ora è messa dopo l'aggiornamento visibilità di colonna singola a Visible e prima dello stesso a Collapsed) 2022-01-25 16:15:45 +01:00
RenzoL 6c2d3bb7b5 - Resize tra le sole colonne adiacenti di EgtDataGrid funzionante (dal merge col branch "ResizeColonneAdiacenti")
- Settato HorizontalScrollBarVisibility="Auto" per tutte le EgtDataGrid
2022-01-25 12:15:09 +01:00
RenzoL 4257a92486 Merge branch 'ResizeColonneAdiacenti' into Renzo 2022-01-25 09:55:04 +01:00
RenzoL ac621d9dc0 - Rimossa da Configurazione la tab "Colonne tabelle" assieme a DataGrid e funzioni associate poiché ora è gestito dal ContextMenu su header colonne 2022-01-25 09:26:49 +01:00
RenzoL 6f56ae6686 - Aggiunto ContextMenu agli header della EgtDataGrid per settare Reorder, Resize, Sort e Visibilità delle colonne 2022-01-24 17:31:33 +01:00
RenzoL e19032f3cb Correzione alla visibilità delle colonne delle EgtDataGrid che non veniva più settata correttamente 2022-01-24 16:50:16 +01:00
Emmanuele Sassi 92b770f448 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2022-01-24 16:30:19 +01:00
Emmanuele Sassi 27d8eb37e8 - Introdotti tooltip su bottoni disattivi
- corretto errore dimensioni con assemblato in ottimizzatore
- Migliorata dis/attivazione bottoni Calc
- Correzioni mutex per uso mono istanza
- Correzione FlipRotsu singola sezione
- Aggiunta gestione sovrascrittura BTL
- Annullo CurrProd durante importazione progetti per evitare import stati di produzione errati
2022-01-24 16:28:47 +01:00
Emmanuele Sassi dfb3774943 - Spostati nel file messaggi alcuni presenti nel supervisore
- Migliorata gestione pagina MDI
- Introdotti tooltip su bottoni disattivi
2022-01-24 16:23:17 +01:00
Emmanuele Sassi a9b003d9ec - correzione UpdateInfo 2022-01-24 10:30:56 +01:00
Emmanuele Sassi 8c9f2ce613 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2022-01-24 10:05:58 +01:00
Samuele Locatelli b833d6c4ec Update gestione nome BTL da indicizzare x parent/child duplicates 2022-01-24 10:03:38 +01:00
RenzoL 111c59ea46 Template.FindName(...) per trovare i Gripper destro e sinistra dei Thumb + Funzioni DragStarted, PreviewMouseMove e DragCompleted 2022-01-21 14:50:48 +01:00
Emmanuele Sassi 21a91b5202 - Eliminato log di debug 2022-01-21 09:55:19 +01:00
Emmanuele Sassi c1fba27b1f - Correzioni su uso mutex
- Correzione flag di stampa etichette
- Introdotto gestore eccezioni generali per loggarle ed evitare crash
2022-01-21 09:54:21 +01:00
RenzoL 7225bad678 - VM della Tabella delle lavorazioni delle travi eredita dal VM generale ora presente in EgtWPFLib5 2022-01-20 14:44:15 +01:00
RenzoL 6b2aa1a8d1 - Modificata Sub Cell_SizedChanged per permettere il Resize delle sole colonne adicenti (ovvero quelle che hanno il divider in comune che viene draggato)
- Aggiunta Sub ColumnHeader_PreviewMouseLeftButtonDown per identificare quale colonna stiamo ridimensionando
2022-01-20 10:02:21 +01:00
Emmanuele Sassi f95ce8d671 - migliorato IsEnabled bottoni supervisore
- corretto errore su ripartenza parete
- impedisco chiusura supervisore se macchina lavora
- aggiunta notifica pezzi fatti in ottimizzatore
2022-01-19 08:28:50 +01:00
Emmanuele Sassi 54ed7dc11c - Corretto errore importazione non sovrascriveva ProdId su MachGroup 2022-01-18 19:03:09 +01:00
Emmanuele Sassi 69beb83764 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-01-18 17:44:34 +01:00
DarioS faa8aada54 EgtBEAMWALL :
- correzione errore legato a flip (rotazione di 1 deg anzichè 1 * 180 deg).
2022-01-18 17:39:34 +01:00
Emmanuele Sassi 4dcd4a1fa0 - modifica visualizzazione bottoni nesting solo con opportuno flag su licenza
- nascosti comandi Update BTL e Add To BTL
- creato ma lasciato commentato comando per ruotare trave di 90 su X
2022-01-18 17:12:16 +01:00
RenzoL e4178317a9 - Modifiche alla proprietà IsReadOnly delle colonne di EgtDataGrid non vengono più scritte nell'INI durante l'esecuzione del programma 2022-01-18 11:39:00 +01:00
RenzoL a9b25e1a30 - aggiunto pulsante di Invio Feedback al MainMenu
- adattata la funzione ExportProject di ProjManager per funzionare nell'Invio Feedback
2022-01-18 11:29:41 +01:00
Emmanuele Sassi 32d099f5cc Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2022-01-18 08:39:30 +01:00
Emmanuele Sassi fe21d5e65e - Aggiunti tooltip 2022-01-18 08:38:41 +01:00
Emmanuele Sassi 241b392036 - Implementati in interfaccia comandi MDI 2022-01-18 08:37:55 +01:00
DarioS fb90d5a98c EgtBEAMWALL 2.4a4 :
- ricompilazione per cambio versione.
2022-01-18 08:17:16 +01:00
Emmanuele Sassi 9db10d8cde - aggiornamento icone blocca/sblocca rotazione e flip 2022-01-17 09:27:44 +01:00
Emmanuele Sassi aeb60213b6 - Corretto calcolo volume nel caso non ci siano outline 2022-01-17 08:25:46 +01:00
Emmanuele Sassi 69111c057a - Aggiornata versione
- Gestione enable dei bottoni in supervisore
- gestita attivazione da ini stampa etichetta
2022-01-15 13:36:20 +01:00
Emmanuele Sassi 44e97c3452 - aggiornamento icone
- introdotto calcolo volume dato contorno pareti
- aggiunta in supervisore gestione tabella MDI
- aggiunto salvataggio progetto dopo aggiornamento duplo
- girate tutte le viste per macchine inverse, anche in supervisore
- nacosti pezzi quando in ottimizzatore o supervisore senza Machgroup
- scritte BTLPartList in verde se raggiunta quantita' INPROD
- aggiunta gestione bottoni abilitati/disabilitati a seconda degli elementi selezionati
- introdotta modifica dimensioni grezzi
- corretto errore che non impostava corretamente progetto quando aperto da ottimizzatore
- smontato assemblato prima di eseguire alcuni comandi per poi ripristinarlo
2022-01-13 20:45:37 +01:00
Emmanuele Sassi 8112616b96 - aggiunto reset stato di mandato a supervisore per i part
- implementato aggiornamento stato MachGroup e part quando MachGroup tolto da supervisor
- implementato stile di selezione righe in tabella in supervisore
- nascosto bottone part Done in supervisore se macchina pareti
- correzioni a stati di produzione part e machgroup
- impedito usare bottoni reset e done se macchina non in reset o presenti machgroup in coda di produzione
- gestita verifica compatibilita' tipo di macchina usata dal progetto in supervisore
- salvataggio progetto dopo verifica anche su db per non avere problemi con supervisore
- migliorata gestione errore invio Machgroup a supervisore perche' non lavorabile
2022-01-07 19:47:03 +01:00
Emmanuele Sassi 0f6179bcd1 - Gestito reset stato di calc quando modifica Q da pagina config
- salvataggio progetto dopo verifica
- aggiunti controlli in caso di risultati calc con Id sbagliati
- correzione messaggio di fine nesting solo su materiali utilizzati
- corretto errore import/export se progetto assemblato
- reset degli stati di calc sia in proj che prod in importazione progetto
2022-01-06 19:47:52 +01:00
Emmanuele Sassi f52f48c57e - reset calc solo di pezzo e feature su disabilitazione 2022-01-04 22:44:13 +01:00
Emmanuele Sassi 1d596e8d41 - correzione errore in considerazione stati pezzi con feature non calcolate
- aggiornamento versione
2022-01-04 22:20:51 +01:00
Emmanuele Sassi 0651a225ff - aggiunte icone unlock flip e rot
- aggiunti taskid su auxid
- migliorate condizioni di verifica
- nascosto bottone edit in ottimizzatore
2022-01-04 21:37:23 +01:00
Emmanuele Sassi 8fbed00523 - Correzione ricalcolo dopo modifica pezzi senza feature
- Introduzione comando Edit
- Cancellazione file .ori in apertura simulazione se pezzo non calcolato (altrimenti non li ricalcola)
- aggiornamento versione programma
- correzione errori causati dalla modalita' assemblato
- introduzione parziale reset stati calc in import project
2022-01-04 12:51:06 +01:00
Emmanuele Sassi 0bdb218488 - rotazione nuovo pezzo secondo vista della macchina
- tooltip per parametri Q
2022-01-03 19:52:31 +01:00
Emmanuele Sassi dae912e76c - aggiunta considerazione angolo d'inserimento in nuovo grezzo e aggiungi pezzo
- introdotta selezione singola se movimentazione pezzi con mouse disattivata
2022-01-03 12:41:25 +01:00
Emmanuele Sassi e2d226a0f9 - Aggiunti messaggi 2022-01-03 11:01:41 +01:00
Emmanuele Sassi b33baf8288 - miglioramento creazione manuale grezzo 2022-01-03 10:27:23 +01:00
Emmanuele Sassi 5c3b677c20 - Eliminata finestra sezioni materiali in import file
- Introdotto aggiornamento lista sezioni magazzino da proj a prod
- magazzino mostra solo sezioni e materiali del progetto corrente
2021-12-29 20:20:54 +01:00
Emmanuele Sassi 30b4b60d53 - Correzioni a RotFlip 2021-12-29 12:16:39 +01:00
Emmanuele Sassi 73978d1ca9 - Correzione blocco rotazione in import per vista
- Aggiunto tooltip su descrizione parametri P
- Abilitati lucchetti e sblocco rotazione e flip manuali
2021-12-29 10:18:21 +01:00
Emmanuele Sassi 52eec22b63 - modifiche su verifica e simula per mantenere modifiche manuali
- aggiornato stile elemento selezionato sulle datagrid
- corretto posizionamento pezzo in grezzo con aree lavorate
2021-12-28 17:46:10 +01:00
Emmanuele Sassi 863605838b Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-12-28 09:50:51 +01:00
DarioS 9257a2fd3a EgtBEAMWALL 2.3l3 :
- ricompilazione totale per cambio versione.
2021-12-23 16:16:26 +01:00
Emmanuele Sassi bb68659510 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-12-23 15:46:50 +01:00
Emmanuele Sassi 04f3e94e50 - aggiunte opzioni nesting
- nuovi colori elemento selezionato in datagrid
- warehouse con possibilita' di attivare/disattivare materiali
2021-12-23 15:44:31 +01:00
RenzoL 5dbb4601a5 - Resa resizable la finestra Warehouse
- Corretto sorting colonna SectionXMaterial in Warehouse
2021-12-23 14:58:20 +01:00
RenzoL 25c4864c63 - Aumentata altezza finestra Warehouse 2021-12-22 10:45:03 +01:00
RenzoL ab1bac7a79 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-12-21 17:12:55 +01:00
Emmanuele Sassi a286caf8f5 - Correzioni esportazione e importazione progetto
- Correzione notifica tempi di lavorazione
2021-12-16 20:04:58 +01:00
Emmanuele Sassi ce4aa010ab - Introduzione aggiornamento multiplo feature su tasto destro o check sul part 2021-12-16 09:27:15 +01:00
Emmanuele Sassi 502a38449f - Aggiornamento versioni 2021-12-14 10:08:39 +01:00
Emmanuele Sassi 752de23e13 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-12-13 14:02:21 +01:00
Emmanuele Sassi 9794378382 - Tolto domanda se aggiungere proj a prod gia' esistente 2021-12-13 14:02:09 +01:00
RenzoL 8f6cac5d75 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-12-13 12:38:04 +01:00
RenzoL 4c6e74cac1 - Correzione scrittura Parametri P/Q 2021-12-13 11:06:34 +01:00
Emmanuele Sassi 505ec32b74 - Aggiunta rilettura parametri Q dopo rotazione
- Aggiunta gestione rotazioni e flip automatico con blocco e sblocco
- Introdotta possibilita' di attivare categoria di feature in pezzo con contextmenu
-  Spostato Reset Calc in CALCPanel
2021-12-13 09:18:40 +01:00
Emmanuele Sassi 949f0b9c7f - Correzione rotazione pareti
- Correzione selezione macchina per progetto
2021-12-07 10:10:04 +01:00
Emmanuele Sassi 7e4b77f321 - Modifiche s rotazione in nesting, da migliorare! 2021-12-04 09:57:22 +01:00
Emmanuele Sassi 843ea293a9 - Agginta inizializzazione variabile punte lunghe in nesting 2021-12-03 19:44:38 +01:00
Emmanuele Sassi b52786ef2b - Modifiche grafiche 2021-12-03 13:13:18 +01:00
Emmanuele Sassi 1298aeaf85 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-12-02 13:21:02 +01:00
RenzoL 46d9be852b Correzione ai Parametri Q non caricati appena si importa un BTL 2021-12-02 12:42:26 +01:00
RenzoL b319b84e20 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-12-02 11:59:26 +01:00
Emmanuele Sassi dcad21374b Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-12-02 11:44:02 +01:00
Emmanuele Sassi 28ca22ee35 - Correzione aggiornamento messaggio errore dopo CALC
- Aggiunta opzione abilitadisabilita area pnte lunghe in nesting
2021-12-02 11:43:54 +01:00
DarioS c4af3eedd4 EgtBEAMWALL 2.3l1 :
- altre correzioni e modifiche per impostazione tipo giacitura pezzi a BeamMgr
- modifiche per copia e cancellazione FreeContour, Outline e Aperture.
2021-12-02 11:30:55 +01:00
RenzoL 5e9d068078 Aggiunta copia multipla dei grezzi 2021-12-02 09:41:32 +01:00
RenzoL 791ed3480c Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-12-02 08:43:45 +01:00
Emmanuele Sassi a26e25b253 - Correzione bottone reset barra da supervisor nel caso siano tutte gia' prodotte 2021-12-02 08:36:59 +01:00
Emmanuele Sassi 1db314e077 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-12-02 08:35:53 +01:00
RenzoL fb81c84ab2 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-12-01 16:04:31 +01:00
DarioS defe2a36d0 EgtBeamWall :
- correzioni per impostazione tipo giacitura pezzi a BeamMgr.
2021-12-01 16:02:07 +01:00
RenzoL 71b13d514a Nuova finestrella Inserimento Password (con caratteri oscurati) per modifica parametri Macchina 2021-12-01 15:49:11 +01:00
Emmanuele Sassi 6c4bb9d0a7 - Introduzione reset del grezzo in supervisore
- aggiunta rotazione dei pezzi copia per renderli uguali ad originale
- Correzione errore verifica tutti non funzionante con barre gia' mandate a supervisore
2021-12-01 15:21:53 +01:00
Emmanuele Sassi 82d18f368e Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-12-01 10:07:32 +01:00
DarioS 4152a7aa1b EgtBeamWall 2.3k3 :
- modifiche per copia pezzi con FreeContour, Outline e Aperture.
2021-12-01 10:00:46 +01:00
Emmanuele Sassi 5dd829e205 - miglioramento RotFlip per pareti
- introduzione angolo riferimento per nesting automatico da WallData.lua
2021-11-30 16:44:55 +01:00
Emmanuele Sassi 7218459c24 - correzioni e migliorie a rot e flip
- separazione rot e flip tra view e optim
- aggiunta gestione angolo di riferimento posizionamento pezzi per pareti
2021-11-29 19:35:28 +01:00
Emmanuele Sassi 8592f8d65f Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-29 19:31:45 +01:00
RenzoL e5a3f0c68a Nuova gestione/lettura/scrittura Parametri Q, separati in quelli di tipo Trave e quelli di tipo Parete (aggiornato file BTLFeatures.ini) 2021-11-29 15:23:11 +01:00
RenzoL e168545ec8 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-29 08:41:05 +01:00
Emmanuele Sassi 84a6cf3c2f - Aggiunta lettura dati da file WallData.lua
- Aggiunta colonna macchina in dialogo di apertura file
- Impedito di cancellare parametri P e Q con tasto Canc
- Migliorato caricamento macchina
- Aggiunta rotazione vista per macchine pareti ruotate
2021-11-26 19:36:28 +01:00
RenzoL a5c142f25c Aggiunti GridSplitter al Supervisor (con file Dimensions.ini aggiornato) 2021-11-26 15:22:10 +01:00
Emmanuele Sassi 99bd24fe38 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-26 10:42:24 +01:00
Emmanuele Sassi 69e010e147 - Modifiche provvisorie per far funzionare Q su L250
- Modifiche lettura variabili NUM per input ed output
- introdotte differenze grafiche tra NUM e TPA
- Introdotto controllo chiave su utilizzo Db non locale
- Correzione su reset dei CALC quando ci sono modifiche
- Blocco comandi su MachGroup in produzione
- Introdotto bottone supervisore in View/Optim per aprirlo o richiamarlo in primo piano
2021-11-26 10:41:27 +01:00
RenzoL ccf903acfc - Rimozione macchine copiate (con suffisso ".new") dalla lista in Cambio Macchina
- Pulsante Cambio Macchina nascosto se presente una sola macchina
2021-11-25 17:18:53 +01:00
RenzoL 76b96a41e3 Sezioni da aggiungere del progetto importato aggiunte alla Warehouse anche se si clicca su "Annulla" della finestra AddSectionXMaterial 2021-11-24 16:46:20 +01:00
Emmanuele Sassi 44518a00a5 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-23 19:07:09 +01:00
RenzoL 95cf5e2195 - Aggiunta gestione "Copia grezzo" per pareti
- Piccola correzione "Copia grezzo" per travi
2021-11-23 17:41:46 +01:00
Emmanuele Sassi 5a7e359ab8 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into develop 2021-11-19 14:49:07 +01:00
Emmanuele Sassi ea05a73a4b - Divisi i log tra ViewerOptimizer e Supervisor
- Correzioni per scrittura variabili su controllo TPA
2021-11-19 14:45:41 +01:00
Emmanuele Sassi d071bcb321 - Agginta gestione canali per NUM
- Introdotta gestione ingressi/uscite, da testare
- Divisi errori NUM in 4 categorie con colori
2021-11-18 17:10:39 +01:00
Emmanuele Sassi 4c27716ba2 - Correzione gestione BWType su Supervisor 2021-11-18 10:03:43 +01:00
Emmanuele Sassi 6ccb91b658 - correzion nel recupero del pezzo originale dei duplo: la isduplo funziona solo nel MachGroup
- Aggiunta lettura Indice di lavorazione
- Aggiunto test per ripartenza pareti con domanda
- Agginta gestione parziale colonne in Supervisor
2021-11-18 08:45:22 +01:00
Emmanuele Sassi 4f0ba7382e Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-17 16:52:05 +01:00
RenzoL bcf45654a2 Correzione copia parametri ProcessingQuality, Recess, StoreyType in "Copia pezzo" 2021-11-17 15:20:00 +01:00
Emmanuele Sassi 7ab408c2ea Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-17 11:02:02 +01:00
RenzoL 299a09d34d - Correzione "Copia pezzo", che non copiava tutti i parametri
- Correzione lettura parametri Recess, ProcessingQuality, StoreyType alla creazione del pezzo
2021-11-16 15:27:08 +01:00
Samuele Locatelli bad8f85e26 Merge remote-tracking branch 'origin/develop' into develop 2021-11-16 08:04:18 +01:00
Samuele Locatelli 07262542e3 Test modifica connString con charset 2021-11-16 08:04:10 +01:00
Emmanuele Sassi 4c3773c22f - Aggiunta funzione Duplo per lettura orig e recupero grezzo 2021-11-15 18:34:13 +01:00
RenzoL ee06c05a77 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-15 17:11:44 +01:00
Emmanuele Sassi 6d3be63778 - Separata lista messaggi operatore
- Correzione supervisore quando ho un solo RawPart in lista
- Correzione supervisore su ripartenza pareti
- Corretto errore di disallineamento tra progetto e Db
2021-11-15 11:44:26 +01:00
RenzoL 243b9b6a1a - Correzione lettura/scrittura Parametri Macchina (il contenuto di MachData.ini viene copiato su Ts3Data.lua)
- Se Macchina di tipo Both i Prametri Macchina vengono cercati in entrambe le cartelle (Beam/Wall) e i relativi file copiati laddove mancano
2021-11-12 17:36:08 +01:00
RenzoL f9b94ef999 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-11 09:16:53 +01:00
Emmanuele Sassi 889e45bf31 - Corretta ripartenza per parete
- Correzioni e miglioramento visalizzazione errori
2021-11-10 17:32:55 +01:00
RenzoL b6fbf4e425 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-10 11:45:36 +01:00
Emmanuele Sassi ea0aa78530 - Correzione visualizzazione MachGroup a fine nesting
- Aggiunta lettura messaggi operatore NUM
- inizializzazione tipo controllo per macchina corrente
- correzione recupero BTLPart in ricezione messaggi da supervisor
-
2021-11-10 10:03:05 +01:00
RenzoL e539b83041 Aggiunte pagine Ingressi e Uscite al Supervisor 2021-11-09 12:57:02 +01:00
RenzoL c7bd1dc1f9 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-09 08:51:01 +01:00
Emmanuele Sassi 474a1c1217 - Migliorati messaggi di errore 2021-11-09 08:41:59 +01:00
RenzoL 66dbb529e1 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-08 17:17:17 +01:00
Emmanuele Sassi e32dc440c1 - Correzioni e migliorie comunicazione con NUM 2021-11-08 16:29:41 +01:00
Emmanuele Sassi 766e758ed1 - Corretta lettura variabili PLC 2021-11-08 12:11:32 +01:00
RenzoL 3041753cb9 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-08 10:21:23 +01:00
Emmanuele Sassi 4d20011478 - Aggiunta gestione errori NUM
- Correzioni e miglioramenti a comunicazione con NUM
- Correzioni e miglioramenti invio programmi a NUM
- Aggiunta gestione separata errori NUM e TPA
- Aggiunta gestione separata OPState e OPMode
2021-11-06 12:48:39 +01:00
Emmanuele Sassi 78470c8ad0 - Integrazione dei comandi Num di COMMTest 2021-11-04 18:01:43 +01:00
RenzoL 5666c271a3 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-04 16:08:53 +01:00
Emmanuele Sassi ace6bbc35c - Correzioni comunicazione tra supervisore e ottimizzatore
- Correzioni apertura/chiusura finestre Waiting e Blocked
2021-11-04 10:15:56 +01:00
RenzoL 61a634edab Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-11-03 15:46:19 +01:00
Emmanuele Sassi 5b9be206a7 - Correzione in lista materiali per statistiche
- Aggiornamento versione programma
2021-11-03 14:58:58 +01:00
RenzoL 73bf46d466 Merge branch 'develop' into Renzo 2021-11-03 11:56:21 +01:00
Emmanuele Sassi f4d1728c6a Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-03 08:57:20 +01:00
Emmanuele Sassi 4bac0bb1a3 - Miglioramenti comunicazione finestre ripartenza pezzo 2021-11-03 08:57:11 +01:00
RenzoL 380f4f337c Disabilitazione segnalazione parametro Q modificato quando preso dal default 2021-11-02 17:22:29 +01:00
RenzoL 42f0a18d71 Aggiunto reset modifica Parametri Q quando si salva in Configurazione 2021-11-02 11:28:04 +01:00
Emmanuele Sassi b10493ab11 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-11-02 10:16:48 +01:00
Emmanuele Sassi 753a07de3b - Correzioni e miglioramenti ripartenza
- Nuove icone migliorate
- Correzioni e miglioramenti stampa PDF
- Aggiunte nuove statistiche
2021-11-02 10:16:14 +01:00
RenzoL 70cb04a2b2 Aggiunti vari GridSplitter nel ViewerOptimizer con lettura/scrittura delle dimensioni delle Grid coinvolte su file ini 2021-10-29 17:30:23 +02:00
RenzoL 2ec91830e4 Correzione aggiornamento colonne DataGrid nell'Ottimizzatore in base al tipo di Progetto in apertura 2021-10-28 15:16:10 +02:00
Emmanuele Sassi c211557cdd Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-28 10:02:11 +02:00
Emmanuele Sassi f1bff666c2 - Stampa pdf statistiche
- Introduzione lista materiali usati
- Aggiornato calcolo tempi con pezzi gia' lavorati
- Aggiornamento icone
- Migliorie e correzioni varie
2021-10-28 10:01:58 +02:00
RenzoL b4a58d9f4f Correzione verifica macchina all'avvio del programma 2021-10-27 14:55:29 +02:00
RenzoL 17dfbf2701 Spostata verifica macchina per Proj e Prod in apertura fuori da OnOpenProject (prima dell'effettiva apertura del progetto) 2021-10-27 12:58:13 +02:00
Emmanuele Sassi 3ec694db3a - Migliorie e correzioni durante le prove su macchina 2021-10-22 18:16:21 +02:00
Emmanuele Sassi 15c965c5b2 - Introdotta modalita' esecuzione MachGroup uno alla volta 2021-10-22 11:53:34 +02:00
Emmanuele Sassi 6482a4c1b8 - Correzioni e migliorie avanzamento pezzi
- Inizio gestione tipi di avanzamento pezzi
2021-10-22 08:35:06 +02:00
Emmanuele Sassi 9de7cb546a Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-21 14:55:36 +02:00
Emmanuele Sassi 0a352fe1dd - Implementata stampa etichetta con ZabraPrinterUtilitiesR32.exe
- Implementati indici di passaggio da ottimizzatore a supervisore con 5000
- Correzioni e modifiche comnicazione macchina durante prove
2021-10-21 14:53:43 +02:00
RenzoL f7fdc4aad8 - Aggiunta gestione file MRU nel Supervisor
- Aggiunta apertura ultimo progetto aperto all'avvio nel Supervisor
2021-10-20 16:03:12 +02:00
RenzoL 3ed7bb01f8 Correzione a file MRU (se nell'INI è presente un file di cui non si trova il ProjId/ProdId viene eliminato e non mostrato) 2021-10-20 09:59:47 +02:00
RenzoL 0fa73dbc06 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-10-19 15:45:00 +02:00
RenzoL 7f6cbee96e - Aggiunti DataGrid e comandi per la customizzazione delle Variables della Macchina in ConfigurationPage del Supervisor
- Correzioni varie al Supervisor
2021-10-19 15:44:12 +02:00
RenzoL be1b98d3d9 - Aggiunta DataGrid in AddSectionXMaterialWnd
- Corretta logica Alias in AddSectionXMaterialWnd
2021-10-19 09:03:07 +02:00
Emmanuele Sassi 13d87a180d Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-19 08:59:55 +02:00
RenzoL d827fd0c57 Correzioni a conferma e salvataggio di AddSectionXMaterialWnd 2021-10-18 11:02:18 +02:00
Emmanuele Sassi eea875458d - Correzioni finestra nesting 2021-10-15 09:33:17 +02:00
Emmanuele Sassi ef5009e274 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-15 08:55:20 +02:00
Emmanuele Sassi f26e5126b7 - Miglioramenti finestra nesting
- Introduzione finestra report del nesting
2021-10-15 08:46:58 +02:00
Emmanuele Sassi 42fc5935f3 - Miglioramenti nesting
- Miglioramenti vinestra avanzamento nesting
2021-10-14 12:23:23 +02:00
RenzoL 0dde9fe328 - Se una sola Macchina disponibile setto il progetto nuovo/importato a quella senza aprire dialog di scelta (tranne se quella Macchina è di tipo BOTH)
- Se progetto in apertura ha Macchina non presente tra quelle disponibili non lo apro
- Non apro AddSectionXMaterialWnd se non ci sono SectionXMaterial da aggiungere
- Aggiunto inserimento parametro Quantità a AddSectionXMaterialWnd
2021-10-13 12:01:35 +02:00
Emmanuele Sassi 06dbef5ed1 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-12 17:33:45 +02:00
RenzoL e2973d5e31 - Aggiunto Id Feature (nPRID) tra parentesi quadre al campo Descrizione mostrato per le Feature
- Reso fluido lo scroll delle DataGrid "Colonne tabelle" in Configurazione
- AddFeatureWnd ora ha sempre un PRC selezionato (se si passa tra le 2 tab L/T conserva quello precedentemente selezionato)
- Nomi tabelle e colonne in Configurazione ora visualizzati senza prefissi "DG_" e "col"
- Adattata la scrittura delle Macro alla nuova EgtBeamAddProcess (aggiornato anche MacroTemplate.ini)
2021-10-12 10:25:46 +02:00
RenzoL 9d36b42c19 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-10-11 15:17:46 +02:00
Emmanuele Sassi 3ba60a9fa6 modifiche nesting per sfruttare modifiche medium warehouse 2021-10-11 13:23:56 +02:00
Emmanuele Sassi 4dc7629b35 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-10-11 09:01:35 +02:00
RenzoL 7bb4401cc7 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-10-08 14:55:35 +02:00
Emmanuele Sassi aae8557dca Miglioramento gestione nesting 2021-10-08 12:47:27 +02:00
RenzoL e980b4203d - Reset entità geometriche e refresh BTLStructure quando si esegue Reset Macchina (dal CALCPanel)
- Modifiche e correzioni al Reset Macchina
2021-10-07 16:23:41 +02:00
RenzoL 2aceb33c79 Migliorie al codice delle gestione Warehouse 2021-10-07 11:50:01 +02:00
RenzoL 2f0d375b70 Aggiunta customizzazione colonne EgtDataGrid in WarehouseWnd 2021-10-06 17:29:19 +02:00
RenzoL 044c62fc5e Modifiche alla gestione della Warehouse (aggiunta/rimozione/modifica parametri + nuovo layout file ini) e relativa finestra 2021-10-06 17:10:36 +02:00
Emmanuele Sassi a957ae1183 - gestione nesting pareti su grezzi di diverse dimensioni(warehouse medium)
- Correzioni e migliorie
2021-10-05 11:58:55 +02:00
Emmanuele Sassi e8b262b34a Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-09-27 10:04:11 +02:00
Emmanuele Sassi d1f3a44aec - Correzione salvataggio stato pezzi su Db
- Correzione aggiornamento titolo
2021-09-27 10:03:04 +02:00
Emmanuele Sassi c7a7261070 Correzione merge precedente 2021-09-25 13:04:26 +02:00
Emmanuele Sassi 07d1545ef6 Merge commit 'b6ace3b35fde9c775727d81aa44bf1deca721c6f' into develop 2021-09-24 13:01:46 +02:00
RenzoL b6ace3b35f Correzione all'aggiornamento Macchina del (o dei, se più) Prod quando la si cambia nel Proj associato e viceversa 2021-09-24 12:04:46 +02:00
Emmanuele Sassi 82e0abbbaf - Correzione cancellazione BTLPart
- Correzione passagio da Proj a Prod che non ricaricava progetto se modifiche non salvate
- Introdotto flag per nesting manuale
2021-09-24 09:08:46 +02:00
RenzoL 57d087db85 - Correzioni apertura progetto e set Macchina quando si fa GoToProd/GoToProj
- ProjectTypeWnd ora si apre con Macchina (ed eventualmente Tipo) già selezionata di default
- GoToProd ora filtra le ottimizzazioni già esistenti a cui aggiungere il progetto in base a Macchina e Tipo
2021-09-23 15:40:49 +02:00
Emmanuele Sassi 6e22857086 - Bloccati edit Part e Feature in Prod se barre in produzione
- Correzioni e migliorie varie
2021-09-22 14:49:08 +02:00
Emmanuele Sassi cefe870899 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-09-21 17:06:58 +02:00
Emmanuele Sassi 4881f35fa3 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-09-21 17:05:02 +02:00
RenzoL 9f06f6e75d Corrrezione a colonne ReadOnly che durante la verifica/simulazione venivano scritte con DisplayIndex=-1 nell'ini 2021-09-21 16:12:22 +02:00
RenzoL 1ae01e0939 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-09-20 17:17:58 +02:00
Emmanuele Sassi 35f5266745 - Aggiunta rimozione MachGroupM
- Modifiche nsting con magazzino medium
2021-09-20 17:06:21 +02:00
RenzoL ae496e7aab - Aggiunto pulsante "Reset Macchina" al CALCPanel per scegliere la Macchina associata al progetto aperto
- La Macchina scelta nel "Reset Macchina" si rfilette sulla Macchina corrente nella pagina di Configurazione
- Modificata ProjectTypeWnd in modo che creando un nuovo progetto o importando un BTL chieda la Macchina da associare (e il Tipo Progetto se Macchina scelta è sia Travi che Pareti)
2021-09-20 17:02:52 +02:00
Emmanuele Sassi f6638eea9e - Correzioni e miglioramenti warehouse
- Implementato uso warehouse per definire grezzi
- Gestite colonne readonly durante la varifica/simulazione
- Correzioni e miglioramenti
2021-09-20 11:05:12 +02:00
Emmanuele Sassi 1444babea7 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-09-16 18:24:48 +02:00
RenzoL e975d227f6 Modifiche a Init di DbControllers 2021-09-15 11:59:54 +02:00
RenzoL efc3b5da34 Rimozione numero chiave 2021-09-15 11:29:31 +02:00
Emmanuele Sassi 2f78a26dfa - Cambio colore warning anche in Supervisor 2021-09-14 17:49:02 +02:00
Emmanuele Sassi 59253eb4de - Correzzione warning
- Cambiata gestione tipo progetto e macchina associata
2021-09-14 17:46:56 +02:00
Emmanuele Sassi ae795ae501 - Correzioni
- Gestione click feature
-Gestione movimento mouse pareti
2021-09-14 14:39:51 +02:00
Emmanuele Sassi e0693c6463 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-09-14 13:01:36 +02:00
Samuele Locatelli f804a7ea58 Merge branch 'DataLayer' into develop 2021-09-14 13:00:48 +02:00
Samuele Locatelli b9dd34abd4 Fix conf DB di default (NO KEY) 2021-09-14 13:00:41 +02:00
Samuele Locatelli 7d2e32108e Merge branch 'develop' into DataLayer 2021-09-14 12:59:53 +02:00
Samuele Locatelli c3a306a8fd Aggiunto machine in modello dati proj/prod + migrazioni 2021-09-14 12:59:39 +02:00
Emmanuele Sassi ad9a25556c Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-09-13 15:32:30 +02:00
Samuele Locatelli ad796bb971 Merge branch 'DataLayer' into develop 2021-09-13 15:29:25 +02:00
Samuele Locatelli 18f701d3fa Aggiunta metodo conteggio BtlPart x stato in proj 2021-09-13 15:26:50 +02:00
Emmanuele Sassi 445d2c0778 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-09-10 10:02:24 +02:00
Emmanuele Sassi 0063ae8ab2 Ristrutturazione classi 2021-09-10 10:01:53 +02:00
DarioS cbed398eae EgtBEAMWALL 2.3i1 :
- modifiche e correzioni varie.
2021-09-09 16:20:04 +02:00
Emmanuele Sassi d6031231e5 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-09-08 09:58:49 +02:00
Emmanuele Sassi 93c4c50fa2 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-09-08 09:55:39 +02:00
Emmanuele Sassi a1ebb8adb9 Modifiche e correzioni 2021-09-08 09:55:15 +02:00
RenzoL 52cde60512 - Tenuta un'unica definizione di EgtDataGrid e DataGridColumnsIniFile nel Core a cui Supervisor e ViewerOptimizer fanno riferimento
- Sistemato il Modulo IniDataGridColumnFunctions in modo che ce ne sia uno in ConfigurationPage VM del Supervisor e uno nel ConfigurationPageVM di ViewerOptimizer per simmetria
2021-09-08 09:49:14 +02:00
DarioS c9e67777ef EgtBEAMWALL :
- corretto problema con nuove barre.
2021-09-08 08:55:22 +02:00
RenzoL 2af621914c Correzione Sort dei valori numerici passati come stringhe nelle tabelle 2021-09-07 14:42:17 +02:00
RenzoL 3d383392f6 Datagrid ParameterList convertita e splittata in 2 EgtDataGrid (PParameterList e QParameterList) 2021-09-06 16:59:29 +02:00
RenzoL 0fa9e62487 Merge remote-tracking branch 'origin/develop' into Renzo 2021-09-06 10:22:38 +02:00
DarioS fa283cf17e EgtBEAMWALL :
- corretto CORE per lancio più EgtCAM5 in parallelo che dava crash (ora CORE v.2.9i1).
2021-09-03 19:30:17 +02:00
RenzoL 5a719ab11b Merge commit 'd25350bb25291143eb529fb5a1a8fbb846ffa805' into Renzo 2021-09-01 14:50:47 +02:00
DarioS bfe5de52c6 EgtBEAMWALL :
- correzioni varie.
2021-09-01 10:14:49 +02:00
DarioS 63e2141024 EgtBEAMWALL :
- portato tutto a .NET Framework 4.7.2.
2021-09-01 09:24:13 +02:00
RenzoL 6e1f08d24a - Parametri "Colonne tabelle" ricaricati quando si esce dalla pagina di Configurazione (Supervisor)
- Aggiunta richiesta di salvataggio se "Colonne tabelle" ha delle modifiche quando esco dalla pagina di Configurazione o dall'applicazione (Supervisor)
2021-08-31 14:53:35 +02:00
Emmanuele Sassi d25350bb25 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-08-31 09:27:43 +02:00
Emmanuele Sassi d6b3ebf0ae Correzioni e migliorie comunicazione tra ottimizzatore e supervisore 2021-08-31 09:22:21 +02:00
RenzoL f295ca1ac5 - Ulteriori DataGrid del ViewerOptimizer convertite in EgtDataGrid
- DataGrid del SuperVisor convertite in EgtDataGrid
- Aggiunte tab "General" e "Colonne tabelle" alla pagina di Configurazione del Supervisor
2021-08-31 09:19:26 +02:00
Emmanuele Sassi eba6d775f5 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-08-24 15:36:21 +02:00
RenzoL e1835d4d94 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-08-23 09:06:21 +02:00
Emmanuele Sassi d22b840264 Merge remote-tracking branch 'gitlab.seriate/develop' into develop 2021-08-23 08:59:54 +02:00
Emmanuele Sassi c8cf01e724 Modifiche al supervisor per comunicazione 2021-08-23 08:59:45 +02:00
RenzoL 3c1f9c32eb Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-08-23 08:51:21 +02:00
Emmanuele Sassi a8778abc97 Correzioni 2021-08-20 20:22:20 +02:00
DarioS ff7dc48efb EgtBEAMWALL 2.3h1 :
- modifiche varie per macchine che lavorano sia travi sia pareti (PF1250).
2021-08-20 20:20:08 +02:00
RenzoL c39ed46b98 Merge branch 'develop' of https://gitlab.steamware.net/egaltech/egtbeamwall into Renzo 2021-08-02 17:07:26 +02:00
Emmanuele Sassi d611f66d43 Modifiche comunicazione tra Opt e Sup
Correzioni e migliorie
2021-08-02 15:32:39 +02:00
RenzoL 3c1231937a Aggiustamenti per far funzionare OpenProjectFileDialog del Supervisor con lettura/scrittura corretta dei Resize/Reorder delle colonne 2021-07-30 17:24:52 +02:00
Emmanuele Sassi bf7300310b Correzione merge precedente 2021-07-30 09:38:10 +02:00
Emmanuele Sassi 903c1eba65 Correzione merge precedente 2021-07-30 09:36:28 +02:00
Emmanuele Sassi 24cfabec05 Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-07-29 16:20:18 +02:00
Emmanuele Sassi b4e8d68c62 Modifiche per comunicazione tra ViewerOptimizer e Supervisor
Correzioni e migliorie
2021-07-29 16:17:37 +02:00
RenzoL f6e411264b Aggiunta datagrid nella tab "Colonne tabelle" della ConfigurationPage per customizzare le proprietà delle colonne delle EgtDataGrid usate nel programma (con lettura/scrittura su file ini) 2021-07-29 10:51:36 +02:00
RenzoL 708654e98a Correzione a ReadProductionState 2021-07-28 16:30:10 +02:00
RenzoL 2b10b7c9d1 Correzione cambio macchina selezionata quando non ci sono Proj o Prod aperti 2021-07-28 16:12:26 +02:00
RenzoL d15844f55b - Nuova gestione del reset dei progetti quando tipo macchina selezionata è diverso da tipo progetto, ora differenziando Proj e Prod aperti
- Aggiunto update del tipo progetto per i Prod
- Correzioni varie
2021-07-22 15:07:53 +02:00
Emmanuele Sassi 4e7017041d Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-20 15:23:05 +02:00
Samuele Locatelli a9290d84ce update con metodo di REMOVE machgroup da supervisor 2021-07-20 15:21:18 +02:00
Emmanuele Sassi 6c75191729 Modifiche per unificare VM di Supervisor ed optimizer
Correzione salvataggio numero pezzi aggiunti
Thread di comunicazione Supervisore
Bozza Thread di comunicazione su ottimizzatore
Migliorie e correzioni
2021-07-19 20:01:31 +02:00
Emmanuele Sassi 8cd82722fe Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-16 15:50:43 +02:00
Samuele Locatelli 4a3be724f3 inversione ordinamento indice modifiche StatusMap 2021-07-16 15:50:03 +02:00
Emmanuele Sassi c238d68095 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-16 10:43:59 +02:00
Emmanuele Sassi 13c86bdcdb Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-16 10:43:01 +02:00
Samuele Locatelli 37b727c52a Fix gestione tipo evento su set supervisor 2021-07-16 10:42:47 +02:00
Samuele Locatelli d56246e95b Correzione doppia scrittura AddMG in StatusMap 2021-07-16 10:31:01 +02:00
Emmanuele Sassi 46d6c2b360 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-16 10:05:23 +02:00
Samuele Locatelli 5ac81297ad Fix update in caso di session vuota 2021-07-16 09:52:15 +02:00
Samuele Locatelli 49fbb772e2 Update modalità lettura DB x evitare caching EF 2021-07-16 09:35:12 +02:00
Emmanuele Sassi 7abb957ab2 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-16 09:07:29 +02:00
Samuele Locatelli 9a0fdff213 Fix gestione MG nuovi da ViewOptim (errore DataLayer) 2021-07-16 09:01:48 +02:00
Emmanuele Sassi 346da073a3 Merge remote-tracking branch 'gitlab.seriate/DataLayer' into develop 2021-07-15 20:27:42 +02:00
Samuele Locatelli e1d77a37b6 aggiunto anche controllo eliminazione MachGroup eliminati da DB 2021-07-15 20:24:47 +02:00
Samuele Locatelli eb9fddccaf Aggiunta scrittura eventi in StatusMap x new/update/rem del MachGroup 2021-07-15 20:14:33 +02:00
Samuele Locatelli 0a7b93561e Modifiche x gestione dati StatusMap in append (non update) 2021-07-15 19:55:44 +02:00
Emmanuele Sassi 4b294c992a Nuovo tipo di evento in StatusMap 2021-07-15 19:38:58 +02:00
Emmanuele Sassi 211cbd1f9b Merge remote-tracking branch 'gitlab.seriate/Renzo' into develop 2021-07-15 12:36:24 +02:00
RenzoL c5507a7543 redo modifica showBuilding 2021-07-15 12:35:40 +02:00
Samuele Locatelli a84d4a0223 Fix views 2021-07-15 12:02:31 +02:00
Samuele Locatelli e41af36b20 Fix migrazione 2021-07-15 12:02:19 +02:00
Samuele Locatelli 15562bd9ca refresh view 2021-07-15 11:38:01 +02:00
Samuele Locatelli 58c7fa5408 Fix inserimento modifiche x gestione nuovi campi tipo BW 2021-07-15 11:20:18 +02:00
443 changed files with 30625 additions and 14492 deletions
@@ -8,8 +8,8 @@ Imports EgtWPFLib5
Public Class BTLFeatureM
' Feature a cui appartiene il parametro
Protected m_ParentPart As BTLPartM
Public ReadOnly Property ParentPart As BTLPartM
Protected m_ParentPart As Object
Public ReadOnly Property ParentPart As Object
Get
Return m_ParentPart
End Get
@@ -240,7 +240,7 @@ Public Class BTLFeatureM
Return New BTLFeatureM
End Function
Public Shared Function CreateBTLFeature(ParentPart As BTLPartM, nFeatureId As Integer) As BTLFeatureM
Public Shared Function CreateBTLFeature(ParentPart As Object, nFeatureId As Integer, Optional bIsBTL As Boolean = True) As BTLFeatureM
Dim NewBTLFeature As New BTLFeatureM
NewBTLFeature.m_ParentPart = ParentPart
NewBTLFeature.m_nFeatureId = nFeatureId
@@ -258,19 +258,26 @@ Public Class BTLFeatureM
EgtGetInfo(nFeatureId, BTL_FTR_DES, NewBTLFeature.m_sDES)
EgtGetInfo(nFeatureId, BTL_FTR_PRID, NewBTLFeature.m_nPRID)
EgtGetInfo(nFeatureId, BTL_FTR_FRAME, NewBTLFeature.m_frFRAME)
' leggo parametri della feature
GetBeamPrivateProfileGRPList(CalcBeamPrivateProfileGRP(NewBTLFeature.m_nSelGRP), NewBTLFeature.m_nPRC, NewBTLFeature.m_GRPList)
GetBeamPrivateProfileName(NewBTLFeature.m_nSelGRP, NewBTLFeature.m_nPRC, NewBTLFeature)
' crea parametri per questa feature da file ini
NewBTLFeature.CreateFeatureParams(NewBTLFeature)
' leggo parametri delle feature
NewBTLFeature.ReadFeatureParams()
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
If IsNothing(ParentPart) Then
bCalc = EgtGetInfo(NewBTLFeature.nFeatureId, ITG_PROD_ERR, nErr)
EgtGetInfo(nFeatureId, ITG_PROD_ROT, nRot)
EgtGetInfo(nFeatureId, ITG_PROD_MSG, sMsg)
Else
If bIsBTL Then
bCalc = EgtGetInfo(NewBTLFeature.nFeatureId, ITG_PROJ_ERR, nErr)
EgtGetInfo(nFeatureId, ITG_PROJ_ROT, nRot)
EgtGetInfo(nFeatureId, ITG_PROJ_MSG, sMsg)
Else
bCalc = EgtGetInfo(NewBTLFeature.nFeatureId, ITG_PROD_ERR, nErr)
EgtGetInfo(nFeatureId, ITG_PROD_ROT, nRot)
EgtGetInfo(nFeatureId, ITG_PROD_MSG, sMsg)
End If
If Not bCalc Then
NewBTLFeature.m_nState = CalcStates.NOTCALCULATED
@@ -281,23 +288,19 @@ Public Class BTLFeatureM
NewBTLFeature.m_nCALC_ERR = nErr
NewBTLFeature.m_nCALC_ROT = nRot
NewBTLFeature.m_sCALC_MSG = sMsg
If nErr = 0 Then
NewBTLFeature.nState = CalcStates.OK
ElseIf nErr = 17 Then
NewBTLFeature.nState = CalcStates.WARNING
ElseIf nErr > 0 Then
NewBTLFeature.nState = CalcStates.ERROR_
ElseIf nErr < 0 Then
NewBTLFeature.nState = CalcStates.INFO
End If
Select Case nErr
Case 0
NewBTLFeature.nState = CalcStates.OK
Case 22
NewBTLFeature.nState = CalcStates.COLLISION
Case 17, 19
NewBTLFeature.nState = CalcStates.WARNING
Case < 0
NewBTLFeature.nState = CalcStates.INFO
Case > 0
NewBTLFeature.nState = CalcStates.ERROR_
End Select
End If
' leggo parametri della feature
GetBeamPrivateProfileGRPList(CalcBeamPrivateProfileGRP(NewBTLFeature.m_nSelGRP), NewBTLFeature.m_nPRC, NewBTLFeature.m_GRPList)
GetBeamPrivateProfileName(NewBTLFeature.m_nSelGRP, NewBTLFeature.m_nPRC, NewBTLFeature)
' crea parametri per questa feature da file ini
NewBTLFeature.CreateFeatureParams(NewBTLFeature)
' leggo parametri delle feature
NewBTLFeature.ReadFeatureParams()
Return NewBTLFeature
End Function
@@ -312,22 +315,6 @@ Public Class BTLFeatureM
Return NewBTLFeature
End Function
'Sub New(ParentPart As BTLPartM, nFeatureId As Integer)
' m_ParentPart = ParentPart
' m_nFeatureId = nFeatureId
' m_PParamList = New ObservableCollection(Of BTLParam)
' m_QParamList = New ObservableCollection(Of BTLParam)
'End Sub
'Sub New(nPRC As Integer, nGRP As Integer, nSIDE As Integer)
' m_PParamList = New ObservableCollection(Of BTLParam)
' m_QParamList = New ObservableCollection(Of BTLParam)
' m_nPRC = nPRC
' m_nSelGRP = nGRP
' m_nSelSIDE = nSIDE
' m_bDO = True
'End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
@@ -388,17 +375,36 @@ Public Class BTLFeatureM
For Each Param As BTLParamM In ParamList
If Param.nType = BTLParamType.DOUBLE_ Or Param.nType = BTLParamType.LENGTH Then
Dim dParamValue As Double = 0
If Not EgtGetInfo(m_nFeatureId, Param.sName, dParamValue) Then
Dim sReadName As String = Param.sName
If IsFreeContour() Then
Select Case Param.sName
Case "P05"
sReadName = "DEPTH"
Case "P07"
sReadName = "PCKT"
Case "P13"
sReadName = "CNT_TYPE"
Case "P14"
sReadName = "CNT_DATA"
Case "P15"
sReadName = "CNT_PAR"
End Select
End If
If Not EgtGetInfo(m_nFeatureId, sReadName, dParamValue) Then
dParamValue = 0
End If
' se è un parametro P setto il valore letto nel DB
If Param.bIsP Then
Param.SetValue(dParamValue)
Else
' se è un parametro Q verifico nel progetto se sia un valore custom
' recupero info Custom
Dim nCustom As Integer = 0
EgtGetInfo(nFeatureId, Param.sName & "A", nCustom)
If nCustom = 1 Then
'se pezzo parent di tipo Part
If TypeOf m_ParentPart Is PartM Then
Param.SetValue(dParamValue)
' se è un parametro Q verifico nel progetto se sia un valore custom
ElseIf nCustom = 1 Then
Param.SetValue(dParamValue)
Param.bCustom = True
' altrimenti lo setto al valore di default
@@ -407,7 +413,20 @@ Public Class BTLFeatureM
Dim dReadValue As Double = 0
EgtGetInfo(m_nFeatureId, Param.sName, dReadValue)
If dReadValue <> Param.dDefault Then
' Disabilito segnalazione modificato
Dim DisableMgr As New DisableModifiedMgr
EgtSetInfo(m_nFeatureId, Param.sName, Param.dDefault)
'se pezzo parent di tipo BTL
If TypeOf m_ParentPart Is BTLPartM AndAlso m_bDO Then
Dim BTLPartM As BTLPartM = DirectCast(m_ParentPart, BTLPartM)
EgtRemoveInfo(BTLPartM.m_nPartId, ITG_PROJ_ERR)
EgtRemoveInfo(BTLPartM.m_nPartId, ITG_PROJ_MSG)
EgtRemoveInfo(BTLPartM.m_nPartId, ITG_PROJ_FALL)
EgtRemoveInfo(BTLPartM.m_nPartId, ITG_PROJ_ROT)
'EgtDuploSetModified(DirectCast(m_ParentPart, BTLPartM).m_nPartId)
End If
' Ripristino stato segnalazione modifica
DisableMgr.ReEnable()
bToRecalc = True
End If
Param.bCustom = False
@@ -424,12 +443,20 @@ Public Class BTLFeatureM
End If
Next
' Se necessario ricalcolo, lo eseguo
If bToRecalc Then
If Not IsFreeContour() And bToRecalc Then
' Disabilito segnalazione modificato
Dim DisableMgr As New DisableModifiedMgr
UpdateParams()
' Ripristino stato segnalazione modifica
DisableMgr.ReEnable()
End If
Return True
End Function
' funzione che rilegge i parametri Q
Public Function ReadQValues()
Return ReadFeatureParams(m_QBTLParamMList)
End Function
' funzione che setta i valori di default a tutti i parametri
Public Function SetDefaultValues() As Boolean
Return SetDefaultValues(m_PBTLParamMList) And SetDefaultValues(m_QBTLParamMList)
@@ -451,26 +478,27 @@ Public Class BTLFeatureM
' funzione che calcola array dei valori dei parametri
Public Function CalcParamArray(ByRef vPar() As Double, ByRef sPar As String, ByRef vParQ() As String) As Boolean
' verifico che lista parametri non sia vuota
If IsNothing(m_PBTLParamMList) OrElse m_PBTLParamMList.Count = 0 Then Return False
' calcolo lunghezza array Parametri
Dim nLastParId As Integer = m_PBTLParamMList(m_PBTLParamMList.Count - 1).nId - 1
Dim vTempPar(nLastParId) As Double
Dim sTempPar As String = String.Empty
' carico tutti i parametri su array
For ParIndex = 0 To m_PBTLParamMList.Count - 1
Dim BTLPar As BTLParamM = DirectCast(m_PBTLParamMList(ParIndex), BTLParamM)
Select Case BTLPar.nType
Case BTLParamType.DOUBLE_, BTLParamType.LENGTH
vTempPar(BTLPar.nId - 1) = BTLPar.dValue
Case BTLParamType.STRING_
sTempPar = BTLPar.sValue
'Case BTLParamType.COMBO
' Dim cBTLPar As BTLParamCombo = DirectCast(ParentFeature.PParamList(ParIndex), BTLParamCombo)
' vPar(ParIndex) = cBTLPar.
End Select
Next
vPar = vTempPar
sPar = If(String.IsNullOrEmpty(sTempPar), " ", sTempPar)
If Not IsNothing(m_PBTLParamMList) AndAlso m_PBTLParamMList.Count > 0 Then
' calcolo lunghezza array Parametri
Dim nLastParId As Integer = m_PBTLParamMList(m_PBTLParamMList.Count - 1).nId - 1
Dim vTempPar(nLastParId) As Double
Dim sTempPar As String = String.Empty
' carico tutti i parametri su array
For ParIndex = 0 To m_PBTLParamMList.Count - 1
Dim BTLPar As BTLParamM = DirectCast(m_PBTLParamMList(ParIndex), BTLParamM)
Select Case BTLPar.nType
Case BTLParamType.DOUBLE_, BTLParamType.LENGTH
vTempPar(BTLPar.nId - 1) = BTLPar.dValue
Case BTLParamType.STRING_
sTempPar = BTLPar.sValue
'Case BTLParamType.COMBO
' Dim cBTLPar As BTLParamCombo = DirectCast(ParentFeature.PParamList(ParIndex), BTLParamCombo)
' vPar(ParIndex) = cBTLPar.
End Select
Next
vPar = vTempPar
sPar = If(String.IsNullOrEmpty(sTempPar), " ", sTempPar)
End If
' Determino parametri Q
Dim vTempParQ(m_QBTLParamMList.Count) As String
For ParQIndex = 0 To m_QBTLParamMList.Count - 1
@@ -486,14 +514,19 @@ Public Class BTLFeatureM
' funzione che aggiorna parametri della feature
Public Function UpdateParams(nNewGRP As Integer, nNewPRC As Integer, nNewSIDE As Integer, sNewDesc As String, nNewProcId As Integer,
frNewRef As Frame3d, vNewParP() As Double, sNewPar As String, vNewParQ As String()) As Boolean
' aggiorno la feature con nuovo valore
Dim vPar() As Double = Nothing
frNewRef As Frame3d, vNewParP() As Double, sNewPar As String, vNewParQ As String(), Optional bUpdate As Boolean = True) As Boolean
' Recupero parametri originali della feature
Dim vPar() As Double = {}
Dim sPar As String = String.Empty
Dim vParQ() As String = Nothing
Dim vParQ() As String = {}
CalcParamArray(vPar, sPar, vParQ)
' recupero eventuali percorsi originali della feature
Dim nCrvId As Integer = GDB_ID.NULL
Dim nCrv2Id As Integer = GDB_ID.NULL
GetFreeContourPaths(nCrvId, nCrv2Id)
' modifica della feature con i nuovi parametri
Dim nFeatureId As Integer = EgtBeamModifyProcess(Me.nFeatureId, nNewGRP, nNewPRC, nNewSIDE, sNewDesc, nNewProcId,
frNewRef, vNewParP, sNewPar, vNewParQ)
frNewRef, vNewParP, sNewPar, vNewParQ, nCrvId, nCrv2Id, bUpdate)
Dim bOk As Boolean = nFeatureId <> GDB_ID.NULL
If bOk Then
' riporto parametri Q custom
@@ -507,19 +540,20 @@ Public Class BTLFeatureM
Else
' Impossibile creare una feature con questi valori - ERRORE
MessageBox.Show(EgtMsg(61852), EgtMsg(30007))
nFeatureId = EgtBeamModifyProcess(Me.nFeatureId, Me.nSelGRP, Me.nPRC, Me.nSelSIDE, "", Me.nPRID, New Frame3d(), vPar, sPar, vParQ)
nFeatureId = EgtBeamModifyProcess(Me.nFeatureId, Me.nSelGRP, Me.nPRC, Me.nSelSIDE, "", Me.nPRID,
New Frame3d(), vPar, sPar, vParQ, nCrvId, nCrv2Id)
SetFeatureId(nFeatureId)
bOk = False
End If
Return bOk
End Function
Public Function UpdateParams() As Boolean
Public Function UpdateParams(Optional bUpdate As Boolean = True) As Boolean
' aggiorno la feature con nuovo valore
Dim vPar() As Double = Nothing
Dim vPar() As Double = {}
Dim sPar As String = String.Empty
Dim vParQ() As String = Nothing
Dim vParQ() As String = {}
CalcParamArray(vPar, sPar, vParQ)
Return UpdateParams(Me.nSelGRP, Me.nPRC, Me.nSelSIDE, Me.sDES, Me.nPRID, Me.frFRAME, vPar, sPar, vParQ)
Return UpdateParams(Me.nSelGRP, Me.nPRC, Me.nSelSIDE, Me.sDES, Me.nPRID, Me.frFRAME, vPar, sPar, vParQ, bUpdate)
End Function
' funzione che restituisce se la feature è un contorno libero
@@ -527,6 +561,30 @@ Public Class BTLFeatureM
Return m_nPRC = 250 OrElse m_nPRC = 251 OrElse m_nPRC = 252
End Function
' funzione che restituisce i percorsi associati ai contorni liberi
Public Function GetFreeContourPaths(ByRef nCrvId As Integer, ByRef nCrv2Id As Integer) As Boolean
' imposto eventuali percorsi
nCrvId = GDB_ID.NULL
nCrv2Id = GDB_ID.NULL
If IsFreeContour() Then
Dim sAuxId As String = ""
If EgtGetInfo(nFeatureId, "AUXID", sAuxId) Then
Dim sAuxIdSplit() As String = sAuxId.Split(","c)
Dim nAuxId As Integer
If Integer.TryParse(sAuxIdSplit(0), nAuxId) Then
nCrvId = nFeatureId + nAuxId
Dim nAux2Id As Integer
If sAuxIdSplit.Count > 1 Then
If Integer.TryParse(sAuxIdSplit(1), nAux2Id) Then
nCrv2Id = nFeatureId + nAux2Id
End If
End If
End If
End If
End If
Return True
End Function
#End Region ' METHODS
End Class
@@ -155,6 +155,16 @@ Public Class BTLParamM
End Set
End Property
Protected m_sBWType As String
Public Property sBWType As String
Get
Return m_sBWType
End Get
Set(value As String)
m_sBWType = value
End Set
End Property
#Region "MESSAGES"
Public ReadOnly Property Name_Msg As String
@@ -221,6 +231,19 @@ Public Class BTLParamM
Return NewBTLParam
End Function
' new per double e length (con tipo Beam o Wall)
Public Shared Function CreateBTLParam(ParentFeature As BTLFeatureM, IsP As Boolean, nType As BTLParamType, sParamName As String,
dMin As Double, dMax As Double, dDefault As Double, sDescription As String, sBWType As String) As BTLParamM
Dim NewBTLParam As New BTLParamM
NewBTLParam.StdInit(ParentFeature, IsP, nType, sParamName, sDescription)
NewBTLParam.dMin = dMin
NewBTLParam.dMax = dMax
NewBTLParam.m_dDefault = dDefault
NewBTLParam.m_sBWType = sBWType
Return NewBTLParam
End Function
' new per stringhe
Public Shared Function CreateBTLParam(ParentFeature As BTLFeatureM, IsP As Boolean, nType As BTLParamType, sParamName As String, sDescription As String)
Dim NewBTLParam As New BTLParamM
@@ -228,6 +251,14 @@ Public Class BTLParamM
Return NewBTLParam
End Function
' new per stringhe (con tipo Beam o Wall)
Public Shared Function CreateBTLParam(ParentFeature As BTLFeatureM, IsP As Boolean, nType As BTLParamType, sParamName As String, sDescription As String, sBWType As String)
Dim NewBTLParam As New BTLParamM
NewBTLParam.StdInit(ParentFeature, IsP, nType, sParamName, sDescription)
NewBTLParam.m_sBWType = sBWType
Return NewBTLParam
End Function
' new per combobox
Public Shared Function CreateBTLParam(ParentFeature As BTLFeatureM, IsP As Boolean, nType As BTLParamType, sParamName As String, nMin As Integer, nMax As Integer, nDefault As Integer, sDescription As String, ValueList As List(Of String))
Dim NewBTLParam As New BTLParamM
@@ -239,6 +270,18 @@ Public Class BTLParamM
Return NewBTLParam
End Function
' new per combobox (con tipo Beam o Wall)
Public Shared Function CreateBTLParam(ParentFeature As BTLFeatureM, IsP As Boolean, nType As BTLParamType, sParamName As String, nMin As Integer, nMax As Integer, nDefault As Integer, sDescription As String, ValueList As List(Of String), sBWType As String)
Dim NewBTLParam As New BTLParamM
NewBTLParam.StdInit(ParentFeature, IsP, nType, sParamName, sDescription)
NewBTLParam.dMin = nMin
NewBTLParam.dMax = nMax
NewBTLParam.m_dDefault = nDefault
NewBTLParam.m_ValueList = ValueList
NewBTLParam.m_sBWType = sBWType
Return NewBTLParam
End Function
' new per parametro vuoto
Public Shared Function CreateBTLParam(IsP As Boolean, nType As BTLParamType, sParamName As String)
Dim NewBTLParam As New BTLParamM
@@ -548,6 +548,17 @@ Public Class BTLPartM
#End Region ' Parametri pezzo
' volume del pezzo
Private m_dVolume As Double
Public Property dVolume As Double
Get
Return m_dVolume
End Get
Set(value As Double)
m_dVolume = value
End Set
End Property
' numero di pezzi da fare da BTL
Public m_nCNT As Integer
Public Property nCNT As Integer
@@ -566,7 +577,9 @@ Public Class BTLPartM
Return m_nADDED
End Get
Set(value As Integer)
m_nADDED = value
If EgtSetInfo(nPartId, BTL_PRT_ADDED, value) Then
m_nADDED = value
End If
End Set
End Property
@@ -600,6 +613,16 @@ Public Class BTLPartM
End Set
End Property
Private m_bLockInversion As Boolean = False
Public Property bLockInversion As Boolean
Get
Return m_bLockInversion
End Get
Set(value As Boolean)
m_bLockInversion = value
End Set
End Property
Private m_nROTATED As Integer
Public Property nROTATED As Integer
Get
@@ -610,6 +633,16 @@ Public Class BTLPartM
End Set
End Property
Private m_bLockRotation As Boolean = False
Public Property bLockRotation As Boolean
Get
Return m_bLockRotation
End Get
Set(value As Boolean)
m_bLockRotation = value
End Set
End Property
Private m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
@@ -633,7 +666,7 @@ Public Class BTLPartM
Private m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
Return MessageFromLuaMsg(m_sCALC_MSG)
End Get
Set(value As String)
m_sCALC_MSG = value
@@ -670,6 +703,16 @@ Public Class BTLPartM
End Set
End Property
Private m_nFeaturesGlobalState As CalcStates
Public Property nFeaturesGlobalState As CalcStates
Get
Return m_nFeaturesGlobalState
End Get
Set(value As CalcStates)
m_nFeaturesGlobalState = value
End Set
End Property
Private m_nCALC_GlobalERR As Integer
Public Property nCALC_GlobalERR As Integer
Get
@@ -800,14 +843,36 @@ Public Class BTLPartM
NewBTLPart.ocREFSIDEFIXCLAMP)
End If
Dim EnumIndex As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PROCESSINGQUALITY, sValue)
NewBTLPart.m_SelPROCESSINGQUALITY = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocPROCESSINGQUALITY),
NewBTLPart.ocPROCESSINGQUALITY)
For ind = 1 To NewBTLPart.ocPROCESSINGQUALITY.Count
Dim sEnumName = [Enum].GetName(GetType(ProcessingQuality), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelPROCESSINGQUALITY = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_RECESS, sValue)
NewBTLPart.m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocRECESS), NewBTLPart.ocRECESS)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocRECESS.Count
Dim sEnumName = [Enum].GetName(GetType(Recess), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelRECESS = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_STOREYTYPE, sValue)
NewBTLPart.m_SelSTOREYTYPE = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLPart.ocSTOREYTYPE),
NewBTLPart.ocSTOREYTYPE)
EnumIndex = 0
For ind = 1 To NewBTLPart.ocSTOREYTYPE.Count
Dim sEnumName = [Enum].GetName(GetType(StoreyType), ind)
If sEnumName.Equals(sValue) Then
EnumIndex = ind
Exit For
End If
Next
NewBTLPart.m_SelSTOREYTYPE = EnumIndex - 1
EgtGetInfo(nPartId, BTL_PRT_ELEMENTNUM, NewBTLPart.m_sELEMENTNUM)
EgtGetInfo(nPartId, BTL_PRT_LAYER, NewBTLPart.m_nLAYER)
EgtGetInfo(nPartId, BTL_PRT_MODULENUM, NewBTLPart.m_sMODULENUM)
@@ -857,6 +922,13 @@ Public Class BTLPartM
NewBTLPart.m_nINVERTED = 0
End If
EgtGetInfo(nPartId, BTL_PRT_MATERIAL, NewBTLPart.m_sMATERIAL)
If Not EgtGetInfo(nPartId, LOCK_ROT, NewBTLPart.m_bLockRotation) Then
NewBTLPart.m_bLockRotation = False
End If
If Not EgtGetInfo(nPartId, LOCK_FLIP, NewBTLPart.m_bLockInversion) Then
NewBTLPart.m_bLockInversion = False
End If
EgtGetInfo(nPartId, BTL_PRT_VOLUME, NewBTLPart.m_dVolume)
' Leggo outline e features
NewBTLPart.m_BTLFeatureMList = LoadFeatures(nPartId, NewBTLPart)
' leggo calc error
@@ -880,15 +952,18 @@ Public Class BTLPartM
NewBTLPart.m_nCALC_ROT = nRot
NewBTLPart.m_nCALC_FALL = nFall
NewBTLPart.m_sCALC_MSG = sMsg
If nErr = 0 Then
NewBTLPart.nState = CalcStates.OK
ElseIf nErr = 17 Then
NewBTLPart.nState = CalcStates.WARNING
ElseIf nErr > 0 Then
NewBTLPart.nState = CalcStates.ERROR_
ElseIf nErr < 0 Then
NewBTLPart.nState = CalcStates.INFO
End If
Select Case nErr
Case 0
NewBTLPart.nState = CalcStates.OK
Case 22
NewBTLPart.nState = CalcStates.COLLISION
Case 17, 19
NewBTLPart.nState = CalcStates.WARNING
Case < 0
NewBTLPart.nState = CalcStates.INFO
Case > 0
NewBTLPart.nState = CalcStates.ERROR_
End Select
End If
EgtGetInfo(nPartId, ITG_PROJ_TIME, NewBTLPart.m_nCALC_TIME)
Return NewBTLPart
@@ -926,6 +1001,16 @@ Public Class BTLPartM
Return TempList
End Function
Private Function MessageFromLuaMsg(LuaMsg As String) As String
Dim sSplit() As String = LuaMsg.Split("$$")
Dim nMsg As Integer = -1
If sSplit.Count > 1 AndAlso Integer.TryParse(sSplit(0), nMsg) Then
Return EgtMsg(65000 + nMsg)
Else
Return LuaMsg
End If
End Function
'Sub New(ParentStructure As BTLStructureVM, nPartId As Integer)
' MyBase.New(ParentStructure, nPartId)
' ' leggo info pezzo
@@ -1135,7 +1220,7 @@ Public Class BTLPartM
Return New List(Of BTLFeatureM)(m_BTLFeatureMList)
End Function
Public Function Rotation(IsPositive As Boolean, SelectedMachineType As MachineType) As Boolean
Public Function Rotation(IsPositive As Boolean, SelectedMachineType As MachineType, Optional dAng As Double = 90) As Boolean
' recupero il box del pezzo
Dim nLs As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
Dim b3Solid As New BBox3d
@@ -1145,7 +1230,7 @@ Public Class BTLPartM
Return False
End If
' eseguo rotazione di 90 gradi attorno asse X
Dim dRot = If(IsPositive, 90, -90)
Dim dRot = If(IsPositive, 1, -1) * Math.Abs(dAng)
Dim vtAxes As Vector3d
' se travi ruoto attorno all'asse X
If SelectedMachineType = MachineType.BEAM Then
@@ -1163,16 +1248,8 @@ Public Class BTLPartM
' eseguo rotazione
Dim bOk As Boolean = EgtRotate(nPartId, b3Solid.Center, vtAxes, dRot, GDB_RT.GLOB)
If bOk Then
Select Case m_nROTATED
Case 0
m_nROTATED = If(IsPositive, 90, 270)
Case 90
m_nROTATED = If(IsPositive, 180, 0)
Case 180
m_nROTATED = If(IsPositive, 270, 90)
Case 270
m_nROTATED = If(IsPositive, 0, 180)
End Select
Dim dNewRotation As Double = (m_nROTATED + dRot) Mod 360
m_nROTATED = If(dNewRotation >= 0, dNewRotation, 360 + dNewRotation)
EgtSetInfo(nPartId, BTL_PRT_ROTATED, m_nROTATED)
' imposto modificato per copie
EgtDuploSetModified(nPartId)
@@ -11,6 +11,13 @@ Public Class BTLStructureM
End Get
End Property
Private m_nAsseBaseId As Integer = GDB_ID.NULL
Public ReadOnly Property nAsseBaseId As Integer
Get
Return m_nAsseBaseId
End Get
End Property
' pezzi da BTL
Public m_BTLPartMList As List(Of BTLPartM)
Public Property BTLPartMList As List(Of BTLPartM)
@@ -384,7 +391,20 @@ Public Class BTLStructureM
End If
nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO)
End While
' cerco tra gli AsseBase
Dim nAsseBaseLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
While nAsseBaseLayerId <> GDB_ID.NULL
' verifico se il layer appartiene al ProjId
Dim nAsseBaseLayerProjId As Integer
EgtGetInfo(nAsseBaseLayerId, BTL_PRT_PROJ, nAsseBaseLayerProjId)
If nAsseBaseLayerProjId = ProjId Then
NewBTLStructure.m_nAsseBaseId = nAsseBaseLayerId
Exit While
End If
nAsseBaseLayerId = EgtGetNextName(nAsseBaseLayerId, ASSEBASE)
End While
Else
NewBTLStructure.m_nAsseBaseId = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE)
NewBTLStructure.m_nBTLInfoId = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
End If
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_GEN_PROJNUM, NewBTLStructure.m_sPROJNUM)
@@ -412,6 +432,8 @@ Public Class BTLStructureM
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_PRT_RECESS, sValue)
NewBTLStructure.m_SelRECESS = IdNameStruct.IndFromId(IdNameStruct.IdFromName(sValue, NewBTLStructure.ocRECESS), NewBTLStructure.ocRECESS)
EgtGetInfo(NewBTLStructure.m_nBTLInfoId, BTL_GEN_USERATTRIBUTE, NewBTLStructure.m_sUSERATTRIBUTE)
' setto il tipo di progetto (Beam o Wall) nel file ini del BTL
If NewBTLStructure.m_nPROJTYPE <> BWType.NULL Then BTLIniFile.m_nBTLBWType = NewBTLStructure.m_nPROJTYPE
' recupero i part
NewBTLStructure.m_BTLPartMList = LoadParts(ProjId)
'Dim nPartId As Integer = EgtGetFirstPart()
@@ -109,7 +109,7 @@ Public Class BTLFeatureVM
' proprieta' che mostra la descrizione in interfaccia
Public ReadOnly Property sDesc As String
Get
Return sDescGRP & " " & sName
Return sDescGRP & " [" & nPRID & "] " & sName
End Get
End Property
@@ -139,21 +139,19 @@ Public Class BTLFeatureVM
Public ReadOnly Property Calc_Background As SolidColorBrush
Get
If Not m_BTLFeatureM.bDO Then
Return Brushes.Aqua
ElseIf m_BTLFeatureM.nState = CalcStates.OK Then
Return Brushes.Green
ElseIf m_BTLFeatureM.nState = CalcStates.NOTCALCULATED Then
Return Brushes.LightGray
ElseIf m_BTLFeatureM.nState = CalcStates.INFO Then
Return Brushes.Green
ElseIf m_BTLFeatureM.nState = CalcStates.WARNING Then
Return Brushes.Orange
ElseIf m_BTLFeatureM.nState = CalcStates.ERROR_ Then
Return Brushes.Red
Else
Return Brushes.Red
End If
If Not m_BTLFeatureM.bDO Then Return Brushes.Aqua
Select Case m_BTLFeatureM.nState
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
Case CalcStates.INFO, CalcStates.OK
Return Brushes.Green
Case CalcStates.NOTCALCULATED
Return Brushes.LightGray
Case Else
Return Brushes.Red
End Select
End Get
End Property
@@ -165,14 +163,14 @@ Public Class BTLFeatureVM
Public ReadOnly Property CALC_ERR_Letter As String
Get
Select Case m_BTLFeatureM.nCALC_ERR
Case 22
Select Case m_BTLFeatureM.nState
Case CalcStates.COLLISION
Return "c"
Case 19, 23, 24, 25
Case CalcStates.ERROR_
Return "e"
Case 17
Case CalcStates.WARNING
Return "w"
Case < 0
Case CalcStates.INFO
Return "i"
Case Else
Return ""
@@ -183,7 +181,7 @@ Public Class BTLFeatureVM
Public ReadOnly Property CALC_ERR_Foreground As SolidColorBrush
Get
Select Case m_BTLFeatureM.nState
Case CalcStates.ERROR_
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
@@ -195,6 +193,17 @@ Public Class BTLFeatureVM
End Get
End Property
' variabile che indica se rifare il pezzo
Private m_bRedo As Boolean = True
Public Property bRedo As Boolean
Get
Return m_bRedo
End Get
Set(value As Boolean)
m_bRedo = value
End Set
End Property
#Region "CONSTRUCTOR"
'Sub New(BTLFeatureM As BTLFeatureM, BTLPartM As BTLPartM)
@@ -231,6 +240,7 @@ Public Class BTLFeatureVM
EgtDeselectAll()
SelGeomFeature(nFeatureId)
End Sub
Private Sub SelGeomFeature(nMyFeatureId As Integer)
EgtSelectObj(nMyFeatureId)
Dim sVal As String = ""
@@ -0,0 +1,24 @@
Public Class CalcEditEndEventArgs
Inherits EventArgs
Public Enum Results As Integer
NULL = 0
MODIFIED = 1
ERROR_ = 2
End Enum
Public m_End As Results
Public Property End_ As Results
Get
Return m_End
End Get
Private Set(value As Results)
m_End = value
End Set
End Property
Sub New(Result As Results)
m_End = Result
End Sub
End Class
@@ -0,0 +1,36 @@
Public Class CalcEndEventArgs
Inherits EventArgs
Public Enum Results As Integer
NULL = 0
OK = 1
ERROR_ = 2
EDIT = 3
End Enum
Public m_End As Results
Public Property End_ As Results
Get
Return m_End
End Get
Private Set(value As Results)
m_End = value
End Set
End Property
Public m_CmdType As CmdTypes
Public Property CmdType As CmdTypes
Get
Return m_CmdType
End Get
Private Set(value As CmdTypes)
m_CmdType = value
End Set
End Property
Sub New(CmdType As CmdTypes, Result As Results)
m_CmdType = CmdType
m_End = Result
End Sub
End Class
@@ -0,0 +1,582 @@
Imports System.IO
Imports System.Threading
Imports System.Globalization
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core.ConstBeam
Imports EgtBEAMWALL.Core
Public Module CalcIntegration
Private _thread As System.Threading.Thread
Public Event Calc_Ended As EventHandler(Of CalcEndEventArgs)
Public Event Calc_ProcessResult As EventHandler(Of CalcResultEventArgs)
Public Event Calc_ProcessEnd As EventHandler(Of CalcProcessEndEventArgs)
Public Enum CmdTypes As Integer
GENERATE = 0
MODIFY = 1
SIMULATE = 2
CHECK = 3
CHECKGEN = 4
POINT_CLOUD = 5
RAWPART = 6
EDIT = 7
End Enum
Private Structure MyProc
Public bEnable As Boolean
Public Proc As Process
Public nBar As Integer
End Structure
Private m_MaxCamInstances As Integer = 1
Public Sub SetMaxCamInstances(value As Integer)
m_MaxCamInstances = value
End Sub
Delegate Sub CallbackDlg(dProgress As Double, sProgress As String, ByRef bCancel As Boolean)
Public Sub Run(vBar As Bar(), sProjDirPath As String, callback As CallbackDlg)
_thread = New Thread(Sub()
DoJob(vBar, sProjDirPath, callback)
End Sub)
_thread.Start()
End Sub
Private Sub DoJob(vBar As Bar(), sProjDirPath As String, callback As CallbackDlg)
Dim bCancel As Boolean = False
callback(0, "Init", bCancel)
If vBar.Count > 0 AndAlso vBar(0).nCmdType = CmdTypes.SIMULATE Then
Dim Bar As Bar = vBar(0)
' verifico se il pezzo e' non calcolato
If Bar.nProgramPage = ProjectType.PROJ Then
If Bar.nGlobState = CalcStates.NOTCALCULATED Then
Bar.sBarPath = CreateNewProjectFromPart(Bar.nBarId, sProjDirPath)
Else
Dim nPDN As Integer = 0
EgtGetInfo(Bar.nBarId, BTL_PRT_PDN, nPDN)
Bar.sBarPath = sProjDirPath & "\" & nPDN.ToString() & ".bwe"
End If
ElseIf Bar.nProgramPage = ProjectType.PROD Then
If Bar.nGlobState = CalcStates.NOTCALCULATED Then
Bar.sBarPath = CreateNewProjectFromMachGroup(Bar.nBarId, sProjDirPath)
Else
Dim sMachGroupName As String = ""
EgtGetMachGroupName(Bar.nBarId, sMachGroupName)
Bar.sBarPath = sProjDirPath & "\" & sMachGroupName & ".bwe"
End If
End If
ElseIf vBar(0).nCmdType <> CmdTypes.EDIT Then
' creo progetti a seconda del tipo
For Each Bar In vBar
If Bar.nProgramPage = ProjectType.PROJ Then
Bar.sBarPath = CreateNewProjectFromPart(Bar.nBarId, sProjDirPath)
ElseIf Bar.nProgramPage = ProjectType.PROD Then
Bar.sBarPath = CreateNewProjectFromMachGroup(Bar.nBarId, sProjDirPath)
End If
Next
End If
Dim bIsSimulation As Boolean = False
Dim bIsSimulationVerifyed As Boolean = False
Dim bIsEdit As Boolean = False
Dim LastFileWriteTime As Date
' se sono in simulazione
If vBar.Count > 0 AndAlso vBar(0).nCmdType = CmdTypes.SIMULATE Then
bIsSimulation = True
callback(0, "Simulation opened", bCancel)
ElseIf vBar.Count > 0 AndAlso vBar(0).nCmdType = CmdTypes.EDIT Then
bIsEdit = True
Dim sCurrFilePath As String = ""
EgtGetCurrFilePath(sCurrFilePath)
vBar(0).sBarPath = sCurrFilePath
LastFileWriteTime = File.GetLastWriteTime(sCurrFilePath)
callback(0, "Editor opened", bCancel)
Else
callback(0.1, "", bCancel)
End If
Dim ExePath As String = String.Empty
GetMainPrivateProfileString(S_BEAM, K_CALCPATH, "", ExePath)
' Numero di barre
Dim numBars As Integer = vBar.Count
If numBars = 0 Then Return
' Numero di core logici da utilizzare (minimo tra presenti sul PC e imposti da INI)
Dim nMaxThread As Integer = Math.Min(Environment.ProcessorCount, m_MaxCamInstances)
Array.Resize(Of Bar)(vBar, numBars + nMaxThread - 1)
' Frazione di avanzamento del lavoro (in piu)
Dim dProgress As Double = 0
'indice incremento progress durante calcolo barra
Dim nPgsCurrBar As Integer = 0
Dim nPgsClock As Integer = 0
' Lancio in parallelo più processi (senza superare il numero di core logici presenti)
Dim vProc As MyProc() = New MyProc(nMaxThread - 1) {}
For j As Integer = 0 To nMaxThread - 1
vProc(j).nBar = -1
vProc(j).bEnable = True
Next
' Processo i Btl in parallelo
Dim nCurrBar As Integer = 0
Dim nDoneBar As Integer = 0
Dim nShiftBar As Integer = 0
Dim nActProc As Integer = 0
Dim bAllKO As Boolean
While nCurrBar < numBars + nShiftBar OrElse nActProc > 0
For j As Integer = 0 To nMaxThread - 1
If Not vProc(j).bEnable Then Continue For
Dim bDone As Boolean = False
If vProc(j).nBar = -1 Then
If nCurrBar < numBars + nShiftBar Then
If vBar(nCurrBar).bBarOk Then
vProc(j).Proc = New Process()
vProc(j).Proc.StartInfo.FileName = ExePath
If bIsEdit Then
vProc(j).Proc.StartInfo.Arguments = """" & vBar(nCurrBar).sBarPath & """"
Else
vProc(j).Proc.StartInfo.Arguments = """" & vBar(nCurrBar).sBarPath & """ " &
"""" & vBar(nCurrBar).nProjType & """ " &
"""" & vBar(nCurrBar).nMachineName & """ " & vBar(nCurrBar).nCmdType
End If
vProc(j).Proc.StartInfo.UseShellExecute = False
If vProc(j).Proc.Start() Then
vProc(j).nBar = nCurrBar
nCurrBar += 1
nActProc += 1
End If
Else
If vBar(nCurrBar).nCmdType = CmdTypes.CHECK OrElse vBar(nCurrBar).nCmdType = CmdTypes.CHECKGEN Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(nCurrBar))) 'ProcessResults(vBar(nCurrBar))
ElseIf vBar(nCurrBar).nCmdType = CmdTypes.GENERATE Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(nCurrBar))) 'ProcessResults(vBar(nCurrBar))
'RaiseEvent Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(nCurrBar))) 'ProcessResults(vBar(nCurrBar))
End If
bDone = True
nCurrBar += 1
End If
End If
Else
If vProc(j).Proc.HasExited Then
' se terminato con successo
If vProc(j).Proc.ExitCode = 0 Then
' salvo il risultato
If vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECK OrElse vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECKGEN Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
ElseIf vBar(vProc(j).nBar).nCmdType = CmdTypes.GENERATE Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
'RaiseEvent Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(vProc(j).nBar))) 'ProcessResults(vBar(nCurrBar))
End If
bDone = True
vProc(j).nBar = -1
nActProc -= 1
' se superato il numero di processi eseguibili in parallelo
ElseIf vProc(j).Proc.ExitCode = 1 Then
' aggiungo il pezzo in coda
If numBars + nShiftBar < numBars + nMaxThread Then
vBar(numBars + nShiftBar) = vBar(vProc(j).nBar)
nShiftBar += 1
End If
' disabilito il processo
vProc(j).bEnable = False
vProc(j).nBar = -1
nActProc -= 1
' altrimenti (errore generico di esecuzione)
Else
' salvo il risultato
If vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECK OrElse vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECKGEN Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
ElseIf vBar(vProc(j).nBar).nCmdType = CmdTypes.GENERATE Then
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
'RaiseEvent Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(vProc(j).nBar))) 'ProcessResults(vBar(nCurrBar))
End If
bDone = True
vProc(j).nBar = -1
nActProc -= 1
End If
Else
vProc(j).Proc.Refresh()
End If
End If
If bDone Then
' se sono in simulazione
If bIsSimulation Then
Dim sOriPath As String = Path.ChangeExtension(vBar(0).sBarPath, ".ori.bwe")
' se file modificato a mano
If File.GetLastWriteTime(sOriPath) < File.GetLastWriteTime(vBar(0).sBarPath) Then
' aggiorno progetto
If File.Exists(vBar(0).sBarPath) Then File.Copy(vBar(0).sBarPath, sOriPath, True)
' messaggio di lancio verifica
callback(50, "Verifying modifications...", bCancel)
' lancio verifica
System.Threading.Thread.Sleep(500)
Dim Proc As New Process()
Proc.StartInfo.FileName = ExePath
Proc.StartInfo.Arguments = """" & vBar(0).sBarPath & """ " &
"""" & vBar(0).nProjType & """ " &
"""" & vBar(0).nMachineName & """ " & CmdTypes.CHECKGEN
Proc.StartInfo.UseShellExecute = False
If Proc.Start() Then
Dim ProgressValue As Integer = 50
While Not Proc.HasExited
Proc.Refresh()
If ProgressValue < 90 Then ProgressValue += 0.001
callback(ProgressValue, "Verifying modifications...", bCancel)
Thread.Sleep(1)
End While
' se terminato con successo
If Proc.ExitCode = 0 Then
' salvo il risultato
RaiseEvent Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(0)))
Thread.Sleep(500)
End If
End If
End If
' messaggio di completamento simulazione
callback(0, "Simulation closing", bCancel)
ElseIf bIsEdit Then
' ricarico il progetto
Dim Result As CalcEndEventArgs.Results
If bAllKO Then
Result = CalcEndEventArgs.Results.ERROR_
ElseIf bIsEdit Then
Result = CalcEndEventArgs.Results.EDIT
Else
Result = CalcEndEventArgs.Results.OK
End If
RaiseEvent Calc_Ended(Nothing, New CalcEndEventArgs(CmdTypes.EDIT, Result))
Return
Else
' Dialog con Progress Bar
nDoneBar += 1
dProgress = 1 / numBars * nDoneBar
Dim sProg As String = (dProgress * 100).ToString("F1", CultureInfo.InvariantCulture)
callback(dProgress, " Progress: " & sProg & "% Count: " & nDoneBar & " / " & numBars, bCancel)
End If
If bCancel Then
' fine
callback(1, "", bCancel)
' riabilito interfaccia
RaiseEvent Calc_Ended(Nothing, New CalcEndEventArgs(CmdTypes.CHECKGEN, CalcEndEventArgs.Results.OK))
Return
End If
nPgsCurrBar = 0
nPgsClock = 0
Else
' se non sono in simulazione
If Not bIsSimulation AndAlso Not bIsEdit Then
' aggiorno conteggio
If nPgsClock >= 100 AndAlso nPgsCurrBar < 149 Then
nPgsCurrBar += 1
dProgress = 1 / numBars * nDoneBar + 1 / numBars / 150 * nPgsCurrBar
Dim sProg As String = (dProgress * 100).ToString("F1", CultureInfo.InvariantCulture)
callback(dProgress, " Progress: " & sProg & "% Count: " & nDoneBar & " / " & numBars, bCancel)
nPgsClock = 0
End If
End If
End If
nPgsClock += 1
Thread.Sleep(1)
Next
' Verifico che i processi non siano andati tutti in errore
bAllKO = True
For j As Integer = 0 To nMaxThread - 1
If vProc(j).bEnable Then bAllKO = False
Next
If bAllKO Then
Exit While
End If
Thread.Sleep(10)
End While
Thread.Sleep(300)
' se sono in simulazione
If bIsSimulation Then
callback(1, "Simulation closed", bCancel)
Else
callback(1, "Done", bCancel)
End If
' riabilito interfaccia
RaiseEvent Calc_Ended(Nothing, New CalcEndEventArgs(If(bIsSimulation And Not bIsSimulationVerifyed, CmdTypes.SIMULATE, CmdTypes.CHECKGEN), If(bAllKO, CalcEndEventArgs.Results.ERROR_, CalcEndEventArgs.Results.OK)))
End Sub
Private Function CreateNewProjectFromPart(nPartId As Integer, sProjDirPath As String) As String
' Aggiorno identificativi per segnalazione errori
UpdateCutIdAndTaskId(nPartId)
' Disabilito segnalazione modificato
Dim DisableMgr As New DisableModifiedMgr
' Recupero visibilita' pezzo e lo imposto a visibile
Dim nOldPartMode As Integer
EgtGetMode(nPartId, nOldPartMode)
EgtSetMode(nPartId, GDB_MD.STD)
' Salvo pezzo nel suo progetto
Dim bOk As Boolean = False
Dim nPDN As Integer = 0
EgtGetInfo(nPartId, BTL_PRT_PDN, nPDN)
Dim sPartFilePath As String = sProjDirPath & "\" & nPDN.ToString() & ".bwe"
bOk = EgtSaveObjToFile(nPartId, sPartFilePath, NGE.CMPTEXT)
' Ripristino visibilita' pezzo
EgtSetMode(nPartId, nOldPartMode)
' Ripristino stato segnalazione modifica
DisableMgr.ReEnable()
Return If(bOk, sPartFilePath, String.Empty)
End Function
Private Function CreateNewProjectFromMachGroup(nMachGroupId As Integer, sProjDirPath As String) As String
' Aggiorno identificativi per segnalazione errori
Dim nOldMachGroup As Integer = EgtGetCurrMachGroup()
If nMachGroupId <> nOldMachGroup Then EgtSetCurrMachGroup(nMachGroupId)
Dim nRawId As Integer = EgtGetFirstRawPart()
While nRawId <> GDB_ID.NULL
If EgtVerifyRawPartPhase(nRawId, 1) Then
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawId)
While nPartId <> GDB_ID.NULL
UpdateCutIdAndTaskId(nPartId)
nPartId = EgtGetNextPartInRawPart(nPartId)
End While
End If
nRawId = EgtGetNextRawPart(nRawId)
End While
If nMachGroupId <> nOldMachGroup Then
If nOldMachGroup <> GDB_ID.NULL Then
EgtSetCurrMachGroup(nOldMachGroup)
Else
EgtResetCurrMachGroup()
End If
End If
' Salvo gruppo di lavorazione nel suo progetto
Dim sMachGroupName As String = ""
EgtGetMachGroupName(nMachGroupId, sMachGroupName)
Dim sMachGroupFilePath As String = sProjDirPath & "\" & sMachGroupName & ".bwe"
If EgtSaveObjToFile(nMachGroupId, sMachGroupFilePath, NGE.CMPTEXT) Then
Return sMachGroupFilePath
End If
Return String.Empty
End Function
Private Function UpdateCutIdAndTaskId(nPartId As Integer) As Boolean
' Assegno Id a CutId per calcoli
EgtSetInfo(nPartId, "CUTID", nPartId, True)
' Assegno TASKID agli outline per calcoli
Dim nOutLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutLayerId)
While nOutlineId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) Then
' verifico se ha un principale
Dim nMainOffsId As Integer = 0
Dim nTaskId As Integer = nOutlineId
If EgtGetInfo(nOutlineId, BTL_FTR_MAINID, nMainOffsId) Then
nTaskId = nOutlineId + nMainOffsId
'' assegno TASKID alla feature per calcoli
'EgtSetInfo(nOutlineId, "TASKID", nOutlineId + nMainOffsId, True)
'Else
' ' assegno TASKID alla feature per calcoli
' EgtSetInfo(nOutlineId, "TASKID", nOutlineId, True)
End If
' assegno TASKID alla feature per calcoli
EgtSetInfo(nOutlineId, "TASKID", nTaskId)
' recupero eventuali AuxId
Dim sAuxIds As String = ""
If EgtGetInfo(nOutlineId, BTL_FTR_AUXID, sAuxIds) Then
Dim AuxIdArray() As String = sAuxIds.Split(","c)
If AuxIdArray.Count > 0 Then
For Each AuxId In AuxIdArray
AuxId = AuxId.Trim()
AuxId = AuxId.Trim("+"c)
Dim nAuxId As Integer
If Integer.TryParse(AuxId, nAuxId) Then
EgtSetInfo(nOutlineId + nAuxId, "TASKID", nTaskId)
End If
Next
End If
End If
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
' Assegno TASKID alle feature per calcoli
Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
While nFeatureId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) Then
' verifico se ha un principale
Dim nMainOffsId As Integer
Dim nTaskId As Integer = nFeatureId
If EgtGetInfo(nFeatureId, BTL_FTR_MAINID, nMainOffsId) Then
nTaskId = nFeatureId + nMainOffsId
' ' assegno TASKID alla feature per calcoli
' EgtSetInfo(nFeatureId, "TASKID", nFeatureId + nMainOffsId, True)
'Else
' ' assegno TASKID alla feature per calcoli
' EgtSetInfo(nFeatureId, "TASKID", nFeatureId, True)
End If
' assegno TASKID alla feature per calcoli
EgtSetInfo(nFeatureId, "TASKID", nTaskId)
' recupero eventuali AuxId
Dim sAuxIds As String = ""
If EgtGetInfo(nFeatureId, BTL_FTR_AUXID, sAuxIds) Then
Dim AuxIdArray() As String = sAuxIds.Split(","c)
For Each AuxId In AuxIdArray
AuxId = AuxId.Trim()
AuxId = AuxId.Trim("+"c)
Dim nAuxId As Integer
If Integer.TryParse(AuxId, nAuxId) Then
EgtSetInfo(nFeatureId + nAuxId, "TASKID", nTaskId)
End If
Next
End If
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
Return True
End Function
End Module
Public Class Bar
'Public piInfo As PatternInfo
Public nBarState As Integer
Public nBarId As Integer
Public sBarPath As String
Public bBarOk As Boolean
Public nCmdType As Integer
Public nProgramPage As ProjectType
Public nProjType As BWType
Public nMachineName As String
Public nGlobState As Integer
End Class
Public Class ProcessResult
Public Enum ProcessResultTypes As Integer
BAR = 1
PART = 2
TASKID = 3
FALL = 4
TIME = 5
End Enum
Private m_Type As ProcessResultTypes
Public ReadOnly Property Type As ProcessResultTypes
Get
Return m_Type
End Get
End Property
Private m_nCUTID As Integer
Public ReadOnly Property nCUTID As Integer
Get
Return m_nCUTID
End Get
End Property
Private m_nTASKID As Integer
Public ReadOnly Property nTASKID As Integer
Get
Return m_nTASKID
End Get
End Property
Private m_nERR As Integer
Public ReadOnly Property nERR As Integer
Get
Return m_nERR
End Get
End Property
Private m_sMSG As String
Public ReadOnly Property sMSG As String
Get
Return m_sMSG
End Get
End Property
Private m_dROT As Double
Public ReadOnly Property dROT As Double
Get
Return m_dROT
End Get
End Property
Public Sub SetROT(value As Double)
m_dROT = value
End Sub
Private m_nFALL As Integer
Public ReadOnly Property nFALL As Integer
Get
Return m_nFALL
End Get
End Property
Private m_nTIME As Integer
Public ReadOnly Property nTIME As Integer
Get
Return m_nTIME
End Get
End Property
Public Shared Function CreateTaskResult(CUTID As Integer, TASKID As Integer, ERR As Integer, MSG As String, ROT As Double) As ProcessResult
If CUTID <> 0 Then
If TASKID = 0 Then
Return New ProcessResult(ProcessResultTypes.PART, CUTID, TASKID, ERR, MSG, ROT, 0, 0)
End If
Return New ProcessResult(ProcessResultTypes.TASKID, CUTID, TASKID, ERR, MSG, ROT, 0, 0)
End If
Return New ProcessResult(ProcessResultTypes.BAR, CUTID, TASKID, ERR, MSG, ROT, 0, 0)
End Function
Public Shared Function CreateFallResult(CUTID As Integer, ERR As Integer, MSG As String, FALL As Integer) As ProcessResult
Return New ProcessResult(ProcessResultTypes.FALL, CUTID, 0, ERR, MSG, 0, FALL, 0)
End Function
Public Shared Function CreateTimeResult(CUTID As Integer, TIME As Integer) As ProcessResult
Return New ProcessResult(ProcessResultTypes.TIME, CUTID, 0, 0, "", 0, 0, TIME)
End Function
Protected Sub New(Type As ProcessResultTypes, CUTID As Integer, TASKID As Integer, ERR As Integer, MSG As String, ROT As Double, FALL As Integer, TIME As Integer)
m_Type = Type
m_nCUTID = CUTID
m_nTASKID = TASKID
m_nERR = ERR
m_sMSG = MSG
m_dROT = ROT
m_nFALL = FALL
m_nTIME = TIME
End Sub
End Class
@@ -0,0 +1,18 @@
Public Class CalcProcessEndEventArgs
Inherits EventArgs
Public m_Result As Bar
Public Property Result As Bar
Get
Return m_Result
End Get
Private Set(value As Bar)
m_Result = value
End Set
End Property
Sub New(Result As Bar)
m_Result = Result
End Sub
End Class
@@ -0,0 +1,24 @@
Public Class CalcResultEventArgs
Inherits EventArgs
Public Enum Results As Integer
NULL = 0
OK = 1
ERROR_ = 2
End Enum
Public m_Result As Bar
Public Property Result As Bar
Get
Return m_Result
End Get
Private Set(value As Bar)
m_Result = value
End Set
End Property
Sub New(Result As Bar)
m_Result = Result
End Sub
End Class
+157 -139
View File
@@ -30,8 +30,9 @@
Enum CalcStates As Integer
NOTCALCULATED = -1
OK = 0
WARNING = 1
ERROR_ = 2
INFO = 1
WARNING = 2
ERROR_ = 3
End Enum
Public Enum Range As Integer
@@ -112,170 +113,187 @@
PROD = 2
End Enum
' Tipo di progetto (Beam o Wall)
Public Enum BWType As Integer
BEAM = 1
WALL = 2
' Tipo di progetto (Beam o Wall)
Public Enum BWType As Integer
NULL = 0
BEAM = 1
WALL = 2
End Enum
Friend Const PROJ As String = "PROJ"
Friend Const FILENAMESEPARATOR As Char = "^"c
Friend Const BTLINFO As String = "BtlInfo"
Public Const PROJ As String = "PROJ"
Public Const FILENAMESEPARATOR As Char = "^"c
Public Const BTLINFO As String = "BtlInfo"
' layer per assemblato
Public Const ASSEBASE As String = "AsseBase"
' info parametri BTL
Friend Const BTL_PRT_PROJ As String = "PROJ"
Friend Const BTL_PRT_PDN As String = "PDN"
Friend Const BTL_PRT_DO As String = "DO"
Friend Const BTL_PRT_NAM As String = "NAM"
Friend Const BTL_PRT_L As String = "L"
Friend Const BTL_PRT_W As String = "W"
Friend Const BTL_PRT_H As String = "H"
Friend Const BTL_PRT_CNT As String = "CNT"
Friend Const BTL_PRT_ADDED As String = "ADDED"
Friend Const BTL_PRT_DONE As String = "DONE"
Friend Const BTL_PRT_ROTATED As String = "ROTATED"
Friend Const BTL_PRT_INVERTED As String = "INVERTED"
Friend Const BTL_PRT_MATERIAL As String = "MATERIAL"
Public Const BTL_PRT_PROJ As String = "PROJ"
Public Const BTL_PRT_PDN As String = "PDN"
Public Const BTL_PRT_DO As String = "DO"
Public Const BTL_PRT_NAM As String = "NAM"
Public Const BTL_PRT_L As String = "L"
Public Const BTL_PRT_W As String = "W"
Public Const BTL_PRT_H As String = "H"
Public Const BTL_PRT_CNT As String = "CNT"
Public Const BTL_PRT_ADDED As String = "ADDED"
Public Const BTL_PRT_DONE As String = "DONE"
Public Const BTL_PRT_ROTATED As String = "ROTATED"
Public Const BTL_PRT_INVERTED As String = "INVERTED"
Public Const BTL_PRT_MATERIAL As String = "MATERIAL"
Public Const BTL_PRT_VOLUME As String = "VOLUME"
' parametri pezzo
Friend Const BTL_PRT_SINGLEMEMBERNUM = "SINGLEMEMBERNUMBER"
Friend Const BTL_PRT_ASSEMBLYNUM = "ASSEMBLYNUMBER"
Friend Const BTL_PRT_ORDERNUM = "ORDERNUMBER"
Friend Const BTL_PRT_DESIGNATION = "DESIGNATION"
Friend Const BTL_PRT_ANNOTATION = "ANNOTATION"
Friend Const BTL_PRT_STOREY = "STOREY"
Friend Const BTL_PRT_GROUP = "GROUP"
Friend Const BTL_PRT_PACKAGE = "PACKAGE"
Friend Const BTL_PRT_TIMBERGRADE = "TIMBERGRADE"
Friend Const BTL_PRT_QUALITYGRADE = "QUALITYGRADE"
Friend Const BTL_PRT_COLOUR = "COLOUR"
Friend Const BTL_PRT_PLANINGLENGTH = "PLANINGLENGTH"
Friend Const BTL_PRT_STARTOFFSET = "STARTOFFSET"
Friend Const BTL_PRT_ENDOFFSET = "ENDOFFSET"
Friend Const BTL_PRT_UID = "UID"
Friend Const BTL_PRT_TRANSFORMATION = "TRANSFORMATION"
Friend Const BTL_PRT_CAMBER = "CAMBER"
Friend Const BTL_PRT_PARTOFFSET = "PARTOFFSET"
Friend Const BTL_PRT_PROCESSINGQUALITY = "PROCESSINGQUALITY"
Friend Const BTL_PRT_RECESS = "RECESS"
Friend Const BTL_PRT_STOREYTYPE = "STOREYTYPE"
Friend Const BTL_PRT_ELEMENTNUM = "ELEMENTNUMBER"
Friend Const BTL_PRT_LAYER = "LAYER"
Friend Const BTL_PRT_MODULENUM = "MODULENUMBER"
Public Const BTL_PRT_SINGLEMEMBERNUM = "SINGLEMEMBERNUMBER"
Public Const BTL_PRT_ASSEMBLYNUM = "ASSEMBLYNUMBER"
Public Const BTL_PRT_ORDERNUM = "ORDERNUMBER"
Public Const BTL_PRT_DESIGNATION = "DESIGNATION"
Public Const BTL_PRT_ANNOTATION = "ANNOTATION"
Public Const BTL_PRT_STOREY = "STOREY"
Public Const BTL_PRT_GROUP = "GROUP"
Public Const BTL_PRT_PACKAGE = "PACKAGE"
Public Const BTL_PRT_TIMBERGRADE = "TIMBERGRADE"
Public Const BTL_PRT_QUALITYGRADE = "QUALITYGRADE"
Public Const BTL_PRT_COLOUR = "COLOUR"
Public Const BTL_PRT_PLANINGLENGTH = "PLANINGLENGTH"
Public Const BTL_PRT_STARTOFFSET = "STARTOFFSET"
Public Const BTL_PRT_ENDOFFSET = "ENDOFFSET"
Public Const BTL_PRT_UID = "UID"
Public Const BTL_PRT_TRANSFORMATION = "TRANSFORMATION"
Public Const BTL_PRT_CAMBER = "CAMBER"
Public Const BTL_PRT_PARTOFFSET = "PARTOFFSET"
Public Const BTL_PRT_PROCESSINGQUALITY = "PROCESSINGQUALITY"
Public Const BTL_PRT_RECESS = "RECESS"
Public Const BTL_PRT_STOREYTYPE = "STOREYTYPE"
Public Const BTL_PRT_ELEMENTNUM = "ELEMENTNUMBER"
Public Const BTL_PRT_LAYER = "LAYER"
Public Const BTL_PRT_MODULENUM = "MODULENUMBER"
'Friend Const BTL_PRT_USERATTRIBUTE = "USERATTRIBUTE"
Friend Const BTL_PRT_COMMENT = "COMMENT"
Friend Const BTL_PRT_GRAINDIR = "GRAINDIRECTION"
Friend Const BTL_PRT_REFSIDE = "REFERENCESIDE"
Friend Const BTL_PRT_ALIGNMENT = "ALIGNMENT"
Friend Const BTL_PRT_MATERIALTYPE = "MATERIALTYPE"
Public Const BTL_PRT_COMMENT = "COMMENT"
Public Const BTL_PRT_GRAINDIR = "GRAINDIRECTION"
Public Const BTL_PRT_REFSIDE = "REFERENCESIDE"
Public Const BTL_PRT_ALIGNMENT = "ALIGNMENT"
Public Const BTL_PRT_MATERIALTYPE = "MATERIALTYPE"
' parametri generici
Friend Const BTL_GEN_PROJNUM = "PROJECTNUMBER"
Friend Const BTL_GEN_PROJNAME = "PROJECTNAME"
Friend Const BTL_GEN_PROJPART = "PROJECTPART"
Friend Const BTL_GEN_PROJGUID = "PROJECTGUID"
Friend Const BTL_GEN_PROJTYPE = "PROJECTTYPE"
Friend Const BTL_GEN_LISTNAME = "LISTNAME"
Friend Const BTL_GEN_CUSTOMER = "CUSTOMER"
Friend Const BTL_GEN_ARCHITECT = "ARCHITECT"
Friend Const BTL_GEN_EDITOR = "EDITOR"
Friend Const BTL_GEN_DELIVDATE = "DELIVERYDATE"
Friend Const BTL_GEN_EXPDATE = "EXPORTDATE"
Friend Const BTL_GEN_EXPTIME = "EXPORTTIME"
Friend Const BTL_GEN_EXPRELEASE = "EXPORTRELEASE"
Friend Const BTL_GEN_LANGUAGE = "LANGUAGE"
Friend Const BTL_GEN_RANGE = "RANGE"
Friend Const BTL_GEN_COMPUTERNAME = "COMPUTERNAME"
Friend Const BTL_GEN_USER = "USER"
Friend Const BTL_GEN_SRCFILE = "SOURCEFILE"
Friend Const BTL_GEN_EXPFILE = "EXPORTFILE"
Friend Const BTL_GEN_USERATTRIBUTE = "USERATTRIBUTE"
Public Const BTL_GEN_PROJNUM = "PROJECTNUMBER"
Public Const BTL_GEN_PROJNAME = "PROJECTNAME"
Public Const BTL_GEN_PROJPART = "PROJECTPART"
Public Const BTL_GEN_PROJGUID = "PROJECTGUID"
Public Const BTL_GEN_PROJTYPE = "PROJECTTYPE"
Public Const BTL_GEN_LISTNAME = "LISTNAME"
Public Const BTL_GEN_CUSTOMER = "CUSTOMER"
Public Const BTL_GEN_ARCHITECT = "ARCHITECT"
Public Const BTL_GEN_EDITOR = "EDITOR"
Public Const BTL_GEN_DELIVDATE = "DELIVERYDATE"
Public Const BTL_GEN_EXPDATE = "EXPORTDATE"
Public Const BTL_GEN_EXPTIME = "EXPORTTIME"
Public Const BTL_GEN_EXPRELEASE = "EXPORTRELEASE"
Public Const BTL_GEN_LANGUAGE = "LANGUAGE"
Public Const BTL_GEN_RANGE = "RANGE"
Public Const BTL_GEN_COMPUTERNAME = "COMPUTERNAME"
Public Const BTL_GEN_USER = "USER"
Public Const BTL_GEN_SRCFILE = "SOURCEFILE"
Public Const BTL_GEN_EXPFILE = "EXPORTFILE"
Public Const BTL_GEN_USERATTRIBUTE = "USERATTRIBUTE"
Friend Const PROCESSINGS As String = "Processings"
Friend Const OUTLINE As String = "Outline"
Friend Const BTL_FTR_GRP As String = "GRP"
Friend Const BTL_FTR_PRC As String = "PRC"
Friend Const BTL_FTR_DO As String = "DO"
Friend Const BTL_FTR_SIDE As String = "SIDE"
Friend Const BTL_FTR_NAME As String = "NAME"
Friend Const BTL_FTR_DES As String = "DES"
Friend Const BTL_FTR_PRID As String = "PRID"
Friend Const BTL_FTR_FRAME As String = "FRAME"
Friend Const BTL_FTR_MAINID As String = "MAINID"
Friend Const BTL_FTR_ADJID As String = "ADJID"
Friend Const BTL_FTR_AUXID As String = "AUXID"
Public Const PROCESSINGS As String = "Processings"
Public Const OUTLINE As String = "Outline"
Public Const BTL_FTR_GRP As String = "GRP"
Public Const BTL_FTR_PRC As String = "PRC"
Public Const BTL_FTR_DO As String = "DO"
Public Const BTL_FTR_SIDE As String = "SIDE"
Public Const BTL_FTR_NAME As String = "NAME"
Public Const BTL_FTR_DES As String = "DES"
Public Const BTL_FTR_PRID As String = "PRID"
Public Const BTL_FTR_FRAME As String = "FRAME"
Public Const BTL_FTR_MAINID As String = "MAINID"
Public Const BTL_FTR_ADJID As String = "ADJID"
Public Const BTL_FTR_AUXID As String = "AUXID"
' parametri machgroup grezzi
Friend Const MGR_RPT_ID As String = "ID"
Friend Const MGR_RPT_L As String = "L"
Friend Const MGR_RPT_W As String = "W"
Friend Const MGR_RPT_H As String = "H"
Friend Const MGR_RPT_WASTE As String = "WASTE"
Friend Const MGR_RPT_USAGE As String = "USAGE"
Friend Const MGR_RPT_STARTCUT As String = "STARTCUT"
Friend Const MGR_RPT_MATERIAL As String = "MATERIAL"
Public Const MGR_RPT_ID As String = "ID"
Public Const MGR_RPT_L As String = "L"
Public Const MGR_RPT_W As String = "W"
Public Const MGR_RPT_H As String = "H"
Public Const MGR_RPT_WASTE As String = "WASTE"
Public Const MGR_RPT_USAGE As String = "USAGE"
Public Const MGR_RPT_STARTCUT As String = "STARTCUT"
Public Const MGR_RPT_MATERIAL As String = "MATERIAL"
Friend Const MGR_PRT_PDN As String = "PDN"
Friend Const MGR_PRT_L As String = "L"
Friend Const MGR_PRT_W As String = "W"
Friend Const MGR_PRT_H As String = "H"
Friend Const MGR_PRT_DES As String = "DES"
Friend Const MGR_PRT_STARTCUT As String = "STARTCUT"
Friend Const MGR_PRT_MATERIAL As String = "MATERIAL"
Friend Const MGR_PRT_ROT As String = "ROT"
Friend Const MGR_PRT_FLIP As String = "FLIP"
Friend Const MGR_PRT_POSX As String = "POSX"
Friend Const MGR_PRT_POSY As String = "POSY"
Public Const MGR_PRT_PDN As String = "PDN"
Public Const MGR_PRT_L As String = "L"
Public Const MGR_PRT_W As String = "W"
Public Const MGR_PRT_H As String = "H"
Public Const MGR_PRT_DES As String = "DES"
Public Const MGR_PRT_STARTCUT As String = "STARTCUT"
Public Const MGR_PRT_MATERIAL As String = "MATERIAL"
Public Const MGR_PRT_DO As String = "DO"
Public Const MGR_PRT_ROT As String = "ROT"
Public Const MGR_PRT_FLIP As String = "FLIP"
Public Const MGR_PRT_POSX As String = "POSX"
Public Const MGR_PRT_POSY As String = "POSY"
Friend Const MGR_FTR_GRP As String = "GRP"
Friend Const MGR_FTR_PRC As String = "PRC"
Friend Const MGR_FTR_DO As String = "DO"
Friend Const MGR_FTR_SIDE As String = "SIDE"
Friend Const MGR_FTR_NAME As String = "NAME"
Friend Const MGR_FTR_DES As String = "DES"
Friend Const MGR_FTR_PRID As String = "PRID"
Friend Const MGR_FTR_FRAME As String = "FRAME"
Public Const MGR_FTR_GRP As String = "GRP"
Public Const MGR_FTR_PRC As String = "PRC"
Public Const MGR_FTR_DO As String = "DO"
Public Const MGR_FTR_SIDE As String = "SIDE"
Public Const MGR_FTR_NAME As String = "NAME"
Public Const MGR_FTR_DES As String = "DES"
Public Const MGR_FTR_PRID As String = "PRID"
Public Const MGR_FTR_FRAME As String = "FRAME"
' parametri creazione barre
Friend Const MGR_RPT_BARLEN As String = "BARLEN"
Friend Const MGR_RPT_BARHEIGHT As String = "BARHEIGHT"
Friend Const MGR_RPT_BARWIDTH As String = "BARWIDTH"
Friend Const MGR_RPT_PANELLEN As String = "PANELLEN"
Friend Const MGR_RPT_PANELWIDTH As String = "PANELWIDTH"
Friend Const MGR_RPT_PANELHEIGHT As String = "PANELHEIGHT"
Friend Const MGR_RPT_PART As String = "PART"
Public Const MGR_RPT_BARLEN As String = "BARLEN"
Public Const MGR_RPT_BARHEIGHT As String = "BARHEIGHT"
Public Const MGR_RPT_BARWIDTH As String = "BARWIDTH"
Public Const MGR_RPT_PANELLEN As String = "PANELLEN"
Public Const MGR_RPT_PANELWIDTH As String = "PANELWIDTH"
Public Const MGR_RPT_PANELHEIGHT As String = "PANELHEIGHT"
Public Const MGR_RPT_PART As String = "PART"
' parametri P per comunicazione con la macchina
Public Const MGR_RPT_PRODID As String = "PRODID"
Public Const MGR_RPT_PATTID As String = "PATTID"
' parametri errori integration
Friend Const ITG_CUTID As String = "CUTID"
Friend Const ITG_TASKID As String = "TASKID"
Friend Const ITG_PROJ_ERR As String = "PROJ_ERR"
Friend Const ITG_PROJ_MSG As String = "PROJ_MSG"
Friend Const ITG_PROJ_ROT As String = "PROJ_ROT"
Friend Const ITG_PROJ_FALL As String = "PROJ_FALL"
Friend Const ITG_PROJ_TIME As String = "PROJ_TIME"
Public Const ITG_CUTID As String = "CUTID"
Public Const ITG_TASKID As String = "TASKID"
Public Const ITG_PROJ_ERR As String = "PROJ_ERR"
Public Const ITG_PROJ_MSG As String = "PROJ_MSG"
Public Const ITG_PROJ_ROT As String = "PROJ_ROT"
Public Const ITG_PROJ_FALL As String = "PROJ_FALL"
Public Const ITG_PROJ_TIME As String = "PROJ_TIME"
' parametri errori integration
Friend Const ITG_PROD_ERR As String = "PROD_ERR"
Friend Const ITG_PROD_MSG As String = "PROD_MSG"
Friend Const ITG_PROD_ROT As String = "PROD_ROT"
Friend Const ITG_PROD_FALL As String = "PROD_FALL"
Friend Const ITG_PROD_TIME As String = "PROD_TIME"
Public Const ITG_PROD_ERR As String = "PROD_ERR"
Public Const ITG_PROD_MSG As String = "PROD_MSG"
Public Const ITG_PROD_ROT As String = "PROD_ROT"
Public Const ITG_PROD_FALL As String = "PROD_FALL"
Public Const ITG_PROD_TIME As String = "PROD_TIME"
' parametri blocco rot e flip
Public Const LOCK_ROT As String = "MANUALROT"
Public Const LOCK_FLIP As String = "MANUALFLIP"
' parametri errori integration
Friend Const DUPLO_TODELETE As String = "DUPLO_TODELETE"
Public Const DUPLO_TODELETE As String = "DUPLO_TODELETE"
' parametri warehouse
Friend Const WRH_BEAM As String = "BEAM"
Friend Const WRH_WALL As String = "WALL"
Friend Const WRH_CURRENT As String = "Current"
Friend Const WRH_STARTOFFSET As String = "StartOffset"
Friend Const WRH_OFFSET As String = "Offset"
Friend Const WRH_L As String = "L"
Friend Const WRH_KERF As String = "Kerf"
Friend Const WRH_S As String = "S"
Public Const WRH_BEAM As String = "BEAM"
Public Const WRH_WALL As String = "WALL"
Public Const WRH_CURRENT As String = "Current"
Public Const WRH_STARTOFFSET As String = "StartOffset"
Public Const WRH_OFFSET As String = "Offset"
Public Const WRH_QUANTITY As String = "Quantity"
Public Const WRH_L As String = "L"
Public Const WRH_KERF As String = "Kerf"
Public Const WRH_S As String = "S"
' parametri import/export
Public Const EXP_PROJ As String = "EXPORTPROJ"
Public Const EXP_PROD As String = "EXPORTPROD"
Public Const BTLFILENAME As String = "BTLFILENAME"
Public Const EXP_PART As String = "ImportExport"
Public Const EXP_MACHINE As String = "Machine"
End Module
+4 -11
View File
@@ -1,23 +1,16 @@
Public Module ConstColumns
' RawPartList
Public Const COL_NAME As String = "colNAME"
Public Const COL_CALC As String = "colCALC"
Public Const COL_DO As String = "colDO"
Public Const COL_VALUE As String = "colVALUE"
Public Const COL_CUSTOM As String = "colCUSTOM"
Public Const COL_STARTCUT As String = "colSTARTCUT"
Public Const COL_W As String = "colW"
Public Const COL_H As String = "colH"
Public Const COL_L As String = "colL"
Public Const COL_MATERIAL As String = "colMATERIAL"
Public Const COL_USAGE As String = "colUSAGE"
Public Const COL_WASTE As String = "colWASTE"
' PartInRawPartList
Public Const COL_PDN As String = "colPDN"
Public Const COL_NAM As String = "colNAM"
Public Const COL_ROT As String = "colROT"
Public Const COL_FLIP As String = "colFLIP"
Public Const COL_POSX As String = "colPOSX"
Public Const COL_POSY As String = "colPOSY"
Public Const COL_OFFSET As String = "colOFFSET"
Public Const COL_REDO As String = "colREDO"
End Module
@@ -9,5 +9,25 @@
Public Const S_RAWPARTLIST_WALL As String = "DG_RawPartList_WALL"
Public Const S_PARTINRAWPARTLIST_BEAM As String = "DG_PartInRawPartList_BEAM"
Public Const S_PARTINRAWPARTLIST_WALL As String = "DG_PartInRawPartList_WALL"
Public Const S_PARAMETERLIST_P As String = "DG_ParameterList_P"
Public Const S_PARAMETERLIST_Q As String = "DG_ParameterList_Q"
Public Const S_DUPLOPARAMETERLIST_Q As String = "DG_DuploParameterList_Q"
Public Const S_RAWPARTLIST_SUPERVISOR As String = "DG_RawPartList_SUPERVISOR"
Public Const S_PARTINRAWPARTLIST_SUPERVISOR As String = "DG_PartInRawPartList_SUPERVISOR"
Public Const S_FEATUREINPARTINRAWPARTLIST_SUPERVISOR As String = "DG_FeatureInPartInRawPartList_SUPERVISOR"
Public Const S_PARTLIST As String = "DG_PartList"
Public Const S_FEATUREINPARTINRAWPARTLIST As String = "DG_FeatureInPartInRawPartList"
Public Const S_STATISTICS As String = "DG_Statistics"
Public Const S_OPTIMIZERSTATISTICS As String = "DG_OptimizerStatistics"
Public Const S_RAWPARTSTATISTICS As String = "DG_RawPartStatistics"
Public Const S_BEAMMACHININGS As String = "DG_BeamMachinings"
Public Const S_SPARAMLIST_BEAM As String = "DG_SParamList_BEAM"
Public Const S_SPARAMLIST_WALL As String = "DG_SParamList_WALL"
Public Const S_SECTXMATLIST_BEAM As String = "DG_SectXMatList_BEAM"
Public Const S_SECTXMATLIST_WALL As String = "DG_SectXMatList_WALL"
Public Const S_VARIABLESLIST As String = "DG_VariablesList"
Public Const S_MDICOMMANDS As String = "DG_MDICommands"
Public Const K_LOCKTABLE As String = "LockTable"
End Module
+13
View File
@@ -0,0 +1,13 @@
Public Class ConstDims
Public Const DIMENSIONS_FILE_NAME As String = "Dimensions.ini"
Public Const PROJECT_VIEW As String = "Project_View"
Public Const PROJECT_OPTIMIZER As String = "Project_Optimizer"
Public Const LEFTPANEL_VIEW As String = "LeftPanel_View"
Public Const LEFTPANEL_OPTIMIZER As String = "LeftPanel_Optimizer"
Public Const TOPPANEL_OPTIMIZER As String = "TopPanel_Optimizer"
Public Const LEFTPANEL_SUPERVISOR As String = "LeftPanel_Supervisor"
Public Const PROJECT_SUPERVISOR As String = "Project_Supervisor"
End Class
@@ -11,7 +11,7 @@
'
'----------------------------------------------------------------------------
Module ConstGen
Public Module ConstGen
' File con direttorio radice dei dati
Public Const DAT_FILE_NAME As String = "DataRoot.Ini"
@@ -30,10 +30,12 @@ Module ConstGen
MACHINING = 1
SUPERVISOR = 2
CONFIG = 3
INPUTS = 4
OUTPUTS = 5
End Enum
' Abilitazioni licenza
Friend Enum KEY_OPT As UInteger
Public Enum KEY_OPT As UInteger
BEAM = 1
WALL = 2
NESTING_AUTO = 4
@@ -42,13 +44,14 @@ Module ConstGen
End Enum
' File di log generale
Public Const GENLOG_FILE_NAME As String = "EgtBEAMWALLLog#.txt"
Public Const VWOPTGENLOG_FILE_NAME As String = "EgtBEAMWALL.ViewerOptimizerLog#.txt"
Public Const SUPGENLOG_FILE_NAME As String = "EgtBEAMWALL.SupervisorLog#.txt"
' Sottodirettorio di configurazione
Public Const CONF_DIR As String = "Config"
' Sottodirettorio delle risorse
Public Const RES_DIR As String = "Resources"
' Sottodirettorio temporaneo
' Sottodirettorio temporaneo
Public Const TEMP_DIR As String = "Temp"
' Sottodirettorio per Cam automatico
Public Const PROJS_DIR As String = "Projs"
@@ -70,5 +73,9 @@ Module ConstGen
Public Const TOOLMAKERS_DFL_DIR As String = "ToolMakers"
' Nome file Lua con le funzioni di attrezzaggio
Public Const SETUP_LUA As String = "SetUp.lua"
' Nome eseguibile per stampa
Public Const ZEBRAPRINTER_EXE As String = "ZebraPrinterUtilitiesD32.exe"
' Sottodirettorio di default per macro
Public Const MACRO_DFL_DIR As String = "Macro"
End Module
+140
View File
@@ -0,0 +1,140 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2015
'----------------------------------------------------------------------------
' File : ConstIni.vb Data : 12.02.15 Versione : 1.6b3
' Contenuto : Modulo costanti sezione e chiavi per file Ini.
'
'
'
' Modifiche : 12.02.15 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstIni
Public Const INI_FILE_NAME As String = "EgtBEAMWALL.ini"
'Public Const S_GENERAL As String = "General"
'Public Const K_DEBUG As String = "Debug"
'Public Const K_LICENCE As String = "Licence"
'Public Const K_USERLEVEL As String = "UserLevel"
'Public Const K_MAXINST As String = "MaxInstances"
Public Const K_MAXCAMINST As String = "MaxCamInstances"
Public Const K_VIEWOPTIM_INSTANCES As String = "ViewOptimInstances"
Public Const K_SUPERVISOR_INSTANCES As String = "SupervisorInstances"
'Public Const K_COMMANDLOG As String = "CommandLog"
'Public Const K_MESSAGESDIR As String = "MessagesDir"
'Public Const K_MESSAGES As String = "Messages"
'Public Const K_WINPLACE As String = "WinPlace"
'Public Const K_LASTPROJ As String = "LastProj"
'Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj"
Public Const K_LASTIMPDIR As String = "LastImpDir"
Public Const K_LASTNGEXPDIR As String = "LastNgexpDir"
Public Const K_LASTUPDATEDIR As String = "LastUpdateDir"
Public Const K_PROJSINDEX As String = "ProjsIndex"
Public Const K_PRODSINDEX As String = "ProdsIndex"
'Public Const K_SUPPORT As String = "Support"
Public Const K_WAREHOUSE As String = "Warehouse"
Public Const K_DBADDRESS As String = "DbAddress"
Public Const K_UPDATEBTL As String = "UpdateBtl"
'Public Const S_LANGUAGES As String = "Languages"
'Public Const K_LANGUAGE As String = "Language"
'Public Const S_LUA As String = "Lua"
'Public Const K_LIBSDIR As String = "LibsDir"
'Public Const K_BASELIB As String = "BaseLib"
'Public Const S_GEOMDB As String = "GeomDB"
'Public Const K_DEFAULTFONT As String = "DefaultFont"
'Public Const K_NFEFONTDIR As String = "NfeFontDir"
'Public Const K_DEFAULTCOLOR As String = "DefaultColor"
'Public Const K_SAVETYPE As String = "SaveType"
'Public Const S_OPENGL As String = "OpenGL"
'Public Const K_DOUBLEBUFFER As String = "DoubleBuffer"
'Public Const K_COLORBITS As String = "ColorBits"
'Public Const K_DEPTHBITS As String = "DepthBits"
'Public Const K_DRIVER As String = "Driver"
'Public Const S_SCENE As String = "Scene"
'Public Const K_BACKTOP As String = "BackTop"
'Public Const K_BACKBOTTOM As String = "BackBottom"
'Public Const K_SHOWGFRAME As String = "ShowGFrame"
'Public Const K_MARK As String = "Mark"
'Public Const K_SELSURF As String = "SelSurf"
'Public Const K_SHOWMODE As String = "ShowMode"
Public Const K_SHOWBUILDING As String = "ShowBuilding"
'Public Const K_CURVEDIR As String = "CurveDir"
'Public Const K_SHOWTRIAADV As String = "ShowTriaAdv"
'Public Const K_SHOWZMAP As String = "ShowZmap"
'Public Const K_TEXMAXLINPIX As String = "TextureMaxLinPixels"
'Public Const K_ZOOMWIN As String = "ZoomWin"
'Public Const K_DISTLINE As String = "DistLine"
'Public Const K_MMUNITS As String = "MmUnits"
'Public Const S_GRID As String = "Grid"
'Public Const K_SHOWGRID As String = "ShowGrid"
'Public Const K_SHOWFRAME As String = "ShowFrame"
'Public Const K_SNAPSTEP As String = "SnapStep"
'Public Const K_SNAPSTEPINCH As String = "SnapStepInch"
'Public Const K_MINLINESSTEP As String = "MinLineSStep"
'Public Const K_MAJLINESSTEP As String = "MajLineSStep"
'Public Const K_EXTSSTEP As String = "ExtSStep"
'Public Const K_MINLNCOLOR As String = "MinLnColor"
'Public Const K_MAJLNCOLOR As String = "MajLnColor"
Public Const S_IMPORT As String = "Import"
Public Const K_BTLFLAG As String = "BtlFlag"
Public Const K_WALLBTLFLAG As String = "WallBtlFlag"
'Public Const S_MACH As String = "Mach"
'Public Const K_MACHINESDIR As String = "MachinesDir"
'Public Const K_TOOLMAKERSDIR As String = "ToolMakersDir"
'Public Const K_CURRMACH As String = "CurrMach"
Public Const K_SUPERVISORMACH As String = "SupervisorMach"
Public Const K_PASSWORD As String = "Password"
'Public Const S_SIMUL As String = "Simul"
'Public Const K_SLIDERX As String = "SliderX"
'Public Const K_SLIDERVAL As String = "SliderVal"
Public Const S_BEAM As String = "Beam"
Public Const K_CALCPATH As String = "CalcPath"
Public Const K_BEAMBASEDIR As String = "BaseDir"
Public Const K_BEAMBWEEXEC As String = "BweExec"
Public Const S_WALL As String = "Wall"
Public Const K_WALLBASEDIR As String = "BaseDir"
Public Const K_WALLBWEEXEC As String = "BweExec"
'Public Const S_NEST As String = "Nest"
Public Const K_NESTEXEC As String = "NestExec"
Public Const K_FLIPROT As String = "FlipRot"
Public Const K_SECTIONTIME As String = "SectionTime"
Public Const K_PARTTIME As String = "PartTime"
Public Const K_RAWPARTDEF As String = "RawPartDefinition"
Public Const K_MANUALNEST As String = "ManualNest"
Public Const K_LDINTERSOTHER As String = "LDIntersOther"
Public Const K_MINSCORE As String = "MinScore"
Public Const S_BEAMWALL As String = "BeamWall"
Public Const K_BEAMWALLENABLE As String = "BtlEnable"
Public Const K_BEAMWALLBASEDIR As String = "BaseDir"
Public Const K_BEAMWALLBUTTON As String = "Button"
Public Const S_MRUPROJFILES As String = "MruProjFiles"
Public Const S_MRUPRODFILES As String = "MruProdFiles"
Public Const S_MRUSUPERVISORPRODFILES As String = "MruSupervisorProdFiles"
Public Const S_PRINTER As String = "Printer"
Public Const K_LINK As String = "Link"
Public Const K_ENABLE As String = "Enable"
Public Const K_ZEBRAUTILITIES As String = "ZebraUtilities"
Public Const K_TEMPLATE As String = "Template"
Public Const S_BEAM_LIST As String = "Beam_List"
Public Const S_WALL_LIST As String = "Wall_List"
End Module
+6 -2
View File
@@ -19,10 +19,14 @@
SENDPROG = 10
REMOVEPROG = 11
REMOVEALLPROG = 12
READ = 13
READ_TPA = 13
WRITE = 14
DELETEALARMS = 15
SETOP = 16
SETOPMODE = 16
READ_NUMFLEXIUM = 17
STOPREAD_NUMFLEXIUM = 18
MDI = 19
SETCHANNEL = 20
End Enum
Public Enum LogCommandTypes As Integer
@@ -0,0 +1,25 @@
Public Module ConstMachIni
Public Const MACH_INI_FILE_NAME As String = "MachData.ini"
Public Const GETWALLDATA_FILE_NAME As String = "GetWallData.lua"
Public Const K_NCTYPE As String = "NCType"
Public Const S_CHANNELS As String = "Channels"
' Variables della macchina corrente
Public Const S_MAINVARIABLES As String = "MainVariables"
Public Const S_VARIABLES As String = "Variables"
Public Const S_INPUTVARIABLES As String = "InputVariables"
Public Const S_OUTPUTVARIABLES As String = "OutputVariables"
Public Const S_MDI As String = "MDI"
Public Const K_BEAM As String = "Beam"
Public Const K_WALL As String = "Wall"
Public Const K_SCRIPT As String = "Scripts"
Public Const K_SETUP As String = "Setup"
Public Const K_FLOW As String = "Flow"
Public Const TS3DATA_FILE As String = "Ts3Data.lua"
End Module
@@ -1,4 +1,4 @@
Module ConstMsg
Public Module ConstMsg
Public Const MSG_SETUPERRORS As Integer = 5000 + 1470
+49 -27
View File
@@ -10,7 +10,7 @@
<AssemblyName>EgtBEAMWALL.Core</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
@@ -47,7 +47,7 @@
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtUILib, Version=2.3.4.3, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="EgtUILib, Version=2.3.7.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\EgtProg\Dll32\EgtUILib.dll</HintPath>
</Reference>
@@ -59,6 +59,7 @@
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml" />
@@ -78,37 +79,48 @@
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="BeamM.vb" />
<Compile Include="BTL ViewModel\BTLFeatureVM.vb" />
<Compile Include="BTLViewModel\BTLFeatureVM.vb" />
<Compile Include="CALCPanel\CalcEditEndEventArgs.vb" />
<Compile Include="Constants\ConstColumns.vb" />
<Compile Include="Constants\ConstDataGridColumnsIni.vb" />
<Compile Include="Constants\ConstDims.vb" />
<Compile Include="Constants\ConstGen.vb" />
<Compile Include="Constants\ConstIni.vb" />
<Compile Include="Constants\ConstMachComm.vb" />
<Compile Include="Constants\ConstMachIni.vb" />
<Compile Include="Constants\ConstMsg.vb" />
<Compile Include="EgtDataGrid\EgtDataGrid.xaml.vb">
<DependentUpon>EgtDataGrid.xaml</DependentUpon>
</Compile>
<Compile Include="EgtDataGrid\DataGridColumnsIniFile.vb" />
<Compile Include="MachGroup Model\BeamMachGroupM.vb" />
<Compile Include="CALCPanel\CalcProcessEndEventArgs.vb" />
<Compile Include="CALCPanel\CalcResultEventArgs.vb" />
<Compile Include="CALCPanel\CalcEndEventArgs.vb" />
<Compile Include="CALCPanel\CalcIntegration.vb" />
<Compile Include="DataAccess\PartAddedEventArgs.vb" />
<Compile Include="DataAccess\BTLParamAddedEventArgs.vb" />
<Compile Include="Lib\MachGroupAddedEventArgs.vb" />
<Compile Include="Lib\MachGroupVM.vb" />
<Compile Include="Lib\NewMachGroupPanelVM.vb" />
<Compile Include="BTL Model\BTLFeatureM.vb" />
<Compile Include="BTL Model\BTLParamM.vb" />
<Compile Include="BTLModel\BTLFeatureM.vb" />
<Compile Include="BTLModel\BTLParamM.vb" />
<Compile Include="DataAccess\BTLFeatureAddedEventArgs.vb" />
<Compile Include="DataAccess\BTLPartAddedEventArgs.vb" />
<Compile Include="BTL Model\BTLPartM.vb" />
<Compile Include="BTL Model\BTLStructureM.vb" />
<Compile Include="BTLModel\BTLPartM.vb" />
<Compile Include="BTLModel\BTLStructureM.vb" />
<Compile Include="Constants\ConstBeam.vb" />
<Compile Include="Enum.vb" />
<Compile Include="MachGroupPanel\BeamMachGroupVM.vb" />
<Compile Include="MachGroupPanel\BeamVM.vb" />
<Compile Include="LoadingWnd\LoadingWndHelper.vb" />
<Compile Include="LoadingWnd\LoadingWndV.xaml.vb">
<DependentUpon>LoadingWndV.xaml</DependentUpon>
</Compile>
<Compile Include="LoadingWnd\LoadingWndVM.vb" />
<Compile Include="Utility\DimensionsIniFile.vb" />
<Compile Include="Utility\Enum.vb" />
<Compile Include="MachGroupPanel\MyMachGroupPanelVM.vb" />
<Compile Include="MachGroupPanel\MyMachGroupVM.vb" />
<Compile Include="MachGroupPanel\PartVM.vb" />
<Compile Include="MachGroupPanel\WallMachGroupVM.vb" />
<Compile Include="MachGroupPanel\WallVM.vb" />
<Compile Include="MachLog.vb" />
<Compile Include="Utility\GridDimension.vb" />
<Compile Include="Utility\MachLog.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
@@ -125,29 +137,31 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="MachGroup Model\MyMachGroupM.vb" />
<Compile Include="MachGroupModel\MyMachGroupM.vb" />
<Compile Include="Lib\MachGroupM.vb" />
<Compile Include="Lib\MachGroupPanelM.vb" />
<Compile Include="MachGroup Model\MyMachGroupPanelM.vb" />
<Compile Include="MyMachine.vb" />
<Compile Include="MachGroupModel\MyMachGroupPanelM.vb" />
<Compile Include="Utility\ManageWindow.vb" />
<Compile Include="Utility\MyMachine.vb" />
<Compile Include="OpenProjectFileDialog\OpenProjectFileDialogV.xaml.vb">
<DependentUpon>OpenProjectFileDialogV.xaml</DependentUpon>
</Compile>
<Compile Include="OpenProjectFileDialog\OpenProjectFileDialogVM.vb" />
<Compile Include="PartM.vb" />
<Compile Include="ProdFileM.vb" />
<Compile Include="ProjectFileM.vb" />
<Compile Include="MachGroupModel\PartM.vb" />
<Compile Include="ProjectFileVM\ProdFileM.vb" />
<Compile Include="ProjectFileVM\ProjectFileM.vb" />
<Compile Include="ProjectManager\ProdFileVM.vb" />
<Compile Include="ProjectManager\ProjectFileVM.vb" />
<Compile Include="ProjectManager\ProjFileVM.vb" />
<Compile Include="ProjFileM.vb" />
<Compile Include="SectionXMaterial.vb" />
<Compile Include="ProjectFileVM\ProjFileM.vb" />
<Compile Include="Utility\SectionXMaterial.vb" />
<Compile Include="Utility\BTLIniFile.vb" />
<Compile Include="Utility\Command.vb" />
<Compile Include="Utility\CoreMap.vb" />
<Compile Include="Utility\VMBase.vb" />
<Compile Include="WallM.vb" />
<Compile Include="WallMachGroupM.vb" />
<Compile Include="Utility\DisableModifiedMgr.vb" />
<Compile Include="ViewPanel\ViewPanelV.xaml.vb">
<DependentUpon>ViewPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="ViewPanel\ViewPanelVM.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
@@ -173,10 +187,18 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="LoadingWnd\LoadingWndV.xaml">
<SubType>Designer</SubType>
<Generator>XamlIntelliSenseFileGenerator</Generator>
</Page>
<Page Include="OpenProjectFileDialog\OpenProjectFileDialogV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="ViewPanel\ViewPanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
@@ -7,13 +7,14 @@ Public Module DataGridColumnsIniFile
Public m_sDataGridColumnsIniFile As String
' funzione per ottenere dal file INI le colonne da caricare nelle EgtDataGrid del programma
Public Function GetPrivateProfileColumns(ParentDGName As String, ByRef ocColumns As ObservableCollection(Of EgtDataGridColumn)) As Boolean
Dim colIndex As Integer = 0
Dim str = String.Empty
While EgtUILib.GetPrivateProfileString(ParentDGName, colIndex, String.Empty, str, m_sDataGridColumnsIniFile) > 0
Dim sColumnParams() As String = str.Split(","c)
' verifico numero minimo di parametri
If sColumnParams.Count >= 7 Then
If sColumnParams.Count >= 9 Then
' cancello spazi
For index = 0 To sColumnParams.Count - 1
sColumnParams(index) = sColumnParams(index).Trim()
@@ -28,7 +29,9 @@ Public Module DataGridColumnsIniFile
Dim WidthType As DataGridLengthUnitType
StringToDouble(sColumnParams(5), Width)
Integer.TryParse(sColumnParams(6), WidthType)
ocColumns.Add(New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType)))
Dim bVisible As Boolean = sColumnParams(7).Equals("1")
Dim bCanUserEditVisible As Boolean = sColumnParams(8).Equals("1")
ocColumns.Add(New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible))
End If
colIndex += 1
End While
@@ -39,4 +42,38 @@ Public Module DataGridColumnsIniFile
Return WritePrivateProfileString(ParentDataGridName, DisplayIndex, sColumnParams, m_sDataGridColumnsIniFile)
End Function
' funzione per ottenere dal file INI le colonne da caricare nelle EgtDataGrid del programma
Public Function GetPrivateProfileColumn(ParentDGName As String, ByRef Column As EgtDataGridColumn) As Boolean
Dim colIndex As Integer = 0
Dim str = String.Empty
While EgtUILib.GetPrivateProfileString(ParentDGName, colIndex, String.Empty, str, m_sDataGridColumnsIniFile) > 0
Dim sColumnParams() As String = str.Split(","c)
' verifico numero minimo di parametri
If sColumnParams.Count >= 9 Then
If Column.Name = sColumnParams(0) Then
' cancello spazi
For index = 0 To sColumnParams.Count - 1
sColumnParams(index) = sColumnParams(index).Trim()
Next
' creo colonna
Dim sName = sColumnParams(0)
Dim bReorder As Boolean = sColumnParams(1).Equals("1")
Dim bResize As Boolean = sColumnParams(2).Equals("1")
Dim bSort As Boolean = sColumnParams(3).Equals("1")
Dim bIsReadOnly As Boolean = sColumnParams(4).Equals("1")
Dim Width As Double
Dim WidthType As DataGridLengthUnitType
StringToDouble(sColumnParams(5), Width)
Integer.TryParse(sColumnParams(6), WidthType)
Dim bVisible As Boolean = sColumnParams(7).Equals("1")
Dim bCanUserEditVisible As Boolean = sColumnParams(8).Equals("1")
Column = New EgtDataGridColumn(ParentDGName, sName, bReorder, bResize, bSort, bIsReadOnly, New DataGridLength(Width, WidthType), bVisible, bCanUserEditVisible)
Exit While
End If
End If
colIndex += 1
End While
Return Not IsNothing(Column)
End Function
End Module
+12 -5
View File
@@ -2,11 +2,18 @@
x:Name="CurrDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="SizeChanged" Handler="Cell_SizedChanged" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
<EventSetter Event="SizeChanged"
Handler="Cell_SizedChanged" />
<EventSetter Event="MouseRightButtonDown"
Handler="Cell_MouseRightButtonDown" />
<EventSetter Event="FrameworkElement.Loaded"
Handler="DataGridColumnHeader_Loaded"/>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
+283 -17
View File
@@ -2,11 +2,32 @@
Imports System.Collections.Specialized
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Controls.Primitives
Imports System.Windows.Input
Imports System.Windows.Media
Imports EgtUILib
Imports EgtWPFLib5
Public Class EgtDataGrid
' vecchio indice da salvare per il Reorder delle colonne
Public OldIndex As Integer = 0
' variabili e costanti per il Resize delle colonne adiacenti
Private Const LEFT As String = "PART_LeftHeaderGripper"
Private Const RIGHT As String = "PART_RightHeaderGripper"
Private startPoint As Point
Private startWidth As Double
Private adjacentStartWidth As Double
'Private startUnitType As DataGridLengthUnitType
'Private adjacentUnitType As DataGridLengthUnitType
Private targetColumn As DataGridColumn
Private adjacentColumn As DataGridColumn
' indice header su cui è aperto il ContextMenu per gestione check/uncheck LockTable
Private HeaderDispIndex As Integer = 0
Sub New()
InitializeComponent()
End Sub
@@ -28,8 +49,8 @@ Public Class EgtDataGrid
If oldItems IsNot Nothing Then
For Index = 0 To oldItems.Count - 1
Dim Column As DataGridColumn = context.FindResource(oldItems(Index))
For index = 0 To oldItems.Count - 1
Dim Column As DataGridColumn = context.FindResource(oldItems(index))
context.Columns.Remove(Column)
Next
@@ -40,10 +61,14 @@ Public Class EgtDataGrid
If newItems IsNot Nothing Then
For Index = 0 To newItems.Count - 1
Dim col As DataGridColumn = context.FindResource(newItems(Index).Name)
newItems(Index).InitColumn(col)
context.Columns.Add(col)
For index = 0 To newItems.Count - 1
Try
Dim col As DataGridColumn = context.FindResource(newItems(index).Name)
newItems(index).InitColumn(col)
context.Columns.Add(col)
Catch ex As Exception
MessageBox.Show(String.Format(EgtMsg(61883), newItems(index).Name, newItems(index).ParentDataGridName), EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning)
End Try
Next
AddHandler newItems.CollectionChanged, AddressOf context.collectionChanged
@@ -57,12 +82,16 @@ Public Class EgtDataGrid
If e.NewItems IsNot Nothing Then
For Each one As EgtDataGridColumn In e.NewItems
Dim col As DataGridColumn = CurrDataGrid.FindResource(one.Name)
one.InitColumn(col)
CurrDataGrid.Columns.Insert(e.NewStartingIndex, col)
If col.DisplayIndex <> e.NewStartingIndex Then
CurrDataGrid.Columns(e.NewStartingIndex).DisplayIndex = e.NewStartingIndex
End If
Try
Dim col As DataGridColumn = CurrDataGrid.FindResource(one.Name)
one.InitColumn(col)
CurrDataGrid.Columns.Insert(e.NewStartingIndex, col)
If col.DisplayIndex <> e.NewStartingIndex Then
CurrDataGrid.Columns(e.NewStartingIndex).DisplayIndex = e.NewStartingIndex
End If
Catch ex As Exception
MessageBox.Show(String.Format(EgtMsg(61883), one.Name, one.ParentDataGridName), EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning)
End Try
Next
End If
@@ -101,11 +130,90 @@ Public Class EgtDataGrid
Private Sub Cell_SizedChanged(sender As Object, e As SizeChangedEventArgs)
' ad ogni ridimensionamento della cella del ColumnHeader salvo le nuove dimensioni nell'ini
If Not IsNothing(e.OriginalSource.Column) AndAlso Not IsNothing(BindingColumns(e.OriginalSource.Column.DisplayIndex)) Then
BindingColumns(e.OriginalSource.Column.DisplayIndex).SaveDataGridColumn()
' se la colonna corrente è Star ed è preceduta da una colonna Pixel non scrivo le modifiche
If Not (e.OriginalSource.Column.Width.IsStar) Then
BindingColumns(e.OriginalSource.Column.DisplayIndex).SaveDataGridColumn()
End If
End If
End Sub
Public OldIndex As Integer = 0
Private Sub Cell_MouseRightButtonDown(sender As Object, e As RoutedEventArgs)
Dim nDispIndex As Integer = sender.DisplayIndex
' creo il ContextMenu con gli item checkabili
Dim cm As ContextMenu = New ContextMenu()
Dim miReorder As MenuItem = New MenuItem()
Dim miResize As MenuItem = New MenuItem()
Dim miSort As MenuItem = New MenuItem()
Dim sep1 As Separator = New Separator()
Dim miVis As MenuItem = New MenuItem()
Dim sep2 As Separator = New Separator()
Dim miLock As MenuItem = New MenuItem()
miReorder.Header = NameOf(EgtDataGridColumn.CanUserReorder)
miResize.Header = NameOf(EgtDataGridColumn.CanUserResize)
miSort.Header = NameOf(EgtDataGridColumn.CanUserSort)
miVis.Header = "Columns Visibility"
miLock.Header = "Lock Table"
miReorder.IsCheckable = True
miResize.IsCheckable = True
miSort.IsCheckable = True
miLock.IsCheckable = True
miReorder.StaysOpenOnClick = True
miResize.StaysOpenOnClick = True
miSort.StaysOpenOnClick = True
miLock.StaysOpenOnClick = True
' setto il binding
Dim miReorderBinding As Binding = New Binding(NameOf(EgtDataGridColumn.CanUserReorder))
Dim miResizeBinding As Binding = New Binding(NameOf(EgtDataGridColumn.CanUserResize))
Dim miSortBinding As Binding = New Binding(NameOf(EgtDataGridColumn.CanUserSort))
miReorderBinding.Mode = BindingMode.TwoWay
miResizeBinding.Mode = BindingMode.TwoWay
miSortBinding.Mode = BindingMode.TwoWay
miReorder.DataContext = BindingColumns(nDispIndex)
miResize.DataContext = BindingColumns(nDispIndex)
miSort.DataContext = BindingColumns(nDispIndex)
miReorder.SetBinding(MenuItem.IsCheckedProperty, miReorderBinding)
miResize.SetBinding(MenuItem.IsCheckedProperty, miResizeBinding)
miSort.SetBinding(MenuItem.IsCheckedProperty, miSortBinding)
' setto check e enable associati a LockTable
miLock.IsChecked = (GetPrivateProfileInt(BindingColumns(nDispIndex).ParentDataGridName, K_LOCKTABLE, 0, m_sDataGridColumnsIniFile) > 0)
miReorder.IsChecked = If(miLock.IsChecked, False, BindingColumns(nDispIndex).CanUserReorder)
miResize.IsChecked = If(miLock.IsChecked, False, BindingColumns(nDispIndex).CanUserResize)
miReorder.IsEnabled = Not miLock.IsChecked
miResize.IsEnabled = Not miLock.IsChecked
HeaderDispIndex = nDispIndex
AddHandler miLock.Checked, AddressOf miLock_Checked
AddHandler miLock.Unchecked, AddressOf miLock_Unchecked
' aggiungo i MenuItem al ContextMenu
cm.Items.Add(miReorder)
cm.Items.Add(miResize)
cm.Items.Add(miSort)
cm.Items.Add(sep1)
cm.Items.Add(miVis)
cm.Items.Add(sep2)
cm.Items.Add(miLock)
' creo e aggiungo gli item figli di Columns Visibility
For Each Column In BindingColumns
Dim mi As MenuItem = New MenuItem()
mi.Header = Column.Name
mi.IsCheckable = True
Dim miBinding As Binding = New Binding(NameOf(EgtDataGridColumn.Visible))
miBinding.Mode = BindingMode.TwoWay
mi.DataContext = Column
mi.SetBinding(MenuItem.IsCheckedProperty, miBinding)
mi.StaysOpenOnClick = True
mi.IsEnabled = Column.CanUserEditVisible
miVis.Items.Add(mi)
Next
' disabilito Columns Visibility se tutti i suoi figli sono disabilitati
Dim bIsEnabled As Boolean = False
For Each visMenuItem In miVis.Items
bIsEnabled = visMenuItem.IsEnabled
Next
cm.Items(4).IsEnabled = bIsEnabled
cm.PlacementTarget = TryCast(sender, Button)
cm.IsOpen = True
End Sub
Private Sub CurrDataGrid_ColumnReordering(sender As Object, e As DataGridColumnEventArgs) Handles CurrDataGrid.ColumnReordering
' conservo il vecchio indice in modo da effettuare lo scambio in BindingColumns una volta riordinate graficamente
@@ -125,6 +233,124 @@ Public Class EgtDataGrid
Next
End Sub
Private Sub DataGridColumnHeader_Loaded(sender As Object, e As RoutedEventArgs)
Dim header = DirectCast(sender, DataGridColumnHeader)
Dim thumbLeft As Thumb = header.Template.FindName(LEFT, header)
thumbLeft.AddHandler(Thumb.DragStartedEvent, CType(AddressOf Thumb_DragStarted, DragStartedEventHandler), True)
thumbLeft.AddHandler(Thumb.DragCompletedEvent, CType(AddressOf Thumb_DragCompleted, DragCompletedEventHandler), True)
Dim thumbRight As Thumb = header.Template.FindName(RIGHT, header)
thumbRight.AddHandler(Thumb.DragStartedEvent, CType(AddressOf Thumb_DragStarted, DragStartedEventHandler), True)
thumbRight.AddHandler(Thumb.DragCompletedEvent, CType(AddressOf Thumb_DragCompleted, DragCompletedEventHandler), True)
End Sub
Private Sub Thumb_DragStarted(sender As Object, e As DragStartedEventArgs)
Dim thumb = CType(sender, Thumb)
Dim dg As DataGrid = GetParent(Of DataGrid)(thumb)
startPoint = Mouse.GetPosition(dg)
Dim header As DataGridColumnHeader = GetParent(Of DataGridColumnHeader)(thumb)
If thumb.Name = RIGHT Then
targetColumn = header.Column
Dim Index As Integer = header.Column.DisplayIndex + 1
If (Index < BindingColumns.Count) Then
adjacentColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index)
End If
Else
Dim Index As Integer = header.Column.DisplayIndex - 1
If (Index >= 0) Then
adjacentColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index + 1)
End If
targetColumn = dg.Columns.FirstOrDefault(Function(x) x.DisplayIndex = Index)
End If
startWidth = targetColumn.ActualWidth
'startUnitType = targetColumn.Width.UnitType
If Not IsNothing(adjacentColumn) Then
adjacentStartWidth = adjacentColumn.ActualWidth
'adjacentUnitType = adjacentColumn.Width.UnitType
End If
AddHandler thumb.PreviewMouseMove, AddressOf Thumb_PreviewMouseMove
End Sub
Private Sub Thumb_PreviewMouseMove(sender As Object, e As MouseEventArgs)
Dim thumb = CType(sender, Thumb)
If (Not thumb.IsDragging Or IsNothing(targetColumn)) Then Return
e.Handled = True
Dim dg As DataGrid = GetParent(Of DataGrid)(thumb)
Dim currentPoint As Point = Mouse.GetPosition(dg)
Dim diffX As Double = (currentPoint - startPoint).X
Dim newWidth As Double = Math.Max(targetColumn.MinWidth, Math.Min(startWidth + diffX, targetColumn.MaxWidth))
Dim length = New DataGridLength(newWidth)
targetColumn.SetValue(DataGridColumn.WidthProperty, length)
If Not IsNothing(adjacentColumn) Then
newWidth = Math.Max(adjacentColumn.MinWidth, Math.Min(adjacentStartWidth - diffX, adjacentColumn.MaxWidth))
length = New DataGridLength(newWidth)
adjacentColumn.SetValue(DataGridColumn.WidthProperty, length)
End If
End Sub
Private Sub Thumb_DragCompleted(sender As Object, e As DragCompletedEventArgs)
RemoveHandler CType(sender, Thumb).PreviewMouseMove, AddressOf Thumb_PreviewMouseMove
targetColumn = Nothing
adjacentColumn = Nothing
End Sub
Private Function GetParent(Of T As DependencyObject)(d As DependencyObject) As T
Dim tObj As T = Nothing
While IsNothing(tObj)
tObj = TryCast(d, T)
d = VisualTreeHelper.GetParent(d)
End While
Return tObj
End Function
Private Sub miLock_Checked(sender As Object, e As RoutedEventArgs)
Dim miLock = DirectCast(sender, MenuItem)
' disabilito Reorder e Resize di tutte le colonne salvandone prima il valore
For Each Column In BindingColumns
Column.OldCanUserReorder = Column.CanUserReorder
Column.OldCanUserResize = Column.CanUserResize
Column.CanUserReorder = False
Column.CanUserResize = False
Next
' aggiorno il ContextMenu correntemente aperto
Dim miReorder As MenuItem = TryCast(miLock.Parent, ContextMenu).Items(0)
Dim miResize As MenuItem = TryCast(miLock.Parent, ContextMenu).Items(1)
miReorder.IsChecked = False
miResize.IsChecked = False
miReorder.IsEnabled = False
miResize.IsEnabled = False
' scrivo il valore di LockTable nell'INI
WritePrivateProfileString(BindingColumns(HeaderDispIndex).ParentDataGridName, K_LOCKTABLE, 1, m_sDataGridColumnsIniFile)
End Sub
Private Sub miLock_Unchecked(sender As Object, e As RoutedEventArgs)
Dim miLock = DirectCast(sender, MenuItem)
' abilito Reorder e Resize di tutte le colonne ripristinando il valore precedente, se presente
For Each Column In BindingColumns
If Not IsNothing(Column.OldCanUserReorder) Then Column.CanUserReorder = Column.OldCanUserReorder
If Not IsNothing(Column.OldCanUserResize) Then Column.CanUserResize = Column.OldCanUserResize
Next
' aggiorno il ContextMenu correntemente aperto
Dim miReorder As MenuItem = TryCast(miLock.Parent, ContextMenu).Items(0)
Dim miResize As MenuItem = TryCast(miLock.Parent, ContextMenu).Items(1)
miReorder.IsChecked = If(IsNothing(BindingColumns(HeaderDispIndex).OldCanUserReorder), BindingColumns(HeaderDispIndex).CanUserReorder, BindingColumns(HeaderDispIndex).OldCanUserReorder)
miResize.IsChecked = If(IsNothing(BindingColumns(HeaderDispIndex).OldCanUserResize), BindingColumns(HeaderDispIndex).CanUserResize, BindingColumns(HeaderDispIndex).OldCanUserResize)
miReorder.IsEnabled = True
miResize.IsEnabled = True
' scrivo il valore di LockTable nell'INI
WritePrivateProfileString(BindingColumns(HeaderDispIndex).ParentDataGridName, K_LOCKTABLE, 0, m_sDataGridColumnsIniFile)
End Sub
End Class
Public Class EgtDataGridColumn
@@ -190,10 +416,10 @@ Public Class EgtDataGridColumn
Else
m_IsReadOnly = value
End If
SaveDataGridColumn()
End Set
End Property
Friend OldCanUserReorder As Boolean?
Private m_CanUserReorder As Boolean
Public Property CanUserReorder As Boolean
Get
@@ -209,6 +435,7 @@ Public Class EgtDataGridColumn
End Set
End Property
Friend OldCanUserResize As Boolean?
Private m_CanUserResize As Boolean
Public Property CanUserResize As Boolean
Get
@@ -239,11 +466,47 @@ Public Class EgtDataGridColumn
End Set
End Property
Private m_Visible As Boolean
Public Property Visible As Boolean
Get
Return m_Visible
End Get
Set(value As Boolean)
m_Visible = value
ColumnVisibility = If(m_Visible, Visibility.Visible, Visibility.Collapsed)
SaveDataGridColumn()
End Set
End Property
Private m_ColumnVisibility As Visibility
Public Property ColumnVisibility As Visibility
Get
Return If(m_Visible, Visibility.Visible, Visibility.Collapsed)
End Get
Set(value As Visibility)
m_ColumnVisibility = value
If Not IsNothing(m_dgColumn) Then
m_dgColumn.Visibility = value
End If
End Set
End Property
Private m_CanUserEditVisible As Boolean
Public Property CanUserEditVisible As Boolean
Get
Return m_CanUserEditVisible
End Get
Set(value As Boolean)
m_CanUserEditVisible = value
SaveDataGridColumn()
End Set
End Property
Sub New(sName As String)
m_Name = sName
End Sub
Sub New(sParentDG As String, sName As String, bCanUserReorder As Boolean, bCanUserResize As Boolean, bCanUserSort As Boolean, bIsReadOnly As Boolean, Width As DataGridLength)
Sub New(sParentDG As String, sName As String, bCanUserReorder As Boolean, bCanUserResize As Boolean, bCanUserSort As Boolean, bIsReadOnly As Boolean, Width As DataGridLength, bVisible As Boolean, bCanUserEditVisible As Boolean)
m_ParentDataGridName = sParentDG
m_Name = sName
m_CanUserReorder = bCanUserReorder
@@ -251,6 +514,8 @@ Public Class EgtDataGridColumn
m_CanUserSort = bCanUserSort
m_IsReadOnly = bIsReadOnly
m_Width = Width
m_Visible = bVisible
m_CanUserEditVisible = bCanUserEditVisible
End Sub
Friend Sub InitColumn(dgColumn As DataGridColumn)
@@ -261,13 +526,14 @@ Public Class EgtDataGridColumn
m_dgColumn.IsReadOnly = m_IsReadOnly
'm_dgColumn.DisplayIndex = m_DisplayIndex
m_dgColumn.Width = m_Width
m_dgColumn.Visibility = m_ColumnVisibility
End Sub
' funzione per calcolare e scrivere la stringa dei parametri della colonna nell'INI
Public Function SaveDataGridColumn() As Boolean
Dim bOk As Boolean
Dim sColumnParams = String.Empty
sColumnParams = Name & "," & If(CanUserReorder, 1, 0) & "," & If(CanUserResize, 1, 0) & "," & If(CanUserSort, 1, 0) & "," & If(IsReadOnly, 1, 0) & "," & DoubleToString(Width.Value, 6) & "," & Width.UnitType
sColumnParams = Name & "," & If(CanUserReorder, 1, 0) & "," & If(CanUserResize, 1, 0) & "," & If(CanUserSort, 1, 0) & "," & If(IsReadOnly, 1, 0) & "," & DoubleToString(Width.Value, 6) & "," & Width.UnitType & "," & If(Visible, 1, 0) & "," & If(CanUserEditVisible, 1, 0)
bOk = WriteColumnPrivateProfileParam(ParentDataGridName, DisplayIndex, sColumnParams)
Return bOk
End Function
-53
View File
@@ -1,53 +0,0 @@
Public Enum CalcStates As Integer
NOTCALCULATED = -1
OK = 0
INFO = 1
WARNING = 2
ERROR_ = 3
End Enum
Public Enum EventType
ND = -1
Started = 0
Ended = 1
End Enum
Public Enum ItemState As Integer
ND = -1
Assigned = 0
Confirmed = 1
WIP = 2
Produced = 3
Scrapped = 4
End Enum
Public Enum LogSupportLevel
ND = -1
I = 0
E = 1
End Enum
Public Enum LogSupportTarget
ND = -1
Supervisor = 0
LoadProject = 1
End Enum
Public Enum StatusMapItemType
ND = -1
Prod = 0
MachGroup = 1
End Enum
Public Enum StatusMapOpType
ND = -1
Startup = 0
PartStart = 1
PartEnd = 2
MachGroupAdd = 3
MachGroupMod = 4
MachGroupRem = 5
MachGroupNeedRedo = 6
End Enum
+8
View File
@@ -119,6 +119,7 @@ Public Class MachGroupPanelM
#Region "METHODS"
Public Event MachGroupAdded As EventHandler(Of MachGroupAddedEventArgs)
Public Event MachGroupRemoved As EventHandler(Of MachGroupAddedEventArgs)
Public Overridable Sub AddMachGroup(MachGroupM As MachGroupM)
If IsNothing(MachGroupM) Then Return
@@ -128,6 +129,13 @@ Public Class MachGroupPanelM
End If
End Sub
Public Overridable Sub RemoveMachGroup(MachGroupM As MachGroupM)
If IsNothing(MachGroupM) Then Return
If m_MachGroupMList.Contains(MachGroupM) AndAlso m_MachGroupMList.Remove(MachGroupM) Then
RaiseEvent MachGroupRemoved(Me, New MachGroupAddedEventArgs(MachGroupM))
End If
End Sub
Public Function GetMachGroups() As List(Of MachGroupM)
Return New List(Of MachGroupM)(m_MachGroupMList)
End Function
@@ -275,6 +275,7 @@ Public Class NewMachGroupPanelVM
If Not IsNothing(e.OldItems) AndAlso e.OldItems.Count > 0 Then
For Each MachGroupVM As MachGroupVM In e.OldItems
RemoveHandler MachGroupVM.PropertyChanged, AddressOf OnMachGroupVMPropertyChanged
m_MachGroupPanelM.MachGroupMList.Remove(MachGroupVM.MachGroupM)
Next
End If
End Sub
@@ -0,0 +1,97 @@
Imports System.Threading
Imports System.Windows.Threading
Public Module LoadingWndHelper
Public Enum ActiveIds As Integer
OPENPROJ = 1
SAVEPROJ = 2
IMPORTBTL = 3
GOTOPROD = 4
OPENPROD = 5
SAVEPROD = 6
GOTOPROJ = 7
EXPORTPROJECT = 8
IMPORTPROJECT = 9
CHANGEPARAM = 10
End Enum
Dim m_MainWindow As Windows.Window
Public Function SetMainWindow(MainWindow As Windows.Window)
m_MainWindow = MainWindow
End Function
Private m_bMainWindow_IsActive As Boolean = True
Public Function SetMainWindowIsActive(IsActive As Boolean)
m_bMainWindow_IsActive = IsActive
End Function
Delegate Sub CallbackLoadingDlg(ByRef CurrStep As Integer, ByRef StepText As String, ByRef nProgress As Integer, ByRef nNextProgress As Integer, ByRef MainWindow_IsActive As Boolean, ByRef bClose As Boolean)
Private m_thread As Thread
Private m_LoadingWndVM As Core.LoadingWndVM
Private m_CurrStep As Integer
Private m_StepText As String
Private m_nProgress As Integer
Private m_nNextProgress As Integer
Private m_bClose As Boolean
Private m_bActiveId As Integer = -1
Public Function OpenLoadingWnd(Id As Integer, nSteps As Integer, TotText As String, FirstStepText As String, nNextProgress As Integer) As Boolean
If m_bActiveId > 0 Then Return False
m_bActiveId = Id
m_LoadingWndVM = Nothing
m_CurrStep = 1
m_StepText = FirstStepText
m_nProgress = 1
m_nNextProgress = nNextProgress
m_bClose = False
Dim Top As Double = m_MainWindow.Top + (m_MainWindow.Height / 2) - 100
Dim Left As Double = m_MainWindow.Left + (m_MainWindow.Width / 2) - 150
Dim WindowStartupLocation As Windows.WindowStartupLocation = Windows.WindowStartupLocation.Manual
If m_MainWindow.WindowState = Windows.WindowState.Maximized Then
WindowStartupLocation = Windows.WindowStartupLocation.CenterScreen
End If
m_thread = New Thread(Sub()
m_LoadingWndVM = New Core.LoadingWndVM(nSteps, TotText, AddressOf LoadingCallback)
m_LoadingWndVM.UpdateProgress(m_CurrStep, m_StepText, m_nProgress, m_nNextProgress)
Dim LoadingWnd As New LoadingWndV(Nothing, m_LoadingWndVM)
' posiziono la finestra
If WindowStartupLocation = Windows.WindowStartupLocation.CenterScreen Then
LoadingWnd.WindowStartupLocation = Windows.WindowStartupLocation.CenterScreen
Else
LoadingWnd.Top = Top
LoadingWnd.Left = Left
End If
LoadingWnd.Show()
Dispatcher.Run()
End Sub)
m_thread.SetApartmentState(ApartmentState.STA)
m_thread.Start()
Return True
End Function
Private Sub LoadingCallback(ByRef CurrStep As Integer, ByRef StepText As String, ByRef nProgress As Integer, ByRef nNextProgress As Integer, ByRef MainWindow_IsActive As Boolean, ByRef bClose As Boolean)
CurrStep = m_CurrStep
StepText = m_StepText
nProgress = m_nProgress
nNextProgress = m_nNextProgress
m_bMainWindow_IsActive = MainWindow_IsActive
bClose = m_bClose
End Sub
Public Sub UpdateLoadingWnd(Id As Integer, CurrStep As Integer, StepText As String, nProgress As Integer, nNextProgress As Integer)
If Id <> m_bActiveId Then Return
m_CurrStep = CurrStep
m_StepText = StepText
m_nProgress = nProgress
m_nNextProgress = nNextProgress
End Sub
Public Sub CloseLoadingWnd(Id As Integer)
If Id <> m_bActiveId Then Return
m_bClose = True
m_bActiveId = -1
End Sub
End Module
@@ -0,0 +1,54 @@
<EgtWPFLib5:EgtCustomWindow x:Class="LoadingWndV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Height="200" Width="300"
IsClosable="False" IsMinimizable="False"
WindowStartupLocation="Manual" ShowInTaskbar="False">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="1"
Text="{Binding TotText_Msg}"
TextAlignment="Center"/>
<TextBlock Grid.Row="2"
Text="{Binding StepText_Msg}"
TextAlignment="Center"
Visibility="{Binding StepText_Visibility}"/>
<Grid Grid.Row="3"
Visibility="{Binding StepProgress_Visibility}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Height="20"/>
<ProgressBar Grid.Row="1"
Minimum="0"
Maximum="100"
Value="{Binding StepProgress_Value}"
Height="20"
Margin="40,0,40,0"/>
</Grid>
<ProgressBar Grid.Row="5"
Minimum="0"
Maximum="100"
Value="{Binding TotProgress_Value}"
Height="20"
Margin="40,0,40,0"/>
<TextBlock Grid.Row="7"
Text="{Binding TotProgress_Msg}"
TextAlignment="Center"/>
</Grid>
</EgtWPFLib5:EgtCustomWindow>
@@ -0,0 +1,28 @@
Imports System.Windows
Public Class LoadingWndV
Private WithEvents m_LoadingWndVM As LoadingWndVM
Sub New(Owner As Window, LoadingWndVM As LoadingWndVM)
MyBase.New(Owner)
' This call is required by the designer.
InitializeComponent()
Me.DataContext = LoadingWndVM
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_LoadingWndVM = LoadingWndVM
End Sub
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_LoadingWndVM.m_CloseWindow
Me.Close()
End Sub
Private Sub ActivateWindow() Handles m_LoadingWndVM.m_ActivateWindow
Me.Activate()
End Sub
Private Sub Me_ContentRendered() Handles Me.ContentRendered
m_LoadingWndVM.StartFunction()
End Sub
End Class
+233
View File
@@ -0,0 +1,233 @@
Imports System.Timers
Imports System.Windows
Imports System.Windows.Input
Imports System.Windows.Threading
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class LoadingWndVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Enum LoadingTypes As Integer
NULL = 0
OPEN = 1
IMPORT = 2
End Enum
Delegate Sub CallbackLoadingDlg(ByRef CurrStep As Integer, ByRef StepText As String, ByRef nProgress As Integer, ByRef nNextProgress As Integer, ByRef MainWindow_IsActive As Boolean, ByRef bClose As Boolean)
Friend Event m_CloseWindow(bDialogResult As Boolean)
Friend Event m_ActivateWindow()
Private m_CallbackLoading As CallbackLoadingDlg
Private m_Waiting_Timer As New DispatcherTimer
' numero di passaggi di caricamento
Private m_nSteps As Integer
' titolo testo di caricamento
Private m_TotText As String
' numero passaggio corrente
Private m_CurrStep As Integer
' testo del passaggio corrente
Private m_StepText As String
' indice d'inizio di questo passaggio
Private m_nStartProgress As Integer
' indice d'inizio del prossimo passaggio
Private m_nNextProgress As Integer
' variabile che indica richiesta chiusura della finestra
Private m_bClosing As Boolean = False
Private m_bMainWindow_IsActive As Boolean = True
Private m_StepProgress_Value As Double = 0
Public Property StepProgress_Value As Double
Get
Return m_StepProgress_Value
End Get
Set(value As Double)
m_StepProgress_Value = value
End Set
End Property
Private m_TotProgress_Value As Double = 0
Public Property TotProgress_Value As Double
Get
Return Math.Floor(m_TotProgress_Value)
End Get
Set(value As Double)
m_TotProgress_Value = value
End Set
End Property
Private m_StepText_Visibility As Visibility
Public ReadOnly Property StepText_Visibility As Visibility
Get
Return m_StepText_Visibility
End Get
End Property
Private m_StepProgress_Visibility As Visibility
Public ReadOnly Property StepProgress_Visibility As Visibility
Get
Return m_StepProgress_Visibility
End Get
End Property
#Region "Messages"
Public ReadOnly Property TotText_Msg As String
Get
Return If(m_nSteps > 0, m_TotText & " (" & m_CurrStep & "/" & m_nSteps & ")", m_TotText)
End Get
End Property
Public ReadOnly Property StepText_Msg As String
Get
Return m_StepText
End Get
End Property
Public ReadOnly Property TotProgress_Msg As String
Get
Return m_TotProgress_Value.ToString("0.#") & "%"
End Get
End Property
#End Region ' Messages
' Definizione comandi
Private m_cmdCancel As ICommand
#End Region ' FIELDS & PROPERTIES
Sub New(Steps As Integer, TotText As String, callback As CallbackLoadingDlg)
m_nSteps = Steps
m_TotText = TotText
m_CallbackLoading = callback
m_bClosing = False
If Steps = 1 Then
m_StepText_Visibility = Visibility.Collapsed
m_StepProgress_Visibility = Visibility.Collapsed
Else
m_StepText_Visibility = Visibility.Visible
m_StepProgress_Visibility = Visibility.Visible
End If
' imposto contatore
m_Waiting_Timer.Interval = TimeSpan.FromMilliseconds(200)
AddHandler m_Waiting_Timer.Tick, AddressOf WaitingTimer_Tick
End Sub
Public Sub UpdateProgress(CurrStep As Integer, StepText As String, nStartProgress As Integer, nNextProgress As Integer)
m_CurrStep = CurrStep
m_StepText = StepText
m_StepProgress_Value = nStartProgress
m_nNextProgress = nNextProgress
NotifyPropertyChanged(NameOf(StepText_Msg))
NotifyPropertyChanged(NameOf(TotText_Msg))
End Sub
Public Overridable Sub StartFunction()
m_Waiting_Timer.Start()
End Sub
Protected Overridable Sub WaitingTimer_Tick()
' leggo eventuali nuovi valori
Dim CurrStep As Integer = 0
Dim StepText As String = ""
Dim nStartProgress As Integer = 0
Dim nNextProgress As Integer = 0
Dim bMainWindow_IsActive As Boolean = True
Dim bClose As Boolean = False
m_CallbackLoading(CurrStep, StepText, nStartProgress, nNextProgress, bMainWindow_IsActive, bClose)
If bMainWindow_IsActive <> m_bMainWindow_IsActive Then
RaiseEvent m_ActivateWindow()
End If
If m_bClosing Then
Close()
Dispatcher.CurrentDispatcher.InvokeShutdown()
Return
ElseIf bClose Then
m_bClosing = True
' mostro completamento caricamento
m_CurrStep = m_nSteps
m_StepProgress_Value = 100
m_TotProgress_Value = 100
m_Waiting_Timer.Interval = TimeSpan.FromMilliseconds(1000)
Else
If m_CurrStep <> CurrStep Then
If m_StepProgress_Value < 100 Then
m_StepProgress_Value = 100
ElseIf m_StepProgress_Value = 100 Then
m_StepProgress_Value = 0
m_CurrStep = CurrStep
m_StepText = StepText
m_nStartProgress = nStartProgress
m_nNextProgress = nNextProgress
End If
Else
' incremento Step corrente
If m_StepProgress_Value < 80 Then
m_StepProgress_Value += 1
ElseIf m_StepProgress_Value < 90 Then
m_StepProgress_Value += 0.4
ElseIf m_StepProgress_Value < 98 Then
m_StepProgress_Value += 0.1
Else
m_StepProgress_Value += 0.01
End If
End If
' calcolo totale
Dim dStepStart As Double = If(m_CurrStep > 1, m_nStartProgress, 0)
Dim dStepEnd As Double = m_nNextProgress
m_TotProgress_Value = dStepStart + ((dStepEnd - dStepStart) / 100 * m_StepProgress_Value)
End If
' aggiorno grafica
NotifyPropertyChanged(NameOf(StepText_Msg))
NotifyPropertyChanged(NameOf(TotText_Msg))
NotifyPropertyChanged(NameOf(StepProgress_Value))
NotifyPropertyChanged(NameOf(TotProgress_Value))
NotifyPropertyChanged(NameOf(TotProgress_Msg))
End Sub
Public Sub Close()
' fermo timer
m_Waiting_Timer.Stop()
' chiudo finestra
RaiseEvent m_CloseWindow(True)
End Sub
#Region "COMMANDS"
#Region "Cancel"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Cancel()
'' chiedo conferma
'If MessageBox.Show("Are you sure you want to stop the nesting?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.No Then Return
'' fermo il nesting
'Map.refOptimizePanelVM.m_StopNesting = True
'' fermo timer e chiudo finestra
'CloseNesting()
End Sub
#End Region ' Cancel
#End Region ' COMMANDS
End Class
@@ -1,332 +0,0 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Windows.Input
Imports System.Windows.Media
Imports EgtUILib
Imports EgtWPFLib5
Public MustInherit Class MyMachGroupM
Inherits MachGroupM
Protected m_nMachineType As MachineType
Public ReadOnly Property nMachineType As MachineType
Get
Return m_nMachineType
End Get
End Property
Public Sub SetMachineType(nMachineType As MachineType)
m_nMachineType = nMachineType
End Sub
Protected m_dL As Double
Public Property dL As Double
Get
Return m_dL
End Get
Set(value As Double)
m_dL = value
End Set
End Property
Protected m_dW As Double
Public Property dW As Double
Get
Return m_dW
End Get
Set(value As Double)
m_dW = value
End Set
End Property
Protected m_dH As Double
Public Property dH As Double
Get
Return m_dH
End Get
Set(value As Double)
m_dH = value
End Set
End Property
Protected m_dtStartTime As DateTime
Public Property dtStartTime As DateTime
Get
Return m_dtStartTime
End Get
Set(value As DateTime)
m_dtStartTime = value
End Set
End Property
Protected m_dtEndTime As DateTime
Public Property dtEndTime As DateTime
Get
Return m_dtEndTime
End Get
Set(value As DateTime)
m_dtEndTime = value
End Set
End Property
Protected m_dMatForPart As Double = 0
Public ReadOnly Property dMatForPart As Double
Get
Return m_dMatForPart
End Get
End Property
Protected m_nProdIndex As Integer = 0
Public Property nProdIndex As Integer
Get
Return m_nProdIndex
End Get
Set
m_nProdIndex = value
End Set
End Property
Public Sub SetMatForPart(dMatForPart As Double)
m_dMatForPart = dMatForPart
End Sub
Protected m_dTotMat As Double = 0
Public ReadOnly Property dTotMat As Double
Get
Return m_dTotMat
End Get
End Property
Public Sub SetTotMat(TotMat As Double)
m_dTotMat = TotMat
End Sub
Protected m_sMATERIAL As String
Public Property sMATERIAL As String
Get
Return m_sMATERIAL
End Get
Set(value As String)
m_sMATERIAL = value
End Set
End Property
' lista dei pezzi che sono nel grezzo
Protected m_PartMList As New List(Of PartM)
Public Property PartMList As List(Of PartM)
Get
Return m_PartMList
End Get
Set(value As List(Of PartM))
m_PartMList = value
End Set
End Property
Private m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
Return m_nCALC_ERR
End Get
Set(value As Integer)
m_nCALC_ERR = value
End Set
End Property
Private m_nCALC_FALL As Integer
Public Property nCALC_FALL As Integer
Get
Return m_nCALC_FALL
End Get
Set(value As Integer)
m_nCALC_FALL = value
End Set
End Property
Private m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
End Get
Set(value As String)
m_sCALC_MSG = value
End Set
End Property
Public m_nCALC_ROT As Integer
Public Property nCALC_ROT As Integer
Get
Return m_nCALC_ROT
End Get
Set(value As Integer)
m_nCALC_ROT = value
End Set
End Property
Public m_nCALC_TIME As Integer
Public Property nCALC_TIME As Integer
Get
Return m_nCALC_TIME
End Get
Set(value As Integer)
m_nCALC_TIME = value
End Set
End Property
Public m_nCALC_GlobalState As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_GlobalState As CalcStates
Get
Return m_nCALC_GlobalState
End Get
Set(value As CalcStates)
m_nCALC_GlobalState = value
End Set
End Property
Private m_nCALC_GlobalERR As Integer
Public Property nCALC_GlobalERR As Integer
Get
Return m_nCALC_GlobalERR
End Get
Set(value As Integer)
m_nCALC_GlobalERR = value
End Set
End Property
Public m_nCALC_State As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_State As CalcStates
Get
Return m_nCALC_State
End Get
Set(value As CalcStates)
m_nCALC_State = value
End Set
End Property
Protected m_sSupervisorId As String
Public Property sSupervisorId As String
Get
Return m_sSupervisorId
End Get
Set(value As String)
m_sSupervisorId = value
End Set
End Property
Protected m_nPriorityIndex As Integer
Public Property nPriorityIndex As Integer
Get
Return m_nPriorityIndex
End Get
Set(value As Integer)
m_nPriorityIndex = value
End Set
End Property
Protected m_nProductionState As Integer = 0
Public ReadOnly Property nProductionState As Integer
Get
Return m_nProductionState
End Get
End Property
Public Sub SetState(nState As CalcStates)
m_nProductionState = nState
End Sub
#Region "CONSTRUCTOR"
'Sub New(nId As Integer, sName As String, sMachine As String)
' MyBase.New(nId, sName, sMachine)
' 'aggiorno lista pezzi
' RefreshPartList()
'End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Event PartAdded As EventHandler(Of PartAddedEventArgs)
Public Event PartRemoved As EventHandler(Of PartAddedEventArgs)
Public Sub AddPart(PartM As PartM)
If IsNothing(PartM) Then Return
If Not m_PartMList.Contains(PartM) Then
m_PartMList.Add(PartM)
RaiseEvent PartAdded(Me, New PartAddedEventArgs(PartM))
End If
End Sub
Public Sub RemovePart(PartM As PartM)
If IsNothing(PartM) Then Return
If m_PartMList.Contains(PartM) AndAlso m_PartMList.Remove(PartM) Then
RaiseEvent PartRemoved(Me, New PartAddedEventArgs(PartM))
End If
End Sub
Public Sub RemoveAllParts()
If IsNothing(m_PartMList) Then Return
For PartIndex = m_PartMList.Count - 1 To 0 Step -1
Dim PartM As PartM = m_PartMList(PartIndex)
If m_PartMList.Remove(PartM) Then
RaiseEvent PartRemoved(Me, New PartAddedEventArgs(PartM))
End If
Next
End Sub
Public Function GetParts() As List(Of PartM)
Return New List(Of PartM)(m_PartMList)
End Function
Public Shared Sub ReadMachGroupData(NewMachgroup As MyMachGroupM)
' leggo materiale
EgtGetInfo(NewMachgroup.Id, MGR_RPT_MATERIAL, NewMachgroup.sMATERIAL)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(NewMachgroup.Id, ITG_PROD_ERR, nErr)
EgtGetInfo(NewMachgroup.Id, ITG_PROD_ROT, nRot)
EgtGetInfo(NewMachgroup.Id, ITG_PROD_MSG, sMsg)
If Not bCalc Then
NewMachgroup.m_nCALC_State = CalcStates.NOTCALCULATED
NewMachgroup.m_nCALC_ERR = 0
NewMachgroup.m_nCALC_ROT = 0
NewMachgroup.m_sCALC_MSG = ""
Else
NewMachgroup.m_nCALC_ERR = nErr
NewMachgroup.m_nCALC_ROT = nRot
NewMachgroup.m_sCALC_MSG = sMsg
If nErr = 0 Then
NewMachgroup.nCALC_State = CalcStates.OK
ElseIf nErr = 17 Then
NewMachgroup.nCALC_State = CalcStates.WARNING
ElseIf nErr > 0 Then
NewMachgroup.nCALC_State = CalcStates.ERROR_
ElseIf nErr < 0 Then
NewMachgroup.nCALC_State = CalcStates.INFO
End If
End If
EgtGetInfo(NewMachgroup.Id, ITG_PROD_TIME, NewMachgroup.m_nCALC_TIME)
End Sub
#End Region ' METHODS
Public MustOverride Sub RefreshPartList()
Public MustOverride Sub RefreshGroupData()
Public Overridable Sub DeleteMachGroup()
' elimino tutte le copie
Dim nRawPartId As Integer = EgtGetFirstRawPart()
Dim nBeamId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
While nRawPartId <> GDB_ID.NULL
EgtRemovePartFromRawPart(nBeamId)
EgtErase(nBeamId)
nRawPartId = EgtGetNextRawPart(nRawPartId)
nBeamId = EgtGetFirstPartInRawPart(nRawPartId)
End While
' elimino MachGroup
EgtRemoveMachGroup(Me.Id)
End Sub
End Class
@@ -1,221 +0,0 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupPanelM
Inherits MachGroupPanelM
#Region "FIELDS & PROPERTIES"
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Public Shared Function CreateMyMachGroupPanel(MachineList As List(Of Machine)) As MachGroupPanelM
Dim NewMyMachGroupPanelM As New MyMachGroupPanelM
NewMyMachGroupPanelM.m_IsMultiMachGroup = False
' Assegno nome base
NewMyMachGroupPanelM.m_BaseName = ""
' Recupero lista macchine
NewMyMachGroupPanelM.m_MachineList = MachineList
' Assegno macchina di default
NewMyMachGroupPanelM.m_DefaultMachine = ""
' aggiorno copie
UpdateDuplo()
' recupero i MachGroup
NewMyMachGroupPanelM.m_MachGroupMList = LoadMyMachGroups(MachineList)
Return NewMyMachGroupPanelM
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Shared Function LoadMyMachGroups(MachineList As List(Of Machine)) As List(Of MachGroupM)
Dim TempList As New List(Of MachGroupM)
' Carico i gruppi di lavorazione nella lista
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
EgtSetCurrMachGroup(nId)
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
' cerco la macchina tra quelle presenti
Dim UsedMachine As MyMachine = Nothing
Dim bOk As Boolean = Machine.SearchMachine(sMachine, MachineList, UsedMachine)
If Not bOk OrElse UsedMachine.nType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
ElseIf UsedMachine.nType = MachineType.BEAM Then
TempList.Add(BeamMachGroupM.CreateBeamMachGroup(nId, sName, sMachine))
ElseIf UsedMachine.nType = MachineType.WALL Then
TempList.Add(WallMachGroupM.CreateWallMachGroup(nId, sName, sMachine))
End If
nId = EgtGetNextMachGroup(nId)
End While
EgtResetCurrMachGroup()
Return TempList
End Function
' funzione che aggiunge solo i gruppi di lavorazione creati nel nesting
Public Shared Function UpdateFromNestingMyMachGroups(MachineList As List(Of Machine)) As List(Of MachGroupM)
Dim TempList As New List(Of MachGroupM)
' Carico i gruppi di lavorazione nella lista
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
Dim UpdateUI As Integer = 0
If EgtGetInfo(nId, "UPDATEUI", UpdateUI) AndAlso UpdateUI = 1 Then
EgtSetCurrMachGroup(nId)
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
' cerco la macchina tra quelle presenti
Dim UsedMachine As MyMachine = Nothing
Dim bOk As Boolean = Machine.SearchMachine(sMachine, MachineList, UsedMachine)
If Not bOk OrElse UsedMachine.nType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
ElseIf UsedMachine.nType = MachineType.BEAM Then
TempList.Add(BeamMachGroupM.CreateBeamMachGroup(nId, sName, sMachine))
ElseIf UsedMachine.nType = MachineType.WALL Then
TempList.Add(WallMachGroupM.CreateWallMachGroup(nId, sName, sMachine))
End If
' rimuovo info
EgtRemoveInfo(nId, "UPDATEUI")
End If
nId = EgtGetNextMachGroup(nId)
End While
EgtResetCurrMachGroup()
Return TempList
End Function
Public Function NewMyMachGroup(sMachName As String, nMachineType As MachineType) As MachGroupM
' Sistemazioni preliminari
OnPreNewMachGroup()
' Se non ci sono macchine disponibili esco con errore
If m_MachineList.Count <= 0 Then Return Nothing
' Creo il nuovo gruppo di lavorazione con i dati ottenuti a seconda del caso in cui mi trovo
Dim MachGroupM As MachGroupM
If nMachineType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
Return Nothing
ElseIf nMachineType = MachineType.BEAM Then
MachGroupM = BeamMachGroupM.CreateBeamMachGroup(NewMachGroupID(), sMachName)
ElseIf nMachineType = MachineType.WALL Then
MachGroupM = WallMachGroupM.CreateWallMachGroup(NewMachGroupID(), sMachName)
End If
If IsNothing(MachGroupM) Then Return Nothing
AddMachGroup(MachGroupM)
' Sistemazioni finali
m_DefaultMachine = sMachName
OnPostNewMachGroup()
Return MachGroupM
End Function
Public Overrides Function OnPreNewMachGroup() As Boolean
'EgtSetCurrentContext(Map.refSceneHostVM.MainScene.GetCtx())
Return True
End Function
' NB: Anche se ho già aggiunto il nuovo gruppo di lavorazione, non l'ho ancora reso corrente (viene fatto dopo), quindi
' non posso usare CurrentMachine perchè è ancora impostata quella precedente!!!
Public Overrides Function OnPostNewMachGroup() As Boolean
' Salvo macchina del gruppo come nuovo default
Dim sCurrMachName As String = String.Empty
EgtGetCurrMachineName(sCurrMachName)
WriteMainPrivateProfileString(S_MACH, K_CURRMACH, sCurrMachName)
'' leggo nome attrezzaggio di default
'Dim sDefaultSetUpName As String = String.Empty
'Dim sMachineIniPath As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sCurrMachName & "\" & sCurrMachName & ".ini"
'EgtUILib.GetPrivateProfileString(S_SETUP, K_DEFAULT, "", sDefaultSetUpName, sMachineIniPath)
'' se è attiva l'opzione, rendo corrente l'attrezzaggio di default
'If Not String.IsNullOrEmpty(sDefaultSetUpName) Then
' If Not EgtImportSetup(sDefaultSetUpName) Then
' EgtOutLog("Error loading default setup " & sDefaultSetUpName)
' MessageBox.Show(EgtMsg(MSG_SETUPERRORS + 9) & " " & sDefaultSetUpName, EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Exclamation)
' End If
'End If
Return True
End Function
Public Overrides Function OnPreRemoveCurrMachGroup() As Boolean
'EgtSetCurrentContext(Map.refSceneHostVM.MainScene.GetCtx())
Return True
End Function
Public Function NewMachGroupID() As Integer
Dim nTemp As Integer = 0
If Not IsNothing(MachGroupMList) AndAlso MachGroupMList.Count > 0 Then Return MachGroupMList.Select(Of Integer)(Function(x) If(Integer.TryParse(x.Name, nTemp), nTemp, 0)).Max() + 1
Return 1
End Function
' funzione che fa l'update di tutte le copie dei pezzi modificati
Public Shared Sub UpdateDuplo()
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim bIsModified As Boolean = False
If EgtDuploGetModified(nPartId, bIsModified) AndAlso bIsModified Then
EgtDuploUpdate(nPartId)
End If
nPartId = EgtGetNextPart(nPartId)
End While
End Sub
' funzione che cancella tutti i pezzi segnati da eliminare
Public Shared Sub DeleteDuplo()
' reset necessario per poter accedere direttamente al grezzo dalle info pezzo e al MachGroup tramite la gerarchia Db geometrico
EgtResetCurrMachGroup()
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim bIsToDelete As Boolean = False
If DuploGetToDelete(nPartId, bIsToDelete) AndAlso bIsToDelete Then
' verifico se ci sono copie
Dim nDuploCount As Integer = 0
EgtDuploCount(nPartId, nDuploCount)
Dim DuploList As New List(Of Integer)
If nDuploCount > 0 AndAlso EgtDuploList(nPartId, DuploList) Then
' cancello tutti i pezzi copia nelle barre
For Each nDuploId In DuploList
' recupero grezzo cui appartiene
Dim nRawPartId As Integer
EgtGetInfo(nDuploId, "!LST", nRawPartId)
' recupero gruppo di lavorazione
Dim nMachGroupId As Integer = EgtGetParent(EgtGetParent(EgtGetParent(nRawPartId)))
' lo setto come corrente
EgtSetCurrMachGroup(nMachGroupId)
' elimino pezzo copia
EgtRemovePartFromRawPart(nDuploId)
EgtErase(nDuploId)
'' recupero gruppo di lavorazione e trave dell'interfaccia
'Dim BeamMachGroup As BeamMachGroupM = MachGroupMList.FirstOrDefault(Function(x) x.Id = nMachGroupId)
'Dim Beam As BeamM = BeamMachGroup.PartMList.FirstOrDefault(Function(x) x.nPartId = nDuploId)
'EgtSetCurrMachGroup(BeamMachGroup.Id)
'''Beam.DeletePart()
Next
End If
DuploResetToDelete(nPartId)
End If
nPartId = EgtGetNextPart(nPartId)
End While
EgtResetCurrMachGroup()
End Sub
Friend Shared Function DuploGetToDelete(nSouId As Integer, ByRef bToDelete As Boolean) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtGetInfo(nSouId, DUPLO_TODELETE, bToDelete)
End Function
Public Shared Function DuploSetToDelete(nSouId As Integer) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtSetInfo(nSouId, DUPLO_TODELETE, True)
End Function
Private Shared Function DuploResetToDelete(nSouId As Integer) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtSetInfo(nSouId, DUPLO_TODELETE, "")
End Function
#End Region ' METHODS
End Class
@@ -30,7 +30,7 @@ Public Class BeamMachGroupM
NewMachGroupM.m_Id = nId
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.SetMachineType(MachineType.BEAM)
' NewMachGroupM.SetMachineType(MachineType.BEAM)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
@@ -51,7 +51,7 @@ Public Class BeamMachGroupM
If NewMachGroupM.m_Id = GDB_ID.NULL Then Return Nothing
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.SetMachineType(MachineType.BEAM)
'NewMachGroupM.SetMachineType(MachineType.BEAM)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
@@ -72,7 +72,7 @@ Public Class BeamMachGroupM
NewMachGroupM.m_Id = nId
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.SetMachineType(MachineType.BEAM)
'NewMachGroupM.SetMachineType(MachineType.BEAM)
'EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
'EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
'EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
@@ -0,0 +1,535 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Windows.Input
Imports System.Windows.Media
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupM
Inherits MachGroupM
#Region "FIELDS & PROPERTIES"
#Region "General"
Public Event PartAdded As EventHandler(Of PartAddedEventArgs)
Public Event PartRemoved As EventHandler(Of PartAddedEventArgs)
Protected m_nType As BWType
Public ReadOnly Property nType As BWType
Get
Return m_nType
End Get
End Property
Protected m_dL As Double
Public Property dL As Double
Get
Return m_dL
End Get
Set(value As Double)
m_dL = value
End Set
End Property
Protected m_dW As Double
Public Property dW As Double
Get
Return m_dW
End Get
Set(value As Double)
m_dW = value
End Set
End Property
Protected m_dH As Double
Public Property dH As Double
Get
Return m_dH
End Get
Set(value As Double)
m_dH = value
End Set
End Property
Protected m_dtStartTime As DateTime
Public Property dtStartTime As DateTime
Get
Return m_dtStartTime
End Get
Set(value As DateTime)
m_dtStartTime = value
End Set
End Property
Protected m_dtEndTime As DateTime
Public Property dtEndTime As DateTime
Get
Return m_dtEndTime
End Get
Set(value As DateTime)
m_dtEndTime = value
End Set
End Property
Protected m_dMatForPart As Double = 0
Public ReadOnly Property dMatForPart As Double
Get
Return m_dMatForPart
End Get
End Property
Protected m_nProdIndex As Integer = 0
Public Property nProdIndex As Integer
Get
Return m_nProdIndex
End Get
Set
m_nProdIndex = Value
End Set
End Property
Public Sub SetMatForPart(dMatForPart As Double)
m_dMatForPart = dMatForPart
End Sub
Protected m_dTotMat As Double = 0
Public ReadOnly Property dTotMat As Double
Get
Return m_dTotMat
End Get
End Property
Public Sub SetTotMat(TotMat As Double)
m_dTotMat = TotMat
End Sub
Protected m_sMATERIAL As String
Public Property sMATERIAL As String
Get
Return m_sMATERIAL
End Get
Set(value As String)
m_sMATERIAL = value
End Set
End Property
' lista dei pezzi che sono nel grezzo
Protected m_PartMList As New List(Of PartM)
Public Property PartMList As List(Of PartM)
Get
Return m_PartMList
End Get
Set(value As List(Of PartM))
m_PartMList = value
End Set
End Property
#End Region ' General
#Region "Beam"
Protected m_dStartCut As Double
Public Property dStartCut As Double
Get
Return m_dStartCut
End Get
Set(value As Double)
m_dStartCut = value
End Set
End Property
#End Region ' Beam
#Region "Wall"
Protected m_nRawPartId As Integer = GDB_ID.NULL
Public ReadOnly Property nRawPartId As Integer
Get
Return m_nRawPartId
End Get
End Property
#End Region ' Wall
#Region "Calc"
Private m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
Return m_nCALC_ERR
End Get
Set(value As Integer)
m_nCALC_ERR = value
End Set
End Property
Private m_nCALC_FALL As Integer
Public Property nCALC_FALL As Integer
Get
Return m_nCALC_FALL
End Get
Set(value As Integer)
m_nCALC_FALL = value
End Set
End Property
Private m_sCALC_MSG As String
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
End Get
Set(value As String)
m_sCALC_MSG = value
End Set
End Property
Public m_nCALC_ROT As Integer
Public Property nCALC_ROT As Integer
Get
Return m_nCALC_ROT
End Get
Set(value As Integer)
m_nCALC_ROT = value
End Set
End Property
Public m_nCALC_TIME As Integer
Public Property nCALC_TIME As Integer
Get
Return m_nCALC_TIME
End Get
Set(value As Integer)
m_nCALC_TIME = value
End Set
End Property
Public m_nCALC_GlobalState As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_GlobalState As CalcStates
Get
Return m_nCALC_GlobalState
End Get
Set(value As CalcStates)
m_nCALC_GlobalState = value
End Set
End Property
Private m_bCALC_PartsGlobalState As CalcStates
Public Property bCALC_PartsGlobalState As CalcStates
Get
Return m_bCALC_PartsGlobalState
End Get
Set(value As CalcStates)
m_bCALC_PartsGlobalState = value
End Set
End Property
Private m_nCALC_GlobalERR As Integer
Public Property nCALC_GlobalERR As Integer
Get
Return m_nCALC_GlobalERR
End Get
Set(value As Integer)
m_nCALC_GlobalERR = value
End Set
End Property
Public m_nCALC_State As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_State As CalcStates
Get
Return m_nCALC_State
End Get
Set(value As CalcStates)
m_nCALC_State = value
End Set
End Property
#End Region ' Calc
#Region "Supervisor"
Protected m_sSupervisorId As String
Public Property sSupervisorId As String
Get
Return m_sSupervisorId
End Get
Set(value As String)
m_sSupervisorId = value
End Set
End Property
Protected m_nPriorityIndex As Integer
Public Property nPriorityIndex As Integer
Get
Return m_nPriorityIndex
End Get
Set(value As Integer)
m_nPriorityIndex = value
End Set
End Property
Protected m_nProductionState As ItemState = ItemState.ND
Public ReadOnly Property nProductionState As ItemState
Get
Return m_nProductionState
End Get
End Property
Public Sub SetProductionState(nState As ItemState)
m_nProductionState = nState
End Sub
#End Region ' Supervisor
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Protected Sub New()
End Sub
Public Overloads Shared Function CreateNewMachGroup() As MyMachGroupM
Return New MyMachGroupM
End Function
Public Overloads Shared Function CreateMyMachGroup(Type As BWType, nId As Integer, sName As String, sMachine As String) As MachGroupM
Dim NewMachGroupM As New MyMachGroupM
NewMachGroupM.m_Id = nId
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.m_nType = Type
If NewMachGroupM.m_nType = MachineType.BEAM Then
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
NewMachGroupM.m_dTotMat = NewMachGroupM.m_dL * NewMachGroupM.m_dW * NewMachGroupM.m_dH
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
For Each Part In NewMachGroupM.m_PartMList
Part.UpdateOffset()
NewMachGroupM.m_dMatForPart += Part.dVolume
Next
Else
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELWIDTH, NewMachGroupM.m_dW)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELHEIGHT, NewMachGroupM.m_dH)
NewMachGroupM.m_dTotMat = NewMachGroupM.m_dL * NewMachGroupM.m_dW * NewMachGroupM.m_dH
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
For Each Part In NewMachGroupM.m_PartMList
NewMachGroupM.m_dMatForPart += Part.dVolume
Next
End If
ReadMachGroupData(NewMachGroupM)
Return NewMachGroupM
End Function
Public Overloads Shared Function CreateMyMachGroup(Type As BWType, sName As String, sMachine As String) As MachGroupM
Dim NewMachGroupM As New MyMachGroupM
NewMachGroupM.m_Id = EgtAddMachGroup(sName, sMachine)
If NewMachGroupM.m_Id = GDB_ID.NULL Then Return Nothing
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.m_nType = Type
If NewMachGroupM.m_nType = MachineType.BEAM Then
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
NewMachGroupM.m_dTotMat = NewMachGroupM.m_dL
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
For Each Part In NewMachGroupM.m_PartMList
Part.UpdateOffset()
NewMachGroupM.m_dMatForPart += Part.dVolume
Next
Else
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELWIDTH, NewMachGroupM.m_dW)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELHEIGHT, NewMachGroupM.m_dH)
NewMachGroupM.m_dTotMat = NewMachGroupM.m_dL * NewMachGroupM.m_dW
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
For Each Part In NewMachGroupM.m_PartMList
NewMachGroupM.m_dMatForPart += Part.dVolume
Next
End If
ReadMachGroupData(NewMachGroupM)
Return NewMachGroupM
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
#Region "Machgroup"
Public Shared Sub ReadMachGroupData(NewMachgroup As MyMachGroupM)
' leggo materiale
EgtGetInfo(NewMachgroup.Id, MGR_RPT_MATERIAL, NewMachgroup.sMATERIAL)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(NewMachgroup.Id, ITG_PROD_ERR, nErr)
EgtGetInfo(NewMachgroup.Id, ITG_PROD_ROT, nRot)
EgtGetInfo(NewMachgroup.Id, ITG_PROD_FALL, nFall)
EgtGetInfo(NewMachgroup.Id, ITG_PROD_MSG, sMsg)
If Not bCalc Then
NewMachgroup.m_nCALC_State = CalcStates.NOTCALCULATED
NewMachgroup.m_nCALC_ERR = 0
NewMachgroup.m_nCALC_ROT = 0
NewMachgroup.m_nCALC_FALL = 0
NewMachgroup.m_sCALC_MSG = ""
Else
NewMachgroup.m_nCALC_ERR = nErr
NewMachgroup.m_nCALC_ROT = nRot
NewMachgroup.m_nCALC_FALL = nFall
NewMachgroup.m_sCALC_MSG = sMsg
Select Case nErr
Case 0
NewMachgroup.nCALC_State = CalcStates.OK
Case 22
NewMachgroup.nCALC_State = CalcStates.COLLISION
Case 17, 19
NewMachgroup.nCALC_State = CalcStates.WARNING
Case < 0
NewMachgroup.nCALC_State = CalcStates.INFO
Case > 0
NewMachgroup.nCALC_State = CalcStates.ERROR_
End Select
End If
EgtGetInfo(NewMachgroup.Id, ITG_PROD_TIME, NewMachgroup.m_nCALC_TIME)
End Sub
Public Overridable Sub RefreshPartList()
If m_nType = MachineType.BEAM Then
' leggo StartCut da posizione primo pezzo
Dim sInfo As String = ""
Dim sSplitInfo() As String
Dim bFound As Boolean = False
EgtGetInfo(Id, MGR_RPT_PART & 1, sInfo)
If Not String.IsNullOrWhiteSpace(sInfo) Then
sSplitInfo = sInfo.Split(","c)
StringToDouble(sSplitInfo(1), m_dStartCut)
Else
m_dStartCut = 0
End If
' aggiorno lista pezzi
RemoveAllParts()
Dim nRawPartId As Integer = EgtGetFirstRawPart()
While nRawPartId <> GDB_ID.NULL
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
If nPartId <> GDB_ID.NULL Then
Dim NewBeam As PartM = PartM.CreatePart(BWType.BEAM, Me, nPartId, nRawPartId)
AddPart(NewBeam)
NewBeam.UpdateOffset()
End If
nRawPartId = EgtGetNextRawPart(nRawPartId)
End While
Else
' aggiorno lista pezzi
RemoveAllParts()
Dim nRawPartId As Integer = EgtGetFirstRawPart()
If nRawPartId <> GDB_ID.NULL Then
Me.m_nRawPartId = nRawPartId
End If
Dim nWallId As Integer = EgtGetFirstPartInRawPart(m_nRawPartId)
While nWallId <> GDB_ID.NULL
If nWallId <> GDB_ID.NULL Then
Dim NewWall As PartM = PartM.CreatePart(BWType.WALL, Me, nWallId, m_nRawPartId)
AddPart(NewWall)
End If
nWallId = EgtGetNextPartInRawPart(nWallId)
End While
End If
End Sub
Public Overridable Sub RefreshGroupData()
If m_nType = MachineType.BEAM Then
EgtGetInfo(Id, MGR_RPT_BARLEN, dL)
EgtGetInfo(Id, MGR_RPT_BARHEIGHT, dH)
EgtGetInfo(Id, MGR_RPT_BARWIDTH, dW)
EgtGetInfo(Id, MGR_RPT_MATERIAL, sMATERIAL)
Else
EgtGetInfo(Id, MGR_RPT_PANELLEN, dL)
EgtGetInfo(Id, MGR_RPT_PANELWIDTH, dW)
EgtGetInfo(Id, MGR_RPT_PANELHEIGHT, dH)
EgtGetInfo(Id, MGR_RPT_MATERIAL, sMATERIAL)
End If
End Sub
Public Overridable Sub DeleteMachGroup()
' elimino tutte le copie
Dim nRawPartId As Integer = EgtGetFirstRawPart()
Dim nBeamId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
While nRawPartId <> GDB_ID.NULL
EgtRemovePartFromRawPart(nBeamId)
EgtErase(nBeamId)
nRawPartId = EgtGetNextRawPart(nRawPartId)
nBeamId = EgtGetFirstPartInRawPart(nRawPartId)
End While
' elimino MachGroup
EgtRemoveMachGroup(Me.Id)
End Sub
#End Region ' Machgroup
#Region "Parts"
Private Shared Function LoadParts(NewMachGroupM As MyMachGroupM) As List(Of PartM)
Dim TempList As New List(Of PartM)
If NewMachGroupM.m_nType = MachineType.BEAM Then
Dim nRawPartId As Integer = EgtGetFirstRawPart()
While nRawPartId <> GDB_ID.NULL
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
If nPartId <> GDB_ID.NULL Then
Dim NewBeam As PartM = PartM.CreatePart(BWType.BEAM, NewMachGroupM, nPartId, nRawPartId)
TempList.Add(NewBeam)
End If
nRawPartId = EgtGetNextRawPart(nRawPartId)
End While
Else
Dim nWallId As Integer = EgtGetFirstPartInRawPart(NewMachGroupM.m_nRawPartId)
While nWallId <> GDB_ID.NULL
If nWallId <> GDB_ID.NULL Then
Dim NewWall As PartM = PartM.CreatePart(BWType.WALL, NewMachGroupM, nWallId, NewMachGroupM.m_nRawPartId)
TempList.Add(NewWall)
End If
nWallId = EgtGetNextPartInRawPart(nWallId)
End While
End If
Return TempList
End Function
Public Sub AddPart(PartM As PartM)
If IsNothing(PartM) Then Return
If Not m_PartMList.Contains(PartM) Then
m_PartMList.Add(PartM)
RaiseEvent PartAdded(Me, New PartAddedEventArgs(PartM))
End If
End Sub
Public Sub RemovePart(PartM As PartM)
If IsNothing(PartM) Then Return
If m_PartMList.Contains(PartM) AndAlso m_PartMList.Remove(PartM) Then
RaiseEvent PartRemoved(Me, New PartAddedEventArgs(PartM))
End If
End Sub
Public Sub RemoveAllParts()
If IsNothing(m_PartMList) Then Return
For PartIndex = m_PartMList.Count - 1 To 0 Step -1
Dim PartM As PartM = m_PartMList(PartIndex)
If m_PartMList.Remove(PartM) Then
RaiseEvent PartRemoved(Me, New PartAddedEventArgs(PartM))
End If
Next
End Sub
Public Function GetParts() As List(Of PartM)
Return New List(Of PartM)(m_PartMList)
End Function
#End Region ' Parts
#End Region ' METHODS
End Class
@@ -0,0 +1,415 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupPanelM
Inherits MachGroupPanelM
#Region "FIELDS & PROPERTIES"
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Public Shared Function CreateMyMachGroupPanel(MachineList As List(Of Machine)) As MachGroupPanelM
Dim NewMyMachGroupPanelM As New MyMachGroupPanelM
NewMyMachGroupPanelM.m_IsMultiMachGroup = False
' Assegno nome base
NewMyMachGroupPanelM.m_BaseName = ""
' Recupero lista macchine
NewMyMachGroupPanelM.m_MachineList = MachineList
' Assegno macchina di default
NewMyMachGroupPanelM.m_DefaultMachine = ""
' aggiorno copie
UpdateDuplo()
' recupero i MachGroup
NewMyMachGroupPanelM.m_MachGroupMList = LoadMyMachGroups(MachineList)
Return NewMyMachGroupPanelM
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Shared Function LoadMyMachGroups(MachineList As List(Of Machine)) As List(Of MachGroupM)
Dim TempList As New List(Of MachGroupM)
' Carico i gruppi di lavorazione nella lista
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
EgtSetCurrMachGroup(nId)
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
' cerco la macchina tra quelle presenti
Dim UsedMachine As MyMachine = Nothing
Dim bOk As Boolean = Machine.SearchMachine(sMachine, MachineList, UsedMachine)
If Not bOk OrElse UsedMachine.nType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
Else
Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
Dim nPROJTYPE As Integer = BWType.NULL
EgtGetInfo(nBTLInfoLayerId, BTL_GEN_PROJTYPE, nPROJTYPE)
If nPROJTYPE = BWType.BEAM Or nPROJTYPE = BWType.WALL Then
TempList.Add(MyMachGroupM.CreateMyMachGroup(nPROJTYPE, nId, sName, sMachine))
Else
EgtOutLog("Machine of beam & wall type, but project type not found!!")
End If
End If
nId = EgtGetNextMachGroup(nId)
End While
EgtResetCurrMachGroup()
Return TempList
End Function
' funzione che restituisce il gruppo di lavorazione dato l'Id geometrico
Public Shared Function LoadMyMachGroupFromId(nId As Integer, MachineList As List(Of Machine)) As MachGroupM
If nId <= 0 Then Return Nothing
If Not EgtSetCurrMachGroup(nId) Then Return Nothing
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
' cerco la macchina tra quelle presenti
Dim UsedMachine As MyMachine = Nothing
Dim bOk As Boolean = Machine.SearchMachine(sMachine, MachineList, UsedMachine)
If Not bOk OrElse UsedMachine.nType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
Else
Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
Dim nPROJTYPE As Integer = BWType.NULL
EgtGetInfo(nBTLInfoLayerId, BTL_GEN_PROJTYPE, nPROJTYPE)
If nPROJTYPE = BWType.BEAM Or nPROJTYPE = BWType.WALL Then
Return MyMachGroupM.CreateMyMachGroup(nPROJTYPE, nId, sName, sMachine)
Else
EgtOutLog("Machine of beam & wall type, but project type not found!!")
End If
End If
Return Nothing
End Function
' funzione che restituisce solo i gruppi di lavorazione creati nel nesting
Public Shared Function UpdateFromNestingMyMachGroups(MachineList As List(Of Machine)) As List(Of MachGroupM)
Dim TempList As New List(Of MachGroupM)
' Carico i gruppi di lavorazione nella lista
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
Dim UpdateUI As Integer = 0
If EgtGetInfo(nId, "UPDATEUI", UpdateUI) AndAlso UpdateUI = 1 Then
TempList.Add(LoadMyMachGroupFromId(nId, MachineList))
' rimuovo info
EgtRemoveInfo(nId, "UPDATEUI")
End If
nId = EgtGetNextMachGroup(nId)
End While
EgtResetCurrMachGroup()
Return TempList
End Function
Public Function NewMyMachGroup(sMachName As String, nMachineType As MachineType) As MachGroupM
' Sistemazioni preliminari
OnPreNewMachGroup()
' Se non ci sono macchine disponibili esco con errore
If m_MachineList.Count <= 0 Then Return Nothing
' Creo il nuovo gruppo di lavorazione con i dati ottenuti a seconda del caso in cui mi trovo
Dim MachGroupM As MachGroupM
If nMachineType = MachineType.NULL Then
EgtOutLog("Machine incompatible with beam & wall machining!!")
Return Nothing
Else
MachGroupM = MyMachGroupM.CreateMyMachGroup(nMachineType, NewMachGroupID(), sMachName)
End If
If IsNothing(MachGroupM) Then Return Nothing
AddMachGroup(MachGroupM)
' Sistemazioni finali
m_DefaultMachine = sMachName
OnPostNewMachGroup()
Return MachGroupM
End Function
Public Overrides Function OnPreNewMachGroup() As Boolean
'EgtSetCurrentContext(Map.refSceneHostVM.MainScene.GetCtx())
Return True
End Function
' NB: Anche se ho già aggiunto il nuovo gruppo di lavorazione, non l'ho ancora reso corrente (viene fatto dopo), quindi
' non posso usare CurrentMachine perchè è ancora impostata quella precedente!!!
Public Overrides Function OnPostNewMachGroup() As Boolean
' Salvo macchina del gruppo come nuovo default
Dim sCurrMachName As String = String.Empty
EgtGetCurrMachineName(sCurrMachName)
WriteMainPrivateProfileString(S_MACH, K_CURRMACH, sCurrMachName)
'' leggo nome attrezzaggio di default
'Dim sDefaultSetUpName As String = String.Empty
'Dim sMachineIniPath As String = Map.refMainWindowVM.MainWindowM.sMachinesRoot & "\" & sCurrMachName & "\" & sCurrMachName & ".ini"
'EgtUILib.GetPrivateProfileString(S_SETUP, K_DEFAULT, "", sDefaultSetUpName, sMachineIniPath)
'' se è attiva l'opzione, rendo corrente l'attrezzaggio di default
'If Not String.IsNullOrEmpty(sDefaultSetUpName) Then
' If Not EgtImportSetup(sDefaultSetUpName) Then
' EgtOutLog("Error loading default setup " & sDefaultSetUpName)
' MessageBox.Show(EgtMsg(MSG_SETUPERRORS + 9) & " " & sDefaultSetUpName, EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Exclamation)
' End If
'End If
Return True
End Function
Public Overrides Function OnPreRemoveCurrMachGroup() As Boolean
'EgtSetCurrentContext(Map.refSceneHostVM.MainScene.GetCtx())
Return True
End Function
Public Function NewMachGroupID() As Integer
Dim nTemp As Integer = 0
If Not IsNothing(MachGroupMList) AndAlso MachGroupMList.Count > 0 Then Return MachGroupMList.Select(Of Integer)(Function(x) If(Integer.TryParse(x.Name, nTemp), nTemp, 0)).Max() + 1
Return 1
End Function
' funzione che fa l'update di tutte le copie dei pezzi modificati
Public Shared Sub UpdateDuplo()
' verifico tipo di progetto
Dim nBtlInfoId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO)
Dim nBWType As Integer = 0
EgtGetInfo(nBtlInfoId, BTL_GEN_PROJTYPE, nBWType)
' ciclo sui pezzi
Dim bTotIsModified As Boolean = False
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim bIsModified As Boolean = False
If EgtDuploGetModified(nPartId, bIsModified) AndAlso bIsModified Then
' verifico se c'é PRID sugli outline
Dim nPRId As Integer = 1
Dim nOutlineLayer As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
If EgtExistsInfo(nOutlineId, MGR_FTR_PRC) Then
If EgtExistsInfo(nOutlineId, MGR_FTR_PRID) Then
nOutlineId = EgtGetNext(nOutlineId)
Continue While
Else
EgtSetInfo(nOutlineId, MGR_FTR_PRID, nPRId)
nPRId += 1
End If
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
bTotIsModified = True
Dim DuploList As New List(Of Integer)
EgtDuploList(nPartId, DuploList)
Dim DuploArray() As Integer
Dim RotArray(DuploList.Count) As Integer
Dim FlipArray(DuploList.Count) As Integer
Dim QArray(DuploList.Count) As Dictionary(Of String, Dictionary(Of String, String))
DuploArray = DuploList.ToArray()
' recupero ROT (gradi) e FLIP (0/1) per non perderli
For Duploindex = 0 To DuploArray.Length - 1
RotArray(Duploindex) = 0
EgtGetInfo(DuploArray(Duploindex), MGR_PRT_ROT, RotArray(Duploindex))
FlipArray(Duploindex) = 0
EgtGetInfo(DuploArray(Duploindex), MGR_PRT_FLIP, FlipArray(Duploindex))
If FlipArray(Duploindex) <> 0 Then FlipArray(Duploindex) = 180
If nBWType = BWType.WALL Then
' salvo parametri Q
QArray(Duploindex) = New Dictionary(Of String, Dictionary(Of String, String))
' ciclo sugli outline
nOutlineLayer = EgtGetFirstNameInGroup(DuploArray(Duploindex), OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nGlobPRId As Integer = 1
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
Dim nPRC As Integer
If EgtGetInfo(nOutlineId, MGR_FTR_PRC, nPRC) Then
nPRId = 0
If Not EgtGetInfo(nOutlineId, MGR_FTR_PRID, nPRId) Then
EgtSetInfo(nOutlineId, MGR_FTR_PRID, nGlobPRId)
nPRId = nGlobPRId
nGlobPRId += 1
End If
Dim sKey As String = nPRId & "." & nPRC
QArray(Duploindex).Add(sKey, New Dictionary(Of String, String))
For QIndex = 1 To 10
Dim QKey As String = "Q" & QIndex.ToString("D2")
Dim QValue As Integer = 0
If EgtGetInfo(nOutlineId, QKey, QValue) Then
QArray(Duploindex)(sKey).Add(QKey, QValue)
End If
Next
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
' ciclo sulle feature
Dim nFeatureLayer As Integer = EgtGetFirstNameInGroup(DuploArray(Duploindex), PROCESSINGS)
If nFeatureLayer <> GDB_ID.NULL Then
Dim nFeatureId As Integer = EgtGetFirstInGroup(nFeatureLayer)
While nFeatureId <> GDB_ID.NULL
' verifico che sia feature
Dim nPRC As Integer
If EgtGetInfo(nFeatureId, MGR_FTR_PRC, nPRC) Then
nPRId = 0
EgtGetInfo(nFeatureId, MGR_FTR_PRID, nPRId)
Dim sKey As String = nPRId & "." & nPRC
QArray(Duploindex).Add(sKey, New Dictionary(Of String, String))
For QIndex = 1 To 10
Dim QKey As String = "Q" & QIndex.ToString("D2")
Dim QValue As Integer = 0
If EgtGetInfo(nFeatureId, QKey, QValue) Then
QArray(Duploindex)(sKey).Add(QKey, QValue)
End If
Next
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
End If
End If
Next
' aggiornamento dei Duplo
EgtDuploUpdate(nPartId)
' ripristino i valori di ROT e FLIP
For Duploindex = 0 To DuploArray.Length - 1
' ripristino info rot e flip
EgtSetInfo(DuploArray(Duploindex), MGR_PRT_ROT, RotArray(Duploindex))
EgtSetInfo(DuploArray(Duploindex), MGR_PRT_FLIP, FlipArray(Duploindex))
If nBWType = BWType.WALL Then
' ciclo sugli outline
nOutlineLayer = EgtGetFirstNameInGroup(DuploArray(Duploindex), OUTLINE)
If nOutlineLayer <> GDB_ID.NULL Then
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutlineLayer)
While nOutlineId <> GDB_ID.NULL
' verifico che sia feature
Dim nPRC As Integer
If EgtGetInfo(nOutlineId, MGR_FTR_PRC, nPRC) Then
nPRId = 0
EgtGetInfo(nOutlineId, MGR_FTR_PRID, nPRId)
Dim sKey As String = nPRId & "." & nPRC
' ripristino parametri Q
If QArray(Duploindex).ContainsKey(sKey) Then
For Each QPar In QArray(Duploindex)(sKey)
EgtSetInfo(nOutlineId, QPar.Key, QPar.Value)
Next
End If
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
End If
' ciclo sulle feature
Dim nFeatureLayer As Integer = EgtGetFirstNameInGroup(DuploArray(Duploindex), PROCESSINGS)
If nFeatureLayer <> GDB_ID.NULL Then
Dim nFeatureId As Integer = EgtGetFirstInGroup(nFeatureLayer)
While nFeatureId <> GDB_ID.NULL
' verifico che sia feature
Dim nPRC As Integer
If EgtGetInfo(nFeatureId, MGR_FTR_PRC, nPRC) Then
nPRId = 0
EgtGetInfo(nFeatureId, MGR_FTR_PRID, nPRId)
Dim sKey As String = nPRId & "." & nPRC
' ripristino parametri Q
If QArray(Duploindex).ContainsKey(sKey) Then
For Each QPar In QArray(Duploindex)(sKey)
EgtSetInfo(nFeatureId, QPar.Key, QPar.Value)
Next
End If
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
End If
End If
Next
End If
nPartId = EgtGetNextPart(nPartId)
End While
If bTotIsModified Then
Dim CurrFilePath As String = ""
EgtGetCurrFilePath(CurrFilePath)
EgtSaveFile(CurrFilePath, NGE.CMPTEXT)
End If
End Sub
Class DuploFeature
' Id geometrico della feature
Friend nFeatureId As Integer
Friend nPRC As Integer
Friend nPRID As Integer
End Class
' funzione che cancella tutti i pezzi segnati da eliminare
Public Shared Sub DeleteDuplo()
' reset necessario per poter accedere direttamente al grezzo dalle info pezzo e al MachGroup tramite la gerarchia Db geometrico
EgtResetCurrMachGroup()
Dim nPartId As Integer = EgtGetFirstPart()
While nPartId <> GDB_ID.NULL
Dim bIsToDelete As Boolean = False
If DuploGetToDelete(nPartId, bIsToDelete) AndAlso bIsToDelete Then
' verifico se ci sono copie
Dim nDuploCount As Integer = 0
EgtDuploCount(nPartId, nDuploCount)
Dim DuploList As New List(Of Integer)
If nDuploCount > 0 AndAlso EgtDuploList(nPartId, DuploList) Then
' cancello tutti i pezzi copia nelle barre
For Each nDuploId In DuploList
' recupero grezzo cui appartiene
Dim nRawPartId As Integer = DuploGetRawPart(nDuploId)
' recupero gruppo di lavorazione
Dim nMachGroupId As Integer = EgtGetParent(EgtGetParent(EgtGetParent(nRawPartId)))
' lo setto come corrente
EgtSetCurrMachGroup(nMachGroupId)
' elimino pezzo copia
EgtRemovePartFromRawPart(nDuploId)
EgtErase(nDuploId)
'' recupero gruppo di lavorazione e trave dell'interfaccia
'Dim BeamMachGroup As BeamMachGroupM = MachGroupMList.FirstOrDefault(Function(x) x.Id = nMachGroupId)
'Dim Beam As BeamM = BeamMachGroup.PartMList.FirstOrDefault(Function(x) x.nPartId = nDuploId)
'EgtSetCurrMachGroup(BeamMachGroup.Id)
'''Beam.DeletePart()
Next
End If
DuploResetToDelete(nPartId)
End If
nPartId = EgtGetNextPart(nPartId)
End While
EgtResetCurrMachGroup()
End Sub
Friend Shared Function DuploGetToDelete(nSouId As Integer, ByRef bToDelete As Boolean) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtGetInfo(nSouId, DUPLO_TODELETE, bToDelete)
End Function
Public Shared Function DuploSetToDelete(nSouId As Integer) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtSetInfo(nSouId, DUPLO_TODELETE, True)
End Function
Private Shared Function DuploResetToDelete(nSouId As Integer) As Boolean
If IsNothing(nSouId) Then Return False
Return EgtSetInfo(nSouId, DUPLO_TODELETE, "")
End Function
' funzione che restituisce il pezzo di origine di un Duplo
' sostituisce EgtDuploGetOriginal che funziona solo all'interno del MachGroup del Duplo
Public Shared Function DuploGetOriginal(nDuploId As Integer) As Integer
Dim nOrigId As Integer = GDB_ID.NULL
If EgtGetInfo(nDuploId, GDB_SI_DUPSOU, nOrigId) AndAlso nOrigId > 0 Then
Return nOrigId
Else
Return GDB_ID.NULL
End If
End Function
Public Shared Function DuploGetRawPart(nDuploId As Integer) As Integer
Dim nRawId As Integer = GDB_ID.NULL
If EgtGetInfo(nDuploId, GDB_SI_LIST, nRawId) AndAlso nRawId > 0 Then
Return nRawId
Else
Return GDB_ID.NULL
End If
End Function
#End Region ' METHODS
End Class
+632
View File
@@ -0,0 +1,632 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Windows.Input
Imports System.Windows.Media
Imports EgtUILib
Imports EgtWPFLib5
Public Class PartM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
#Region "General"
Public Event BTLFeatureAdded As EventHandler(Of BTLFeatureAddedEventArgs)
Protected m_nType As BWType
Public ReadOnly Property nType As BWType
Get
Return m_nType
End Get
End Property
Protected m_ParentMachGroup As MyMachGroupM
Public ReadOnly Property ParentMachGroup As MyMachGroupM
Get
Return m_ParentMachGroup
End Get
End Property
' Id geometrico del pezzo
Protected m_nPartId As Integer
Public ReadOnly Property nPartId As Integer
Get
Return m_nPartId
End Get
End Property
Friend Sub SetPartId(nPartId As Integer)
m_nPartId = nPartId
End Sub
' Proj del pezzo
Protected m_nProjId As Integer = 0
Public Property nProjId As Integer
Get
Return m_nProjId
End Get
Set(value As Integer)
m_nProjId = value
End Set
End Property
' Info del pezzo
Protected m_nPDN As Integer
Public ReadOnly Property nPDN As Integer
Get
Return m_nPDN
End Get
End Property
Protected m_sNAM As String
Public ReadOnly Property sNAM As String
Get
Return m_sNAM
End Get
End Property
Protected m_dBtlL As Double
Public ReadOnly Property dBtlL As String
Get
Return m_dBtlL
End Get
End Property
Public Property dL As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame(nPartId, frBeam)
If IsX(frBeam.VersX(), EPS_SMALL) Then
Return m_dBtlL
ElseIf IsX(frBeam.VersY(), EPS_SMALL) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
End Get
Set(value As Double)
m_dBtlL = value
End Set
End Property
Protected m_dBtlW As Double
Public ReadOnly Property dBtlW As String
Get
Return m_dBtlW
End Get
End Property
Public Property dW As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame(nPartId, frBeam)
If IsY(frBeam.VersX()) Then
Return m_dBtlL
ElseIf IsY(frBeam.VersY()) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
End Get
Set(value As Double)
m_dBtlW = value
End Set
End Property
Protected m_dBtlH As Double
Public ReadOnly Property dBtlH As String
Get
Return m_dBtlH
End Get
End Property
Public Property dH As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame(nPartId, frBeam)
If IsZ(frBeam.VersX()) Then
Return m_dBtlL
ElseIf IsZ(frBeam.VersY()) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
Return m_dBtlH
End Get
Set(value As Double)
m_dBtlH = value
End Set
End Property
Protected m_dPOSX As Double
Public Property dPOSX As Double
Get
If nType = BWType.WALL Then
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
Return vtPartRef.x
Else ' nType = BWType.BEAM
Return m_dPOSX
End If
End Get
Set(value As Double)
m_dPOSX = value
End Set
End Property
Protected m_nCNT As Integer
Public Property nCNT As Integer
Get
Return m_nCNT
End Get
Set(value As Integer)
m_nCNT = value
End Set
End Property
Protected m_nINVERTED As Integer
Public ReadOnly Property nINVERTED As Integer
Get
Return m_nINVERTED
End Get
End Property
Public Sub SetInverted(nInverted As Integer)
m_nINVERTED = nInverted
End Sub
Protected m_nROTATED As Integer
Public ReadOnly Property nROTATED As Integer
Get
Return m_nROTATED
End Get
End Property
Public Sub SetRotated(nRotated As Integer)
m_nROTATED = nRotated
End Sub
Protected m_sMATERIAL As String
Public Property sMATERIAL As String
Get
Return m_sMATERIAL
End Get
Set(value As String)
m_sMATERIAL = value
End Set
End Property
Public m_sSTOREY As String
Public Property sSTOREY As String
Get
Return m_sSTOREY
End Get
Set(value As String)
m_sSTOREY = value
End Set
End Property
Public m_sGROUP As String
Public Property sGROUP As String
Get
Return m_sGROUP
End Get
Set(value As String)
m_sGROUP = value
End Set
End Property
Protected m_nBTLPartId As Integer
Public ReadOnly Property nBTLPartId As Integer
Get
Return m_nBTLPartId
End Get
End Property
' lista delle feature del pezzo
Protected m_FeatureMList As List(Of BTLFeatureM)
Public Property FeatureMList As List(Of BTLFeatureM)
Get
Return m_FeatureMList
End Get
Set(value As List(Of BTLFeatureM))
m_FeatureMList = value
End Set
End Property
#End Region ' General
#Region "Beam"
' Id del grezzo
Protected m_nRawPartId As Integer = GDB_ID.NULL
Public ReadOnly Property nRawPartId As Integer
Get
Return m_nRawPartId
End Get
End Property
Protected m_dOffset As Double
Public Property dOffset As Double
Get
Return m_dOffset
End Get
Set(value As Double)
m_dOffset = value
End Set
End Property
#End Region ' Beam
#Region "Wall"
Protected m_dPOSY As Double
Public Property dPOSY As Double
Get
' recupero box pezzo
Dim b3Part As New BBox3d
EgtGetBBoxGlob(nPartId, GDB_BB.ONLY_VISIBLE + GDB_BB.IGNORE_TEXT + GDB_BB.IGNORE_DIM, b3Part)
' recupero layer del box
Dim nBoxLayerId As Integer = EgtGetFirstNameInGroup(nPartId, "Box")
' recupero box del layer box
Dim b3Box As New BBox3d
EgtGetBBoxGlob(nBoxLayerId, GDB_BB.STANDARD, b3Box)
' recupero origine grezzo
Dim nrawPartId As Integer = EgtGetRawPartFromPart(nPartId)
Dim b3Raw As New BBox3d
EgtGetRawPartBBox(nrawPartId, b3Raw)
' calcolo distanza tra origine pezzo e tavolo
Dim vtPartRef As New Vector3d(b3Box.Min() - b3Raw.Min())
Return vtPartRef.y
'Return m_dPOSY
End Get
Set(value As Double)
m_dPOSY = value
End Set
End Property
Protected m_dROT As Double
Public Property dROT As Double
Get
Return m_dROT
End Get
Set(value As Double)
m_dROT = value
End Set
End Property
Protected m_nFLIP As Integer
Public Property nFLIP As Integer
Get
Return m_nFLIP
End Get
Set(value As Integer)
m_nFLIP = value
End Set
End Property
Protected m_dVolume As Double
Public Property dVolume As Double
Get
Return m_dVolume
End Get
Set(value As Double)
m_dVolume = value
End Set
End Property
#End Region ' Wall
#Region "Calc"
Protected m_nCALC_GlobalState As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_GlobalState As CalcStates
Get
Return m_nCALC_GlobalState
End Get
Set(value As CalcStates)
m_nCALC_GlobalState = value
End Set
End Property
Private m_nCALC_GlobalERR As Integer
Public Property nCALC_GlobalERR As Integer
Get
Return m_nCALC_GlobalERR
End Get
Set(value As Integer)
m_nCALC_GlobalERR = value
End Set
End Property
Protected m_nCALC_State As CalcStates = CalcStates.NOTCALCULATED
Public Property nCALC_State As CalcStates
Get
Return m_nCALC_State
End Get
Set(value As CalcStates)
m_nCALC_State = value
End Set
End Property
Protected m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
Return m_nCALC_ERR
End Get
Set(value As Integer)
m_nCALC_ERR = value
End Set
End Property
Protected m_sCALC_MSG As String = String.Empty
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
End Get
Set(value As String)
m_sCALC_MSG = value
End Set
End Property
Protected m_nCALC_ROT As Integer
Public Property nCALC_ROT As Integer
Get
Return m_nCALC_ROT
End Get
Set(value As Integer)
m_nCALC_ROT = value
End Set
End Property
Protected m_nCALC_FALL As Integer
Public Property nCALC_FALL As Integer
Get
Return m_nCALC_FALL
End Get
Set(value As Integer)
m_nCALC_FALL = value
End Set
End Property
Protected m_nCALC_TIME As Integer
Public Property nCALC_TIME As Integer
Get
Return m_nCALC_TIME
End Get
Set(value As Integer)
m_nCALC_TIME = value
End Set
End Property
#End Region ' Calc
#Region "Supervisor"
Protected m_nProductionState As ItemState = ItemState.ND
Public ReadOnly Property nProductionState As ItemState
Get
Return m_nProductionState
End Get
End Property
Public Sub SetProductionState(nState As CalcStates)
m_nProductionState = nState
End Sub
Protected m_dtStartTime As DateTime
Public Property dtStartTime As DateTime
Get
Return m_dtStartTime
End Get
Set(value As DateTime)
m_dtStartTime = value
End Set
End Property
Protected m_dtEndTime As DateTime
Public Property dtEndTime As DateTime
Get
Return m_dtEndTime
End Get
Set(value As DateTime)
m_dtEndTime = value
End Set
End Property
#End Region ' Supervisor
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New(nParentMachGroup As MyMachGroupM, nPartId As Integer)
m_ParentMachGroup = nParentMachGroup
SetPartId(nPartId)
' imposto BtlPart da cui deriva questo Duplo
m_nBTLPartId = MyMachGroupPanelM.DuploGetOriginal(nPartId)
End Sub
Public Shared Function CreatePart(Type As BWType, nParentMachGroup As MyMachGroupM, nPartId As Integer, nRawPartId As Integer) As PartM
Dim NewPartM As New PartM(nParentMachGroup, nPartId)
NewPartM.m_nType = Type
NewPartM.m_nRawPartId = nRawPartId
' leggo info pezzo
EgtGetInfo(nPartId, BTL_PRT_PROJ, NewPartM.m_nProjId)
EgtGetInfo(nPartId, BTL_PRT_PDN, NewPartM.m_nPDN)
EgtGetInfo(nPartId, BTL_PRT_NAM, NewPartM.m_sNAM)
EgtGetInfo(nPartId, BTL_PRT_L, NewPartM.m_dBtlL)
EgtGetInfo(nPartId, BTL_PRT_W, NewPartM.m_dBtlW)
EgtGetInfo(nPartId, BTL_PRT_H, NewPartM.m_dBtlH)
EgtGetInfo(nPartId, BTL_PRT_CNT, NewPartM.m_nCNT)
EgtGetInfo(nPartId, BTL_PRT_GROUP, NewPartM.m_sGROUP)
EgtGetInfo(nPartId, BTL_PRT_STOREY, NewPartM.m_sSTOREY)
EgtGetInfo(nPartId, BTL_PRT_MATERIAL, NewPartM.m_sMATERIAL)
Dim nTemp As Integer = 0
If Not EgtGetInfo(nPartId, BTL_PRT_ROTATED, nTemp) Then
nTemp = 0
End If
NewPartM.SetRotated(nTemp)
If Not EgtGetInfo(nPartId, BTL_PRT_INVERTED, nTemp) Then
nTemp = 0
End If
NewPartM.SetInverted(nTemp)
If NewPartM.m_nType = BWType.BEAM Then
' leggo PosX
Dim sInfo As String = ""
Dim Index = 1
Dim sSplitInfo() As String = Nothing
Dim bFound As Boolean = False
While EgtGetInfo(NewPartM.m_ParentMachGroup.Id, MGR_RPT_PART & Index, sInfo)
If Not String.IsNullOrWhiteSpace(sInfo) Then
sSplitInfo = sInfo.Split(","c)
If sSplitInfo(0) = nPartId Then
bFound = True
Exit While
End If
End If
Index += 1
End While
If bFound Then
StringToDouble(sSplitInfo(1), NewPartM.m_dPOSX)
End If
Else
' leggo PosX, PosY, Rot e Flip
EgtGetInfo(nPartId, MGR_PRT_POSX, NewPartM.m_dPOSX)
EgtGetInfo(nPartId, MGR_PRT_POSY, NewPartM.m_dPOSY)
EgtGetInfo(nPartId, MGR_PRT_ROT, NewPartM.m_dROT)
EgtGetInfo(nPartId, MGR_PRT_FLIP, NewPartM.m_nFLIP)
End If
' leggo volume
If Not EgtGetInfo(nPartId, BTL_PRT_VOLUME, NewPartM.dVolume) Then
Dim nOrigId As Integer = EgtDuploGetOriginal(nPartId)
EgtGetInfo(nOrigId, BTL_PRT_VOLUME, NewPartM.dVolume)
End If
' leggo feature
NewPartM.m_FeatureMList = LoadBTLFeatures(NewPartM, nPartId)
ReadMachGroupData(NewPartM)
Return NewPartM
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
#Region "Part"
Public Shared Sub ReadMachGroupData(NewPartM As PartM)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(NewPartM.nPartId, ITG_PROD_ERR, nErr)
EgtGetInfo(NewPartM.nPartId, ITG_PROD_ROT, nRot)
EgtGetInfo(NewPartM.nPartId, ITG_PROD_FALL, nFall)
EgtGetInfo(NewPartM.nPartId, ITG_PROD_MSG, sMsg)
If Not bCalc Then
NewPartM.m_nCALC_State = CalcStates.NOTCALCULATED
NewPartM.m_nCALC_ERR = -1
NewPartM.m_nCALC_ROT = 0
NewPartM.m_nCALC_FALL = 0
NewPartM.m_sCALC_MSG = ""
Else
NewPartM.m_nCALC_ERR = nErr
NewPartM.m_nCALC_ROT = nRot
NewPartM.m_nCALC_FALL = nFall
NewPartM.m_sCALC_MSG = sMsg
Select Case nErr
Case 0
NewPartM.nCALC_State = CalcStates.OK
Case 22
NewPartM.nCALC_State = CalcStates.COLLISION
Case 17, 19
NewPartM.nCALC_State = CalcStates.WARNING
Case < 0
NewPartM.nCALC_State = CalcStates.INFO
Case > 0
NewPartM.nCALC_State = CalcStates.ERROR_
End Select
End If
EgtGetInfo(NewPartM.nPartId, ITG_PROD_TIME, NewPartM.m_nCALC_TIME)
End Sub
Public Sub ReadVolume()
' leggo volume
If Not EgtGetInfo(nPartId, BTL_PRT_VOLUME, dVolume) Then
Dim nOrigId As Integer = EgtDuploGetOriginal(nPartId)
EgtGetInfo(nOrigId, BTL_PRT_VOLUME, dVolume)
End If
End Sub
#End Region ' Part
#Region "Beam"
Public Sub UpdateOffset()
' calcolo offset
Dim nBeamIndex As Integer = ParentMachGroup.PartMList.IndexOf(Me)
If nBeamIndex > 0 Then
m_dOffset = dPOSX - (ParentMachGroup.PartMList(nBeamIndex - 1).dPOSX + ParentMachGroup.PartMList(nBeamIndex - 1).dL)
Else
m_dOffset = dPOSX
End If
End Sub
#End Region ' Beam
#Region "Features"
Public Shared Function LoadBTLFeatures(NewPartM As PartM, nPartId As Integer) As List(Of BTLFeatureM)
Dim TempList As New List(Of BTLFeatureM)
' Aggiungo outline
Dim nOutLayerId As Integer = EgtGetFirstNameInGroup(nPartId, OUTLINE)
Dim nOutlineId As Integer = EgtGetFirstInGroup(nOutLayerId)
While nOutlineId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nOutlineId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nOutlineId, BTL_FTR_MAINID) Then
' creo la feature
TempList.Add(BTLFeatureM.CreateBTLFeature(NewPartM, nOutlineId, False))
End If
nOutlineId = EgtGetNext(nOutlineId)
End While
' Aggiungo feature
Dim nProcessingId As Integer = EgtGetFirstNameInGroup(nPartId, PROCESSINGS)
Dim nFeatureId As Integer = EgtGetFirstInGroup(nProcessingId)
While nFeatureId <> GDB_ID.NULL
' verifico che sia una feature
Dim nGRP As Integer
If EgtGetInfo(nFeatureId, BTL_FTR_GRP, nGRP) AndAlso Not EgtExistsInfo(nFeatureId, BTL_FTR_MAINID) Then
' creo la feature
TempList.Add(BTLFeatureM.CreateBTLFeature(NewPartM, nFeatureId, False))
End If
nFeatureId = EgtGetNext(nFeatureId)
End While
Return TempList
End Function
Public Sub AddBTLFeature(BTLFeatureM As BTLFeatureM)
If IsNothing(BTLFeatureM) Then Return
If Not m_FeatureMList.Contains(BTLFeatureM) Then
m_FeatureMList.Add(BTLFeatureM)
RaiseEvent BTLFeatureAdded(Me, New BTLFeatureAddedEventArgs(BTLFeatureM))
End If
End Sub
Public Function GetBTLFeatures() As List(Of BTLFeatureM)
Return New List(Of BTLFeatureM)(m_FeatureMList)
End Function
#End Region ' Features
#End Region ' METHODS
End Class
@@ -27,7 +27,7 @@ Public Class WallMachGroupM
NewMachGroupM.m_Id = nId
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.SetMachineType(MachineType.WALL)
NewMachGroupM.m_nType = MachineType.WALL
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELWIDTH, NewMachGroupM.m_dW)
@@ -48,7 +48,7 @@ Public Class WallMachGroupM
If NewMachGroupM.m_Id = GDB_ID.NULL Then Return Nothing
NewMachGroupM.m_Name = sName
NewMachGroupM.m_Machine = sMachine
NewMachGroupM.SetMachineType(MachineType.WALL)
NewMachGroupM.m_nType = MachineType.WALL
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELLEN, NewMachGroupM.m_dL)
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_PANELWIDTH, NewMachGroupM.m_dW)
@@ -6,7 +6,7 @@ Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class BeamMachGroupVM
Public MustInherit Class BeamMachGroupVM
Inherits MyMachGroupVM
Public ReadOnly Property m_BeamMachGroupM As BeamMachGroupM
@@ -58,17 +58,7 @@ Public Class BeamMachGroupVM
#Region "METHODS"
Private Sub CreateBeamVMList()
Dim all As List(Of BeamVM) = (From BeamM In m_BeamMachGroupM.GetParts()
Select New BeamVM(BeamM, Me)).ToList()
For Each BeamVM As BeamVM In all
AddHandler BeamVM.PropertyChanged, AddressOf OnBeamVMPropertyChanged
Next
m_PartVMList = New ObservableCollection(Of PartVM)(all)
AddHandler m_PartVMList.CollectionChanged, AddressOf OnBeamVMListChanged
End Sub
Protected MustOverride Sub CreateBeamVMList()
Public Overrides Sub RefreshPartList()
End Sub
@@ -84,16 +74,13 @@ Public Class BeamMachGroupVM
#Region "EVENTS"
Private Sub OnBeamAdded(sender As Object, e As PartAddedEventArgs)
Dim BeamVM As BeamVM = New BeamVM(e.NewPart, Me)
PartVMList.Add(BeamVM)
End Sub
Protected MustOverride Sub OnBeamAdded(sender As Object, e As PartAddedEventArgs)
Private Sub OnBeamRemoved(sender As Object, e As PartAddedEventArgs)
Dim BeamVM As BeamVM = PartVMList.FirstOrDefault(Function(x) x.PartM Is e.m_NewPart)
If Not IsNothing(BeamVM) Then PartVMList.Remove(BeamVM)
End Sub
Private Sub OnBeamVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
Protected Sub OnBeamVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If e.Action = NotifyCollectionChangedAction.Add Then
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
For Each BeamVM As BeamVM In e.NewItems
@@ -115,7 +102,7 @@ Public Class BeamMachGroupVM
End If
End Sub
Private Sub OnBeamVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Protected Overridable Sub OnBeamVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
'Select Case e.PropertyName
' Case NameOf(sender.nSelGRP), NameOf(sender.nSelSIDE)
'End Select
+1 -5
View File
@@ -4,7 +4,7 @@ Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class BeamVM
Public MustInherit Class BeamVM
Inherits PartVM
Public ReadOnly Property m_BeamM As BeamM
@@ -30,10 +30,6 @@ Public Class BeamVM
#Region "CONSTRUCTOR"
Sub New(BeamM As BeamM)
MyBase.New(BeamM)
End Sub
Sub New(BeamM As BeamM, ParentMachGroupVM As BeamMachGroupVM)
MyBase.New(BeamM, ParentMachGroupVM)
End Sub
@@ -5,7 +5,7 @@ Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class MyMachGroupPanelVM
Public MustInherit Class MyMachGroupPanelVM
Inherits NewMachGroupPanelVM
#Region "FIELDS & PROPERTIES"
@@ -29,12 +29,36 @@ Public Class MyMachGroupPanelVM
End Get
End Property
Public ReadOnly Property sTotTime As String
Public ReadOnly Property sTotEstimatedTime As String
Get
Return TimeSpan.FromSeconds(m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) x.nCALC_TIME, Func(Of MachGroupVM, Double)))).ToString()
End Get
End Property
Public ReadOnly Property dTotTime As String
Get
Return m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) If(x.nProduction_State >= ItemState.Produced AndAlso Not IsNothing(x.dtEndTime) AndAlso x.dtEndTime <> DateTime.MinValue, (x.dtEndTime - x.dtStartTime).TotalSeconds(), x.nCALC_TIME), Func(Of MachGroupVM, Double)))
End Get
End Property
Public ReadOnly Property sTotTime As String
Get
Return TimeSpan.FromSeconds(dTotTime).ToString()
End Get
End Property
Public ReadOnly Property dRemainingTime As String
Get
Return m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) If(x.nProduction_State < ItemState.Produced, x.nCALC_TIME, 0), Func(Of MachGroupVM, Double)))
End Get
End Property
Public ReadOnly Property sRemainingTime As String
Get
Return TimeSpan.FromSeconds(dRemainingTime).ToString()
End Get
End Property
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
@@ -49,23 +73,7 @@ Public Class MyMachGroupPanelVM
#Region "METHODS"
Protected Overrides Sub CreateMachGroupVMList()
Dim all As New List(Of MachGroupVM)
For Each MachGroupM In m_MachGroupPanelM.GetMachGroups()
If DirectCast(MachGroupM, MyMachGroupM).nMachineType = MachineType.BEAM Then
all.Add(New BeamMachGroupVM(MachGroupM))
Else
all.Add(New WallMachGroupVM(MachGroupM))
End If
Next
For Each MachGroupvM As MachGroupVM In all
AddHandler MachGroupvM.PropertyChanged, AddressOf OnMachGroupVMPropertyChanged
Next
MachGroupVMList = New ObservableCollection(Of MachGroupVM)(all)
AddHandler MachGroupVMList.CollectionChanged, AddressOf OnMachGroupVMListChanged
End Sub
Protected MustOverride Overrides Sub CreateMachGroupVMList()
Public Overrides Function InitMachGroupList(Optional bUseDefaults As Boolean = False) As Boolean
' Svuoto precedente lista di MachGroup
@@ -101,21 +109,11 @@ Public Class MyMachGroupPanelVM
Public Overrides Function OnPostSetCurrMachGroup() As Boolean
' resetto eventuale selezione pezzo
DirectCast(SelectedMachGroup, MyMachGroupVM).SelPart = Nothing
Dim SelMachGroup As MyMachGroupVM = DirectCast(SelectedMachGroup, MyMachGroupVM)
SelMachGroup.SelPart = Nothing
' Imposto vista solo tavola
EgtSetMachineLook(MCH_LOOK.TAB)
Dim View As VT
For Each Mach As MyMachine In CoreMap.refMachinePanelVM.MachineList
If Mach.Name = SelectedMachGroup.Machine Then
If Mach.nType = Core.ConstBeam.MachineType.BEAM Then
View = VT.ISO_SW
Else
View = VT.TOP
End If
Exit For
End If
Next
EgtSetView(View, False)
Core.ViewPanelVM.BWSetView(If(ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
EgtZoom(ZM.ALL)
Return True
End Function
@@ -149,6 +147,7 @@ Public Class MyMachGroupPanelVM
' funzione che aggiorna totale tempi a fine calcolo
Public Sub CalcGlobalTime()
NotifyPropertyChanged(NameOf(sTotTime))
NotifyPropertyChanged(NameOf(sRemainingTime))
End Sub
' funzione che aggiorna numero gruppi di lavorazione e volume totale
@@ -156,29 +155,26 @@ Public Class MyMachGroupPanelVM
NotifyPropertyChanged(NameOf(sTotMachGroups))
NotifyPropertyChanged(NameOf(sTotVolume))
NotifyPropertyChanged(NameOf(sTotTime))
NotifyPropertyChanged(NameOf(sRemainingTime))
End Sub
Public Shared Sub DuploRemoveProjCalc(nPartDuploId As Integer)
EgtSetInfo(nPartDuploId, ITG_PROJ_ERR, "")
EgtSetInfo(nPartDuploId, ITG_PROJ_MSG, "")
EgtSetInfo(nPartDuploId, ITG_PROJ_ROT, "")
EgtSetInfo(nPartDuploId, ITG_PROJ_FALL, "")
EgtSetInfo(nPartDuploId, ITG_PROJ_TIME, "")
End Sub
#End Region ' METHODS
#Region "EVENTS"
Protected Overrides Sub OnMachGroupAdded(sender As Object, e As MachGroupAddedEventArgs)
Dim MachGroupVM As MachGroupVM = Nothing
Select Case DirectCast(e.NewMachGroupM, MyMachGroupM).nMachineType
Case Core.ConstBeam.MachineType.BEAM
MachGroupVM = New BeamMachGroupVM(e.NewMachGroupM)
Case Core.ConstBeam.MachineType.WALL
MachGroupVM = New WallMachGroupVM(e.NewMachGroupM)
Case Core.ConstBeam.MachineType.NULL
Return
End Select
MachGroupVMList.Add(MachGroupVM)
NotifyPropertyChanged(NameOf(MachGroupVMList))
End Sub
Protected Overrides Sub OnMachGroupVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Select Case e.PropertyName
'Case nameof(sender.sMATERIAL)
Case NameOf(sender.nProduction_State)
NotifyPropertyChanged(NameOf(sTotTime))
NotifyPropertyChanged(NameOf(sRemainingTime))
End Select
End Sub
+359 -74
View File
@@ -1,4 +1,6 @@
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.IO
Imports System.Windows
Imports System.Windows.Input
@@ -10,15 +12,27 @@ Imports EgtWPFLib5
Public MustInherit Class MyMachGroupVM
Inherits MachGroupVM
#Region "FIELDS & PROPERTIES"
#Region "General"
Public ReadOnly Property MyMachGroupM As MyMachGroupM
Get
Return m_MachGroupM
End Get
End Property
Public ReadOnly Property nMachineType As MachineType
Public ReadOnly Property nType As BWType
Get
Return MyMachGroupM.nMachineType
Return MyMachGroupM.nType
End Get
End Property
Public ReadOnly Property nName As Integer
Get
Dim nIntName As Integer = 0
Integer.TryParse(MyMachGroupM.Name, nIntName)
Return nIntName
End Get
End Property
@@ -102,6 +116,24 @@ Public MustInherit Class MyMachGroupVM
End Set
End Property
Public ReadOnly Property sUnitTime As String
Get
Return TimeSpan.FromSeconds(nCALC_TIME).ToString()
End Get
End Property
Public ReadOnly Property dUnitVolume As Double
Get
Return dL * dW * dH
End Get
End Property
Public ReadOnly Property Section As SectionXMaterial
Get
Return New SectionXMaterial(dW, dH, dL, MyMachGroupM.sMATERIAL)
End Get
End Property
' lista dei pezzi che sono nel grezzo
Protected m_PartVMList As New ObservableCollection(Of PartVM)
Public Property PartVMList As ObservableCollection(Of PartVM)
@@ -128,6 +160,36 @@ Public MustInherit Class MyMachGroupVM
End Set
End Property
#End Region ' General
#Region "Beam"
Public Overridable Property sStartCut As String
Get
Return LenToString(MyMachGroupM.dStartCut, 3)
End Get
Set(value As String)
StringToLen(value, MyMachGroupM.dStartCut)
End Set
End Property
Public Property dStartCut As Double
Get
Return MyMachGroupM.dStartCut
End Get
Set(value As Double)
MyMachGroupM.dStartCut = value
NotifyPropertyChanged(NameOf(sStartCut))
End Set
End Property
#End Region ' Beam
#Region "Wall"
#End Region ' Wall
#Region "Calc"
Public ReadOnly Property nCALC_ERR As Integer
Get
Return MyMachGroupM.nCALC_ERR
@@ -173,6 +235,12 @@ Public MustInherit Class MyMachGroupVM
End Set
End Property
Public ReadOnly Property nPartsGlobalState As CalcStates
Get
Return MyMachGroupM.bCALC_PartsGlobalState
End Get
End Property
Public Property nCALC_State As CalcStates
Get
Return MyMachGroupM.nCALC_State
@@ -184,37 +252,18 @@ Public MustInherit Class MyMachGroupVM
Public ReadOnly Property Calc_Background As SolidColorBrush
Get
If MyMachGroupM.nCALC_GlobalState = CalcStates.OK Then
Return Brushes.Green
ElseIf MyMachGroupM.nCALC_GlobalState = CalcStates.NOTCALCULATED Then
Return Brushes.LightGray
ElseIf MyMachGroupM.nCALC_GlobalState = CalcStates.INFO Then
Return Brushes.Green
ElseIf MyMachGroupM.nCALC_GlobalState = CalcStates.WARNING Then
Return Brushes.Gold
ElseIf MyMachGroupM.nCALC_GlobalState = CalcStates.ERROR_ Then
Return Brushes.Red
Else
Return Brushes.Red
End If
End Get
End Property
Public ReadOnly Property nProduction_State As Integer
Get
Return MyMachGroupM.nProductionState
End Get
End Property
Public Overridable ReadOnly Property Production_Background As SolidColorBrush
Get
If dtEndTime <> DateTime.MinValue Then ' barra finita
Return Brushes.LightGray
ElseIf dtStartTime <> DateTime.MinValue Then ' barra iniziata
Return Brushes.Green
Else ' barra in coda
Return Brushes.White
End If
Select Case MyMachGroupM.nCALC_GlobalState
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
Case CalcStates.INFO, CalcStates.OK
Return Brushes.Green
Case CalcStates.NOTCALCULATED
Return Brushes.LightGray
Case Else
Return Brushes.Red
End Select
End Get
End Property
@@ -232,14 +281,14 @@ Public MustInherit Class MyMachGroupVM
Public ReadOnly Property CALC_ERR_Letter As String
Get
Select Case MyMachGroupM.nCALC_GlobalERR
Case 22
Select Case MyMachGroupM.nCALC_GlobalState
Case CalcStates.COLLISION
Return "c"
Case 19, 23, 24, 25
Case CalcStates.ERROR_
Return "e"
Case 17
Case CalcStates.WARNING
Return "w"
Case < 0
Case CalcStates.INFO
Return "i"
Case Else
Return ""
@@ -250,7 +299,7 @@ Public MustInherit Class MyMachGroupVM
Public ReadOnly Property CALC_ERR_Foreground As SolidColorBrush
Get
Select Case MyMachGroupM.m_nCALC_GlobalState
Case CalcStates.ERROR_
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
@@ -262,26 +311,148 @@ Public MustInherit Class MyMachGroupVM
End Get
End Property
Public ReadOnly Property sUnitTime As String
#End Region ' Calc
#Region "Supervisor"
Public Property nProduction_State As ItemState
Get
Return TimeSpan.FromSeconds(nCALC_TIME).ToString()
Return MyMachGroupM.nProductionState
End Get
Set(value As ItemState)
MyMachGroupM.SetProductionState(value)
End Set
End Property
Public ReadOnly Property Production_Background As SolidColorBrush
Get
Select Case nProduction_State
Case ItemState.ND
Return Brushes.White
Case ItemState.Assigned, ItemState.Confirmed
If m_bToBeProduced Then ' barra in attesa
If m_bCNReCalculated Then
Return Brushes.Orange
Else ' barra in check calc
Return Brushes.Purple
End If
Else ' barra in coda
Return Brushes.White
End If
Case ItemState.WIP
Return Brushes.Green
Case ItemState.Produced
Return Brushes.Yellow
Case Else ' ItemState.Scrapped
Return Brushes.Aqua
End Select
End Get
End Property
Public ReadOnly Property dUnitVolume As Double
' indica se il pezzo deve essere tagliato
Protected m_bToBeProduced As Boolean = False
Public ReadOnly Property bToBeProduced As Boolean
Get
Return dL * dW * dH
Return m_bToBeProduced
End Get
End Property
Public ReadOnly Property Section As SectionXMaterial
' indica se il pezzo e' gia' stato ricalcolato e quindi pronto a partire
Protected m_bCNReCalculated As Boolean = False
Public ReadOnly Property bReadyForMachining As Boolean
Get
Return New SectionXMaterial(dW, dH, dL, MyMachGroupM.sMATERIAL)
Return m_bToBeProduced AndAlso m_bCNReCalculated
End Get
End Property
Protected m_bSendingToMachine As Boolean = False
Public ReadOnly Property bSendingToMachine As Boolean
Get
Return m_bSendingToMachine
End Get
End Property
Public Sub SetSendingToMachine(value As Boolean)
m_bSendingToMachine = value
End Sub
' indica se il pezzo e' stato mandato alla macchina
Protected m_bSentToMachine As Boolean = False
Public ReadOnly Property bSentToMachine As Boolean
Get
Return m_bSentToMachine
End Get
End Property
Public Sub SetSentToMachine(value As Boolean)
m_bSentToMachine = value
m_bSendingToMachine = False
End Sub
' indica se la macchina e' stata interrotta durante la lavorazione
Protected m_bResetWhileCutting As Boolean = False
Public ReadOnly Property bResetWhileCutting As Boolean
Get
Return m_bResetWhileCutting
End Get
End Property
Public Sub SetResetWhileCutting(value As Boolean)
m_bResetWhileCutting = value
End Sub
Public ReadOnly Property Background As SolidColorBrush
Get
Select Case nProduction_State
Case ItemState.ND
Return Brushes.White
Case ItemState.Assigned
Return Brushes.LightGray
Case ItemState.Confirmed
Return Brushes.LightGray
Case ItemState.WIP
Return Brushes.Green
Case ItemState.Produced
Return Brushes.Yellow
Case Else ' ItemState.Scrapped
Return Brushes.Aqua
End Select
End Get
End Property
Public Overridable ReadOnly Property Produce_IsEnabled As Boolean
Get
Select Case nProduction_State
Case ItemState.Assigned, ItemState.Confirmed
Return Not m_bToBeProduced
Case Else
Return False
End Select
End Get
End Property
Private m_SupervisorId As String = ""
Public ReadOnly Property SupervisorId As String
Get
Return m_SupervisorId
End Get
End Property
Public Sub SetSupervisorId(SupervisorId As String)
m_SupervisorId = SupervisorId
End Sub
Private m_cc As StateChangeEventArgs
Public ReadOnly Property IsReadOnly As Boolean
Get
Return String.IsNullOrEmpty(m_SupervisorId)
End Get
End Property
#End Region ' Supervisor
' definizione comandi
Private m_cmdDeleteMachGroup As ICommand
Private m_cmdProduceMachGroup As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTORS"
@@ -289,21 +460,45 @@ Public MustInherit Class MyMachGroupVM
MyBase.New(MyMachGroupM)
'aggiorno lista pezzi
RefreshPartList()
AddHandler MyMachGroupM.PartAdded, AddressOf OnPartAdded
AddHandler MyMachGroupM.PartRemoved, AddressOf OnPartRemoved
CreatePartVMList()
' Aggiorno stato da stati feature
CalcGlobalUpdate()
NotifyPropertyChanged(NameOf(CALC_FALL_Visibility))
End Sub
#End Region ' CONSTRUCTORS
#Region "METHODS"
#Region "Machgroup"
Public MustOverride Sub RefreshGroupData()
Public Overridable Function Copy() As MyMachGroupVM
Return Nothing
End Function
#End Region ' METHODS
Public Sub UpdateUsage()
MyMachGroupM.SetTotMat(dL * dH * dW)
MyMachGroupM.SetMatForPart(0)
Dim dPartVolume As Double
For Each Part In PartVMList
dPartVolume += Part.dVolume
Next
MyMachGroupM.SetMatForPart(dPartVolume)
NotifyPropertyChanged(NameOf(sUsage))
NotifyPropertyChanged(NameOf(sWaste))
End Sub
Public MustOverride Sub RefreshPartList()
Public Overridable Function CnFilePath() As String
Return Nothing
End Function
Public MustOverride Sub RefreshGroupData()
#End Region ' Machgroup
#Region "Calc"
' funzione che aggiorna lo stato e gli errori dopo calcolo
Public Sub CalcMachGroupUpdate(ERR As Integer, ROT As Integer, MSG As String)
@@ -313,15 +508,18 @@ Public MustInherit Class MyMachGroupVM
MyMachGroupM.nCALC_ERR = ERR
MyMachGroupM.nCALC_ROT = ROT
MyMachGroupM.sCALC_MSG = MSG
If ERR = 0 Then
nCALC_State = CalcStates.OK
ElseIf ERR = 17 Then
nCALC_State = CalcStates.WARNING
ElseIf ERR > 0 Then
nCALC_State = CalcStates.ERROR_
ElseIf ERR < 0 Then
nCALC_State = CalcStates.INFO
End If
Select Case ERR
Case 0
nCALC_State = CalcStates.OK
Case 22
nCALC_State = CalcStates.COLLISION
Case 17, 19
nCALC_State = CalcStates.WARNING
Case < 0
nCALC_State = CalcStates.INFO
Case > 0
nCALC_State = CalcStates.ERROR_
End Select
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
@@ -344,28 +542,22 @@ Public MustInherit Class MyMachGroupVM
End Sub
' funzione che aggiorna lo stato e gli errori dopo calcolo
Public Sub CalcGlobalUpdate()
Public Overridable Sub CalcGlobalUpdate()
MyMachGroupM.nCALC_GlobalERR = nCALC_ERR
MyMachGroupM.nCALC_GlobalState = nCALC_State
' stato globale dei pezzi
MyMachGroupM.bCALC_PartsGlobalState = CalcStates.NOTCALCULATED
For Each Part In MyMachGroupM.PartMList
If Part.nCALC_GlobalState = CalcStates.NOTCALCULATED Then
MyMachGroupM.nCALC_GlobalState = CalcStates.NOTCALCULATED
If Part.nCALC_GlobalState = CalcStates.NOTCALCULATED And nCALC_State < CalcStates.ERROR_ Then
MyMachGroupM.nCALC_GlobalState = Part.nCALC_GlobalState
MyMachGroupM.nCALC_GlobalERR = Part.nCALC_GlobalERR
Exit For
ElseIf Part.nCALC_GlobalState = CalcStates.OK AndAlso MyMachGroupM.m_nCALC_GlobalState = Core.CalcStates.NOTCALCULATED Then
MyMachGroupM.nCALC_GlobalState = CalcStates.OK
ElseIf Part.nCALC_GlobalState = CalcStates.INFO And (MyMachGroupM.nCALC_GlobalState = CalcStates.OK Or MyMachGroupM.nCALC_GlobalState = CalcStates.NOTCALCULATED) Then
MyMachGroupM.nCALC_GlobalState = CalcStates.INFO
ElseIf Part.nCALC_GlobalState = CalcStates.WARNING And (MyMachGroupM.nCALC_GlobalState = CalcStates.OK Or MyMachGroupM.nCALC_GlobalState = CalcStates.INFO Or MyMachGroupM.nCALC_GlobalState = CalcStates.NOTCALCULATED) Then
MyMachGroupM.nCALC_GlobalState = CalcStates.WARNING
ElseIf Part.nCALC_GlobalState = CalcStates.ERROR_ And (MyMachGroupM.nCALC_GlobalState = CalcStates.OK Or MyMachGroupM.nCALC_GlobalState = CalcStates.INFO Or MyMachGroupM.nCALC_GlobalState = CalcStates.WARNING Or MyMachGroupM.nCALC_GlobalState = CalcStates.NOTCALCULATED) Then
MyMachGroupM.nCALC_GlobalState = CalcStates.ERROR_
ElseIf Part.nCALC_GlobalState > MyMachGroupM.nCALC_GlobalState Then
MyMachGroupM.nCALC_GlobalState = Part.nCALC_GlobalState
MyMachGroupM.nCALC_GlobalERR = Part.nCALC_GlobalERR
End If
If Part.nCALC_GlobalERR = 22 Then
MyMachGroupM.nCALC_GlobalERR = 22
ElseIf Part.nCALC_GlobalERR > 0 And MyMachGroupM.nCALC_GlobalERR <= 0 Then
MyMachGroupM.nCALC_GlobalERR = Part.nCALC_GlobalERR
ElseIf Part.nCALC_GlobalERR < 0 And MyMachGroupM.nCALC_GlobalERR = 0 Then
MyMachGroupM.nCALC_GlobalERR = Part.nCALC_GlobalERR
If Part.nCALC_GlobalState > MyMachGroupM.bCALC_PartsGlobalState Then
MyMachGroupM.bCALC_PartsGlobalState = Part.nCALC_GlobalState
End If
If Part.nCALC_ROT <> 0 Then
MyMachGroupM.m_nCALC_ROT = Part.nCALC_ROT
@@ -374,6 +566,7 @@ Public MustInherit Class MyMachGroupVM
MyMachGroupM.nCALC_FALL = Part.nCALC_FALL
End If
Next
NotifyPropertyChanged(NameOf(Calc_Background))
NotifyPropertyChanged(NameOf(CALC_FALL_Visibility))
NotifyPropertyChanged(NameOf(CALC_ROT_Visibility))
@@ -387,6 +580,38 @@ Public MustInherit Class MyMachGroupVM
NotifyPropertyChanged(NameOf(sUnitTime))
End Sub
Public Overridable Sub CALCEnd()
End Sub
#End Region ' Calc
#Region "Supervisor"
Public Sub SentToSupervisor()
MyMachGroupM.SetProductionState(ItemState.Assigned)
NotifyPropertyChanged(NameOf(Background))
End Sub
Public Sub ResetProduce()
m_bCNReCalculated = False
m_bToBeProduced = False
m_bSendingToMachine = False
m_bSentToMachine = False
NotifyPropertyChanged(NameOf(Production_Background))
End Sub
#End Region ' Supervisor
#Region "Parts"
Protected MustOverride Sub CreatePartVMList()
Public MustOverride Sub RefreshPartList()
#End Region ' Parts
#End Region ' METHODS
#Region "COMMANDS"
#Region "DeleteMachGroup"
@@ -417,6 +642,66 @@ Public MustInherit Class MyMachGroupVM
#End Region ' DeleteMachGroup
#Region "ProduceMachGroup"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property ProduceMachGroup_Command As ICommand
Get
If m_cmdProduceMachGroup Is Nothing Then
m_cmdProduceMachGroup = New Command(AddressOf ProduceMachGroup)
End If
Return m_cmdProduceMachGroup
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Overridable Sub ProduceMachGroup()
End Sub
#End Region ' ProduceMachGroup
#End Region ' COMMANDS
#Region "EVENTS"
Protected MustOverride Sub OnPartAdded(sender As Object, e As PartAddedEventArgs)
Private Sub OnPartRemoved(sender As Object, e As PartAddedEventArgs)
Dim PartVM As PartVM = PartVMList.FirstOrDefault(Function(x) x.PartM Is e.m_NewPart)
If Not IsNothing(PartVM) Then PartVMList.Remove(PartVM)
End Sub
Protected Sub OnPartVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If e.Action = NotifyCollectionChangedAction.Add Then
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
For Each PartVM As PartVM In e.NewItems
AddHandler PartVM.PropertyChanged, AddressOf OnPartVMPropertyChanged
Next
End If
End If
If e.Action = NotifyCollectionChangedAction.Remove Then
If Not IsNothing(e.OldItems) AndAlso e.OldItems.Count > 0 Then
For Each PartVM As PartVM In e.OldItems
RemoveHandler PartVM.PropertyChanged, AddressOf OnPartVMPropertyChanged
MyMachGroupM.PartMList.Remove(PartVM.PartM)
Next
End If
End If
If e.Action = NotifyCollectionChangedAction.Move Then
Dim ItemVM As PartVM = e.OldItems(0)
MyMachGroupM.PartMList.RemoveAt(e.OldStartingIndex)
MyMachGroupM.PartMList.Insert(e.NewStartingIndex, ItemVM.PartM)
End If
End Sub
Protected Overridable Sub OnPartVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Select Case e.PropertyName
Case NameOf(sender.sPOSX), NameOf(sender.sPOSY), NameOf(sender.bFLIP), NameOf(sender.sROT)
' setto pezzo da ricalcolare
ResetCalcMachGroup()
End Select
End Sub
#End Region ' EVENTS
End Class
+233 -97
View File
@@ -14,6 +14,8 @@ Public MustInherit Class PartVM
#Region "FIELDS & PROPERTIES"
#Region "General"
Protected m_PartM As PartM
Public ReadOnly Property PartM As PartM
Get
@@ -133,12 +135,24 @@ Public MustInherit Class PartVM
End Get
End Property
Public ReadOnly Property nINVERTED As Integer
Get
Return m_PartM.nINVERTED
End Get
End Property
Public ReadOnly Property sROTATED As String
Get
Return m_PartM.nROTATED & "°"
End Get
End Property
Public ReadOnly Property nROTATED As Integer
Get
Return m_PartM.nROTATED
End Get
End Property
Public Property sMATERIAL As String
Get
Return m_PartM.sMATERIAL
@@ -148,6 +162,117 @@ Public MustInherit Class PartVM
End Set
End Property
Public ReadOnly Property sSTOREY As String
Get
Return m_PartM.sSTOREY
End Get
End Property
Public ReadOnly Property sGROUP As String
Get
Return m_PartM.sGROUP
End Get
End Property
Public ReadOnly Property dVolume As Double
Get
Return m_PartM.dVolume
End Get
End Property
' lista delle feature del pezzo
Protected m_FeatureVMList As ObservableCollection(Of BTLFeatureVM)
Public Property FeatureVMList As ObservableCollection(Of BTLFeatureVM)
Get
Return m_FeatureVMList
End Get
Set(value As ObservableCollection(Of BTLFeatureVM))
m_FeatureVMList = value
End Set
End Property
Protected m_SelFeatureVM As BTLFeatureVM
Public Property SelFeatureVM As BTLFeatureVM
Get
Return m_SelFeatureVM
End Get
Set(value As BTLFeatureVM)
m_SelFeatureVM = value
If Not IsNothing(m_SelFeatureVM) Then
DirectCast(m_SelFeatureVM, BTLFeatureVM).SelGeomFeature()
Else
EgtDeselectAll()
End If
EgtDraw()
NotifyPropertyChanged(NameOf(SelFeatureVM))
End Set
End Property
#End Region ' General
#Region "Beam"
Public Overridable Property sOffset As String
Get
Return LenToString(m_PartM.dOffset, 3)
End Get
Set(value As String)
StringToLen(value, m_PartM.dOffset)
End Set
End Property
Public ReadOnly Property dOffset As Double
Get
Return m_PartM.dOffset
End Get
End Property
#End Region ' Beam
#Region "Wall"
Public Overridable Property sPOSY As String
Get
Return LenToString(m_PartM.dPOSY, 3)
End Get
Set(value As String)
StringToLen(value, m_PartM.dPOSY)
End Set
End Property
Public ReadOnly Property dPOSY As Double
Get
Return m_PartM.dPOSY
End Get
End Property
Public Property sROT As String
Get
Return LenToString(m_PartM.dROT, 3) & "°"
End Get
Set(value As String)
StringToLen(value, m_PartM.dROT)
End Set
End Property
Public ReadOnly Property dROT As Double
Get
Return m_PartM.dROT
End Get
End Property
Public Overridable Property nFLIP As Integer
Get
Return m_PartM.nFLIP
End Get
Set(value As Integer)
m_PartM.nFLIP = value
End Set
End Property
#End Region ' Wall
#Region "Calc"
Public ReadOnly Property nGlobalState As CalcStates
Get
Return m_PartM.nCALC_GlobalState
@@ -174,40 +299,18 @@ Public MustInherit Class PartVM
Public ReadOnly Property Calc_Background As SolidColorBrush
Get
If m_PartM.nCALC_GlobalState = CalcStates.OK Then
Return Brushes.Green
ElseIf m_PartM.nCALC_GlobalState = CalcStates.NOTCALCULATED Then
Return Brushes.LightGray
ElseIf m_PartM.nCALC_GlobalState = CalcStates.INFO Then
Return Brushes.Green
ElseIf m_PartM.nCALC_GlobalState = CalcStates.WARNING Then
Return Brushes.Orange
ElseIf m_PartM.nCALC_GlobalState = CalcStates.ERROR_ Then
Return Brushes.Red
Else
Return Brushes.Red
End If
End Get
End Property
Public Property nProduction_State As CalcStates
Get
Return m_PartM.nProductionState
End Get
Set(value As CalcStates)
m_PartM.SetProductionState(value)
End Set
End Property
Public ReadOnly Property Production_Background As SolidColorBrush
Get
If dtEndTime <> DateTime.MinValue Then ' barra finita
Return Brushes.LightGray
ElseIf dtStartTime <> DateTime.MinValue Then ' barra iniziata
Return Brushes.Green
Else ' barra in coda
Return Brushes.White
End If
Select Case m_PartM.nCALC_GlobalState
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
Case CalcStates.INFO, CalcStates.OK
Return Brushes.Green
Case CalcStates.NOTCALCULATED
Return Brushes.LightGray
Case Else
Return Brushes.Red
End Select
End Get
End Property
@@ -225,14 +328,14 @@ Public MustInherit Class PartVM
Public ReadOnly Property CALC_ERR_Letter As String
Get
Select Case m_PartM.nCALC_GlobalERR
Case 22
Select Case m_PartM.nCALC_GlobalState
Case CalcStates.COLLISION
Return "c"
Case 19, 23, 24, 25
Case CalcStates.ERROR_
Return "e"
Case 17
Case CalcStates.WARNING
Return "w"
Case < 0
Case CalcStates.INFO
Return "i"
Case Else
Return ""
@@ -243,7 +346,7 @@ Public MustInherit Class PartVM
Public ReadOnly Property CALC_ERR_Foreground As SolidColorBrush
Get
Select Case m_PartM.nCALC_GlobalState
Case CalcStates.ERROR_
Case CalcStates.ERROR_, CalcStates.COLLISION
Return Brushes.Red
Case CalcStates.WARNING
Return Brushes.Orange
@@ -294,32 +397,34 @@ Public MustInherit Class PartVM
End Set
End Property
' lista delle feature del pezzo
Protected m_FeatureVMList As ObservableCollection(Of BTLFeatureVM)
Public Property FeatureVMList As ObservableCollection(Of BTLFeatureVM)
#End Region ' Calc
#Region "Supervisor"
Public Property nProduction_State As ItemState
Get
Return m_FeatureVMList
Return m_PartM.nProductionState
End Get
Set(value As ObservableCollection(Of BTLFeatureVM))
m_FeatureVMList = value
Set(value As ItemState)
m_PartM.SetProductionState(value)
End Set
End Property
Protected m_SelFeatureVM As BTLFeatureVM
Public Property SelFeatureVM As BTLFeatureVM
Public ReadOnly Property Production_Background As SolidColorBrush
Get
Return m_SelFeatureVM
Select Case nProduction_State
Case ItemState.ND
Return Brushes.White
Case ItemState.Assigned, ItemState.Confirmed
Return Brushes.White
Case ItemState.WIP
Return Brushes.Green
Case ItemState.Produced
Return Brushes.Yellow
Case Else ' ItemState.Scrapped
Return Brushes.Aqua
End Select
End Get
Set(value As BTLFeatureVM)
m_SelFeatureVM = value
If Not IsNothing(m_SelFeatureVM) Then
DirectCast(m_SelFeatureVM, BTLFeatureVM).SelGeomFeature()
Else
EgtDeselectAll()
End If
EgtDraw()
NotifyPropertyChanged(NameOf(SelFeatureVM))
End Set
End Property
Public Property dtStartTime As DateTime
@@ -342,6 +447,41 @@ Public MustInherit Class PartVM
End Set
End Property
' variabile che indica se rifare il pezzo
Private m_bRedo As Boolean = True
Public Property bRedo As Boolean
Get
Return m_bRedo
End Get
Set(value As Boolean)
For Each Feature In FeatureVMList
Feature.bRedo = value
Next
m_bRedo = value
End Set
End Property
Public ReadOnly Property Background As SolidColorBrush
Get
Select Case nProduction_State
Case ItemState.ND
Return Brushes.White
Case ItemState.Assigned
Return Brushes.LightGray
Case ItemState.Confirmed
Return Brushes.LightGray
Case ItemState.WIP
Return Brushes.Green
Case ItemState.Produced
Return Brushes.Yellow
Case Else ' ItemState.Scrapped
Return Brushes.Aqua
End Select
End Get
End Property
#End Region ' Supervisor
' definizione comandi
Private m_cmdDeletePart As ICommand
@@ -367,17 +507,15 @@ Public MustInherit Class PartVM
#End Region ' CONSTRUCTOR
Private Sub CreateBTLFeatureVMList()
Dim all As List(Of BTLFeatureVM) = (From BTLFeatureM In m_PartM.GetBTLFeatures()
Select New BTLFeatureVM(BTLFeatureM)).ToList()
#Region "METHODS"
For Each BTLFeatureVM As BTLFeatureVM In all
AddHandler BTLFeatureVM.PropertyChanged, AddressOf OnBTLFeatureVMPropertyChanged
Next
#Region "Feature"
m_FeatureVMList = New ObservableCollection(Of BTLFeatureVM)(all)
AddHandler m_FeatureVMList.CollectionChanged, AddressOf OnBTLFeatureVMListChanged
End Sub
Protected MustOverride Sub CreateBTLFeatureVMList()
#End Region ' Feature
#Region "Calc"
' funzione che aggiorna lo stato e gli errori dopo calcolo
Public Sub CalcPartUpdate(ERR As Integer, ROT As Integer, MSG As String)
@@ -387,15 +525,18 @@ Public MustInherit Class PartVM
m_PartM.nCALC_ERR = ERR
m_PartM.nCALC_ROT = ROT
m_PartM.sCALC_MSG = MSG
If ERR = 0 Then
nCALC_State = CalcStates.OK
ElseIf ERR = 17 Then
nCALC_State = CalcStates.WARNING
ElseIf ERR > 0 Then
nCALC_State = CalcStates.ERROR_
ElseIf ERR < 0 Then
nCALC_State = CalcStates.INFO
End If
Select Case ERR
Case 0
nCALC_State = CalcStates.OK
Case 22
nCALC_State = CalcStates.COLLISION
Case 17, 19
nCALC_State = CalcStates.WARNING
Case < 0
nCALC_State = CalcStates.INFO
Case > 0
nCALC_State = CalcStates.ERROR_
End Select
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
@@ -429,23 +570,13 @@ Public MustInherit Class PartVM
Public Sub CalcGlobalUpdate()
m_PartM.nCALC_GlobalState = nCALC_State
For Each Feature In FeatureVMList
If Not Feature.bDO Then
ElseIf Feature.nState = CalcStates.NOTCALCULATED Then
m_PartM.nCALC_GlobalState = CalcStates.NOTCALCULATED
Exit For
ElseIf Feature.nState = CalcStates.INFO And m_PartM.nCALC_GlobalState = CalcStates.OK Then
m_PartM.nCALC_GlobalState = CalcStates.INFO
ElseIf Feature.nState = CalcStates.WARNING And (m_PartM.nCALC_GlobalState = CalcStates.OK Or m_PartM.nCALC_GlobalState = CalcStates.INFO) Then
m_PartM.nCALC_GlobalState = CalcStates.WARNING
ElseIf Feature.nState = CalcStates.ERROR_ And (m_PartM.nCALC_GlobalState = CalcStates.OK Or m_PartM.nCALC_GlobalState = CalcStates.INFO Or m_PartM.nCALC_GlobalState = CalcStates.WARNING) Then
m_PartM.nCALC_GlobalState = CalcStates.ERROR_
If Not Feature.bDO Then Continue For
If Feature.nState > m_PartM.nCALC_GlobalState Then
m_PartM.nCALC_GlobalState = Feature.nState
m_PartM.nCALC_GlobalERR = Feature.nCALC_ERR
End If
If Feature.nCALC_ERR = 22 Then
m_PartM.nCALC_GlobalERR = 22
ElseIf Feature.nCALC_ERR > 0 And m_PartM.nCALC_GlobalERR <= 0 Then
m_PartM.nCALC_GlobalERR = Feature.nCALC_ERR
ElseIf Feature.nCALC_ERR < 0 And m_PartM.nCALC_GlobalERR = 0 Then
m_PartM.nCALC_GlobalERR = Feature.nCALC_ERR
If Feature.nCALC_ROT <> 0 Then
m_PartM.nCALC_ROT = Feature.nCALC_ROT
End If
Next
NotifyPropertyChanged(NameOf(Calc_Background))
@@ -454,6 +585,10 @@ Public MustInherit Class PartVM
NotifyPropertyChanged(NameOf(CALC_ERR_Foreground))
End Sub
#End Region ' Calc
#End Region ' METHODS
#Region "COMMANDS"
#Region "DeletePart"
@@ -478,12 +613,12 @@ Public MustInherit Class PartVM
#Region "EVENTS"
Private Sub OnBTLFeatureAdded(sender As Object, e As BTLFeatureAddedEventArgs)
Public Sub OnBTLFeatureAdded(sender As Object, e As BTLFeatureAddedEventArgs)
Dim BTLFeatureVM As BTLFeatureVM = New BTLFeatureVM(e.NewBTLFeature)
FeatureVMList.Add(BTLFeatureVM)
End Sub
Private Sub OnBTLFeatureVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
Protected Sub OnBTLFeatureVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
For Each BTLFeatureVM As BTLFeatureVM In e.NewItems
AddHandler BTLFeatureVM.PropertyChanged, AddressOf OnBTLFeatureVMPropertyChanged
@@ -492,16 +627,17 @@ Public MustInherit Class PartVM
If Not IsNothing(e.OldItems) AndAlso e.OldItems.Count > 0 Then
For Each BTLFeatureVM As BTLFeatureVM In e.OldItems
RemoveHandler BTLFeatureVM.PropertyChanged, AddressOf OnBTLFeatureVMPropertyChanged
'm_PartM.FeatureMList.Remove(BTLFeatureVM.BTLFeatureM)
Next
End If
End Sub
Private Sub OnBTLFeatureVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Protected Overridable Sub OnBTLFeatureVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
'Select Case e.PropertyName
' Case NameOf(sender.nSelGRP), NameOf(sender.nSelSIDE)
'End Select
End Sub
#End Region
#End Region ' EVENTS
End Class
@@ -6,7 +6,7 @@ Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class WallMachGroupVM
Public MustInherit Class WallMachGroupVM
Inherits MyMachGroupVM
Public ReadOnly Property m_WallMachGroupM As WallMachGroupM
@@ -31,17 +31,7 @@ Public Class WallMachGroupVM
#Region "METHODS"
Private Sub CreateWallVMList()
Dim all As List(Of WallVM) = (From WallM In m_WallMachGroupM.GetParts()
Select New WallVM(WallM, Me)).ToList()
For Each WallVM As WallVM In all
AddHandler WallVM.PropertyChanged, AddressOf OnWallVMPropertyChanged
Next
m_PartVMList = New ObservableCollection(Of PartVM)(all)
AddHandler m_PartVMList.CollectionChanged, AddressOf OnWallVMListChanged
End Sub
Protected MustOverride Sub CreateWallVMList()
#End Region ' METHODS
@@ -57,16 +47,14 @@ Public Class WallMachGroupVM
#Region "EVENTS"
Private Sub OnWallAdded(sender As Object, e As PartAddedEventArgs)
Dim WallVM As WallVM = New WallVM(e.NewPart, Me)
PartVMList.Add(WallVM)
End Sub
Protected MustOverride Sub OnWallAdded(sender As Object, e As PartAddedEventArgs)
Private Sub OnWallRemoved(sender As Object, e As PartAddedEventArgs)
Dim WallVM As WallVM = PartVMList.FirstOrDefault(Function(x) x.PartM Is e.m_NewPart)
If Not IsNothing(WallVM) Then PartVMList.Remove(WallVM)
End Sub
Private Sub OnWallVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
Protected Sub OnWallVMListChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If Not IsNothing(e.NewItems) AndAlso e.NewItems.Count > 0 Then
For Each WallVM As WallVM In e.NewItems
AddHandler WallVM.PropertyChanged, AddressOf OnWallVMPropertyChanged
@@ -79,7 +67,7 @@ Public Class WallMachGroupVM
End If
End Sub
Private Sub OnWallVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
Protected Sub OnWallVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
'Select Case e.PropertyName
' Case NameOf(sender.nSelGRP), NameOf(sender.nSelSIDE)
'End Select
+13 -1
View File
@@ -5,7 +5,7 @@ Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class WallVM
Public MustInherit Class WallVM
Inherits PartVM
Public ReadOnly Property m_WallM As WallM
@@ -32,6 +32,12 @@ Public Class WallVM
End Set
End Property
Public ReadOnly Property dPOSY As Double
Get
Return m_WallM.dPOSY
End Get
End Property
Public Property sROT As String
Get
Return LenToString(m_WallM.dROT, 3) & "°"
@@ -41,6 +47,12 @@ Public Class WallVM
End Set
End Property
Public ReadOnly Property dROT As Double
Get
Return m_WallM.dROT
End Get
End Property
Public Overridable Property bFLIP As Boolean
Get
Return m_WallM.bFLIP
+4 -4
View File
@@ -14,9 +14,9 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyTitle("EgtBEAMWALL.Core Release AnyCPU")>
#End If
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("EgalWare s.r.l.")>
<Assembly: AssemblyCompany("Egalware s.r.l.")>
<Assembly: AssemblyProduct("EgtBEAMWALL.Core")>
<Assembly: AssemblyCopyright("Copyright © 2021 by EgalWare s.r.l.")>
<Assembly: AssemblyCopyright("Copyright © 2020-2022 by Egalware s.r.l.")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.3.6.2")>
<Assembly: AssemblyFileVersion("2.3.6.2")>
<Assembly: AssemblyVersion("2.4.3.1")>
<Assembly: AssemblyFileVersion("2.4.3.1")>
+1 -1
View File
@@ -15,7 +15,7 @@ Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0"), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
@@ -65,7 +65,7 @@
SelectionMode="Single"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
Margin="5"
BindingColumns="{Binding ProjectColumns}">
<DataGrid.Resources>
@@ -115,6 +115,12 @@
<TextBlock Text="{Binding Path=DataContext.CreateDate_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:OpenProjectFileDialogV}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Machine -->
<DataGridTextColumn x:Key="colMACHINE" Binding="{Binding sMachine}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.Machine_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:OpenProjectFileDialogV}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Name (per Prod) -->
<DataGridTextColumn x:Key="colNAME" Binding="{Binding sName}">
<DataGridTextColumn.Header>
@@ -36,6 +36,12 @@ Public Class OpenProjectFileDialogV
Return Me.ShowDialog()
End Function
Public Function EgtShowDialog(ProjectType As ProjectType, GoToProd As Boolean) As Boolean?
m_OpenProjFileDialogVM.Init(ProjectType, Nothing, GoToProd)
' mostro la finestra di dialogo
Return Me.ShowDialog()
End Function
#End Region ' METHODS
#Region "EVENTS"
@@ -12,6 +12,8 @@ Imports EgtWPFLib5
Public MustInherit Class OpenProjectFileDialogVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend Event m_CloseWindow(bDialogResult As Boolean)
Protected m_ProjectColumns As New ObservableCollection(Of EgtDataGridColumn)
@@ -59,10 +61,6 @@ Public MustInherit Class OpenProjectFileDialogVM
Get
Return m_ProjectList
End Get
'Set(value As List(Of ProjFile))
' m_ProjList = value
' NotifyPropertyChanged("ProjList")
'End Set
End Property
Protected m_SelProject As ProjectFileVM
@@ -210,6 +208,11 @@ Public MustInherit Class OpenProjectFileDialogVM
Return EgtMsg(61822)
End Get
End Property
Public ReadOnly Property Machine_Msg As String
Get
Return EgtMsg(61886)
End Get
End Property
Public ReadOnly Property Name_Msg As String
Get
Return EgtMsg(61808)
@@ -238,7 +241,11 @@ Public MustInherit Class OpenProjectFileDialogVM
Private m_cmdProjectDoubleClick As ICommand
Private m_cmdDelete As ICommand
Public MustOverride Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing) As Boolean?
#End Region ' FIELDS & PROPERTIES
#Region "METHODS"
Public MustOverride Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing, Optional GoToProd As Boolean = False) As Boolean?
Protected Sub LoadColumns(ProjectType As ProjectType)
If ProjectType = ProjectType.PROJ Then
@@ -260,6 +267,10 @@ Public MustInherit Class OpenProjectFileDialogVM
New IdNameStruct(OpenProjFileColumn.BTLFILENAME, BTLFileName_Msg),
New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg)})
End If
' setto la visibilità delle colonne delle EgtDataGrid
For Each col In ProjectColumns
col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed)
Next
End Sub
Friend Function VerifySelected() As Boolean
@@ -301,6 +312,8 @@ Public MustInherit Class OpenProjectFileDialogVM
Return bProjectOk
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "ProjectDoubleClick"
@@ -345,7 +358,7 @@ Public MustInherit Class OpenProjectFileDialogVM
''' <summary>
''' Execute the New. This method is invoked by the NewCommand.
''' </summary>
Friend Overridable Sub Delete()
Public Overridable Sub Delete()
End Sub
#End Region ' Delete
-381
View File
@@ -1,381 +0,0 @@
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Windows.Input
Imports System.Windows.Media
Imports EgtUILib
Imports EgtWPFLib5
Public MustInherit Class PartM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Protected m_ParentMachGroup As MyMachGroupM
Public ReadOnly Property ParentMachGroup As MyMachGroupM
Get
Return m_ParentMachGroup
End Get
End Property
' Id geometrico del pezzo
Protected m_nPartId As Integer
Public ReadOnly Property nPartId As Integer
Get
Return m_nPartId
End Get
End Property
Friend Sub SetPartId(nPartId As Integer)
m_nPartId = nPartId
End Sub
' Proj del pezzo
Protected m_nProjId As Integer = 0
Public Property nProjId As Integer
Get
Return m_nProjId
End Get
Set(value As Integer)
m_nProjId = value
End Set
End Property
' Info del pezzo
Protected m_nPDN As Integer
Public ReadOnly Property nPDN As Integer
Get
Return m_nPDN
End Get
End Property
Protected m_sNAM As String
Public ReadOnly Property sNAM As String
Get
Return m_sNAM
End Get
End Property
Protected m_dBtlL As Double
Public ReadOnly Property dBtlL As String
Get
Return m_dBtlL
End Get
End Property
Public Property dL As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame( nPartId, frBeam)
If IsX( frBeam.VersX(), EPS_SMALL) Then
Return m_dBtlL
ElseIf IsX( frBeam.VersY(), EPS_SMALL) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
End Get
Set(value As Double)
m_dBtlL = value
End Set
End Property
Protected m_dBtlW As Double
Public ReadOnly Property dBtlW As String
Get
Return m_dBtlW
End Get
End Property
Public Property dW As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame( nPartId, frBeam)
If IsY( frBeam.VersX()) Then
Return m_dBtlL
ElseIf IsY( frBeam.VersY()) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
End Get
Set(value As Double)
m_dBtlW = value
End Set
End Property
Protected m_dBtlH As Double
Public ReadOnly Property dBtlH As String
Get
Return m_dBtlH
End Get
End Property
Public Property dH As Double
Get
Dim frBeam As New Frame3d
EgtGetGroupGlobFrame( nPartId, frBeam)
If IsZ( frBeam.VersX()) Then
Return m_dBtlL
ElseIf IsZ( frBeam.VersY()) Then
Return m_dBtlH
Else
Return m_dBtlW
End If
Return m_dBtlH
End Get
Set(value As Double)
m_dBtlH = value
End Set
End Property
Protected m_dPOSX As Double
Public Property dPOSX As Double
Get
Return m_dPOSX
End Get
Set(value As Double)
m_dPOSX = value
End Set
End Property
Protected m_nCNT As Integer
Public Property nCNT As Integer
Get
Return m_nCNT
End Get
Set(value As Integer)
m_nCNT = value
End Set
End Property
Protected m_nINVERTED As Integer
Public ReadOnly Property nINVERTED As Integer
Get
Return m_nINVERTED
End Get
End Property
Public Sub SetInverted(nInverted As Integer)
m_nINVERTED = nInverted
End Sub
Protected m_nROTATED As Integer
Public ReadOnly Property nROTATED As Integer
Get
Return m_nROTATED
End Get
End Property
Public Sub SetRotated(nRotated As Integer)
m_nROTATED = nRotated
End Sub
Protected m_sMATERIAL As String
Public Property sMATERIAL As String
Get
Return m_sMATERIAL
End Get
Set(value As String)
m_sMATERIAL = value
End Set
End Property
Public m_sGROUP As String
Public Property sGROUP As String
Get
Return m_sGROUP
End Get
Set(value As String)
m_sGROUP = value
End Set
End Property
Protected m_nCALC_GlobalState As CalcStates = -1
Public Property nCALC_GlobalState As CalcStates
Get
Return m_nCALC_GlobalState
End Get
Set(value As CalcStates)
m_nCALC_GlobalState = value
End Set
End Property
Private m_nCALC_GlobalERR As Integer
Public Property nCALC_GlobalERR As Integer
Get
Return m_nCALC_GlobalERR
End Get
Set(value As Integer)
m_nCALC_GlobalERR = value
End Set
End Property
Protected m_nCALC_State As CalcStates = -1
Public Property nCALC_State As CalcStates
Get
Return m_nCALC_State
End Get
Set(value As CalcStates)
m_nCALC_State = value
End Set
End Property
Protected m_nCALC_ERR As Integer
Public Property nCALC_ERR As Integer
Get
Return m_nCALC_ERR
End Get
Set(value As Integer)
m_nCALC_ERR = value
End Set
End Property
Protected m_sCALC_MSG As String = String.Empty
Public Property sCALC_MSG As String
Get
Return m_sCALC_MSG
End Get
Set(value As String)
m_sCALC_MSG = value
End Set
End Property
Protected m_nCALC_ROT As Integer
Public Property nCALC_ROT As Integer
Get
Return m_nCALC_ROT
End Get
Set(value As Integer)
m_nCALC_ROT = value
End Set
End Property
Protected m_nCALC_FALL As Integer
Public Property nCALC_FALL As Integer
Get
Return m_nCALC_FALL
End Get
Set(value As Integer)
m_nCALC_FALL = value
End Set
End Property
Protected m_nCALC_TIME As Integer
Public Property nCALC_TIME As Integer
Get
Return m_nCALC_TIME
End Get
Set(value As Integer)
m_nCALC_TIME = value
End Set
End Property
' lista delle feature del pezzo
Protected m_FeatureMList As List(Of BTLFeatureM)
Public Property FeatureMList As List(Of BTLFeatureM)
Get
Return m_FeatureMList
End Get
Set(value As List(Of BTLFeatureM))
m_FeatureMList = value
End Set
End Property
Protected m_dtStartTime As DateTime
Public Property dtStartTime As DateTime
Get
Return m_dtStartTime
End Get
Set(value As DateTime)
m_dtStartTime = value
End Set
End Property
Protected m_dtEndTime As DateTime
Public Property dtEndTime As DateTime
Get
Return m_dtEndTime
End Get
Set(value As DateTime)
m_dtEndTime = value
End Set
End Property
Protected m_nProductionState As Integer = 0
Public ReadOnly Property nProductionState As Integer
Get
Return m_nProductionState
End Get
End Property
Public Sub SetProductionState(nState As CalcStates)
m_nProductionState = nState
End Sub
Protected m_nBTLPartId As Integer
Public ReadOnly Property nBTLPartId As Integer
Get
Return m_nBTLPartId
End Get
End Property
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New(nParentMachGroup As MyMachGroupM, nPartId As Integer)
m_ParentMachGroup = nParentMachGroup
SetPartId(nPartId)
' imposto BtlPart da cui deriva questo Duplo
Dim c As Integer = EgtGetCurrMachGroup()
EgtResetCurrMachGroup()
m_nBTLPartId = EgtDuploGetOriginal(nPartId)
EgtSetCurrMachGroup(c)
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Event BTLFeatureAdded As EventHandler(Of BTLFeatureAddedEventArgs)
Public Sub AddBTLFeature(BTLFeatureM As BTLFeatureM)
If IsNothing(BTLFeatureM) Then Return
If Not m_FeatureMList.Contains(BTLFeatureM) Then
m_FeatureMList.Add(BTLFeatureM)
RaiseEvent BTLFeatureAdded(Me, New BTLFeatureAddedEventArgs(BTLFeatureM))
End If
End Sub
Public Function GetBTLFeatures() As List(Of BTLFeatureM)
Return New List(Of BTLFeatureM)(m_FeatureMList)
End Function
Public Shared Sub ReadMachGroupData(NewPart As PartM)
' leggo calc error
Dim nErr As Integer = 0
Dim nRot As Integer = 0
Dim nFall As Integer = 0
Dim sMsg As String = ""
Dim bCalc As Boolean = False
bCalc = EgtGetInfo(NewPart.nPartId, ITG_PROD_ERR, nErr)
EgtGetInfo(NewPart.nPartId, ITG_PROD_ROT, nRot)
EgtGetInfo(NewPart.nPartId, ITG_PROD_MSG, sMsg)
If Not bCalc Then
NewPart.m_nCALC_State = CalcStates.NOTCALCULATED
NewPart.m_nCALC_ERR = 0
NewPart.m_nCALC_ROT = 0
NewPart.m_sCALC_MSG = ""
Else
NewPart.m_nCALC_ERR = nErr
NewPart.m_nCALC_ROT = nRot
NewPart.m_sCALC_MSG = sMsg
If nErr = 0 Then
NewPart.nCALC_State = CalcStates.OK
ElseIf nErr = 17 Then
NewPart.nCALC_State = CalcStates.WARNING
ElseIf nErr > 0 Then
NewPart.nCALC_State = CalcStates.ERROR_
ElseIf nErr < 0 Then
NewPart.nCALC_State = CalcStates.INFO
End If
End If
EgtGetInfo(NewPart.nPartId, ITG_PROD_TIME, NewPart.m_nCALC_TIME)
End Sub
#End Region ' METHODS
End Class
@@ -27,13 +27,14 @@ Public Class ProdFileM
Return New ProdFileM
End Function
Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer),
dtCreateProjDate As DateTime, sName As String) As ProdFileM
Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer), dtCreateProjDate As DateTime, sName As String, nType As BWType, sMachine As String) As ProdFileM
Dim NewProjectFileM As New ProdFileM
NewProjectFileM.m_nProdId = nProdId
NewProjectFileM.m_nProjIdList = nProjIdList
NewProjectFileM.m_dtCreateDate = dtCreateProjDate
NewProjectFileM.m_sName = sName
NewProjectFileM.m_nType = nType
NewProjectFileM.m_sMachine = sMachine
Return NewProjectFileM
End Function
@@ -37,8 +37,8 @@ Public Class ProjFileM
Return New ProjFileM
End Function
Public Shared Function CreateProjFileM(nProjId As Integer, nProdId As Integer, dtCreateProjDate As DateTime,
dtExportDate As DateTime, sListName As String, sBTLFileName As String, IsNew As Boolean, IsLocked As Boolean) As ProjFileM
Public Shared Function CreateProjFileM(nProjId As Integer, nProdId As Integer, dtCreateProjDate As DateTime, dtExportDate As DateTime, sListName As String,
sBTLFileName As String, IsNew As Boolean, IsLocked As Boolean, nType As BWType, sMachine As String) As ProjFileM
Dim NewProjectFileM As New ProjFileM
NewProjectFileM.m_nProjId = nProjId
NewProjectFileM.m_nProdId = nProdId
@@ -48,6 +48,8 @@ Public Class ProjFileM
NewProjectFileM.m_sBTLFileName = sBTLFileName
NewProjectFileM.m_bIsNew = IsNew
NewProjectFileM.m_bIsLocked = IsLocked
NewProjectFileM.m_nType = nType
NewProjectFileM.m_sMachine = sMachine
Return NewProjectFileM
End Function
@@ -54,18 +54,27 @@ Public Class ProjectFileM
End Set
End Property
#Region "CONSTRUCTORS"
Protected m_nType As BWType
Public Property nType As BWType
Get
Return m_nType
End Get
Set(value As BWType)
m_nType = value
End Set
End Property
'Sub New(nProjectType As ProjectType, nProjId As Integer, nProdId As Integer, sBTLFileName As String)
' m_nProjectType = nProjectType
' If m_nProjectType = ProjectType.PROJ Then
' m_nProjId = nProjId
' m_nProdId = nProdId
' m_BTLFileName = sBTLFileName
' ElseIf m_nProjectType = ProjectType.PROD Then
' m_nProdId = nProdId
' End If
'End Sub
Protected m_sMachine As String
Public Property sMachine As String
Get
Return m_sMachine
End Get
Set(value As String)
m_sMachine = value
End Set
End Property
#Region "CONSTRUCTORS"
#End Region ' CONSTRUCTORS
@@ -62,6 +62,7 @@ Public Class ProdFileVM
Protected Sub SetBTLFileName(value As String)
m_sBTLFileName = value
End Sub
#Region "CONSTRUCTORS"
Sub New(ProdFileM As ProdFileM)
@@ -1,6 +1,7 @@
Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class ProjectFileVM
Inherits VMBase
@@ -87,13 +88,35 @@ Public Class ProjectFileVM
End Property
' variabile che indica se ricaricare il progetto
Private m_bReloadProject As Boolean = True
Friend ReadOnly Property bReloadProject As Boolean
Protected m_bReloadProject As Boolean = True
Public ReadOnly Property bReloadProject As Boolean
Get
Return m_bReloadProject
End Get
End Property
Protected m_nModificationIndex As Integer = Integer.MaxValue - 1000
Public ReadOnly Property nModificationIndex As Integer
Get
Return m_nModificationIndex
End Get
End Property
Public Sub SetModificationIndex(value As String)
m_nModificationIndex = value
End Sub
Public ReadOnly Property nType As BWType
Get
Return m_ProjectFileM.nType
End Get
End Property
Public ReadOnly Property sMachine As String
Get
Return m_ProjectFileM.sMachine
End Get
End Property
#Region "Messages"
Public ReadOnly Property Id_Msg As String
@@ -142,4 +165,8 @@ Public Class ProjectFileVM
m_sProdsDir = sProdsDir
End Sub
Public Sub SetMachine(sMachine)
m_ProjectFileM.sMachine = sMachine
End Sub
End Class
+62 -1
View File
@@ -18,6 +18,7 @@ Imports EgtWPFLib5
Public Module BTLIniFile
Public m_sBTLIniFile As String
Public m_nBTLBWType As BWType
Public Function GetBeamPrivateProfileProcessList(IpGRPType As GRPType, ByRef IpProcessList As ObservableCollection(Of Integer)) As Boolean
Dim PRCList As New ObservableCollection(Of Integer)
@@ -124,9 +125,16 @@ Public Module BTLIniFile
Return ""
End Function
' funzione che ottiene il parametro P/Q usando m_nBTLBWType del modulo
Public Function GetBeamPrivateProfileParam(IpGRP As Integer, IpPRC As Integer, IsP As Boolean, IpFeatureParamIndex As String, IpParentFeature As BTLFeatureM, ByRef IpBTLParam As BTLParamM) As Boolean
Dim sBTLParam As String = String.Empty
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, If(IsP, "P", "Q") & IpFeatureParamIndex, String.Empty, sBTLParam, m_sBTLIniFile) > 0 Then
Dim sBWQParam As String = String.Empty
If m_nBTLBWType = BWType.BEAM Then
sBWQParam = "B"
ElseIf m_nBTLBWType = BWType.WALL Then
sBWQParam = "W"
End If
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, If(IsP, "P", "Q" & sBWQParam) & IpFeatureParamIndex, String.Empty, sBTLParam, m_sBTLIniFile) > 0 Then
Dim sBTLParamParams() As String = sBTLParam.Split(","c)
' verifico numero minimo di parametri
If sBTLParamParams.Count >= 6 Then
@@ -170,4 +178,57 @@ Public Module BTLIniFile
Return False
End Function
' funzione che ottiene il parametro P/Q usando BTLBWType passato come argomento
Public Function GetBeamPrivateProfileParam(IpGRP As Integer, IpPRC As Integer, IsP As Boolean, IpFeatureParamIndex As String, IpParentFeature As BTLFeatureM, ByRef IpBTLParam As BTLParamM, BTLBWType As BWType) As Boolean
Dim sBTLParam As String = String.Empty
Dim sBWQParam As String = String.Empty
If BTLBWType = BWType.BEAM Then
sBWQParam = "B"
ElseIf BTLBWType = BWType.WALL Then
sBWQParam = "W"
End If
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, If(IsP, "P", "Q" & sBWQParam) & IpFeatureParamIndex, String.Empty, sBTLParam, m_sBTLIniFile) > 0 Then
Dim sBTLParamParams() As String = sBTLParam.Split(","c)
' verifico numero minimo di parametri
If sBTLParamParams.Count >= 6 Then
' cancello spazi
For Index = 0 To sBTLParamParams.Count - 1
sBTLParamParams(Index) = sBTLParamParams(Index).Trim()
Next
' creo parametro
If sBTLParamParams(0) = "d" OrElse sBTLParamParams(0) = "l" Then
Dim dMin As Double
Dim dMax As Double
Dim dDefault As Double
StringToDouble(sBTLParamParams(2), dMin)
StringToDouble(sBTLParamParams(3), dMax)
StringToDouble(sBTLParamParams(4), dDefault)
Dim ParamType As BTLParamType
If sBTLParamParams(0) = "d" Then
ParamType = BTLParamType.DOUBLE_
Else
ParamType = BTLParamType.LENGTH
End If
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, ParamType, sBTLParamParams(1), dMin, dMax, dDefault, sBTLParamParams(5), sBWQParam)
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "s" Then
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.STRING_, sBTLParamParams(1), sBTLParamParams(5), sBWQParam)
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "c" Then
Dim nMin As Integer
Dim nMax As Integer
Dim nDefault As Integer
Integer.TryParse(sBTLParamParams(2), nMin)
Integer.TryParse(sBTLParamParams(3), nMax)
Integer.TryParse(sBTLParamParams(4), nDefault)
' recupero lista valori
Dim ValueList As New List(Of String)
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.COMBO, sBTLParamParams(1), nMin, nMax, nDefault, sBTLParamParams(5), ValueList, sBWQParam)
Return Not IsNothing(IpBTLParam)
End If
End If
End If
Return False
End Function
End Module
-70
View File
@@ -1,70 +0,0 @@
Imports System.Windows.Input
''' <summary>
''' A command whose sole purpose is to
''' relay its functionality to other
''' objects by invoking delegates. The
''' default return value for the CanExecute
''' method is 'true'.
''' </summary>
Public Class Command
Implements ICommand
#Region "Fields"
Private ReadOnly _execute As Action(Of Object)
Private ReadOnly _canExecute As Predicate(Of Object)
#End Region ' Fields
#Region "Constructors"
''' <summary>
''' Creates a new command that can always execute.
''' </summary>
''' <param name="execute">The execution logic.</param>
Public Sub New(ByVal execute As Action(Of Object))
Me.New(execute, Nothing)
End Sub
''' <summary>
''' Creates a new command.
''' </summary>
''' <param name="execute">The execution logic.</param>
''' <param name="canExecute">The execution status logic.</param>
Public Sub New(ByVal execute As Action(Of Object), ByVal canExecute As Predicate(Of Object))
If execute Is Nothing Then
Throw New ArgumentNullException("execute")
End If
_execute = execute
_canExecute = canExecute
End Sub
#End Region ' Constructors
#Region "ICommand Members"
<DebuggerStepThrough> _
Public Function CanExecute(ByVal parameter As Object) As Boolean Implements ICommand.CanExecute
Return If(_canExecute Is Nothing, True, _canExecute(parameter))
End Function
Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
AddHandler(ByVal value As EventHandler)
AddHandler CommandManager.RequerySuggested, value
End AddHandler
RemoveHandler(ByVal value As EventHandler)
RemoveHandler CommandManager.RequerySuggested, value
End RemoveHandler
RaiseEvent(ByVal sender As System.Object, ByVal e As System.EventArgs)
End RaiseEvent
End Event
Public Sub Execute(ByVal parameter As Object) Implements ICommand.Execute
_execute(parameter)
End Sub
#End Region ' ICommand Members
End Class
@@ -0,0 +1,62 @@
Imports System.Windows
Imports System.Windows.Controls
Imports EgtWPFLib5
Imports EgtUILib
Imports System.Collections.ObjectModel
Public Module DimensionsIniFile
Public m_sDimensionsIniFile As String
Public Sub ReadGridDimensions(GridName As String, ByRef GridDimsList As ObservableCollection(Of GridDimension))
GridDimsList = New ObservableCollection(Of GridDimension)
Dim Index As Integer = 0
Dim sValue = String.Empty
While GetPrivateProfileString(GridName, Index, String.Empty, sValue, m_sDimensionsIniFile) > 0
Dim sValueParams() As String = sValue.Split(","c)
' verifico numero minimo di parametri
If sValueParams.Count >= 4 Then
' cancello spazi
For I = 0 To sValueParams.Count - 1
sValueParams(I) = sValueParams(I).Trim()
Next
' creo valore
Dim nDimIndex As Integer
Dim nDimType As DimensionType
Dim GridLenValue As Double
Dim GridLenType As GridUnitType
Integer.TryParse(sValueParams(0), nDimIndex)
Integer.TryParse(sValueParams(1), nDimType)
StringToDouble(sValueParams(2), GridLenValue)
Integer.TryParse(sValueParams(3), GridLenType)
GridDimsList.Add(New GridDimension(GridName, nDimIndex, nDimType, New GridLength(GridLenValue, GridLenType)))
End If
Index += 1
End While
For Each GridDimsItem In GridDimsList
GridDimsItem.GridDimensions = GridDimsList
Next
End Sub
' funzione per calcolare e scrivere la stringa dei valori delle righe/colonne della Grid nell'INI
Public Function SaveGridDimensions(GridName As String, GridDims As ObservableCollection(Of GridDimension)) As Boolean
Dim bOk As Boolean
Dim Index = 0
Dim sValue = String.Empty
For Each GridDimsItem In GridDims
sValue = GridDimsItem.Index & "," & GridDimsItem.DimType & "," & DoubleToString(GridDimsItem.GridLen.Value, 6) & "," & GridDimsItem.GridLen.GridUnitType
bOk = WritePrivateProfileDimension(GridName, Index, sValue)
Index += 1
Next
Return bOk
End Function
Public Function WritePrivateProfileDimension(GridName As String, Index As String, sValue As String) As Boolean
Return WritePrivateProfileString(GridName, Index, sValue, m_sDimensionsIniFile)
End Function
Private Function GetGridLengthFromIndexAndType(GridDimsList As List(Of GridDimension), Index As Integer, DimType As DimensionType) As GridDimension
Return GridDimsList.FirstOrDefault(Function(x) x.Index = Index And x.DimType = DimType)
End Function
End Module
@@ -0,0 +1,16 @@
Imports EgtUILib
Public Class DisableModifiedMgr
Private m_bOldEnMod As Boolean
Sub New()
m_bOldEnMod = EgtGetEnableModified()
If m_bOldEnMod Then EgtDisableModified()
End Sub
Public Sub ReEnable()
If m_bOldEnMod Then EgtEnableModified()
End Sub
End Class
+69
View File
@@ -0,0 +1,69 @@
Public Enum CalcStates As Integer
NOTCALCULATED = -1
OK = 0
INFO = 1
WARNING = 2
ERROR_ = 3
COLLISION = 4
End Enum
Public Enum EventType
ND = -1
Started = 0
Ended = 1
End Enum
Public Enum ItemState As Integer
ND = -1
Assigned = 0
Confirmed = 1
WIP = 2
Produced = 3
Scrapped = 4
End Enum
Public Enum LogSupportLevel
ND = -1
I = 0
E = 1
End Enum
Public Enum LogSupportTarget
ND = -1
Supervisor = 0
LoadProject = 1
End Enum
Public Enum StatusMapItemType
ND = -1
Prod = 0
MachGroup = 1
Part = 2
Comm = 3
End Enum
Public Enum StatusMapOpType
ND = -1
Startup = 0
PartStart = 1
PartEnd = 2
MachGroupAdd = 3
MachGroupMod = 4
MachGroupRem = 5
MachGroupNeedRedo = 6
MachGroupAssignedToSupervisor = 7
MachGroupRemovedFromSupervisor = 8
SupervisorStopRequest = 9
ViewOptimStoped = 10
SupervisorReleaseStop = 11
ResetPartStart = 12
ResetPartEnd = 13
ChangeProdInSupervisorRequest = 14
ChangeProdInProdRequest = 15
OpenPageInViewOptimRequest = 16
End Enum
Public Enum DimensionType
COLUMN = 0
ROW = 1
End Enum
+73
View File
@@ -0,0 +1,73 @@
Imports System.Collections.ObjectModel
Imports System.Windows
Imports System.Windows.Controls
Imports EgtWPFLib5
Public Class GridDimension
Inherits VMBase
Private Shared m_SoftwareModActive As Boolean = False
Private Property m_GridName As String
Public Property GridName As String
Get
Return m_GridName
End Get
Set(value As String)
m_GridName = value
End Set
End Property
Private Property m_Index As Integer
Public Property Index As Integer
Get
Return m_Index
End Get
Set(value As Integer)
m_Index = value
End Set
End Property
Private Property m_DimType As DimensionType
Public Property DimType As DimensionType
Get
Return m_DimType
End Get
Set(value As DimensionType)
m_DimType = value
End Set
End Property
Private Property m_GridLen As GridLength
Public Property GridLen As GridLength
Get
Return m_GridLen
End Get
Set(value As GridLength)
m_GridLen = value
If Not m_SoftwareModActive Then DimensionsIniFile.SaveGridDimensions(GridName, GridDimensions)
End Set
End Property
Private Property m_GridDimensions As ObservableCollection(Of GridDimension)
Public Property GridDimensions As ObservableCollection(Of GridDimension)
Get
Return m_GridDimensions
End Get
Set(value As ObservableCollection(Of GridDimension))
m_GridDimensions = value
End Set
End Property
Sub New(GridName As String, Index As Integer, DimType As DimensionType, GridLen As GridLength)
m_GridName = GridName
m_Index = Index
m_DimType = DimType
m_GridLen = GridLen
End Sub
Public Shared Sub SetSoftwareMod(bActive As Boolean)
m_SoftwareModActive = bActive
End Sub
End Class
@@ -147,7 +147,7 @@
Public Shared Function CreateReadLog(CommandExecutedCorrectly As Boolean, VarAddress As String, VarValue As String)
Dim NewMachLog As New MachLog
NewMachLog.m_CommandType = CommandTypes.READ
NewMachLog.m_CommandType = CommandTypes.READ_TPA
NewMachLog.m_CommandExecutedCorrectly = CommandExecutedCorrectly
NewMachLog.m_VarAddress = VarAddress
NewMachLog.m_VarValue = VarValue
+81
View File
@@ -0,0 +1,81 @@
Imports EgtUILib
Public Module ManageView
' Tipo di progetto aperto
Private m_Type As BWType
' Per macchine pareti:
' Posizione vista
Private m_nViewDir As VT
Public Function BWSetView(nView As VT, Optional bRedraw As Boolean = True)
' condizioni che cambiano la vista del progetto
Select Case m_Type
Case BWType.BEAM
EgtSetView(VT.ISO_SW, bRedraw)
Case BWType.WALL
Select Case nView
Case VT.TOP
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(0, -90, bRedraw) ' equivalente a vista TOP
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(0, 90, bRedraw) ' equivalente a vista TOP ruotata di 180 su Z
End Select
Case VT.FRONT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(90, -90, bRedraw) ' equivalente a vista FRONT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(90, 90, bRedraw) ' equivalente a vista FRONT ruotata di 180 su Z
End Select
Case VT.BACK
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(-90, -90, bRedraw) ' equivalente a vista BACK
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(-90, 90, bRedraw) ' equivalente a vista BACK ruotata di 180 su Z
End Select
Case VT.RIGHT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista RIGHT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista RIGHT ruotata di 180 su Z
End Select
Case VT.LEFT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista RIGHT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista RIGHT ruotata di 180 su Z
End Select
Case VT.ISO_SW
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
End Select
Case Else ' VT.ISO_SW
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
End Select
End Select
End Select
End Function
Public Sub UpdateMachParam(ViewDir As Integer)
m_nViewDir = ViewDir
End Sub
Public Sub UpdateBWType(Type As BWType)
m_Type = Type
End Sub
End Module
+57
View File
@@ -0,0 +1,57 @@
Imports System.Runtime.InteropServices
Public Module ManageWindow
<DllImport("user32.dll")>
Public Function FindWindow(ByVal className As String, ByVal windowTitle As String) As IntPtr
End Function
<DllImport("user32.dll")>
Private Function ShowWindow(ByVal hWnd As IntPtr, ByVal flags As ShowWindowEnum) As Boolean
End Function
<DllImport("user32.dll")>
Private Function SetForegroundWindow(ByVal hwnd As IntPtr) As Integer
End Function
<DllImport("user32.dll")>
Private Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As Windowplacement) As Boolean
End Function
Private Enum ShowWindowEnum
Hide = 0
ShowNormal = 1
ShowMinimized = 2
ShowMaximized = 3
Maximize = 3
ShowNormalNoActivate = 4
Show = 5
Minimize = 6
ShowMinNoActivate = 7
ShowNoActivate = 8
Restore = 9
ShowDefault = 10
ForceMinimized = 11
End Enum
Private Structure Windowplacement
Public length As Integer
Public flags As Integer
Public showCmd As Integer
Public ptMinPosition As System.Drawing.Point
Public ptMaxPosition As System.Drawing.Point
Public rcNormalPosition As System.Drawing.Rectangle
End Structure
Public Sub BringWindowToFront(wdwIntPtr As IntPtr)
'Dim wdwIntPtr As IntPtr = FindWindow(Nothing, "0016 - EgtBEAMWALL")
Dim placement As Windowplacement = New Windowplacement()
GetWindowPlacement(wdwIntPtr, placement)
' se minimizzata
If placement.showCmd = 2 Then
' riporto in vista non minimizzata
ShowWindow(wdwIntPtr, ShowWindowEnum.Restore)
End If
' porto avanti la finestra rendendola quella attiva
SetForegroundWindow(wdwIntPtr)
End Sub
End Module
@@ -5,8 +5,13 @@ Imports EgtWPFLib5
Public Class SectionXMaterial
Inherits VMBase
Private Shared m_nType As MachineType
Public Shared Sub SetType(nType As MachineType)
Private Shared m_nType As BWType
Public Shared ReadOnly Property nType As BWType
Get
Return m_nType
End Get
End Property
Public Shared Sub SetType(nType As BWType)
m_nType = nType
End Sub
@@ -77,9 +82,9 @@ Public Class SectionXMaterial
End Property
Shared Operator =(ByVal S1 As SectionXMaterial, ByVal S2 As SectionXMaterial) As Boolean
Return (S1.m_dH < S2.m_dH + 100 * EPS_SMALL AndAlso S1.m_dH > S2.m_dH - 100 * EPS_SMALL AndAlso
S1.m_dW < S2.m_dW + 100 * EPS_SMALL AndAlso S1.m_dW > S2.m_dW - 100 * EPS_SMALL AndAlso
S1.m_dL < S2.m_dL + 100 * EPS_SMALL AndAlso S1.m_dL > S2.m_dL - 100 * EPS_SMALL AndAlso
Return (Math.Abs( S1.m_dH - S2.m_dH) < 100 * EPS_SMALL AndAlso
Math.Abs( S1.m_dW - S2.m_dW) < 100 * EPS_SMALL AndAlso
Math.Abs( S1.m_dL - S2.m_dL) < 100 * EPS_SMALL AndAlso
S1.m_Material.Any(Function(x) S2.m_Material.Any(Function(y) y = x)))
End Operator
@@ -95,10 +100,10 @@ Public Class SectionXMaterial
End Function
Sub New(dW As Double, dH As Double, dL As Double, sMaterial As String)
If m_nType = MachineType.BEAM Then
If m_nType = BWType.BEAM Then
m_dW = dW
m_dH = dH
ElseIf m_nType = MachineType.WALL Then
ElseIf m_nType = BWType.WALL Then
m_dH = dH
Else
m_dW = dW
@@ -136,6 +141,16 @@ Public Class SectionXMaterial
End Set
End Property
Private m_nQuantity As Integer
Public Property nQuantity As Integer
Get
Return m_nQuantity
End Get
Set(value As Integer)
m_nQuantity = value
End Set
End Property
Private m_Alias_IsEnabled As Boolean
Public Property Alias_IsEnabled As Boolean
Get
@@ -147,65 +162,12 @@ Public Class SectionXMaterial
End Property
Private m_Alias_IsChecked As Boolean
Public Property Alias_IsChecked As Boolean
Public Overridable Property Alias_IsChecked As Boolean
Get
Return m_Alias_IsChecked
End Get
Set(value As Boolean)
m_Alias_IsChecked = value
If value Then
NewBeam_Visibility = Visibility.Collapsed
NewWall_Visibility = Visibility.Collapsed
Alias_Visibility = Visibility.Visible
Else
If m_nType = MachineType.BEAM Then
NewBeam_Visibility = Visibility.Visible
NewWall_Visibility = Visibility.Collapsed
Else
NewBeam_Visibility = Visibility.Collapsed
NewWall_Visibility = Visibility.Visible
End If
Alias_Visibility = Visibility.Collapsed
End If
End Set
End Property
Private m_NewBeam_Visibility As Visibility
Public Property NewBeam_Visibility As Visibility
Get
Return m_NewBeam_Visibility
End Get
Set(value As Visibility)
If value <> m_NewBeam_Visibility Then
m_NewBeam_Visibility = value
NotifyPropertyChanged("NewBeam_Visibility")
End If
End Set
End Property
Private m_NewWall_Visibility As Visibility
Public Property NewWall_Visibility As Visibility
Get
Return m_NewWall_Visibility
End Get
Set(value As Visibility)
If value <> m_NewWall_Visibility Then
m_NewWall_Visibility = value
NotifyPropertyChanged("NewWall_Visibility")
End If
End Set
End Property
Private m_Alias_Visibility As Visibility
Public Property Alias_Visibility As Visibility
Get
Return m_Alias_Visibility
End Get
Set(value As Visibility)
If value <> m_Alias_Visibility Then
m_Alias_Visibility = value
NotifyPropertyChanged("Alias_Visibility")
End If
End Set
End Property
@@ -227,6 +189,31 @@ Public Class SectionXMaterial
End Get
End Property
Public ReadOnly Property Quantity_Msg As String
Get
Return EgtMsg(61774)
End Get
End Property
Sub New(dW As Double, dH As Double, dL As Double, sMaterial As String, nQuantity As Integer)
If m_nType = BWType.BEAM Then
m_dW = dW
m_dH = dH
ElseIf m_nType = BWType.WALL Then
m_dH = dH
Else
m_dW = dW
m_dH = dH
m_dL = dL
End If
m_Material = New List(Of String)
Dim sMaterialArray() As String = Split(sMaterial, ";")
For Each sMatItem In sMaterialArray
m_Material.Add(sMatItem)
Next
m_nQuantity = nQuantity
End Sub
#End Region ' Import BTL <-> Warehouse
End Class
-12
View File
@@ -1,12 +0,0 @@
Imports System.ComponentModel
Public Class VMBase
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
@@ -0,0 +1,44 @@
<EgtFloating:EgtFloatingPanel x:Class="ViewPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5"
IsTopDockable="True" IsBottomDockable="False" IsLeftDockable="False"
IsRightDockable="False" Style="{StaticResource ToolBar_EgtFloatingPanel}">
<Button ToolTip="{Binding ZoomAllToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding ZoomAllCommand}">
<Image Source="/Resources/ViewPanel/ZoomAll.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromTopToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding TopViewCommand}">
<Image Source="/Resources/ViewPanel/LookFromTOP.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromFrontToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding FrontViewCommand}">
<Image Source="/Resources/ViewPanel/LookFromFRONT.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromRightToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding RightViewCommand}">
<Image Source="/Resources/ViewPanel/LookFromRIGHT.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromBackToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding BackViewCommand}">
<Image Source="/Resources/ViewPanel/LookFromBACK.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromLeftToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding LeftViewCommand}">
<Image Source="/Resources/ViewPanel/LookFromLEFT.png" Stretch="Uniform"/>
</Button>
<Button ToolTip="{Binding LookFromIso_SWToolTip}"
Style="{StaticResource ToolBar_Button}"
Command="{Binding IsoViewSWCommand}">
<Image Source="/Resources/ViewPanel/LookFromISO_SW.png" Stretch="Uniform"/>
</Button>
</EgtFloating:EgtFloatingPanel>
@@ -0,0 +1,3 @@
Public Class ViewPanelV
End Class
+265
View File
@@ -0,0 +1,265 @@
Imports EgtBEAMWALL.Core.ConstBeam
Imports EgtUILib
Public Class ViewPanelVM
Inherits EgtWPFLib5.ViewPanelVM
' Tipo di progetto aperto
Private Shared m_Type As BWType
Public Shared ReadOnly Property Type As BWType
Get
Return m_Type
End Get
End Property
' Posizione vista
Private Shared m_nViewDir As VT = VT.ISO_SW
Public Shared Function BWSetView(nView As VT, Optional bRedraw As Boolean = True)
' condizioni che cambiano la vista del progetto
Select Case m_Type
Case BWType.BEAM
Select Case nView
Case VT.TOP
EgtSetView(VT.TOP, bRedraw)
Case VT.FRONT
EgtSetView(VT.FRONT, bRedraw)
Case VT.BACK
EgtSetView(VT.BACK, bRedraw)
Case VT.RIGHT
EgtSetView(VT.RIGHT, bRedraw)
Case VT.LEFT
EgtSetView(VT.LEFT, bRedraw)
Case VT.ISO_SW
EgtSetView(VT.ISO_SW, bRedraw)
Case Else ' VT.ISO_SW
EgtSetView(VT.ISO_SW, bRedraw)
End Select
Case BWType.WALL
Select Case nView
Case VT.TOP
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(0, -90, bRedraw) ' equivalente a vista TOP
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(0, 90, bRedraw) ' equivalente a vista TOP ruotata di 180 su Z
End Select
Case VT.FRONT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(90, -90, bRedraw) ' equivalente a vista FRONT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(90, 90, bRedraw) ' equivalente a vista FRONT ruotata di 180 su Z
End Select
Case VT.BACK
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(-90, -90, bRedraw) ' equivalente a vista BACK
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(-90, 90, bRedraw) ' equivalente a vista BACK ruotata di 180 su Z
End Select
Case VT.RIGHT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista RIGHT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista RIGHT ruotata di 180 su Z
End Select
Case VT.LEFT
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista LEFT
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista LEFT ruotata di 180 su Z
End Select
Case VT.ISO_SW
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
End Select
Case Else ' VT.ISO_SW
Select Case m_nViewDir
Case VT.ISO_SW, VT.ISO_SE
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
Case VT.ISO_NW, VT.ISO_NE
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
End Select
End Select
End Select
End Function
Public Shared Sub UpdateMachParam(ViewDir As VT)
m_nViewDir = ViewDir
End Sub
Public Shared Sub UpdateBWType(Type As BWType)
m_Type = Type
End Sub
#Region "COMMANDS"
#Region "TopViewCommand"
''' <summary>
''' Execute the TopView. This method is invoked by the TopViewCommand.
''' </summary>
Public Overrides Sub TopView(ByVal param As Object)
ViewPanelVM.BWSetView(VT.TOP, True)
End Sub
#End Region ' TopViewCommand
#Region "FrontViewCommand"
''' <summary>
''' Execute the FrontView. This method is invoked by the FrontViewCommand.
''' </summary>
Public Overrides Sub FrontView(ByVal param As Object)
ViewPanelVM.BWSetView(VT.FRONT, True)
End Sub
#End Region ' FrontViewCommand
#Region "LeftViewCommand"
''' <summary>
''' Execute the LeftView. This method is invoked by the LeftViewCommand.
''' </summary>
Public Overrides Sub LeftView(ByVal param As Object)
ViewPanelVM.BWSetView(VT.LEFT, True)
End Sub
#End Region ' LeftViewCommand
#Region "BackViewCommand"
''' <summary>
''' Execute the BackView. This method is invoked by the BackViewCommand.
''' </summary>
Public Overrides Sub BackView(ByVal param As Object)
ViewPanelVM.BWSetView(VT.BACK, True)
End Sub
#End Region ' BackViewCommand
#Region "RightViewCommand"
''' <summary>
''' Execute the RightView. This method is invoked by the RightViewCommand.
''' </summary>
Public Overrides Sub RightView(ByVal param As Object)
ViewPanelVM.BWSetView(VT.RIGHT, True)
End Sub
#End Region ' RightViewCommand
'#Region "IsoViewSECommand"
' ''' <summary>
' ''' Returns a command that do IsoViewSE.
' ''' </summary>
' Public ReadOnly Property IsoViewSECommand As ICommand
' Get
' If m_cmdIsoViewSE Is Nothing Then
' m_cmdIsoViewSE = New Command(AddressOf IsoViewSE)
' End If
' Return m_cmdIsoViewSE
' End Get
' End Property
' ''' <summary>
' ''' Execute the IsoViewSE. This method is invoked by the IsoViewSECommand.
' ''' </summary>
' Public Sub IsoViewSE(ByVal param As Object)
' LibMap.refSceneHostVM.MainScene.IsoViewSE()
' End Sub
'#End Region ' IsoViewSECommand
#Region "IsoViewSWCommand"
''' <summary>
''' Execute the IsoViewSW. This method is invoked by the IsoViewSWCommand.
''' </summary>
Public Overrides Sub IsoViewSW(ByVal param As Object)
ViewPanelVM.BWSetView(VT.ISO_SW, True)
End Sub
#End Region ' IsoViewSWCommand
'#Region "IsoViewNECommand"
' ''' <summary>
' ''' Returns a command that do IsoViewNE.
' ''' </summary>
' Public ReadOnly Property IsoViewNECommand As ICommand
' Get
' If m_cmdIsoViewNE Is Nothing Then
' m_cmdIsoViewNE = New Command(AddressOf IsoViewNE)
' End If
' Return m_cmdIsoViewNE
' End Get
' End Property
' ''' <summary>
' ''' Execute the IsoViewNE. This method is invoked by the IsoViewNECommand.
' ''' </summary>
' Public Sub IsoViewNE(ByVal param As Object)
' LibMap.refSceneHostVM.MainScene.IsoViewNE()
' End Sub
'#End Region ' IsoViewNECommand
'#Region "IsoViewNWCommand"
' ''' <summary>
' ''' Returns a command that do IsoViewNW.
' ''' </summary>
' Public ReadOnly Property IsoViewNWCommand As ICommand
' Get
' If m_cmdIsoViewNW Is Nothing Then
' m_cmdIsoViewNW = New Command(AddressOf IsoViewNW)
' End If
' Return m_cmdIsoViewNW
' End Get
' End Property
' ''' <summary>
' ''' Execute the IsoViewNW. This method is invoked by the IsoViewNWCommand.
' ''' </summary>
' Public Sub IsoViewNW(ByVal param As Object)
' LibMap.refSceneHostVM.MainScene.IsoViewNW()
' End Sub
'#End Region ' IsoViewNWCommand
'#Region "ViewToCPlaneCommand"
' ''' <summary>
' ''' Returns a command that do GetDist.
' ''' </summary>
' Public ReadOnly Property ViewToCPlaneCommand As ICommand
' Get
' If m_cmdViewToCPlane Is Nothing Then
' m_cmdViewToCPlane = New Command(AddressOf ViewToCPlane)
' End If
' Return m_cmdViewToCPlane
' End Get
' End Property
' ''' <summary>
' ''' Execute the GetDist. This method is invoked by the GetDistCommand.
' ''' </summary>
' Public Sub ViewToCPlane(ByVal param As Object)
' LibMap.refSceneHostVM.MainScene.CPlaneView()
' End Sub
'#End Region ' ViewToCPlaneCommand
#End Region ' COMMANDS
End Class
+4 -8
View File
@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
@@ -14,9 +12,7 @@
</providers>
</entityFramework>
<connectionStrings>
<add name="DefaultConnection"
connectionString="server=localhost;port=3306;User Id=EgtUser;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none"
providerName="MySql.Data.MySqlClient" />
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=EgtUser;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
@@ -28,6 +24,6 @@
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
@@ -1,8 +1,7 @@
using System;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EgtBEAMWALL.DataLayer.DatabaseModels;
namespace EgtBEAMWALL.DataLayer.Controllers
{
@@ -74,69 +73,70 @@ namespace EgtBEAMWALL.DataLayer.Controllers
// Recupero il PROD
ProdModel currData = ProdController.man.FindByProdId(ProdId);
List<PartModel> PartList2Add = new List<PartModel>();
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
var convCurrMG = MachGroupController.ConvertFromCore(newMachGroup, currData.ProdDbId);
convCurrMG.ProdIndex = 1;
// aggiungo MachGroup
dbCtx.MachGroupList.Add(convCurrMG);
// Commit changes
dbCtx.SaveChanges();
int MachGroupDbId = MachGroupController.man.FindByMachGroupId(ProdId, newMachGroup.Id).MachGroupDbId;
// verifico se uguali o meno...
foreach (var currPartM in newMachGroup.PartMList)
try
{
var currPart = dbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == newMachGroup.Id && x.PartId == currPartM.nPartId)
.SingleOrDefault();
var convCurrPartM = PartController.ConvertFromCore(currPartM, MachGroupDbId);
if (currPart != null)
var convCurrMG = MachGroupController.ConvertFromCore(newMachGroup, currData.ProdDbId);
convCurrMG.ProdIndex = 1;
// aggiungo MachGroup
localDbCtx.MachGroupList.Add(convCurrMG);
// Commit changes
localDbCtx.SaveChanges();
int MachGroupDbId = MachGroupController.man.FindByMachGroupId(ProdId, newMachGroup.Id).MachGroupDbId;
// verifico se uguali o meno...
foreach (var currPartM in newMachGroup.PartMList)
{
// se non identico x equality limitata a ViewOptim...
if (!currPart.ViewOptimEquals(convCurrPartM))
var currPart = localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == newMachGroup.Id && x.PartId == currPartM.nPartId)
.SingleOrDefault();
var convCurrPartM = PartController.ConvertFromCore(currPartM, MachGroupDbId);
if (currPart != null)
{
// aggiorno con nuovi valori ricevuti
currPart.H = convCurrPartM.H;
currPart.L = convCurrPartM.L;
currPart.W = convCurrPartM.W;
currPart.Material = convCurrPartM.Material;
currPart.CALC_State = convCurrPartM.CALC_State;
currPart.ROT = convCurrPartM.ROT;
currPart.PDN = convCurrPartM.PDN;
currPart.NAM = convCurrPartM.NAM;
// salvo
dbCtx.SaveChanges();
// se non identico x equality limitata a ViewOptim...
if (!currPart.ViewOptimEquals(convCurrPartM))
{
// aggiorno con nuovi valori ricevuti
currPart.H = convCurrPartM.H;
currPart.L = convCurrPartM.L;
currPart.W = convCurrPartM.W;
currPart.Material = convCurrPartM.Material;
currPart.CALC_State = convCurrPartM.CALC_State;
currPart.ROT = convCurrPartM.ROT;
currPart.PDN = convCurrPartM.PDN;
currPart.NAM = convCurrPartM.NAM;
// salvo
localDbCtx.SaveChanges();
}
}
else
{
PartList2Add.Add(convCurrPartM);
}
}
else
{
PartList2Add.Add(convCurrPartM);
}
// aggiungo PartList
localDbCtx.PartList.AddRange(PartList2Add);
// Commit changes
localDbCtx.SaveChanges();
// aggiorno valore isNew a false x PROD
currData.IsNew = false;
// Commit changes
localDbCtx.SaveChanges();
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, newMachGroup.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateMachGroup: {exc}");
}
// aggiungo PartList
dbCtx.PartList.AddRange(PartList2Add);
// Commit changes
dbCtx.SaveChanges();
// aggiorno valore isNew a false x PROD
currData.IsNew = false;
// Commit changes
dbCtx.SaveChanges();
ResetController();
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, newMachGroup.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateMachGroup: {exc}");
}
return currData;
}
@@ -150,19 +150,20 @@ namespace EgtBEAMWALL.DataLayer.Controllers
{
MachGroupModel newMachGroup = new MachGroupModel() { MachGroupId = newMachGroupId, Name = Name, State = Core.ItemState.ND };
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// Add to database
dbCtx.MachGroupList.Add(newMachGroup);
// Commit changes
dbCtx.SaveChanges();
ResetController();
try
{
// Add to database
localDbCtx.MachGroupList.Add(newMachGroup);
// Commit changes
localDbCtx.SaveChanges();
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Create: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Create: {exc}");
}
return newMachGroup;
}
@@ -175,35 +176,40 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool Delete(int ProdId, int MachGroupId)
{
bool done = false;
// inizio eliminando le part
var parts2del = dbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId)
.ToList();
var MG2Del = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.SingleOrDefault();
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// Remove to database
dbCtx.PartList.RemoveRange(parts2del);
dbCtx.MachGroupList.Remove(MG2Del);
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId}{Environment.NewLine}{exc}");
}
// inizio eliminando le part
var parts2del = localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId)
.ToList();
// se fatto aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
var MG2Del = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.SingleOrDefault();
try
{
// Remove to database
localDbCtx.PartList.RemoveRange(parts2del);
localDbCtx.MachGroupList.Remove(MG2Del);
// Commit changes
localDbCtx.SaveChanges();
// registro modifica StatusMap
StatusMapController.man.UpdateAction(MG2Del.SupervisorId, ProdId, MG2Del.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
done = true;
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId}{Environment.NewLine}{exc}");
}
// se fatto aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
}
return done;
}
@@ -233,10 +239,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// <returns></returns>
public MachGroupModel FindByMachGroupId(int ProdId, int MachGroupId)
{
return dbCtx
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
return localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.SingleOrDefault();
}
}
/// <summary>
@@ -321,6 +331,77 @@ namespace EgtBEAMWALL.DataLayer.Controllers
.ToList();
}
/// <summary>
/// Set ProdIndex for MachGroup
/// </summary>
/// <param name="ProdId"></param>
/// <returns></returns>
public int GetMinIndex(int ProdId)
{
int answ = 5000;
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
try
{
// aggiorno
var result = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.ProdIndex >= 5000 && x.ProdIndex < 10000)
.OrderByDescending(x => x.ProdIndex)
.FirstOrDefault();
if (result != null)
{
answ = result.ProdIndex;
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateOrder: {exc}");
}
}
return answ;
}
/// <summary>
/// Imposta a RIMOSSA dal supervisore
/// </summary>
/// <param name="MachGroupId"></param>
/// <param name="newState"></param>
/// <returns></returns>
public bool RemoveFromSupervisor(int ProdId, int MachGroupId)
{
bool done = false;
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
try
{
// aggiorno
var currRecord = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
if (currRecord != null)
{
currRecord.State = Core.ItemState.ND;
currRecord.SupervisorId = "";
currRecord.ProdIndex = 0;
}
// Commit changes
localDbCtx.SaveChanges();
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRemovedFromSupervisor, "");
done = true;
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on RemoveFromSupervisor: {exc}");
}
}
return done;
}
/// <summary>
/// Reinizializzaizone del controller
/// </summary>
@@ -340,26 +421,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool SetNeedRedo(int ProdId, int MachGroupId, Core.ItemState newState, string Value)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.State = newState;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupNeedRedo, Value);
try
{
// aggiorno
localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.State = newState;
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupNeedRedo, Value);
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
return done;
}
@@ -371,25 +453,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool Update(MachGroupModel updItem)
{
bool done = false;
var item2update = dbCtx
.MachGroupList
.Where(x => x.MachGroupDbId == updItem.MachGroupDbId)
.SingleOrDefault();
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
var item2update = localDbCtx
.MachGroupList
.Where(x => x.MachGroupDbId == updItem.MachGroupDbId)
.SingleOrDefault();
try
{
// update, vers 1...
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", updItem.Prod.ProdId, updItem.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Update: {exc}");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", updItem.Prod.ProdId, updItem.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on Update: {exc}");
}
}
return done;
}
@@ -404,28 +488,30 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateEnd(int ProdId, int MachGroupId, DateTime DtEnd)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
var currRecord = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
try
{
// aggiorno
var currRecord = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
currRecord.DtEnd = DtEnd;
currRecord.DtEnd = DtEnd;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
return done;
}
@@ -439,26 +525,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateOrder(int ProdId, int MachGroupId, int newProdIndex)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.ProdIndex = newProdIndex;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateOrder: {exc}");
}
try
{
// aggiorno
localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.ProdIndex = newProdIndex;
// Commit changes
localDbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateOrder: {exc}");
}
}
return done;
}
@@ -473,28 +559,30 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateStart(int ProdId, int MachGroupId, DateTime DtStart)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
var currRecord = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
try
{
// aggiorno
var currRecord = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
currRecord.DtStart = DtStart;
currRecord.DtStart = DtStart;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
return done;
}
@@ -509,29 +597,30 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateStartEnd(int ProdId, int MachGroupId, DateTime DtStart, DateTime DtEnd)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
var currRecord = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
try
{
// aggiorno
var currRecord = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
currRecord.DtStart = DtStart;
currRecord.DtEnd = DtEnd;
currRecord.DtStart = DtStart;
currRecord.DtEnd = DtEnd;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
}
return done;
}
@@ -544,26 +633,28 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateStatus(int ProdId, int MachGroupId, Core.ItemState newState)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.State = newState;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
try
{
// aggiorno
localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault()
.State = newState;
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
}
return done;
}
@@ -577,29 +668,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateSupervisor(int ProdId, int MachGroupId, string SupervisorId)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
var currRecord = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
try
{
// aggiorno
var currRecord = localDbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == MachGroupId)
.FirstOrDefault();
currRecord.SupervisorId = SupervisorId;
currRecord.State = Core.ItemState.Assigned;
currRecord.SupervisorId = SupervisorId;
currRecord.State = Core.ItemState.Assigned;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAssignedToSupervisor, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateSupervisor: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateSupervisor: {exc}");
}
return done;
}
@@ -120,7 +120,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
PDN = corePart.nPDN,
BTLPartDbId = BTLPartId,
MachGroupDbId = currMachGroupDbId,
State = Core.ItemState.Assigned,
State = corePart.nProductionState,
NAM = corePart.sNAM,
W = corePart.dW,
L = corePart.dL,
@@ -252,12 +252,17 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// </summary>
/// <param name="PartId"></param>
/// <returns></returns>
public PartModel FindByPartId(int PartId)
public PartModel FindByPartId(int ProdId, int PartId)
{
return dbCtx
.PartList
.Where(x => x.PartId == PartId)
.SingleOrDefault();
PartModel answ = null;
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
answ = localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.PartId == PartId)
.FirstOrDefault();
}
return answ;
}
/// <summary>
@@ -277,28 +282,30 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool Update(PartModel updItem)
{
bool done = false;
var item2update = dbCtx
.PartList
.Where(x => x.PartDbId == updItem.PartDbId)
.SingleOrDefault();
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
var item2update = localDbCtx
.PartList
.Where(x => x.PartDbId == updItem.PartDbId)
.SingleOrDefault();
try
{
// update, vers 1...
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
//// update, vers 2
//dbCtx.PartList.Remove(item2del);
//dbCtx.PartList.Add(updItem);
//// update, vers 2
//dbCtx.PartList.Remove(item2del);
//dbCtx.PartList.Add(updItem);
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.MachGroup.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
}
catch
{ }
}
catch
{ }
return done;
}
@@ -311,26 +318,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateEnd(int ProdId, int MachGroupId, int PartId, DateTime DtEnd)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.DtEnd = DtEnd;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.PartEnd, "");
try
{
// aggiorno
localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.DtEnd = DtEnd;
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
return done;
}
@@ -343,24 +351,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateStart(int ProdId, int MachGroupId, int PartId, DateTime DtStart)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.DtStart = DtStart;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.PartStart, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
try
{
// aggiorno
localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.DtStart = DtStart;
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
}
return done;
@@ -375,24 +385,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool UpdateStatus(int ProdId, int MachGroupId, int PartId, Core.ItemState newState)
{
bool done = false;
try
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// aggiorno
dbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.State = newState;
// Commit changes
dbCtx.SaveChanges();
ResetController();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
try
{
// aggiorno
localDbCtx
.PartList
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
.FirstOrDefault()
.State = newState;
// Commit changes
localDbCtx.SaveChanges();
done = true;
// aggiorno info sullo status
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
}
}
return done;
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using static EgtBEAMWALL.Core.ConstBeam;
namespace EgtBEAMWALL.DataLayer.Controllers
{
@@ -32,6 +33,17 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#region Protected Methods
/// <summary>
/// Helper conversione modelli
/// </summary>
/// <param name="currProd"></param>
/// <returns></returns>
protected Core.ProdFileM coreConv(ProdModel currProd)
{
Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine);
return answ;
}
/// <summary>
/// Get LAST paginated data from DB (DESC ordered)
/// </summary>
@@ -199,8 +211,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public Core.ProdFileM FindCoreByProdId(int ProdId)
{
var currProd = FindByProdId(ProdId);
return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description);
if (currProd == null)
{
return null;
}
return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine);
}
/// <summary>
@@ -213,7 +228,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
List<Core.ProdFileM> result = new List<Core.ProdFileM>();
var dbResult = GetLastDbModelDesc(numRecord);
// conversione
result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description)).ToList();
result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description, x.PType, x.Machine)).ToList();
return result;
}
@@ -320,6 +335,38 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return currProd;
}
/// <summary>
/// Return Lock by ProdId (proj & prod)
/// </summary>
/// <param name="ProdId">ProjID</param>
/// <returns></returns>
public bool IsLockByProdId(int ProdId)
{
// seleziono il prod...
var currProd = dbCtx
.ProdList
.Where(x => x.ProdId == ProdId)
.FirstOrDefault();
var bIsLock = false;
if (currProd != null)
{
bIsLock = currProd.Locked;
var currProj = dbCtx
.ProjList
.Where(x => x.ProdDbId == currProd.ProdDbId)
.ToList();
if (currProj != null && !bIsLock)
{
bIsLock = currProj.Any(x => x.Locked);
}
}
return bIsLock;
}
/// <summary>
/// Reinizializzaizone del controller
/// </summary>
@@ -378,15 +425,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers
{
// preparo elenco
List<MachGroupModel> itemsMG2Add = new List<MachGroupModel>();
List<Core.MyMachGroupM> MachGroupList2Add = new List<Core.MyMachGroupM>();
List<PartModel> PartList2Add = new List<PartModel>();
// cerco le MG esistenti --> aggiorno
foreach (var item in MachGroupList)
{
#if false
var currMG = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == item.Id)
.SingleOrDefault();
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == item.Id)
.SingleOrDefault();
#endif
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
var convCurrMG = MachGroupController.ConvertFromCore(item, currData.ProdDbId);
if (currMG != null)
{
@@ -401,11 +452,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
currMG.Name = convCurrMG.Name;
// salvo
dbCtx.SaveChanges();
// registro modifica StatusMap
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
}
else
{
itemsMG2Add.Add(convCurrMG);
// registro modifica StatusMap
StatusMapController.man.UpdateAction("", ProdId, item.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
}
}
// aggiungo MachGroup
@@ -416,7 +471,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
// verifico di nuovo l'elenco delle MG x le relative PART...
foreach (var item in MachGroupList)
{
int MachGroupDbId = MachGroupController.man.FindByMachGroupId(ProdId, item.Id).MachGroupDbId;
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
int MachGroupDbId = currMG.MachGroupDbId;
bool modMg = false;
// verifico se uguali o meno...
foreach (var currPartM in item.PartMList)
{
@@ -441,13 +498,20 @@ namespace EgtBEAMWALL.DataLayer.Controllers
currPart.NAM = convCurrPartM.NAM;
// salvo
dbCtx.SaveChanges();
modMg = true;
}
}
else
{
PartList2Add.Add(convCurrPartM);
modMg = true;
}
}
// verifico se salvare...
if (modMg)
{
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
}
}
// aggiungo PartList
@@ -455,6 +519,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers
// Commit changes
dbCtx.SaveChanges();
// sel dei MachGroup da prod OLD
List<MachGroupModel> itemsMGOld = dbCtx
.MachGroupList
.Where(x => x.Prod.ProdId == ProdId)
.ToList();
// elenco degli ID del MachGroup NON trovati
List<int> MgId2rem = itemsMGOld.Select(x => x.MachGroupId).Except(MachGroupList.Select(y => y.Id)).ToList();
// processo i MachGroup eliminati
foreach (var item in MgId2rem)
{
MachGroupController.man.Delete(ProdId, item);
}
// aggiorno valore isNew a false x PROD
currData.IsNew = false;
@@ -470,6 +547,44 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return currData;
}
/// <summary>
/// Update record su DB x PType
/// </summary>
/// <param name="ProdId"></param>
/// <param name="PType"></param>
/// <returns></returns>
public Core.ProdFileM UpdatePType(int ProdId, BWType PType)
{
var currData = FindByProdId(ProdId);
// aggiorno valore BTL
currData.PType = PType;
// Commit changes
dbCtx.SaveChanges();
ResetController();
return coreConv(currData);
}
/// <summary>
/// Update record su DB x PType
/// </summary>
/// <param name="ProdId"></param>
/// <param name="Machine"></param>
/// <returns></returns>
public Core.ProdFileM UpdateMachine(int ProdId, String Machine)
{
var currData = FindByProdId(ProdId);
// aggiorno valore BTL
currData.Machine = Machine;
// Commit changes
dbCtx.SaveChanges();
ResetController();
return coreConv(currData);
}
#endregion Public Methods
}
}
@@ -1,8 +1,9 @@
using System;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using static EgtBEAMWALL.Core.ConstBeam;
namespace EgtBEAMWALL.DataLayer.Controllers
{
@@ -33,7 +34,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// <returns></returns>
protected Core.ProjFileM coreConv(ProjModel currProj)
{
Core.ProjFileM answ = Core.ProjFileM.CreateProjFileM(currProj.ProjId, ProdIdByProdDbId(currProj.ProdDbId), currProj.DtCreated, currProj.DtExported, currProj.ListName, currProj.BTLFileName, currProj.IsNew, currProj.Locked);
Core.ProjFileM answ = null;
if (currProj != null)
{
answ = Core.ProjFileM.CreateProjFileM(currProj.ProjId, ProdIdByProdDbId(currProj.ProdDbId), currProj.DtCreated, currProj.DtExported, currProj.ListName, currProj.BTLFileName, currProj.IsNew, currProj.Locked, currProj.PType, currProj.Machine);
}
return answ;
}
@@ -85,6 +90,32 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#region Public Methods
/// <summary>
/// Search for already imported BTL from FileName (only)
/// =0 : NOT found
/// >0 : ProjId (already rpesent) for overwrite
/// </summary>
/// <param name="BTLFileName"></param>
/// <returns></returns>
public int AlreadyImported(string BTLFileName)
{
int answ = 0;
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
var dbResult = localDbCtx
.ProjList
.Where(x => x.BTLFileName == BTLFileName)
.FirstOrDefault();
//se avesse trovato-- > riporto id...
if (dbResult != null && dbResult.ProjId > 0)
{
answ = dbResult.ProjId;
}
}
return answ;
}
public bool DeleteProj(int ProjId)
{
bool done = false;
@@ -119,6 +150,51 @@ namespace EgtBEAMWALL.DataLayer.Controllers
dbCtx.Dispose();
}
/// <summary>
/// Get records filtered by BtlPartName matching regexp BtlFileName[_number]
/// </summary>
/// <param name="BtlFileName">Base name to search for (=starts by BtlFileName%)</param>
/// <returns></returns>
public List<ProjModel> FindByBtlFileName(string BtlFileName)
{
List<ProjModel> searchResult = new List<ProjModel>();
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// in primi cerco il record "parent" generale, se non ci fosse inutile proseguire...
ProjModel parentRec = localDbCtx
.ProjList
.Where(x => x.BTLFileName == BtlFileName)
.FirstOrDefault();
if (parentRec != null && parentRec.ProjId > 0)
{
// inserisco nei risultati
searchResult.Add(parentRec);
// cerco eventuali dati "child" puliti
var childRec = localDbCtx
.ProjList
.Where(x => x.BTLFileName.StartsWith(BtlFileName+"_"))
.ToList();
// faccio filtro con ricerca regexp x scartare "falsi positivi" come BtlFileName_nonNumero...
if (childRec.Count > 0)
{
// ciclo nei risultati x verificare se si tratti di PURO NUMERO...
foreach (var item in childRec)
{
string maybeNumber = item.BTLFileName.Replace($"{BtlFileName}_", "");
int index = 0;
bool isNumber = int.TryParse(maybeNumber, out index);
if (isNumber)
{
searchResult.Add(item);
}
}
}
}
}
return searchResult;
}
/// <summary>
/// Get record by ProjDbId
/// </summary>
@@ -237,6 +313,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return answ;
}
/// <summary>
/// Restitusice conteggio di item (dato BtlPartId) nello stato richiesto per il project richeisto...
/// </summary>
/// <param name="ProjId">Id progetto</param>
/// <param name="BtlPartId">Id BTL Part</param>
/// <param name="StateReq">Stato richeisto (enum Core)</param>
/// <returns></returns>
public int getCountItemState(int ProjId, int BtlPartId, Core.ItemState StateReq)
{
int numItem = 0;
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
numItem = localDbCtx
.PartList
.Where(x => x.BTLPart.PartId == BtlPartId && x.BTLPart.Project.ProjId == ProjId && x.State == StateReq)
.Count();
}
return numItem;
}
/// <summary>
/// Elenco progetti
/// </summary>
@@ -336,7 +432,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
//currProjs.ForEach(x => x.Locked = Locked);
foreach (var item in currProjs)
{
//item.ProdDbId = currProd.ProdDbId;
//item.ProdDbId = currProd.ProdDbId;
item.Locked = Locked;
dbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
}
@@ -388,10 +484,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
bool done = false;
var item2update = dbCtx
.ProjList
.Where(x => x.ProjDbId == updItem.ProjDbId)
.Where(x => x.ProjId == updItem.ProjId)
.SingleOrDefault();
try
{
updItem.ProjDbId = item2update.ProjDbId;
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
@@ -404,7 +501,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
ResetController();
done = true;
}
catch
catch (Exception ex)
{ }
return done;
}
@@ -498,13 +595,49 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// <param name="ListName"></param>
/// <param name="DtExported"></param>
/// <returns></returns>
public Core.ProjFileM UpdateInfo(int ProjId, string BTLFileName, string ListName, DateTime DtExported)
public Core.ProjFileM UpdateInfo(int ProjId, string BTLFileName, string ListName, DateTime DtExported, BWType PType, string Machine)
{
// cerco specifico Proj
var currData = FindByProjId(ProjId);
// 2022.01.24: verifico UNIVOCITA' nel nome del file: SE fosse duplicato --> nuovo nome, nel formato nomeOriginale_idx, dove idx è il contatore libero successivo
var duplicateList = FindByBtlFileName(BTLFileName);
// devo verificare SOLO SE la lista non è vuota
if (duplicateList != null && duplicateList.Count > 0)
{
// se ne ho esattamente 1 nel DB allora DEVE essere il record Parent
if (duplicateList.Count == 1)
{
// verifico se ProjId variato
if (!duplicateList[0].ProjId.Equals(currData.ProjId))
{
// in questo caso ho il PRIMO duplicato
BTLFileName = $"{BTLFileName}_1";
}
}
// se ne ho + di 1 --> so che il maxId interno avrò il valore ULTIMO x prendere il successivo
else
{
var lastRec = duplicateList.OrderByDescending(x => x.ProjDbId).FirstOrDefault();
// cerco indice
string maybeNumber = lastRec.BTLFileName.Replace($"{BTLFileName}_", "");
int index = 0;
bool isNumber = int.TryParse(maybeNumber, out index);
// fasccio comunque verifica sia numerico
if (isNumber)
{
// in questo caso ho il l'ULTIMO duplicato e faccio +1
BTLFileName = $"{BTLFileName}_{index + 1}";
}
}
}
// aggiorno valore BTL
currData.BTLFileName = BTLFileName;
currData.DtExported = DtExported;
currData.ListName = ListName;
currData.PType = PType;
currData.Machine = Machine;
// Commit changes
dbCtx.SaveChanges();
@@ -532,6 +665,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return coreConv(currData);
}
/// <summary>
/// Update record su DB x PType
/// </summary>
/// <param name="ProjId"></param>
/// <param name="Machine"></param>
/// <returns></returns>
public Core.ProjFileM UpdateMachine(int ProjId, String Machine)
{
var currData = FindByProjId(ProjId);
// aggiorno valore BTL
currData.Machine = Machine;
// Commit changes
dbCtx.SaveChanges();
ResetController();
return coreConv(currData);
}
#endregion Public Methods
}
}
@@ -1,8 +1,7 @@
using System;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EgtBEAMWALL.DataLayer.DatabaseModels;
namespace EgtBEAMWALL.DataLayer.Controllers
{
@@ -105,11 +104,12 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// <returns></returns>
public List<StatusMapModel> GetFrom(int minIndex = 0)
{
ResetController();
// retrieve
return dbCtx
.StatusMapList
.Where(x => x.Index >= minIndex)
.OrderByDescending(x => x.Index)
.OrderBy(x => x.Index)
.ToList();
}
@@ -119,12 +119,18 @@ namespace EgtBEAMWALL.DataLayer.Controllers
/// <returns></returns>
public List<StatusMapModel> GetProd()
{
// retrieve
return dbCtx
.StatusMapList
.Where(x => x.ItemType == Core.StatusMapItemType.Prod)
.OrderByDescending(x => x.Index)
.ToList();
List<StatusMapModel> answ = new List<StatusMapModel>();
// Initialize database context
using (DatabaseContext myDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
{
// retrieve
answ = myDbCtx
.StatusMapList
.Where(x => x.ItemType == Core.StatusMapItemType.Prod)
.OrderByDescending(x => x.Index)
.ToList();
}
return answ;
}
/// <summary>
@@ -147,8 +153,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
bool done = false;
DateTime adesso = DateTime.Now;
// svuoto dati precedenti
done = DeleteSession("");
// gestione corretta x multi-supervisors
done = DeleteSession(SupervisorId);
// se ho fatto inserisco nuovo
if (done)
@@ -199,14 +205,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
prodData = dbCtx
.StatusMapList
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.ItemId == ProdId)
.SingleOrDefault();
.FirstOrDefault();
}
else
{
prodData = dbCtx
.StatusMapList
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.Session == Session)
.SingleOrDefault();
.FirstOrDefault();
}
// se ho trovato
if (prodData != null)
@@ -215,16 +221,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
{
// aggiorno indice PROD
prodData.Index++;
// recupero record richiesto
var currRecor = dbCtx
.StatusMapList
.Where(x => x.ItemType == ItemType && x.ItemId == ItemId && x.Session == Session)
.SingleOrDefault();
// aggiorno
currRecor.Index = prodData.Index;
currRecor.Operation = Operation;
currRecor.Val = Value;
// se session è nulla ma ho un PROD --> calcolo da li la sessione
if (string.IsNullOrEmpty(Session))
{
Session = prodData.Session;
}
// creo un nuovo record
DateTime adesso = DateTime.Now;
var newRec = new StatusMapModel() { Session = Session, Index = prodData.Index, ItemId = ItemId, ItemType = ItemType, Operation = Operation, DtEvent = adesso, Val = Value };
dbCtx.StatusMapList.Add(newRec);
// Commit changes
dbCtx.SaveChanges();
+11 -7
View File
@@ -11,7 +11,7 @@ using System.Data.Entity.Infrastructure.MappingViews;
[assembly: DbMappingViewCacheTypeAttribute(
typeof(EgtBEAMWALL.DataLayer.DatabaseContext),
typeof(Edm_EntityMappingGeneratedViews.ViewsForBaseEntitySets2a70b5e578abdbcbb91ea4a5002c25750fd61f2b76495520401ff22a445540d2))]
typeof(Edm_EntityMappingGeneratedViews.ViewsForBaseEntitySets47a6a51e27ee277e915fd1421f83fa2aae50563a874ec88b922716849579f599))]
namespace Edm_EntityMappingGeneratedViews
{
@@ -23,14 +23,14 @@ namespace Edm_EntityMappingGeneratedViews
/// Implements a mapping view cache.
/// </summary>
[GeneratedCode("Entity Framework 6 Power Tools", "0.9.2.0")]
internal sealed class ViewsForBaseEntitySets2a70b5e578abdbcbb91ea4a5002c25750fd61f2b76495520401ff22a445540d2 : DbMappingViewCache
internal sealed class ViewsForBaseEntitySets47a6a51e27ee277e915fd1421f83fa2aae50563a874ec88b922716849579f599 : DbMappingViewCache
{
/// <summary>
/// Gets a hash value computed over the mapping closure.
/// </summary>
public override string MappingHashValue
{
get { return "2a70b5e578abdbcbb91ea4a5002c25750fd61f2b76495520401ff22a445540d2"; }
get { return "47a6a51e27ee277e915fd1421f83fa2aae50563a874ec88b922716849579f599"; }
}
/// <summary>
@@ -166,7 +166,7 @@ namespace Edm_EntityMappingGeneratedViews
{
return new DbMappingView(@"
SELECT VALUE -- Constructing ProjModel
[CodeFirstDatabaseSchema.ProjModel](T1.ProjModel_ProjDbId, T1.ProjModel_BTLFileName, T1.ProjModel_DtCreated, T1.ProjModel_DtExported, T1.ProjModel_IsNew, T1.ProjModel_ListName, T1.ProjModel_Lock, T1.ProjModel_ProdDbId, T1.ProjModel_Id)
[CodeFirstDatabaseSchema.ProjModel](T1.ProjModel_ProjDbId, T1.ProjModel_BTLFileName, T1.ProjModel_DtCreated, T1.ProjModel_DtExported, T1.ProjModel_IsNew, T1.ProjModel_ListName, T1.ProjModel_Lock, T1.ProjModel_ProdDbId, T1.ProjModel_Id, T1.ProjModel_PType)
FROM (
SELECT
T.ProjDbId AS ProjModel_ProjDbId,
@@ -178,6 +178,7 @@ namespace Edm_EntityMappingGeneratedViews
T.Locked AS ProjModel_Lock,
T.ProdDbId AS ProjModel_ProdDbId,
T.ProjId AS ProjModel_Id,
CAST(T.PType AS [Edm.Int32]) AS ProjModel_PType,
True AS _from0
FROM DatabaseContext.ProjList AS T
) AS T1");
@@ -191,7 +192,7 @@ namespace Edm_EntityMappingGeneratedViews
{
return new DbMappingView(@"
SELECT VALUE -- Constructing ProdModel
[CodeFirstDatabaseSchema.ProdModel](T1.ProdModel_ProdDbId, T1.ProdModel_Description, T1.ProdModel_DtCreated, T1.ProdModel_IsNew, T1.ProdModel_Lock, T1.ProdModel_Id)
[CodeFirstDatabaseSchema.ProdModel](T1.ProdModel_ProdDbId, T1.ProdModel_Description, T1.ProdModel_DtCreated, T1.ProdModel_IsNew, T1.ProdModel_Lock, T1.ProdModel_Id, T1.ProdModel_PType)
FROM (
SELECT
T.ProdDbId AS ProdModel_ProdDbId,
@@ -200,6 +201,7 @@ namespace Edm_EntityMappingGeneratedViews
T.IsNew AS ProdModel_IsNew,
T.Locked AS ProdModel_Lock,
T.ProdId AS ProdModel_Id,
CAST(T.PType AS [Edm.Int32]) AS ProdModel_PType,
True AS _from0
FROM DatabaseContext.ProdList AS T
) AS T1");
@@ -304,7 +306,7 @@ namespace Edm_EntityMappingGeneratedViews
{
return new DbMappingView(@"
SELECT VALUE -- Constructing ProjList
[EgtBEAMWALL.DataLayer.ProjModel](T1.ProjModel_ProjDbId, T1.ProjModel_BTLFileName, T1.ProjModel_DtCreated, T1.ProjModel_DtExported, T1.ProjModel_IsNew, T1.ProjModel_ListName, T1.ProjModel_Locked, T1.ProjModel_ProdDbId, T1.ProjModel_ProjId)
[EgtBEAMWALL.DataLayer.ProjModel](T1.ProjModel_ProjDbId, T1.ProjModel_BTLFileName, T1.ProjModel_DtCreated, T1.ProjModel_DtExported, T1.ProjModel_IsNew, T1.ProjModel_ListName, T1.ProjModel_Locked, T1.ProjModel_ProdDbId, T1.ProjModel_ProjId, T1.ProjModel_PType)
FROM (
SELECT
T.ProjDbId AS ProjModel_ProjDbId,
@@ -316,6 +318,7 @@ namespace Edm_EntityMappingGeneratedViews
T.Lock AS ProjModel_Locked,
T.ProdDbId AS ProjModel_ProdDbId,
T.Id AS ProjModel_ProjId,
CAST(T.PType AS [EgtBEAMWALL.DataLayer.BWType]) AS ProjModel_PType,
True AS _from0
FROM CodeFirstDatabase.ProjModel AS T
) AS T1");
@@ -329,7 +332,7 @@ namespace Edm_EntityMappingGeneratedViews
{
return new DbMappingView(@"
SELECT VALUE -- Constructing ProdList
[EgtBEAMWALL.DataLayer.ProdModel](T1.ProdModel_ProdDbId, T1.ProdModel_Description, T1.ProdModel_DtCreated, T1.ProdModel_IsNew, T1.ProdModel_Locked, T1.ProdModel_ProdId)
[EgtBEAMWALL.DataLayer.ProdModel](T1.ProdModel_ProdDbId, T1.ProdModel_Description, T1.ProdModel_DtCreated, T1.ProdModel_IsNew, T1.ProdModel_Locked, T1.ProdModel_ProdId, T1.ProdModel_PType)
FROM (
SELECT
T.ProdDbId AS ProdModel_ProdDbId,
@@ -338,6 +341,7 @@ namespace Edm_EntityMappingGeneratedViews
T.IsNew AS ProdModel_IsNew,
T.Lock AS ProdModel_Locked,
T.Id AS ProdModel_ProdId,
CAST(T.PType AS [EgtBEAMWALL.DataLayer.BWType]) AS ProdModel_PType,
True AS _from0
FROM CodeFirstDatabase.ProdModel AS T
) AS T1");
+3 -11
View File
@@ -28,7 +28,6 @@ namespace EgtBEAMWALL.DataLayer
}
[DbConfigurationType(typeof(MySqlEFConfiguration))]
//[DbConfigurationType(typeof(aMySqlConfiguration))]
public class DatabaseContext : DbContext
{
#region Public Constructors
@@ -40,9 +39,9 @@ namespace EgtBEAMWALL.DataLayer
public DatabaseContext(string connectionString) : base(connectionString)
{
Database.CreateIfNotExists();
//Database.SetInitializer(new MigrateDatabaseToLatestVersion<StratonLocalizerDatabase, Migrations.Configuration>());
Database.Initialize(false);
//Database.CreateIfNotExists();
////Database.SetInitializer(new MigrateDatabaseToLatestVersion<StratonLocalizerDatabase, Migrations.Configuration>());
//Database.Initialize(false);
}
#endregion Public Constructors
@@ -91,13 +90,6 @@ namespace EgtBEAMWALL.DataLayer
#endregion Public Properties
#if false
/// <summary>
/// Db data mode
/// </summary>
public static bool AdvDataModel { get; set; } = false;
#endif
#region Private Methods
private static string getDbServiceName()
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgtBEAMWALL.Core.ConstBeam;
namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
@@ -36,6 +37,12 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Lock")]
public bool Locked { get; set; } = false;
/// <summary>
/// Macchina
/// </summary>
[Column("Machine")]
public string Machine { get; set; } = "";
/// <summary>
/// Chiave univoca DB
/// </summary>
@@ -48,6 +55,11 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Id")]
public int ProdId { get; set; }
/// <summary>
/// Tipologia del progetto (Travi, Pareti, ...)
/// </summary>
public BWType PType { get; set; } = BWType.NULL;
#endregion Public Properties
}
}
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgtBEAMWALL.Core.ConstBeam;
namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
@@ -48,6 +49,12 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Lock")]
public bool Locked { get; set; } = false;
/// <summary>
/// Macchina
/// </summary>
[Column("Machine")]
public string Machine { get; set; } = "";
[ForeignKey("ProdDbId")]
public virtual ProdModel Prod { get; set; }
@@ -60,6 +67,11 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Id")]
public int ProjId { get; set; }
/// <summary>
/// Tipologia del progetto (Travi, Pareti, ...)
/// </summary>
public BWType PType { get; set; } = BWType.NULL;
#endregion Public Properties
}
}
+1 -1
View File
@@ -45,7 +45,7 @@ namespace EgtBEAMWALL.DataLayer
DATABASE_PWD = $"pwd_{sKey}";
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None";
// stringa admin con utente root egalware...
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None";
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None;CHARSET=utf8";
}
public static bool CheckUser(string nKey, string sKey)
@@ -10,7 +10,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EgtBEAMWALL.DataLayer</RootNamespace>
<AssemblyName>EgtBEAMWALL.DataLayer</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
@@ -88,7 +88,6 @@
<Compile Include="Controllers\ProjController.cs" />
<Compile Include="Controllers\BTLPartController.cs" />
<Compile Include="DatabaseContext.cs" />
<Compile Include="DatabaseContext.Views.cs" />
<Compile Include="DatabaseModels\LogSupportModel.cs" />
<Compile Include="DatabaseModels\PartModel.cs" />
<Compile Include="DatabaseModels\BTLPartModel.cs" />
@@ -114,6 +113,14 @@
<Compile Include="Migrations\202105051121209_renameIndex.designer.cs">
<DependentUpon>202105051121209_renameIndex.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202107151001537_AddBwType.cs" />
<Compile Include="Migrations\202107151001537_AddBwType.designer.cs">
<DependentUpon>202107151001537_AddBwType.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202109141058345_AddMachine2ProjProd.cs" />
<Compile Include="Migrations\202109141058345_AddMachine2ProjProd.designer.cs">
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils.cs" />
@@ -141,6 +148,12 @@
<EmbeddedResource Include="Migrations\202105051121209_renameIndex.resx">
<DependentUpon>202105051121209_renameIndex.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202107151001537_AddBwType.resx">
<DependentUpon>202107151001537_AddBwType.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202109141058345_AddMachine2ProjProd.resx">
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
@@ -0,0 +1,29 @@
// <auto-generated />
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class AddBwType : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(AddBwType));
string IMigrationMetadata.Id
{
get { return "202107151001537_AddBwType"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,20 @@
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class AddBwType : DbMigration
{
public override void Up()
{
AddColumn("dbo.ProjList", "PType", c => c.Int(nullable: false));
AddColumn("dbo.ProdList", "PType", c => c.Int(nullable: false));
}
public override void Down()
{
DropColumn("dbo.ProdList", "PType");
DropColumn("dbo.ProjList", "PType");
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,29 @@
// <auto-generated />
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class AddMachine2ProjProd : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(AddMachine2ProjProd));
string IMigrationMetadata.Id
{
get { return "202109141058345_AddMachine2ProjProd"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,24 @@
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class AddMachine2ProjProd : DbMigration
{
#region Public Methods
public override void Down()
{
DropColumn("dbo.ProdList", "Machine");
DropColumn("dbo.ProjList", "Machine");
}
public override void Up()
{
AddColumn("dbo.ProjList", "Machine", c => c.String(unicode: false));
AddColumn("dbo.ProdList", "Machine", c => c.String(unicode: false));
}
#endregion Public Methods
}
}
File diff suppressed because one or more lines are too long
@@ -12,6 +12,7 @@ namespace EgtBEAMWALL.DataLayer.Migrations
public Configuration()
{
AutomaticMigrationsEnabled = true;
//AutomaticMigrationsEnabled = false;
}
#endregion Public Constructors
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTitle("EgtBEAMWALL.DataLayer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyCompany("Egalware s.r.l.")]
[assembly: AssemblyProduct("EgtBEAMWALL.DataLayer")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyCopyright("Copyright © 2020-2022 by Egalware s.r.l.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.3.6.2")]
[assembly: AssemblyFileVersion("2.3.6.2")]
[assembly: AssemblyVersion("2.4.3.1")]
[assembly: AssemblyFileVersion("2.4.3.1")]
@@ -1,4 +1,5 @@
Imports EgtUILib
Imports EgtBEAMWALL.Core
Public Class AboutBoxV
@@ -31,7 +32,7 @@ Public Class AboutBoxV
EgtGetSceneInfo(sScene)
sInfo &= sScene
InfoLbl.Text = sInfo
ExitBtn.Content = EgtMsg(MSG_MISSINGKEYWD + 4) 'Ok
ExitBtn.Content = EgtMsg(constmsg.MSG_MISSINGKEYWD + 4) 'Ok
End Sub
End Class
+8 -1
View File
@@ -1,4 +1,6 @@
Class Application
Imports EgtUILib
Class Application
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
' can be handled in this file.
@@ -11,4 +13,9 @@
Me.MainWindow.Show()
End Sub
Public Sub ManageUnhandledException(sender As Object, e As System.Windows.Threading.DispatcherUnhandledExceptionEventArgs) Handles Me.DispatcherUnhandledException
EgtOutLog(e.Exception.ToString)
e.Handled = True
End Sub
End Class
@@ -0,0 +1,20 @@
<UserControl x:Class="AxesPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:EgtCOMMTest"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<ItemsControl ItemsSource="{Binding AxesList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="3">
<TextBlock Text="{Binding nId}"/>
<TextBlock Text="{Binding sName}"/>
<TextBlock Text="{Binding sValue}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>
@@ -0,0 +1,3 @@
Public Class AxesPanelV
End Class
@@ -0,0 +1,142 @@
Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports EgtUILib
Public Class AxesPanelVM
Inherits VMBase
Private m_AxesList As New ObservableCollection(Of Axis)
Public ReadOnly Property AxesList As ObservableCollection(Of Axis)
Get
Return m_AxesList
End Get
End Property
Sub New()
' immposto riferimento in Map
Map.SetRefAxesPanelVM(Me)
End Sub
Friend Sub LoadAxes()
' leggo assi da ini
Dim nIndex As Integer = 1
Dim Axis As Axis = GetPrivateProfileAxis(S_AXES, nIndex.ToString(), CurrentMachine.sMachIniFile)
' leggo assi lineari
While Not IsNothing(Axis)
AxesList.Add(Axis)
nIndex += 1
Axis = GetPrivateProfileAxis(S_AXES, nIndex, CurrentMachine.sMachIniFile)
End While
End Sub
Private Function GetPrivateProfileAxis(IpAppName As String, IpKeyName As String, IpFileName As String) As Axis
Dim sAxis As String = ""
EgtUILib.GetPrivateProfileString(IpAppName, IpKeyName, "", sAxis, IpFileName)
Dim sAxisValues() As String = sAxis.Split(","c)
If Not sAxisValues.Count >= 3 Then Return Nothing
For Each Value In sAxisValues
Value = Value.Trim()
Next
Dim nId As Integer = 0
Dim Type As Axis.AxisTypes = Axis.AxisTypes.NULL
Integer.TryParse(sAxisValues(1), nId)
Select Case sAxisValues(0).ToLower()
Case "l"
Type = Axis.AxisTypes.LINEAR
Case "r"
Type = Axis.AxisTypes.ROTATIONAL
Case Else
Type = Axis.AxisTypes.NULL
End Select
Return New Axis(nId, Type, sAxisValues(2))
End Function
Friend Sub AxisCoordinatesCallbackDlg(AxisValue As Double, AxisIndex As Integer)
Dim Axis As Axis = m_AxesList.FirstOrDefault(Function(x) x.nId = AxisIndex)
If Not IsNothing(Axis) Then
Axis.SetValue(AxisValue)
End If
End Sub
Private Sub SetAxisValue(VarName As String, VarValue As String)
Dim Axis As Axis = m_AxesList.FirstOrDefault(Function(x) x.sName = VarName)
If Not IsNothing(Axis) Then
Axis.SetValue(VarValue)
End If
End Sub
End Class
Public Class Axis
Inherits VMBase
Public Enum AxisTypes As Integer
NULL = 0
LINEAR = 1
ROTATIONAL = 2
End Enum
Private m_nId As String
Public ReadOnly Property nId As String
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_Type As AxisTypes
Public ReadOnly Property Type As AxisTypes
Get
Return m_Type
End Get
End Property
Private m_dValue As Double
Public ReadOnly Property sValue As String
Get
Dim nDec As Integer = 0
If CurrentMachine.NCType = NCTypes.TPA Then
nDec = -3
Else
Select Case Type
Case AxisTypes.LINEAR
nDec = -3
Case AxisTypes.ROTATIONAL
nDec = -4
Case Else
nDec = 0
End Select
End If
Return DoubleToString(m_dValue, nDec)
End Get
End Property
Friend Sub SetValue(value As Double)
If CurrentMachine.NCType = NCTypes.TPA Then
m_dValue = value
Else
Select Case Type
Case AxisTypes.LINEAR
m_dValue = value / 1000
Case AxisTypes.ROTATIONAL
m_dValue = value / 10000
Case Else
m_dValue = value
End Select
End If
NotifyPropertyChanged(NameOf(sValue))
End Sub
Public Sub New(nId As String, Type As AxisTypes, sName As String)
m_nId = nId
m_Type = Type
m_sName = sName
End Sub
End Class
@@ -1,57 +0,0 @@
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLFeatureVM
Inherits Core.BTLFeatureVM
Public Overrides Property bDO As Boolean
Get
Return m_BTLFeatureM.bDO
End Get
Set(value As Boolean)
If EgtBeamEnableProcess(nFeatureId, value) Then
m_BTLFeatureM.bDO = value
EgtDraw()
NotifyPropertyChanged("Calc_Background")
NotifyPropertyChanged("bDO")
End If
End Set
End Property
#Region "CONSTRUCTOR"
Sub New(BTLFeatureM As BTLFeatureM, BTLPartM As BTLPartM)
m_BTLFeatureM = BTLFeatureM
'AddHandler m_BTLFeatureM.PBTLParamAdded, AddressOf OnPBTLParamAdded
'AddHandler m_BTLFeatureM.QBTLParamAdded, AddressOf OnQBTLParamAdded
m_BTLPartM = BTLPartM
'CreatePBTLParamVMList()
'CreateQBTLParamVMList()
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
Sub New(BTLFeatureM As BTLFeatureM)
m_BTLFeatureM = BTLFeatureM
'AddHandler m_BTLFeatureM.PBTLParamAdded, AddressOf OnPBTLParamAdded
'AddHandler m_BTLFeatureM.QBTLParamAdded, AddressOf OnQBTLParamAdded
m_BTLPartM = Nothing
'CreatePBTLParamVMList()
'CreateQBTLParamVMList()
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
#End Region ' METHODS
#Region "COMMANDS"
#End Region ' COMMANDS
End Class
@@ -0,0 +1,77 @@
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class BTLFeatureVM
Inherits Core.BTLFeatureVM
Public Overrides Property bDO As Boolean
Get
Return m_BTLFeatureM.bDO
End Get
Set(value As Boolean)
If EgtBeamEnableProcess(nFeatureId, value) Then
m_BTLFeatureM.bDO = value
NotifyPropertyChanged(NameOf(bDO))
EgtDraw()
End If
End Set
End Property
Friend Sub SetDo(bValue As Boolean)
If EgtBeamEnableProcess(nFeatureId, bValue) Then
m_BTLFeatureM.bDO = bValue
NotifyPropertyChanged(NameOf(bDO))
End If
End Sub
#Region "CONSTRUCTOR"
Sub New(BTLFeatureM As BTLFeatureM, BTLPartM As BTLPartM)
m_BTLFeatureM = BTLFeatureM
m_BTLPartM = BTLPartM
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
Sub New(BTLFeatureM As BTLFeatureM)
m_BTLFeatureM = BTLFeatureM
m_BTLPartM = Nothing
NotifyPropertyChanged(NameOf(Calc_Background))
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
' funzione che aggiorna lo stato e gli errori dopo calcolo
Friend Sub CalcFeatureUpdate(ERR As Integer, ROT As Integer, MSG As String)
EgtSetInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_ERR, ITG_PROD_ERR), ERR, True)
EgtSetInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_MSG, ITG_PROD_MSG), MSG, True)
EgtSetInfo(nFeatureId, If(Map.refMainMenuVM.SelPage = Pages.VIEW, ITG_PROJ_ROT, ITG_PROD_ROT), ROT, True)
m_BTLFeatureM.nCALC_ERR = ERR
m_BTLFeatureM.nCALC_ROT = ROT
m_BTLFeatureM.sCALC_MSG = MSG
If ERR = 0 Then
m_BTLFeatureM.nState = CalcStates.OK
ElseIf ERR = 17 Then
m_BTLFeatureM.nState = CalcStates.WARNING
ElseIf ERR > 0 Then
m_BTLFeatureM.nState = CalcStates.ERROR_
ElseIf ERR < 0 Then
m_BTLFeatureM.nState = Core.CalcStates.INFO
End If
NotifyPropertyChanged(NameOf(Calc_Background))
NotifyPropertyChanged(NameOf(CALC_ROT_Visibility))
NotifyPropertyChanged(NameOf(CALC_ERR_Letter))
NotifyPropertyChanged(NameOf(CALC_ERR_Foreground))
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#End Region ' COMMANDS
End Class
@@ -0,0 +1,491 @@
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Public Class CALCPanelVM
Inherits VMBase
Private m_CALCPanel_IsEnabled As Boolean = True
Public Property CALCPanel_IsEnabled As Boolean
Get
Return m_CALCPanel_IsEnabled
End Get
Set(value As Boolean)
m_CALCPanel_IsEnabled = value
End Set
End Property
' Definizione comandi
Private m_cmdVerify As ICommand
Private m_cmdVerifyAll As ICommand
Private m_cmdSimulate As ICommand
Private m_ProcessResultList As New List(Of Integer)
#Region "Messages"
Public ReadOnly Property Verify_ToolTip As String
Get
Return EgtMsg(61901)
End Get
End Property
Public ReadOnly Property Simulate_ToolTip As String
Get
Return EgtMsg(61902)
End Get
End Property
#End Region ' Messages
#Region "CONSTRUCTORS"
Sub New()
' imposto riferimento in Map
Map.SetRefCALCPanelVM(Me)
Core.CalcIntegration.SetMaxCamInstances(1)
AddHandler Core.CalcIntegration.Calc_ProcessResult, AddressOf Calc_ProcessResult
AddHandler Core.CalcIntegration.Calc_Ended, AddressOf Calc_Ended
AddHandler Core.CalcIntegration.Calc_ProcessEnd, AddressOf Calc_ProcessEnded
End Sub
#End Region ' CONSTRUCTORS
#Region "METHODS"
Friend Sub SetCalcPanelIsEnabled(bIsEnabled As Boolean)
m_CALCPanel_IsEnabled = bIsEnabled
NotifyPropertyChanged(NameOf(CALCPanel_IsEnabled))
End Sub
Private Sub Calc_ProcessResult(sender As Object, e As CalcResultEventArgs)
m_ProcessResultList.Add(e.m_Result.nBarId)
ProcessResults(e.m_Result)
Dim nRawid As Integer = e.m_Result.nBarId
If nRawid <= 0 Then Return
Dim Machgroup As MyMachGroupVM = GetMachgroupVMFromMachgroupId(nRawid)
Machgroup.CALCEnd()
End Sub
Private Sub Calc_Ended(sender As Object, e As CalcEndEventArgs)
If e.End_ <> CalcEndEventArgs.Results.OK Then
MessageBox.Show("Execution error (all processes are disabled)")
End If
' ciclo sui pezzi
Dim bNotOkFound As Boolean = False
Dim MachGroupList As List(Of MachGroupVM) = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Where(Function(x) m_ProcessResultList.Contains(x.Id)).ToList()
For Each MachGroup As MyMachGroupVM In MachGroupList
' se trovo pezzo errato, resetto tutti i successivi
If Not bNotOkFound AndAlso MachGroup.MyMachGroupM.m_nCALC_GlobalState <> CalcStates.OK AndAlso MachGroup.MyMachGroupM.m_nCALC_GlobalState <> CalcStates.INFO Then
bNotOkFound = True
End If
If bNotOkFound Then MachGroup.ResetProduce()
Next
m_ProcessResultList = New List(Of Integer)
Map.refProjectVM.ManageIsEnabled(True)
Map.refMyStatusBarVM.ResetStopProgress()
End Sub
Private Sub Calc_ProcessEnded(sender As Object, e As CalcProcessEndEventArgs)
'Dim nRawid As Integer = e.m_Result.nBarId
'If nRawid <= 0 Then Return
'Dim Machgroup As MyMachGroupVM = GetMachgroupVMFromMachgroupId(nRawid)
'Machgroup.CALCEnd()
End Sub
Private Shared Sub ProcessResults(Bar As Bar)
Dim BtlPath As String = Bar.sBarPath
Dim ResPath As String = Path.ChangeExtension(BtlPath, ".txt")
Dim bErrors As Boolean = False
Dim nLastErr As Integer = 0
Dim sLastMsg As String = ""
Dim nCurrCutId As Integer = 0
Dim nTotTime As Integer = 0
If File.Exists(ResPath) Then
Dim ProcessResultList As New List(Of ProcessResult)
Dim nErr As Integer = 0
Dim sMsg As String = ""
Dim dRot As Double = 0
Dim nFall As Integer = 0
Dim dPartRot As Double = 0
Dim dTotRot As Double = 0
Dim cutId As Integer = 0
Dim taskId As Integer = 0
Dim prevCutId As Integer = GDB_ID.NULL
Dim currPart As PartVM
Dim lines As String() = System.IO.File.ReadAllLines(ResPath)
For Each line As String In lines
If line.StartsWith("ERR=") Then
Dim nVal As Integer? = GetVal(line, "ERR")
nErr = (If(nVal IsNot Nothing, nVal.Value, 0))
sMsg = ""
dRot = 0
nFall = 0
cutId = 0
taskId = 0
ElseIf line.StartsWith("ROT=") Then
Dim nVal As Integer? = GetVal(line, "ROT")
Dim nRot As Integer = (If(nVal IsNot Nothing, nVal.Value, 0))
dRot = Math.Abs(((4 - nRot) Mod 4) * 90)
dPartRot = Math.Max(dPartRot, dRot)
dTotRot = Math.Max(dTotRot, dRot)
ElseIf line.StartsWith("CUTID=") Then
Dim nVal As Integer? = GetVal(line, "CUTID")
cutId = If(nVal IsNot Nothing, nVal.Value, 0)
ElseIf line.StartsWith("TASKID=") Then
Dim nVal As Integer? = GetVal(line, "TASKID")
taskId = (If(nVal IsNot Nothing, nVal.Value, 0))
ProcessResultAdd(ProcessResultList, ProcessResult.CreateTaskResult(cutId, taskId, nErr, sMsg, dRot), Bar)
ElseIf line.StartsWith("FALL=") Then
Dim nVal As Integer? = GetVal(line, "FALL")
nFall = (If(nVal IsNot Nothing, nVal.Value, 0))
ProcessResultList.Add(ProcessResult.CreateFallResult(cutId, nErr, sMsg, nFall))
ElseIf line.StartsWith("TIME=") Then
Dim nVal As Integer? = GetVal(line, "TIME")
nTotTime = (If(nVal IsNot Nothing, nVal.Value, 0))
ProcessResultList.Add(ProcessResult.CreateTimeResult(cutId, nTotTime))
'If Bar.nBarType = ProjectType.PROJ AndAlso Not IsNothing(currBTLPart) Then
' EgtSetInfo(currBTLPart.nPartId, If(Bar.nBarType = ProjectType.PROJ, ITG_PROJ_TIME, ITG_PROD_TIME), nTotTime, True)
'End If
ElseIf Not String.IsNullOrWhiteSpace(line) AndAlso line <> "---" Then
sMsg = line
End If
Next
If ProcessResultList.Count > 0 Then
' Inizializzo i pezzi del gruppo di lavoro in verifica
Dim Machgroup As MyMachGroupVM = GetMachgroupVMFromMachgroupId(Bar.nBarId)
For Each Part In Machgroup.PartVMList
Part.CalcPartUpdate(0, 0, "")
Next
Machgroup.CalcMachGroupUpdate(0, 0, "")
' Ciclo ...
Dim nCUTID As Integer = -1
Dim CurrPartVM As PartVM
Dim CurrMachgroupVM As MyMachGroupVM
Dim CurrBTLFeatureVM As BTLFeatureVM
For Each Line In ProcessResultList
' se necessario recupero part
If Line.nCUTID <> 0 Then
If Line.nCUTID <> nCUTID Then
nCUTID = Line.nCUTID
' aggiorno nuovo pezzo
CurrPartVM = GetPartVMFromPartId(Line.nCUTID)
End If
Else
' se CutId = 0
' riporto errore barra
CurrMachgroupVM = GetMachgroupVMFromMachgroupId(Bar.nBarId)
End If
' se necessario recupero feature
If Line.nTASKID <> 0 Then
CurrBTLFeatureVM = GetFeatureVMFromPartId(CurrPartVM, Line.nTASKID)
Else
CurrBTLFeatureVM = Nothing
End If
Select Case Line.Type
Case ProcessResult.ProcessResultTypes.BAR
CurrMachgroupVM.CalcMachGroupUpdate(Line.nERR, Line.dROT, Line.sMSG)
Case ProcessResult.ProcessResultTypes.PART
CurrPartVM.CalcPartUpdate(Line.nERR, Line.dROT, Line.sMSG)
Case ProcessResult.ProcessResultTypes.TASKID
CurrBTLFeatureVM.CalcFeatureUpdate(Line.nERR, Line.dROT, Line.sMSG)
Case ProcessResult.ProcessResultTypes.FALL
CurrPartVM.CalcFallUpdate(Line.nFALL)
Case ProcessResult.ProcessResultTypes.TIME
If IsNothing(CurrMachgroupVM) Then CurrMachgroupVM = GetMachgroupVMFromMachgroupId(Bar.nBarId)
CurrMachgroupVM.CalcTimeUpdate(Line.nTIME)
End Select
Next
Machgroup = GetMachgroupVMFromMachgroupId(Bar.nBarId)
For Each Part In Machgroup.PartVMList
Part.CalcGlobalUpdate()
Next
Machgroup.CalcGlobalUpdate()
End If
Else
bErrors = True
nLastErr = 25
sLastMsg = "Execution Error"
End If
End Sub
Private Shared Function GetVal(sText As String, sKey As String) As Integer?
Dim sParts As String() = sText.Split("="c)
If String.Compare(sParts(0), sKey) <> 0 Then Return Nothing
Dim nVal As Integer = Nothing
If Not Integer.TryParse(sParts(1), nVal) Then
Return Nothing
Else
Return nVal
End If
End Function
Private Shared Sub ProcessResultAdd(PRList As List(Of ProcessResult), NewPR As ProcessResult, Bar As Bar)
Dim Prev As ProcessResult
Select Case NewPR.Type
Case ProcessResult.ProcessResultTypes.BAR
If Bar.nProgramPage = ProjectType.PROJ Then
Prev = PRList.FirstOrDefault(Function(x) x.Type = ProcessResult.ProcessResultTypes.PART)
Else
Prev = PRList.FirstOrDefault(Function(x) x.Type = ProcessResult.ProcessResultTypes.BAR)
End If
Case ProcessResult.ProcessResultTypes.PART
Prev = PRList.FirstOrDefault(Function(x) x.Type = ProcessResult.ProcessResultTypes.PART AndAlso x.nCUTID = NewPR.nCUTID)
Case ProcessResult.ProcessResultTypes.TASKID
Prev = PRList.FirstOrDefault(Function(x) x.Type = ProcessResult.ProcessResultTypes.TASKID AndAlso x.nCUTID = NewPR.nCUTID AndAlso x.nTASKID = NewPR.nTASKID)
End Select
If IsNothing(Prev) Then
PRList.Add(NewPR)
ElseIf NewPR.nERR = 22 Or (NewPR.nERR > 0 And Prev.nERR <= 0) Or (NewPR.nERR < 0 And Prev.nERR = 0) Then
If NewPR.dROT = 0 And Prev.dROT <> NewPR.dROT Then
NewPR.SetROT(Prev.dROT)
End If
PRList.Remove(Prev)
PRList.Add(NewPR)
ElseIf Prev.dROT = 0 And Prev.dROT <> NewPR.dROT Then
Prev.SetROT(NewPR.dROT)
End If
End Sub
Private Shared Function GetPartVMFromPartId(nPartId As Integer) As PartVM
For Each MachGroupVM As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
Dim PartVM As PartVM = MachGroupVM.PartVMList.FirstOrDefault(Function(x) x.nPartId = nPartId)
If Not IsNothing(PartVM) Then Return PartVM
Next
End Function
Private Shared Function GetMachgroupVMFromMachgroupId(nMachGroupId As Integer) As MyMachGroupVM
Return Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = nMachGroupId)
End Function
Private Shared Function GetFeatureVMFromPartId(PartVM As PartVM, nFeatureId As Integer) As Core.BTLFeatureVM
Return PartVM.FeatureVMList.FirstOrDefault(Function(x) x.nFeatureId = nFeatureId)
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "Verify"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property Verify_Command As ICommand
Get
If m_cmdVerify Is Nothing Then
m_cmdVerify = New Command(AddressOf Verify)
End If
Return m_cmdVerify
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Verify()
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return
Dim ProjType As BWType = Map.refSupervisorManagerVM.CurrProd.nType
Dim BarList() As EgtBEAMWALL.Core.Bar
If Not IsNothing(Map.refSupervisorMachGroupPanelVM.SelectedMachGroup) Then
Dim TempBarList(0) As EgtBEAMWALL.Core.Bar
Dim MachineName As String = ""
EgtGetMachGroupMachineName(Map.refSupervisorMachGroupPanelVM.SelectedMachGroup.Id, MachineName)
Dim Bar As New EgtBEAMWALL.Core.Bar With {.nBarId = Map.refSupervisorMachGroupPanelVM.SelectedMachGroup.Id,
.nProgramPage = ProjectType.PROD,
.nProjType = ProjType,
.bBarOk = True,
.nMachineName = MachineName}
Dim SelMachGroup As MyMachGroupVM = Map.refSupervisorMachGroupPanelVM.SelectedMachGroup
Select Case SelMachGroup.nGlobalState
Case Core.CalcStates.OK, Core.CalcStates.INFO
Bar.nCmdType = CalcIntegration.CmdTypes.GENERATE
Case Else
Dim sMachGroupFilePath As String = Map.refSupervisorManagerVM.CurrProd.sProdDirPath & "\" & SelMachGroup.Name.ToString() & ".ori.bwe"
If File.Exists(sMachGroupFilePath) Then File.Delete(sMachGroupFilePath)
Bar.nCmdType = CalcIntegration.CmdTypes.CHECKGEN
End Select
TempBarList(0) = Bar
BarList = TempBarList
Else
Return
End If
' disabilito interfaccia
Map.refProjectVM.ManageIsEnabled(False)
' lancio calcolo
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc)
End Sub
Friend Sub VerifyMachGroup(MachGroup As MachGroupVM)
VerifyMachGroup(New List(Of MachGroupVM)({MachGroup}))
End Sub
Friend Sub VerifyMachGroup(MachGroupList As List(Of MachGroupVM))
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return
Dim ProjType As BWType = Map.refSupervisorManagerVM.CurrProd.nType
Dim BarList() As EgtBEAMWALL.Core.Bar
If Not IsNothing(MachGroupList) AndAlso MachGroupList.Count > 0 Then
Dim TempBarList(MachGroupList.Count() - 1) As EgtBEAMWALL.Core.Bar
For MachGroupIndex = 0 To MachGroupList.Count - 1
Dim MachGroup As MyMachGroupVM = MachGroupList(MachGroupIndex)
Dim MachineName As String = ""
EgtGetMachGroupMachineName(MachGroup.Id, MachineName)
Dim Bar As New EgtBEAMWALL.Core.Bar With {.nBarId = MachGroup.Id,
.nProgramPage = ProjectType.PROD,
.nProjType = ProjType,
.bBarOk = True,
.nMachineName = MachineName}
Select Case MachGroup.nGlobalState
Case Core.CalcStates.OK, Core.CalcStates.INFO
Bar.nCmdType = CalcIntegration.CmdTypes.GENERATE
Case Else
Bar.nCmdType = CalcIntegration.CmdTypes.CHECKGEN
End Select
TempBarList(MachGroupIndex) = Bar
Next
BarList = TempBarList
Else
Return
End If
' disabilito interfaccia
Map.refProjectVM.ManageIsEnabled(False)
' lancio calcolo
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc)
End Sub
' funzione che gestisce risposta da thread di verifica, aggiorna progress e segnala comando di interruzione
Private Sub ManageCalc(dProgress As Double, sProgress As String, ByRef bCancel As Boolean)
If dProgress = 0 Then
Map.refMyStatusBarVM.SetLoadingProgress_Visibility(True)
Map.refMyStatusBarVM.SetStopProgress_IsActive(True)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True)
Map.refMyStatusBarVM.SetOutputMessage(sProgress)
Map.refMyStatusBarVM.SetStopProgress_IsActive(True)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True)
ElseIf dProgress = 1 Then
Map.refMyStatusBarVM.SetLoadingProgress_Visibility(False)
Map.refMyStatusBarVM.SetStopProgress_IsActive(False)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(False)
Map.refMyStatusBarVM.SetOutputMessage(sProgress, 3)
End If
bCancel = Map.refMyStatusBarVM.bStopProgress
Map.refMyStatusBarVM.SetLoadingProgress(dProgress * 100)
Map.refMyStatusBarVM.SetOutputMessage(sProgress)
End Sub
#End Region ' Verify
#Region "VerifyAll"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property VerifyAll_Command As ICommand
Get
If m_cmdVerifyAll Is Nothing Then
m_cmdVerifyAll = New Command(AddressOf VerifyAll)
End If
Return m_cmdVerifyAll
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub VerifyAll()
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return
Dim ProjType As BWType = Map.refSupervisorManagerVM.CurrProd.nType
Dim BarList() As EgtBEAMWALL.Core.Bar
Dim TempBarList(Map.refMachGroupPanelVM.MachGroupVMList.Count - 1) As EgtBEAMWALL.Core.Bar
For PartIndex = 0 To Map.refMachGroupPanelVM.MachGroupVMList.Count - 1
Dim CurrMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.MachGroupVMList(PartIndex)
Dim MachineName As String = ""
EgtGetMachGroupMachineName(CurrMachGroup.Id, MachineName)
Dim Bar As New EgtBEAMWALL.Core.Bar With {.nBarId = CurrMachGroup.Id,
.nProgramPage = ProjectType.PROD,
.nProjType = ProjType,
.bBarOk = True,
.nMachineName = MachineName}
Select Case CurrMachGroup.nGlobalState
Case Core.CalcStates.OK, Core.CalcStates.INFO
Bar.nCmdType = CalcIntegration.CmdTypes.GENERATE
Case Else
Dim sMachGroupFilePath As String = Map.refSupervisorManagerVM.CurrProd.sProdDirPath & "\" & CurrMachGroup.Name.ToString() & ".ori.bwe"
If File.Exists(sMachGroupFilePath) Then File.Delete(sMachGroupFilePath)
Bar.nCmdType = CalcIntegration.CmdTypes.CHECKGEN
End Select
TempBarList(PartIndex) = Bar
Next
BarList = TempBarList
' disabilito interfaccia
Map.refProjectVM.ManageIsEnabled(False)
' lancio calcolo
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc)
End Sub
#End Region ' VerifyAll
#Region "Simulate"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property Simulate_Command As ICommand
Get
If m_cmdSimulate Is Nothing Then
m_cmdSimulate = New Command(AddressOf Simulate)
End If
Return m_cmdSimulate
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Simulate()
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return
Dim ProjType As BWType = Map.refSupervisorManagerVM.CurrProd.nType
Dim BarList() As EgtBEAMWALL.Core.Bar
Dim SelMachGroup As MyMachGroupVM = Map.refSupervisorMachGroupPanelVM.SelectedMachGroup
If Not IsNothing(SelMachGroup) Then
Dim TempBarList(0) As EgtBEAMWALL.Core.Bar
Dim MachineName As String = ""
EgtGetMachGroupMachineName(SelMachGroup.Id, MachineName)
Dim Bar As New EgtBEAMWALL.Core.Bar With {.nBarId = SelMachGroup.Id,
.nProgramPage = ProjectType.PROD,
.nProjType = ProjType,
.bBarOk = True,
.nMachineName = MachineName,
.nCmdType = CalcIntegration.CmdTypes.SIMULATE}
If SelMachGroup.nGlobalState <> Core.CalcStates.OK Then
Dim sMachGroupFilePath As String = Map.refSupervisorManagerVM.CurrProd.sProdDirPath & "\" & SelMachGroup.Name.ToString() & ".ori.bwe"
If File.Exists(sMachGroupFilePath) Then File.Delete(sMachGroupFilePath)
End If
TempBarList(0) = Bar
BarList = TempBarList
Else
Return
End If
' disabilito interfaccia
Map.refProjectVM.ManageIsEnabled(False)
' lancio simulazione
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc)
End Sub
#End Region ' Simulate
#End Region ' COMMANDS
End Class

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