public Trave(Nodo n1, Nodo n2, int numeroTrave, string nomeTrave) : base(numeroTrave, nomeTrave) { nodi = new Nodo[2]; selezionato = false; nodi[0] = n1; nodi[1] = n2; tipo = TipoOggetto.Trave; n1.AggiungiCollegamento(); n2.AggiungiCollegamento(); sezione = new Sezione(); sezione.AggiungiCollegamento(); materiale = new Materiale(); materiale.AggiungiCollegamento(); rifTrave = null; }
public Trave(Nodo n1, Nodo n2) : base() { nodi = new Nodo[NumeroNodi]; selezionato = false; nodi[0] = n1; nodi[1] = n2; tipo = TipoOggetto.Trave; n1.AggiungiCollegamento(); n2.AggiungiCollegamento(); sezione = new Sezione(); sezione.AggiungiCollegamento(); materiale = new Materiale(); materiale.AggiungiCollegamento(); rifTrave = null; }
// Sostituisce gli indici con i riferimenti public bool SostituisciIndici(ArchivioStruttura arch) { bool fatto = false; if(rifTrave != null) { fatto = true; // Mette a true; se errore qulunque: false if(rifTrave.nodi[0] != Oggetto.NonValido) // Controlla se indice inizializzato. Se no... { // Prosegue senza errori Nodo n = (Nodo)arch.Trova(TipoOggetto.Nodo, rifTrave.nodi[0]); if(n != null) { nodi[0] = n; nodi[0].AggiungiCollegamento(); } else fatto = false; } if (rifTrave.nodi[1] != Oggetto.NonValido) { Nodo n = (Nodo)arch.Trova(TipoOggetto.Nodo, rifTrave.nodi[1]); if (n != null) { nodi[1] = n; nodi[1].AggiungiCollegamento(); } else fatto = false; } if (rifTrave.sezione != Oggetto.NonValido) { Sezione s = (Sezione)arch.Trova(TipoOggetto.Sezione, rifTrave.sezione); if (s != null) { sezione = s; sezione.AggiungiCollegamento(); } else fatto = false; } if (rifTrave.materiale != Oggetto.NonValido) { Materiale m = (Materiale)arch.Trova(TipoOggetto.Materiale, rifTrave.materiale); if (m != null) { materiale = m; materiale.AggiungiCollegamento(); } else fatto = false; } } if(fatto) // Se operazione completata, cancella il riferimento al_ rifTrave = null; // l'oggetto con gli indici (eliminato poi dal gc) return fatto; }
public new bool Leggi(StreamReader sr) { string str; // Riga letta dal file int i; // Contatore int itmp; // Temporanei per conversione rifTrave = new RifTrave(); TokenString tk = new TokenString(); // Tokenizzatore if (!sr.EndOfStream) { str = sr.ReadLine(); // Legge una riga (ossia un oggetto completo) tk.Set(ref str, "\t "); // Imposta il tokenizzatore, str per reference i = 0; // Azzera contatore foreach (string s in tk) { switch (i) { case 0: if (s != descrittore) // Se oggetto non riconosciuto i = int.MaxValue; break; case 1: if (int.TryParse(s, out itmp)) nID = itmp; break; case 2: nome = s; break; case 3: if (int.TryParse(s, out itmp)) numero = itmp; break; case 4: if (int.TryParse(s, out itmp)) rifTrave.nodi[0] = itmp; break; case 5: if (int.TryParse(s, out itmp)) rifTrave.nodi[1] = itmp; break; case 6: if (int.TryParse(s, out itmp)) rifTrave.sezione = itmp; break; case 7: if (int.TryParse(s, out itmp)) rifTrave.materiale = itmp; break; } i++; } } return true; }