public BC(int numeroBC, string nomeBC) : base(numeroBC, nomeBC) { selezionato = false; tipo = TipoOggetto.BC; collegamenti = 0; gdlAttivo = new bool[(int)Gdl.N]; val = new double[(int)Gdl.N]; tipoBC = TipoBC.NonDefinito; ogg = (Oggetto)null; nogg = 0; }
// Dissocia da un altro oggetto specifico public virtual bool Dissocia(Oggetto ogg) { return false; }
// Associa ad un oggetto (materiale o sezione) public override bool Associa(Oggetto ogg) { bool ok = false; switch(ogg.Tipo) { case TipoOggetto.Materiale: { if(this.materiale != null) // Se l'oggetto era gia` associato ad un materiale... (this.materiale).RimuoviCollegamento(); // decrementa i link del vecchio materiale Materiale = (Materiale) ogg; // Imposta il riferimento al nuovo materiale ogg.AggiungiCollegamento(); // incrementa i link del nuovo materiale ok = true; break; } case TipoOggetto.Sezione: { if (this.sezione != null) // Se l'oggetto era gia` associato ad una sezione... (this.sezione).RimuoviCollegamento(); // decrementa i link della vecchia sezione Sezione = (Sezione)ogg; // Imposta il riferimento alla nuova sezione ogg.AggiungiCollegamento(); // incrementa i link del nuovo materiale ok = true; break; } } return ok; }
// Associa il BC ad un oggetto (materiale o sezione) public override bool Associa(Oggetto ogg) { bool ok = false; switch (ogg.Tipo) { case TipoOggetto.Nodo: { if ( (tipoBC == TipoBC.ForzaNodale) || // Verifica se tipo di vincolo corretto (tipoBC == TipoBC.VincoloNodale) ) { if (this.ogg != null) // Se il BC era gia` associato ad un oggetto... (this.ogg).RimuoviCollegamento(); // decrementa i link del vecchio oggetto this.ogg = ogg; // Imposta il riferimento al nuovo oggetto (this.ogg).AggiungiCollegamento(); // incrementa i link del nuovo oggetto ok = true; } break; } case TipoOggetto.Trave: { if ( (tipoBC == TipoBC.CaricoTrave) || // Verifica se tipo di vincolo corretto (tipoBC == TipoBC.ForzaTrave) || (tipoBC == TipoBC.TermicoTrave) ) { if (this.ogg != null) // Se il BC era gia` associato ad un oggetto... (this.ogg).RimuoviCollegamento(); // decrementa i link del vecchio oggetto this.ogg = ogg; // Imposta il riferimento al nuovo oggetto (this.ogg).AggiungiCollegamento(); // incrementa i link del nuovo materiale ok = true; } break; } } return ok; }
// Dissocia il BC dall'oggetto cui era associato public override bool Dissocia() { bool ok = true; if(ogg != null) // Se aveva il riferimento ad un oggetto... { ogg.RimuoviCollegamento(); // ...riduce i collegamenti dell'oggetto e... ogg = (Oggetto) null; // ...elimina il riferimento } return ok; }