Files
AutoControlSystem-git/Model/FeedModel.py
2024-12-04 23:42:52 +08:00

111 lines
4.0 KiB
Python

import configparser
import Constant
from CU.Feeding import LineType
from Model.Position import Real_Position
class LineModel:
def __init__(self,index=999):
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))