import configparser import Constant from Model.Position import Real_Position class LineModel: def __init__(self,index=9): self.id = index self.name = '未定义' self.positions = [] self.section = f'{Constant.feedLine_set_section}{index}' def read_line_model(self,config_reader,index:int): self.section = f'FeedLine{index}' self.id = config_reader.getint(self.section, 'id') self.name = config_reader.get(self.section, 'name') for i in range(1, Constant.MAX_Position_num): if config_reader.has_section(f'{Constant.position_set_section}{i}'): position = PositionModel() position.read_position_model(config_reader,i) if position.lineId == self.id: self.positions.append(position) self.positions = sorted(self.positions, key=lambda x: x.order) def save_line_model(self,config_reader): if not config_reader.has_section(self.section): config_reader.add_section(self.section) config_reader.set(self.section, 'id', str(self.id)) config_reader.set(self.section, 'name', self.name) for i in range(len(self.positions)): self.positions[i].save_position_model(config_reader) class PositionModel: def __init__(self,index=99): self.X = 0.0 self.Y = 0.0 self.Z = 0.0 self.U = 0.0 self.V = 0.0 self.W = 0.0 self.id = index self.order = 0 self.lineId = 0 self.status = 0 self.lineType = 0 self.section = f'Position{index}' pass def init_position(self,real_pos:Real_Position): self.set_position(real_pos) self.id = 0 self.order = 0 self.status = 3 def read_position_model(self,config_reader,index:int): self.section = f'Position{index}' self.X = config_reader.getfloat(self.section, 'X') self.Y = config_reader.getfloat(self.section, 'Y') self.Z = config_reader.getfloat(self.section, 'Z') self.U = config_reader.getfloat(self.section, 'U') self.V = config_reader.getfloat(self.section, 'V') self.W = config_reader.getfloat(self.section, 'W') self.id = config_reader.getint(self.section, 'id') self.order = config_reader.getint(self.section, 'order') self.lineId = config_reader.getint(self.section, 'lineId') self.status = config_reader.getint(self.section, 'status') self.lineType = config_reader.getint(self.section, 'lineType') def get_position(self): real_pos = Real_Position() real_pos.init_position(self.X, self.Y, self.Z, self.U, self.V, self.W) if real_pos.X == -9999: return None return real_pos def set_position(self,real_pos:Real_Position): if real_pos == None: self.X = -9999 self.Y = -9999 self.Z = -9999 self.U = -9999 self.V = -9999 self.W = -9999 return self.X = real_pos.X self.Y = real_pos.Y self.Z = real_pos.Z self.U = real_pos.U self.V = real_pos.V self.W = real_pos.W def save_position_model(self,config_reader): if not config_reader.has_section(self.section): config_reader.add_section(self.section) config_reader.set(self.section, 'X', str(self.X)) config_reader.set(self.section, 'Y', str(self.Y)) config_reader.set(self.section, 'Z', str(self.Z)) config_reader.set(self.section, 'U', str(self.U)) config_reader.set(self.section, 'V', str(self.V)) config_reader.set(self.section, 'W', str(self.W)) config_reader.set(self.section, 'id', str(self.id)) config_reader.set(self.section, 'order', str(self.order)) config_reader.set(self.section, 'lineId', str(self.lineId)) config_reader.set(self.section, 'status', str(self.status)) config_reader.set(self.section, 'lineType', str(self.lineType))