Ejemplo n.º 1
0
    def __init__(self, typ, el, dim=0, typ_steel='prokat'):
        
        if dim==0:
            t=el.t()*1
        else:
            t=el.t()*10
#        print el.t()
        if typ_steel=='list':
            table=tables_csv('SteelData/mat_steel1987l.csv','float')
        if typ_steel=='prokat':
            table=tables_csv('SteelData/mat_steel1987.csv','float')
        list_table=table.get_title_column()
        i=0
        ryn=0
        run=0
        ry=0
        ru=0

        for typ_list in list_table:
            i=i+1
#            print typ_list
            if str(typ_list)==str(typ):
#                print('tut')

                t1=table.get_ij(i,1)
                t2=table.get_ij(i,2)
#                print t1, t2
                if t>=t1 and t<=t2:             
                    ryn=table.get_ij(i,3)
                    run=table.get_ij(i,4)
                    ry=table.get_ij(i,5)
                    ru=table.get_ij(i,6)
        self.__ryn=ryn/9.81*100
        self.__run=run/9.81*100
        self.__ry=ry/9.81*100
        self.__ru=ru/9.81*100
        self.__rs=0.58*self.__ry
        self.__rth=0.5*self.__ru
        self.__rthf=0.5*self.__ry
Ejemplo n.º 2
0
 def __init__(self, code,typ_steel='prokat'):
     list_code=[u'СНиП II-23-81*', u'СП16.13330.2011']
     if code==list_code[0] and typ_steel=='prokat':
         fil='SteelData/mat_steel1987.csv'
     if code==list_code[0] and typ_steel=='list':
         fil='SteelData/mat_steel1987l.csv'
     if code==list_code[1] :
         fil='SteelData/mat_steel.csv'
     table=tables_csv(fil,'float')
     list_table=table.get_title_column()
     
     lst=[]
     for x in list_table:
         if not(x in lst):
             lst.append(x)
     self.lst=lst
Ejemplo n.º 3
0
    def propertiesSP52(self):
        self.ephi()
        name = unicode(self.b)
        fil = tables_csv(filename='MaterialData\\concreteSP52.csv', typ='float')
        table = fil.get_table()
        index = False
        for i in table[1:]:
            if name == i[0]:
                index = i
        if index != False:
            self.rbn, self.rbtn, self.rb, self.rbt, self.eb = index[1:]
            self.rbn *= (100 / 9.81)
            self.rbtn *= (100 / 9.81)
            self.rb *= (100 / 9.81 / self.yb)
            self.rbt *= (100 / 9.81 / self.yb)
            self.eb *= (100 / 9.81)

            return self.rbn, self.rb, self.rbtn, self.rbt, self.eb, self.eb0, self.eb2, self.eb1red, self.ebt0, self.ebt2, self.ebt1red, self.ebl0, self.ebl2, self.ebl1red, self.eblt0, self.eblt2, self.eblt1red, self.phi_crc
Ejemplo n.º 4
0
    def output_list_sect_num(self, sortament, name):
        if sortament!="" and name!="":
            for x in self.dict_sort:
                if name==QtCore.QString(x):
                    number=self.dict_sort[x]
                    break
            if number in self.dict_sostav_sort:
                number=self.dict_sostav_sort[number]

            for x in self.__list4sortament[number+1]:
                if QtCore.QString(x[0])==sortament:
                    fil=x[1]
            
            table_sect=tables.tables_csv(fil,'float')
            list_sect=table_sect.get_title_column()
            return list_sect
        else:
            return ['']
Ejemplo n.º 5
0
    def propertiesSP52(self):
        name = self.typ + str(self.a)
        fil = tables_csv(filename='MaterialData\\reinfSP52.csv', typ='float')
        table = fil.get_table()
        index = False
        for i in table[1:]:
            #            print name, i[0]
            if name == i[0]:
                index = i
        if index != False:
            self.rsn, self.rs, self.rsw, self.es, self.es2, self.ys = index[1:]
            self.rs /= self.ysi
            self.rsw /= self.ysi

            self.rsn *= (100 / 9.81)
            self.rs *= (100 / 9.81)
            self.rsw *= (100 / 9.81)
            self.es *= (100 / 9.81)

            return self.rsn, self.rs, self.rsw, self.es, self.es2
Ejemplo n.º 6
0
    def propertiesSP63(self):
        name = self.typ + str(self.a)
        fil = tables_csv(filename='MaterialData\\reinfSP63.csv', typ='float')
        table = fil.get_table()
        index = False
        for i in table[1:]:
            if name == i[0]:
                index = i
        if index != False:
            self.rsn, self.rs, self.rsw, self.es, self.es2, self.ys = index[1:]
            self.rs /= self.ysi
            self.rsw /= self.ysi

            self.rsn *= (100 / 9.81)
            self.rs *= (100 / 9.81)
            self.rsw *= (100 / 9.81)
            self.es *= (100 / 9.81)

            if (self.a == 600 and self.typ == 'A') or (self.a == 500 and self.typ == 'B'):
                self.ysc = 0.95
            else:
                self.ysc = 1

            return self.rsn, self.rs, self.rsw, self.es, self.es2
Ejemplo n.º 7
0
 def listSP63(self):
     '''возвращает список доступных классов по СП63'''
     fil = tables_csv(filename='MaterialData\\concreteSP63.csv', typ='none')
     return fil.get_title_column()
Ejemplo n.º 8
0
 def listSP52(self):
     '''возвращает список доступных классов по СП52'''
     fil = tables_csv(filename='MaterialData\\reinfSP52.csv', typ='none')
     return fil.get_title_column()
Ejemplo n.º 9
0
    def output_simple(self, code, type_element, typ_sec, gost, num_sect, stl, inp):
        """ Возвращает список выходных данных простого расчета,
            исходные данные:
            code - текстом (QString) имя норм (СНиП II-23-81*)
            type_element - текстом (QString) название типа элемента (Ферма)
            typ_sec - текстом (QString) название сечения (Уголки в тавр (длинные стор. - вверх))
            gost - текстом (QString) названия ГОСТа соратмента (ГОСТ 8509-93 Уголки равнополочные)
            num_sect - текстом (QString) номер сечения (L20x20x3)
            stl - текстом (QString) сталь (C235)
            inp - список дополнительных данных"""
#ищем файл
        flag_sostav=False
#        print 'basa', num_sect
        for  x in self.dict_sort:
            if QtCore.QString(x)==typ_sec:
                y=self.dict_sort[x]
                typ_sec=x #меняем текст на номер
                break
#        print y, 'y'
        
        if y in self.dict_sostav_sort:
            y=self.dict_sostav_sort[y] #меняем y на номер госта
            flag_sostav=True
        
        for i in self.__list4sortament[1+y]:
            if QtCore.QString(i[0])==gost:
                path=i[1]
                break
#Грузим свойства прлфиля
                
        table=tables.tables_csv(path, 'float')
        table_data=table.get_table()
    #определяем кол-во профилей в файле

        input_data=self.input_data4sortament(self.dict_sort[typ_sec])
        len_input_data=len(input_data)
        
#        print table_data
#        print table_data[1:]

        for x in table_data[1:]:
            if num_sect==QtCore.QString(x[0]):
                if flag_sostav==False:
                    pr=self.output_data(typ_sec, x[1:-3])
                else:
                    add_ln=len_input_data-len(x[1:-3])
                    lst=x[1:-3]+inp[0:0+add_ln]
                    pr=self.output_data(typ_sec, lst)
                break
        
        if code==QtCore.QString(self.__list_code[0]):
            s=steel.steel_snip1987(str(stl), pr,dim=1, typ_steel='prokat')
        elif code==QtCore.QString(self.__list_code[1]):
            s=steel.steel_snip20107n(str(stl), pr,dim=1)
        
        if s.ry()!=0:
#        print s.ry()
            forc=codes.force()
            
            if type_element== QtCore.QString(self.__list_elements[0][0]    ):
                el=codes.elements(s, pr, mux=inp[-2], muy=inp[-1], lfact=inp[-3]) 
    #            print inp[-1],inp[-2]
                sol=codes.ferma(el,forc,[inp[-5],inp[-4]])
    
                if code==QtCore.QString(self.__list_code[0]):
                    out=sol.output_data_all_snip_old()
                elif code==QtCore.QString(self.__list_code[1]):
                    out=sol.output_data_all_snip_n()
    
    
            elif  type_element== QtCore.QString(self.__list_elements[1][0]    ):
                el=codes.elements(s, pr, mub=inp[-5], lfact=inp[-6]) 
    #            print inp[-1],inp[-2]
                sol=codes.beam(el,forc,yc=[inp[-8]],ycb=inp[-7])
    
                if code==QtCore.QString(self.__list_code[0]):
                    out=sol.output_data_all_snip_old(inp[-4],inp[-3],inp[-2],inp[-1])
                elif code==QtCore.QString(self.__list_code[1]):
                    out=sol.output_data_all_snip_n(inp[-4],inp[-3],inp[-2],inp[-1])
        
            
            
            return out
        else:
            out=0
            return out
Ejemplo n.º 10
0
    def checkPP(self, code, element, typeSection,formSection,sortament,numberSection,stl,lstAddData, lstInputData, lstForce):
        '''Проверка сечений - для начала загружаем все даные и отправляем их в codes, 
        Исходные данные - отправляем в QString
        code -  имя норм (СНиП II-23-81*)
        element - название типа элемента (Ферма), 
        typeSection- название типа сечения (пока только ПРОКАТ)
        formSection - название сечения (Уголки в тавр (длинные стор. - вверх))
        sortament - текстом (QString) названия ГОСТа соратмента (ГОСТ 8509-93 Уголки равнополочные)
        numberSection - номер сечения (L20x20x3)
        steel - текстом (QString) сталь (C235)
        lstAddData - для сечения
        lstInputData - для расчета
        lstForce - усилия'''
#        print lstInputData
        #Ставим флаг в фальш
        flag_sostav=False
        
        #записываем в typ_sec - название формы сечения, в y записываем номер сечения 
        for x in self.dict_sort:
            if QtCore.QString(x)==formSection:
                y=self.dict_sort[x]
                typ_sec=x #меняем текст на номер
                break
        
        #если номер в списке - меняем флаг
        if y in self.dict_sostav_sort:
            y=self.dict_sostav_sort[y]
            flag_sostav=True

        #ищем путь к искомому сортаменту
        for i in self.__list4sortament[1+y]:
            if QtCore.QString(i[0])==sortament:
                path=i[1]
                break

        #загружаем в табл дата данные сортаментов
        table=tables.tables_csv(path, 'float')
        table_data=table.get_table()


        #загружаем список исходных данных для ПРОФИЛЯ!!! - т.е. h, b, s, t, и т.д.
        
        input_data=self.input_data4sortament(self.dict_sort[typ_sec])
        len_input_data=len(input_data)
        

        for x in table_data[1:]:
            if numberSection==QtCore.QString(x[0]):
                if flag_sostav==False:
                    pr=self.output_data(typ_sec, x[1:-3])
                else:
                    add_ln=len_input_data-len(x[1:-3])
                    lst=x[1:-3]+lstAddData
                    pr=self.output_data(typ_sec, lst)
                break
        
        #загружаем сталь
        if code==QtCore.QString(self.__list_code[0]):
            s=steel.steel_snip1987(str(stl), pr,dim=1, typ_steel='prokat')
        elif code==QtCore.QString(self.__list_code[1]):
            s=steel.steel_snip20107n(str(stl), pr,dim=1)
        
        if s.ry()!=0:
#        print s.ry()
        
            #НЕ раскидываем услия и передаем как список
            forc=codes.force(lstForce=lstForce)
            
            #создаем элемент ферма 
            if element== QtCore.QString(self.__list_elements[0][0]    ):
                el=codes.elements(s, pr, mux=lstInputData[-5], muy=lstInputData[-4], lfact=lstInputData[-6]) 
    #            print inp[-1],inp[-2]
                sol=codes.FermaPP()
                sol.reinit(el,forc,yc=[lstInputData[-8],lstInputData[-7]])
    
                if code==QtCore.QString(self.__list_code[0]):
                    out=sol.outDataOld(lstInputData[-3],lstInputData[-2],lstInputData[-1])
                elif code==QtCore.QString(self.__list_code[1]):
                    out=sol.outDataN(lstInputData[-3],lstInputData[-2],lstInputData[-1])
    
            #создаем элемент балка
            elif  element== QtCore.QString(self.__list_elements[1][0]    ):
                el=codes.elements(s, pr, mub=lstInputData[-5], lfact=lstInputData[-6]) 
    #            print inp[-1],inp[-2]
                sol=codes.BeamPP()
                sol.reinit(el,forc,yc=[lstInputData[-8]],ycb=lstInputData[-7])
    
                if code==QtCore.QString(self.__list_code[0]):
                    out=sol.outDataOld(lstInputData[-4],lstInputData[-3],lstInputData[-2],lstInputData[-1])
                elif code==QtCore.QString(self.__list_code[1]):
                    out=sol.outDataN(lstInputData[-4],lstInputData[-3],lstInputData[-2],lstInputData[-1])
        
            elif  element== QtCore.QString(self.__list_elements[2][0]    ):
                el=codes.elements(s, pr, mux=lstInputData[3], muy=lstInputData[4], mub=lstInputData[5], lfact=lstInputData[2]) 
    #            print inp[-1],inp[-2]
                sol=codes.ColumnPP()
                sol.reinit(el,forc,yc=[lstInputData[0]],ycb=lstInputData[1])
    
                if code==QtCore.QString(self.__list_code[0]):
                    out=sol.outDataOld(lstInputData[-3],lstInputData[-2],lstInputData[-1])
                elif code==QtCore.QString(self.__list_code[1]):
                    out=sol.outDataN(lstInputData[-3],lstInputData[-2],lstInputData[-1])
            
            
            return out
        else:
            out=0
            return out
Ejemplo n.º 11
0
def solve_load_table(path, frame, num_sort):
#получаем весь файл
    table=tables_csv(path, 'float')
    table_data=table.get_table()
#определяем кол-во профилей в файле
    len_table=len(table_data)-1

#определяем кол-во входных данных     
    input_data=basa.input_data4sortament(num_sort)
    len_input_data=len(input_data)

#формируем заголовок
    header_horisontal=input_data

    prof_first=basa.output_data(num_sort, table_data[1][1:len_input_data+1])
    header_horisontal=list(u"№")+header_horisontal+(prof_first.output_list())
#ставим заголовок:
#    print header_horisontal

    
#запонлняем таблицу    
    output_table=[]
    for x in table_data[1:]:
        prof_item=basa.output_data(num_sort, x[1:len_input_data+1])
        #формируем строку:
        
        line=x[0:len_input_data+1]
        
#        line[0]=line[0].replace(u'II',u'П')
#        window.setWindowTitle(line[0])

#        print line[0]
        p1=abs(prof_item.output_dict()[u'A, см2']-x[-3])/x[-3]
        p2=abs(prof_item.output_dict()[u'Jx, см4']-x[-2])/x[-2] 

        p3=abs(prof_item.output_dict()[u'Jy, см4']-x[-1])/x[-1]

        if p1<0.005 and p2<0.005 and p3<0.005:
            for y in prof_item.output_list():
                if type(prof_item.output_dict()[y])==type(0.1):
                    txt="%.2f"%(prof_item.output_dict()[y])
                else:
                    txt=prof_item.output_dict()[y]

  

                line.append(txt)
        else:
            print line[0], p1, p2, p3
            print "Error", prof_item.output_dict()[u'A, см2'],prof_item.output_dict()[u'Jx, см4'],prof_item.output_dict()[u'Jy, см4']
            for y in prof_item.output_list():
                line.append("Error")   
        output_table.append(line)

    frame.setColumnCount(len(output_table[0]))
    frame.setRowCount(len(output_table))
    frame.setHorizontalHeaderLabels(header_horisontal)

    x=-1
    for i in output_table:
        x=x+1 
        y=-1
        for j in i:
            y=y+1
            item = QtGui.QTableWidgetItem(unicode(j))
            frame.setItem(x,y,item)
            frame.item(x,y).setFlags(QtCore.Qt.ItemFlags(1+2+4+8+6+12+64))
      
#    for i in range(0,0):
#        frame.setColumnWidth(i, 40)    
    
    for i in range(0,len_input_data+1):
        frame.setColumnWidth(i, 35)    
    for i in range(len_input_data+1,len(output_table[0])+1):
        frame.setColumnWidth(i, 55)    

    frame.setColumnWidth(0, 65)                            
    return 0