Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
    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()
Пример #4
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))
Пример #5
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_()
Пример #6
0
    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)