Example #1
0
    def lisaa_tuki_alhaalta(self):
        '''Piirtää alhaalta tukemista kuvaavat grafiikat
        sekä asettaa self.tuen_tyyppi arvoksi 1'''
        leveys = 15  #nuolen leveus pikseleissä
        korkeus = 30  #nuuolen korkeus pikseleissä
        '''Nuolen kärkien koordinaatit'''
        nuoli_piste_1 = QtCore.QPointF(305, 275)
        nuoli_piste_2 = QtCore.QPointF(305 - leveys, 275 + korkeus)
        nuoli_piste_3 = QtCore.QPointF(305 + leveys, 275 + korkeus)

        nuoli_piste_4 = QtCore.QPointF(995, 275)
        nuoli_piste_5 = QtCore.QPointF(995 - leveys, 275 + korkeus)
        nuoli_piste_6 = QtCore.QPointF(995 + leveys, 275 + korkeus)
        '''Luodaan nuolia kuvaavat QPolygonF oliot'''
        self.nuoli_4 = QGraphicsPolygonItem(
            QtGui.QPolygonF([nuoli_piste_1, nuoli_piste_2, nuoli_piste_3]))
        self.nuoli_5 = QGraphicsPolygonItem(
            QtGui.QPolygonF([nuoli_piste_4, nuoli_piste_5, nuoli_piste_6]))
        self.nuoli_brush = QtGui.QBrush(1)
        self.nuoli_pencil = QtGui.QPen(QtCore.Qt.black, 2)
        self.nuoli_pencil.setStyle(QtCore.Qt.SolidLine)
        '''Lisätään nuolet sceneen'''
        self.scene.addItem(self.nuoli_4)
        self.scene.addItem(self.nuoli_5)
        self.nuoli_4.hide()
        self.nuoli_5.hide()

        tyyppi = 1
        Ominaisuudet.tuki(self, tyyppi)
        self.simuloi.setEnabled(True)
Example #2
0
 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()
Example #3
0
    def __init__(self):
        '''Asetetaan muuttujille alkuarvoja ohjelman suorittamiseksi'''
        super().__init__()
        self.title = "Lujuusanalysaattori"
        self.left = 200
        self.top = 200
        self.width = 1300
        self.height = 700
        self.palkin_default_pituus = 5
        self.square_size = 10
        self.ikkuna()
        self.button_height = 75
        self.button_width = 150
        self.button_separation = 25
        self.x = 0
        self.y = 0
        self.palkin_leveys = 700
        self.palkin_korkeus = 75
        self.palkin_keskipiste = 650
        self.palkin_paatypiste = 1000
        self.yksikko_arvo = 0
        self.voima = 20
        self.maks_jannitys = "-"
        self.asteikko_teksti = QGraphicsSimpleTextItem()
        '''Lisää QGraphicsScenen ruudukon piirtämistä varten'''
        self.scene = QtWidgets.QGraphicsScene()
        self.scene.setSceneRect(0, -20, self.width - 200, self.height - 100)
        '''Suoritetaan lukuisia metodeja, jolla ohjelma "alustetaan"'''
        self.aloita_simulaatio()
        self.simulaatioikkuna()
        self.simulaatio_nappi()
        self.materiaali_valikko()
        self.uusi_palkki_nappi()
        self.lisaa_tuki_nappi()
        self.lisaa_ulkoinen_voima_nappi()
        self.poista_ulkoinen_voima_nappi()
        self.vaihda_tuki_nappi()

        Ominaisuudet.alkuarvot(self)
        self.lisaa_palkki()
        self.palkin_pituus_valikko()
        self.yksikko_pituus()
        self.asteikko()
        self.lisaa_asteikko_arvo()
        self.asteikko_teksti.hide()
        self.tulos_teksti()
        self.lisaa_seina_tuki()
        self.lisaa_tuki_alhaalta()
        self.ulkoinen_voima_valikko()
        self.ulkoinen_voima_nuoli_alatuki()
        self.ulkoinen_voima_nuoli_seinatuki()
        Ominaisuudet.alkuarvot(self)
        '''Asetetaan tietyille napeille tietty näkyvyys'''
        self.lisaa_tuki.setEnabled(False)
        self.simuloi.setEnabled(False)
        self.show()
Example #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_()
Example #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()
Example #6
0
    def piilota_ulkoinen_voima(self):
        '''Piilotaa kaiken ulkoiseen voimaan liittyvän'''
        self.sp_voima.hide()
        self.yksikko_voima.hide()
        self.ulkoinen_voima.hide()
        self.lisaa_ulkoinen_voima.show()
        self.lisaa_ulkoinen_voima.setEnabled(True)
        self.viiva.hide()
        self.nuoli_3.hide()
        self.viiva_5.hide()
        self.nuoli_6.hide()
        self.poista_ulkoinen_voima.hide()
        self.lisaa_ulkoinen_voima.show()
        self.tulos.hide()

        Ominaisuudet.ulkoinen_voima(self, 0)
Example #7
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)
    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
Example #9
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()
Example #10
0
    def lisaa_seina_tuki(self):
        '''Piirtää seinätukea kuvaavat viivat sekä asettaa self.tuen_tyyppi arvoksi 
        Asettaa SIMULOI-napin painettavaksi'''
        viiva = QtGui.QPen(QtCore.Qt.black, 2)
        viiva.setStyle(QtCore.Qt.SolidLine)
        self.viiva_1 = QGraphicsLineItem(QtCore.QLineF(300, 202, 275, 225))
        self.viiva_2 = QGraphicsLineItem(QtCore.QLineF(300, 222, 275, 245))
        self.viiva_3 = QGraphicsLineItem(QtCore.QLineF(300, 242, 275, 265))
        self.viiva_4 = QGraphicsLineItem(QtCore.QLineF(300, 262, 275, 285))

        self.scene.addItem(self.viiva_1)
        self.scene.addItem(self.viiva_2)
        self.scene.addItem(self.viiva_3)
        self.scene.addItem(self.viiva_4)
        self.viiva_1.hide()
        self.viiva_2.hide()
        self.viiva_3.hide()
        self.viiva_4.hide()
        tyyppi = 0
        Ominaisuudet.tuki(self, tyyppi)
        self.simuloi.setEnabled(True)
Example #11
0
    def ulkoinen_voima_nuoli_alatuki(self):
        '''Nuolen kärkien koordinaatit alhaalta tuetulle palkille'''
        nuoli_piste_1 = QtCore.QPointF(self.palkin_keskipiste - 7, 185)
        nuoli_piste_2 = QtCore.QPointF(self.palkin_keskipiste, 200)
        nuoli_piste_3 = QtCore.QPointF(self.palkin_keskipiste + 7, 185)
        viiva_x = self.palkin_keskipiste
        '''Luodaan nuoli QPolygonItem olio'''
        self.nuoli_6 = QGraphicsPolygonItem(
            QtGui.QPolygonF([nuoli_piste_1, nuoli_piste_2, nuoli_piste_3]))
        self.nuoli_brush = QtGui.QBrush(1)
        self.nuoli_pencil = QtGui.QPen(QtCore.Qt.black, 2)
        self.nuoli_pencil.setStyle(QtCore.Qt.SolidLine)

        self.viiva_5 = QGraphicsLineItem(
            QtCore.QLineF(viiva_x, 100, viiva_x, 200))
        '''Lisätään viiva sekä päiden nuolet sceneen'''
        self.scene.addItem(self.viiva_5)
        self.scene.addItem(self.nuoli_6)
        self.viiva_5.hide()
        self.nuoli_6.hide()
        '''Lisätään tieto, että voima on asetettu'''
        Ominaisuudet.ulkoinen_voima(self, 1)
Example #12
0
 def uusi_rakenne(self):
     '''Muokkaa ikkunaa uuden simulaation luomista varten'''
     self.rect.hide()
     self.ulkoinen_voima.hide()
     self.sp_voima.hide()
     self.yksikko_voima.hide()
     self.nuoli_1.hide()
     self.nuoli_2.hide()
     self.nuoli_3.hide()
     self.nuoli_4.hide()
     self.nuoli_5.hide()
     self.nuoli_6.hide()
     self.viiva_1.hide()
     self.viiva_2.hide()
     self.viiva_3.hide()
     self.viiva_4.hide()
     self.viiva_5.hide()
     self.viiva.hide()
     self.palkin_pituus.hide()
     self.sp.hide()
     self.yksikko.hide()
     self.line.hide()
     self.asteikko_teksti.hide()
     self.tulos.hide()
     self.nollaa_gradientti()
     self.lisaa_tuki.show()
     self.vaihda_tuki.hide()
     self.poista_ulkoinen_voima.hide()
     self.lisaa_ulkoinen_voima.show()
     Ominaisuudet.alkuarvot(self)
     '''Asettaa napit'''
     self.uusi_palkki.setEnabled(True)
     self.lisaa_ulkoinen_voima.setEnabled(False)
     self.lisaa_tuki.setEnabled(False)
     self.simuloi.setEnabled(False)
     self.tallennaAction.setEnabled(False)
     '''Päivittää tuen tyypiksi arvon, joka vastaa, ettei tukea ole'''
     self.tuen_tyyppi = 2
Example #13
0
 def ulkoinen_voima_nuoli_seinatuki(self):
     '''Luo nuolen osoittamaan ulkoisen voiman paikkaa'''
     voima_viiva = QtGui.QPen(QtCore.Qt.black, 2)
     voima_viiva.setStyle(QtCore.Qt.SolidLine)
     '''Nuolen kärkien koordinaatit seinätuelle'''
     nuoli_piste_1 = QtCore.QPointF(self.palkin_paatypiste - 7, 185)
     nuoli_piste_2 = QtCore.QPointF(self.palkin_paatypiste, 200)
     nuoli_piste_3 = QtCore.QPointF(self.palkin_paatypiste + 7, 185)
     viiva_x = self.palkin_paatypiste
     self.viiva = QGraphicsLineItem(
         QtCore.QLineF(viiva_x, 100, viiva_x, 200))
     '''Luodaan nuoli QPolygonItem olio'''
     self.nuoli_3 = QGraphicsPolygonItem(
         QtGui.QPolygonF([nuoli_piste_1, nuoli_piste_2, nuoli_piste_3]))
     self.nuoli_brush = QtGui.QBrush(1)
     self.nuoli_pencil = QtGui.QPen(QtCore.Qt.black, 2)
     self.nuoli_pencil.setStyle(QtCore.Qt.SolidLine)
     '''Lisätään viiva sekä päiden nuolet sceneen'''
     self.scene.addItem(self.viiva)
     self.scene.addItem(self.nuoli_3)
     self.viiva.hide()
     self.nuoli_3.hide()
     '''Lisätään tieto, että voima on asetettu'''
     Ominaisuudet.ulkoinen_voima(self, 1)
Example #14
0
 def yksikko_pituus(self):
     '''Luo yksikönvalinta dropdown-menun
     ja arvon muuttuessa päivittää yksikön Ominaisuudet-luokassa'''
     self.yksikko = QComboBox()
     self.yksikko.addItem("m", 0)
     self.yksikko.addItem("cm", 1)
     self.yksikko.addItem("mm", 2)
     self.yksikko.move(500, 5)
     self.yksikko.setMinimumHeight(30)
     self.yksikko.setEditable(True)
     self.yksikko.lineEdit().setAlignment(QtCore.Qt.AlignCenter)
     self.yksikko.setCurrentIndex(
         Ominaisuudet.palauta_pituuden_yksikko(self))
     self.scene.addWidget(self.yksikko)
     self.yksikko.hide()
     self.yksikko_arvo = self.yksikko.currentData()
     self.yksikko.currentIndexChanged.connect(self.paivita_yksikko)
Example #15
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)
Example #16
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()
Example #17
0
 def paivita_yksikko_voima(self):
     '''Lukee ykiskön arvon 
     ja kutsuu Ominaisuudet-luokan metodia yksikko_voima'''
     self.yksikko_voima_arvo = self.yksikko_voima.currentData()
     Ominaisuudet.yksikko_voima(self, self.yksikko_voima_arvo)
Example #18
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)
Example #19
0
 def paivita_yksikko(self):
     '''Lukee yksikön arvon 
     ja kutsuu Ominaisuudet-luokan metodia yksikko'''
     self.yksikko_arvo = self.yksikko.currentData()
     Ominaisuudet.yksikko(self, self.yksikko_arvo)
     self.paivita_asteikon_arvot()
Example #20
0
 def paivita_pituus(self):
     '''Lukee palkin pituuden ja aktivoi Ominaisuudet luokan meodin palkin pituus'''
     self.palkin_pituus_arvo = self.sp.value()
     Ominaisuudet.palkin_pituus(self, self.palkin_pituus_arvo)
     self.paivita_asteikon_arvot()
Example #21
0
 def paivita_tulos_teksti(self):
     '''Päivittää maksimijännityksen arvoa kuvaavan tekstin'''
     maks_jannitys = Ominaisuudet.palauta_tulos(self)
     self.tulos.setText("Maksimijännitys " + str(maks_jannitys) + " MPa")
     self.tulos.show()
Example #22
0
 def paivita_tuen_tyyppi(self, tyyppi):
     '''Päivittää tuen tyypin arvon Ominaisuudet luokassa'''
     Ominaisuudet.tuki(self, tyyppi)
Example #23
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))
Example #24
0
 def paivita_voima(self):
     '''Lukee voiman arvon 
     ja kutsuu Ominaisuudet luoka metodia voima'''
     voima = self.sp_voima.value()
     Ominaisuudet.voima(self, voima)
Example #25
0
 def lataaja(self, tiedosto):
     '''Hoitaa muuttujien lataamisen annetusta tiedostosta'''
     lataus = False 
     try:
         '''Yrittää avata annetun tiedoston. Ilmoittaa jos tulee virhe'''
         file = open(tiedosto, "r")
         rivi = file.readline()
         rivi = rivi.strip()
         if rivi != "Lujuusanalysaattori":
             '''Kerrotaan käyttäjälle, että tiedosto oli virheellinen''' 
             msgBox = QMessageBox()
             msgBox.setText("Tiedoston lukeminen ei onnistu: Virheellinen tiedosto")
             msgBox.setWindowTitle("Virhe")
             msgBox.setMinimumWidth(50)
             msgBox.addButton(QPushButton('OK'), QMessageBox.NoRole)
             msgBox.exec_() 
             return lataus
     except FileNotFoundError:
         return lataus
     
     try:
         '''Ohitetaan päivämäärä'''
         rivi = file.readline()
         '''Luetaan arvot ja tallennetaan ne ominaisuudet luokan avulla'''
         '''Palkin pituus'''
         rivi = file.readline()
         Ominaisuudet.palkin_pituus(self, int(rivi))
         
         '''Palkin pituuden yksikko'''
         rivi = file.readline()
         Ominaisuudet.yksikko(self, int(rivi))
         
         '''Voiman suuruus'''
         rivi = file.readline()
         Ominaisuudet.voima(self, int(rivi)) 
         
         '''Voiman yksikkö'''
         rivi = file.readline()
         Ominaisuudet.yksikko_voima(self, int(rivi)) 
         
         '''Materiaali'''
         rivi = file.readline()
         Ominaisuudet.materiaali(self, int(rivi)) 
         
         '''Tuen tyyppi'''
         rivi = int(file.readline())
         Ominaisuudet.tuki(self, rivi)
         
         '''Onko ulkoinen voima asetettu 0=ei, 1=kyllä'''
         rivi = file.readline()
         Ominaisuudet.ulkoinen_voima(self, int(rivi)) 
         
         return True 
     
     except AttributeError:
         pass     
Example #26
0
 def paivita_materiaali(self):
     '''Lukee materiaalin arvon 
     ja kutsuu Ominaisuudet-luokan metodia materiaali'''
     materiaali = self.materiaali_valinta.currentData()
     Ominaisuudet.materiaali(self, materiaali)