def tallenin(self): '''Suorittaa tiedoston tallennuksen''' pvm = str(datetime.date.today()) palkin_pituus = Ominaisuudet.palauta_palkin_pituus(self) pituuden_yksikko = Ominaisuudet.palauta_pituuden_yksikko(self) voiman_suuruus = Ominaisuudet.palauta_voima(self) voiman_yksikko = Ominaisuudet.palauta_voiman_yksikko(self) materiaali = Ominaisuudet.palauta_materiaali(self) tuen_tyyppi = Ominaisuudet.palauta_tuen_tyyppi(self) ulkoinen_voima_asetettu = Ominaisuudet.onko_ulkoinen_voima_asetettu( self) tiedostonimi = QFileDialog.getSaveFileName( self, "Tallenna tiedosto", "", "Text Files (*);;Text Files (*.txt)") try: tiedosto = open(tiedostonimi[0], 'w') except FileNotFoundError: return teksti = "Lujuusanalysaattori" + "\n"\ + pvm + "\n" \ + str(palkin_pituus) +"\n"\ + str(pituuden_yksikko) + "\n"\ + str(voiman_suuruus) + "\n"\ + str(voiman_yksikko) + "\n"\ + str(materiaali) + "\n"\ + str(tuen_tyyppi) + "\n"\ + str(ulkoinen_voima_asetettu) tiedosto.write(teksti) tiedosto.close() return True
def nayta_ulkoinen_voima(self): '''Näytetään ulkoinen voima riippuen tuen tyypistä''' self.sp_voima.show() self.yksikko_voima.show() self.ulkoinen_voima.show() self.lisaa_ulkoinen_voima.hide() self.poista_ulkoinen_voima.show() if int(Ominaisuudet.palauta_tuen_tyyppi(self)) == 0: self.viiva.show() self.nuoli_3.show() if int(Ominaisuudet.palauta_tuen_tyyppi(self)) == 1: self.viiva_5.show() self.nuoli_6.show() Ominaisuudet.ulkoinen_voima(self, 1)
def simulaatio(self): '''Kutsuu laskentaa suorittavaa metodia ja tallentaa tuloksen. Tämän jälkeen kutsuu lopputuloksen esittävän tekstin päivittävää metodia sekä palkin visualisoivaa gradient-metodia''' Laskin.laskin(self) Ominaisuudet.palauta_tulos(self) self.paivita_tulos_teksti() self.tallennaAction.setEnabled(True) if Ominaisuudet.palauta_tuen_tyyppi(self) == 0: if Ominaisuudet.onko_ulkoinen_voima_asetettu(self) == 1: self.gradient_seina_tuki() if Ominaisuudet.onko_ulkoinen_voima_asetettu(self) == 0: self.gradient_seina_tuki_ei_voimaa() if Ominaisuudet.palauta_tuen_tyyppi(self) == 1: self.gradient_alatuki()
def laskin(self): '''Ladataan tarvittavat muuttujat''' sivun_pituus = 0.2 #Neliönmuotoisen palkin sivun pituus metreinä voima = float(Ominaisuudet.palauta_voima(self)) pituus = float(Ominaisuudet.palauta_palkin_pituus(self)) pituuden_yksikko = float(Ominaisuudet.palauta_pituuden_yksikko(self)) voiman_yksikko = float(Ominaisuudet.palauta_voiman_yksikko(self)) tuen_tyyppi = int(Ominaisuudet.palauta_tuen_tyyppi(self)) ulkoinen_voima = int(Ominaisuudet.onko_ulkoinen_voima_asetettu(self)) palkin_paino = pituus * sivun_pituus**2 * 7850 * 9.81 * 10**-3 '''Asetetaan kertoimia yksikkömuunnosten tekemiseksi''' if voiman_yksikko == 0: voimakerroin = 1000 if voiman_yksikko == 1: voimakerroin = 1 if pituuden_yksikko == 0: pituuskerroin = 1 if pituuden_yksikko == 1: pituuskerroin = 10**-2 if pituuden_yksikko == 2: pituuskerroin = 10**-3 if tuen_tyyppi == 0: '''Sivutuki''' if ulkoinen_voima == 1: '''Ulkoinen voima asetettu''' maks_jannitys = ( (6 * voima * pituus) / (sivun_pituus**3) * 10**-6) * voimakerroin * pituuskerroin Ominaisuudet.simulaation_tulos(self, int(maks_jannitys)) if ulkoinen_voima == 0: '''ulkoinen voima ei asetettu, 7850 teräksen tiheys''' maks_jannitys = ( (6 * palkin_paino * (pituus / 2)) / (sivun_pituus**3) * 10**-6) * voimakerroin * pituuskerroin Ominaisuudet.simulaation_tulos(self, int(maks_jannitys)) if tuen_tyyppi == 1: '''Alatuki''' if ulkoinen_voima == 1: vastaus = (3 / 2) * ( (voima * pituus) / (sivun_pituus**3) * 10**-6) * voimakerroin * pituuskerroin Ominaisuudet.simulaation_tulos(self, int(vastaus)) if ulkoinen_voima == 0: vastaus = (3 / 2) * ( (palkin_paino * pituus) / (sivun_pituus**3) * 10**-6) * voimakerroin * pituuskerroin Ominaisuudet.simulaation_tulos(self, int(vastaus))
def lataa_tallennettu_rakenne(self): '''Metodi avaa QFileDialog ikkunan, josta käyttäjä valitsee tiedoston, jossa aiemmin tallennettu rakenne sijaitsee. Vain .txt -tiedostot ovat ladattavissa ''' options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog tiedosto, _ = QFileDialog.getOpenFileName(self, "Valitse tiedosto", "", "txt Files (*.txt)", options=options) lataus = Lataaja.lataaja(self, tiedosto) if lataus == False: return if lataus == True: self.uusi_rakenne() Lataaja.lataaja(self, tiedosto) tuen_tyyppi = Ominaisuudet.palauta_tuen_tyyppi(self) '''Jos tuki on seinästä, piirretään sitä vastaava grafiikka''' if tuen_tyyppi == 0: self.nayta_seina_tuki() self.gradient_seina_tuki() '''Jos tuki on alhaalta, piirretään sitä vastaava grafiikka''' if tuen_tyyppi == 1: self.nayta_tuki_alhaalta() self.gradient_alatuki() if tuen_tyyppi != 2: self.vaihda_tuki.show() self.lisaa_tuki.hide() '''Jos ulkoinen voima on asetettu, piirretään se''' ulkoinen_voima = int( Ominaisuudet.onko_ulkoinen_voima_asetettu(self)) if ulkoinen_voima == 1: self.nayta_ulkoinen_voima() self.nayta_palkki() Laskin.laskin(self) self.paivita_tulos_teksti() self.tulos.show() self.sp.setValue(float(Ominaisuudet.palauta_palkin_pituus(self))) self.uusiAction.setEnabled(True) self.simuloi.setEnabled(True) '''Kerrotaan käyttäjälle, että kaikki onnistui''' msgBox = QMessageBox() msgBox.setText("Lataus onnistui!") msgBox.setWindowTitle("Onnistunut lataus") msgBox.addButton(QPushButton('OK'), QMessageBox.NoRole) msgBox.exec_()
def valitse_tuki(self): '''Tuen valinta. Jos tuki on seinästä (tyyppi = 0), kysytään halutaanko vaihtaa. Jos haluaa muutetaan tuen grafiikka ja arvo''' if Ominaisuudet.palauta_tuen_tyyppi(self) == 0: msgBox = QMessageBox() msgBox.setText("Haluatko vaihtaa tuen tyyppiä?") msgBox.addButton(QPushButton('En'), QMessageBox.NoRole) msgBox.addButton(QPushButton('Kyllä'), QMessageBox.YesRole) vastaus = msgBox.exec_() self.rect.setBrush(QBrush(4)) if vastaus == 1: self.viiva_1.hide() self.viiva_2.hide() self.viiva_3.hide() self.viiva_4.hide() self.nayta_tuki_alhaalta() if int(Ominaisuudet.onko_ulkoinen_voima_asetettu(self)) == 1: self.viiva.hide() self.nuoli_3.hide() self.viiva_5.show() self.nuoli_6.show() Ominaisuudet.tuki(self, 1) return '''Jos tuki on alhaalta (tyyppi = 1), kysytään halutaanko vaihtaa. Jos haluaa muutetaan tuen grafiikka ja arvo''' if Ominaisuudet.palauta_tuen_tyyppi(self) == 1: msgBox = QMessageBox() msgBox.setText("Haluatko vaihtaa tuen tyyppiä?") msgBox.addButton(QPushButton('Kyllä'), QMessageBox.YesRole) msgBox.addButton(QPushButton('En'), QMessageBox.NoRole) vastaus = msgBox.exec_() self.rect.setBrush(QBrush(4)) if vastaus == 0: Ominaisuudet.tuki(self, 0) self.nuoli_4.hide() self.nuoli_5.hide() self.nayta_seina_tuki() if int(Ominaisuudet.onko_ulkoinen_voima_asetettu(self)) == 1: self.viiva.show() self.nuoli_3.show() self.viiva_5.hide() self.nuoli_6.hide() if vastaus == 1: pass '''Jos tukea ei ole (tyyppi = 2). Tuen tyypin valinta''' if Ominaisuudet.palauta_tuen_tyyppi(self) == 2: msgBox = QMessageBox() msgBox.setText("Valitse tuen tyyppi") msgBox.addButton(QPushButton('Seinätuki'), QMessageBox.YesRole) msgBox.addButton(QPushButton('Tuki alhaalta'), QMessageBox.NoRole) vastaus = msgBox.exec_() self.vaihda_tuki.show() self.lisaa_tuki.hide() if vastaus == 0: self.nayta_seina_tuki() Ominaisuudet.tuki(self, 0) if vastaus == 1: self.nayta_tuki_alhaalta() Ominaisuudet.tuki(self, 1) '''Joka tapauksessa asetetaan ulkoisen voiman lisääminen mahdolliseksi sekä maalataan palkki normaaliksi''' self.lisaa_ulkoinen_voima.setEnabled(True) self.simuloi.setEnabled(True)