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 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 lisaa_asteikko_arvo(self): '''Lisää tekstikentän pituuden arvolle sekä yksikölle''' teksti = (str(Ominaisuudet.palauta_palkin_pituus(self)) + " " + "m") self.asteikko_teksti = QGraphicsSimpleTextItem() self.asteikko_teksti.setText(teksti) self.asteikko_teksti.setPos(650, 425) self.asteikko_teksti.font = QtGui.QFont() self.asteikko_teksti.font.setPointSize(12) self.asteikko_teksti.setFont(self.asteikko_teksti.font) self.scene.addItem(self.asteikko_teksti) self.asteikko_teksti.hide()
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 paivita_asteikon_arvot(self): '''Päivittää palkin pituutta kuvaavan asteikon''' yksikko = Ominaisuudet.palauta_pituuden_yksikko(self) if yksikko == 0: self.yksikko_merkki = "m" if yksikko == 1: self.yksikko_merkki = "cm" if yksikko == 2: self.yksikko_merkki = "mm" pituus = float(Ominaisuudet.palauta_palkin_pituus(self)) teksti = str(str(pituus) + " " + self.yksikko_merkki) self.asteikko_teksti.setText(teksti) self.asteikko_teksti.show()
def palkin_pituus_valikko(self): '''Luo palkin pituus tekstin sekä spinbox-valitsimen pituuden asettamista varten Päivittää palkin pituuden Ominaisuudet luokan avulla''' self.palkin_pituus = QGraphicsSimpleTextItem("Palkin pituus") self.palkin_pituus.setPos(300, 5) self.palkin_pituus.font = QtGui.QFont() self.palkin_pituus.font.setPointSize(12) self.palkin_pituus.setFont(self.palkin_pituus.font) self.scene.addItem(self.palkin_pituus) self.palkin_pituus.hide() self.sp = QSpinBox() self.scene.addWidget(self.sp) self.sp.hide() self.sp.move(450, 5) self.sp.setRange(0, 100) self.sp.setSingleStep(1) self.sp.setMinimumHeight(30) self.sp.setValue(int(Ominaisuudet.palauta_palkin_pituus(self))) self.paivita_pituus() self.sp.valueChanged.connect(self.paivita_pituus)