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
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
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
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 ['']
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
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
def listSP63(self): '''возвращает список доступных классов по СП63''' fil = tables_csv(filename='MaterialData\\concreteSP63.csv', typ='none') return fil.get_title_column()
def listSP52(self): '''возвращает список доступных классов по СП52''' fil = tables_csv(filename='MaterialData\\reinfSP52.csv', typ='none') return fil.get_title_column()
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
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
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