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
Esempio n. 2
0
    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))
Esempio n. 3
0
 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()
Esempio n. 4
0
    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_()
Esempio n. 5
0
    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()
Esempio n. 6
0
    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)