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 ulkoinen_voima_valikko(self): '''Luo voiman suuruus -tekstin''' self.ulkoinen_voima = QGraphicsSimpleTextItem("Voiman suuruus") self.ulkoinen_voima.setPos(600, 5) self.ulkoinen_voima.font = QtGui.QFont() self.ulkoinen_voima.font.setPointSize(12) self.ulkoinen_voima.setFont(self.ulkoinen_voima.font) self.lisaa_ulkoinen_voima.setEnabled(False) self.scene.addItem(self.ulkoinen_voima) self.ulkoinen_voima.hide() '''Luo voiman arvon QSpinBoxin''' self.sp_voima = QSpinBox() self.sp_voima.move(750, 5) self.sp_voima.setRange(0, 10000) self.sp_voima.setSingleStep(1) self.sp_voima.setMinimumHeight(30) self.sp_voima.setValue(int(Ominaisuudet.palauta_voima(self))) self.sp_voima.valueChanged.connect(self.paivita_voima) self.scene.addWidget(self.sp_voima) self.sp_voima.hide() '''Luo yksikönvalinta QComboBOxin''' self.yksikko_voima = QComboBox() self.yksikko_voima.addItem("kN", 0) self.yksikko_voima.addItem("N", 1) self.yksikko_voima.move(820, 5) self.yksikko_voima.setMinimumHeight(30) self.yksikko_voima.setCurrentIndex( int(Ominaisuudet.palauta_voiman_yksikko(self))) self.yksikko_voima.setEditable(True) self.yksikko_voima.lineEdit().setAlignment(QtCore.Qt.AlignCenter) self.scene.addWidget(self.yksikko_voima) self.yksikko_voima.currentIndexChanged.connect( self.paivita_yksikko_voima) self.yksikko_voima.hide()
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))