287 lines
17 KiB
Python
287 lines
17 KiB
Python
from odoo import models, fields
|
||
|
||
|
||
class BasicParametersFixture(models.Model):
|
||
_name = 'sf.fixture.materials.basic.parameters'
|
||
_description = '夹具物料基本参数'
|
||
|
||
fixture_model_id = fields.Many2one('sf.fixture.model', '夹具型号')
|
||
name = fields.Char('物料号', size=20)
|
||
length = fields.Float('长度(mm)', digits=(16, 2))
|
||
width = fields.Float('宽度(mm)', digits=(16, 2))
|
||
height = fields.Float('高度(mm)', digits=(16, 2))
|
||
diameter = fields.Float('直径(mm)', digits=(16, 2))
|
||
|
||
# '零点卡盘' 字段
|
||
weight = fields.Float('重量(mm)', digits=(16, 2))
|
||
orientation_dish_diameter = fields.Float('定位盘直径(mm)', digits=(16, 2))
|
||
clamping_diameter = fields.Float('装夹直径(mm)', digits=(16, 2))
|
||
clamping_num = fields.Selection([('1', '1'), ('2', '2'), ('4', '4'), ('6', '6'), ('8', '8')], string='装夹单元数')
|
||
chucking_power_max = fields.Float('最大夹持力(KN)', digits=(16, 2))
|
||
repeated_positioning_accuracy = fields.Char('重复定位精度(mm)', size=20)
|
||
boolean_transposing_hole = fields.Boolean('是否有转位孔')
|
||
unlocking_method = fields.Selection(
|
||
[('手动', '手动'), ('气动', '气动'), ('液压', '液压'), ('电动', '电动'), ('其他', '其他')], string='解锁方式')
|
||
boolean_chip_blowing_function = fields.Boolean('是否有吹屑功能')
|
||
carrying_capacity_max = fields.Float('最大承载重量(kg)', digits=(16, 2))
|
||
rigidity = fields.Integer('硬度HRC')
|
||
materials_model_id = fields.Many2one('sf.materials.model', '夹具材质')
|
||
machine_tool_type_id = fields.Many2one('sf.machine_tool.type', '适用机床型号')
|
||
|
||
# ’零点托盘‘ 字段
|
||
connector_diameter = fields.Selection([('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('8', '8')],
|
||
string='连接头直径(mm)')
|
||
way_to_install = fields.Selection(
|
||
[('接口式', '接口式'), ('螺栓固定', '螺栓固定'), ('磁吸式', '磁吸式'), ('其他', '其他')], string='安装方式')
|
||
type_of_drive = fields.Selection(
|
||
[('气动式', '气动式'), ('液压式', '液压式'), ('机械式', '机械式'), ('电动式', '电动式'), ('其他', '其他')],
|
||
string='驱动方式')
|
||
|
||
# ’气动夹具‘ 字段
|
||
gripper_length_min = fields.Float('夹持工件最小长度(mm)', digits=(16, 2))
|
||
gripper_width_min = fields.Float('夹持工件最小宽度(mm)', digits=(16, 2))
|
||
gripper_height_min = fields.Float('夹持工件最小高度(mm)', digits=(16, 2))
|
||
gripper_diameter_min = fields.Float('夹持工件最小直径(mm)', digits=(16, 2))
|
||
gripper_length_max = fields.Float('夹持工件最大长度(mm)', digits=(16, 2))
|
||
gripper_width_max = fields.Float('夹持工件最大宽度(mm)', digits=(16, 2))
|
||
gripper_height_max = fields.Float('夹持工件最大高度(mm)', digits=(16, 2))
|
||
gripper_diameter_max = fields.Float('夹持工件最大直径(mm)', digits=(16, 2))
|
||
rated_air_pressure = fields.Float('额定气压(Mpa)', digits=(16, 2))
|
||
interface_materials_model_id = fields.Many2one('sf.materials.model', '接口类型')
|
||
|
||
# ‘虎钳夹具' 字段
|
||
transverse_groove = fields.Float('横向配合槽n(mm)', digits=(16, 2))
|
||
longitudinal_fitting_groove = fields.Float('纵向配合槽l(mm)', digits=(16, 2))
|
||
|
||
# '磁吸夹具' 字段
|
||
height_tolerance_value = fields.Char('高度公差(mm)')
|
||
rated_adsorption_force = fields.Float('额定吸附力(N/cm²)', digits=(16, 2))
|
||
magnetic_field_height = fields.Float('磁场高度(mm)', digits=(16, 2))
|
||
magnetic_pole_plate_grinding_allowance = fields.Float('磁极板磨削余量(mm)', digits=(16, 2))
|
||
|
||
# '转接板(锁板)夹具' 字段
|
||
screw_size = fields.Float('螺牙大小(mm)', digits=(16, 2))
|
||
via_hole_diameter = fields.Float('过孔直径(mm)', digits=(16, 2))
|
||
|
||
# '三爪卡盘' 字段
|
||
mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2))
|
||
centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2))
|
||
|
||
code = fields.Char('编码')
|
||
active = fields.Boolean('有效', default=True)
|
||
|
||
def _get_basic_parameters_list(self, fixture_materials_data, fixture_materials_name):
|
||
if fixture_materials_name == '零点卡盘':
|
||
return self._json_zero_chuck_param(fixture_materials_data)
|
||
elif fixture_materials_name == '零点托盘':
|
||
return self._json_zero_tray_param(fixture_materials_data)
|
||
elif fixture_materials_name == '气动夹具':
|
||
return self._json_pneumatic_fixture_param(fixture_materials_data)
|
||
elif fixture_materials_name == '虎钳夹具':
|
||
return self._json_jaw_vice_fixture_param(fixture_materials_data)
|
||
elif fixture_materials_name == '磁吸夹具':
|
||
return self._json_magnet_fixture_param(fixture_materials_data)
|
||
elif fixture_materials_name == '转接板(锁板)夹具':
|
||
return self._json_adapter_board_fixture_param(fixture_materials_data)
|
||
elif fixture_materials_name == '三爪卡盘':
|
||
return self._json_scroll_chuck_param(fixture_materials_data)
|
||
return {}
|
||
|
||
def _json_zero_chuck_param(self, obj):
|
||
"""零点卡盘:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'diameter': obj['diameter'],
|
||
'weight': obj['weight'],
|
||
'orientation_dish_diameter': obj['orientation_dish_diameter'],
|
||
'clamping_diameter': obj['clamping_diameter'],
|
||
'clamping_num': obj['clamping_num'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'],
|
||
'boolean_transposing_hole': obj['boolean_transposing_hole'],
|
||
'unlocking_method': obj['unlocking_method'],
|
||
'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'rigidity': obj['rigidity'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search(
|
||
[('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id,
|
||
'active': obj['active']}
|
||
|
||
def _json_zero_tray_param(self, obj):
|
||
"""零点托盘:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'diameter': obj['diameter'],
|
||
'weight': obj['weight'],
|
||
'clamping_diameter': obj['clamping_diameter'],
|
||
'connector_diameter': obj['connector_diameter'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'],
|
||
'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'],
|
||
'way_to_install': obj['way_to_install'],
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'active': obj['active']}
|
||
|
||
def _json_pneumatic_fixture_param(self, obj):
|
||
"""气动夹具:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'weight': obj['weight'],
|
||
'gripper_length_min': obj['gripper_length_min'],
|
||
'gripper_width_min': obj['gripper_width_min'],
|
||
'gripper_height_min': obj['gripper_height_min'],
|
||
'gripper_diameter_min': obj['gripper_diameter_min'],
|
||
'gripper_length_max': obj['gripper_length_max'],
|
||
'gripper_width_max': obj['gripper_width_max'],
|
||
'gripper_height_max': obj['gripper_height_max'],
|
||
'gripper_diameter_max': obj['gripper_diameter_max'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'rated_air_pressure': obj['rated_air_pressure'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'active': obj['active']}
|
||
|
||
def _json_jaw_vice_fixture_param(self, obj):
|
||
"""虎钳夹具:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'weight': obj['weight'],
|
||
'gripper_length_min': obj['gripper_length_min'],
|
||
'gripper_width_min': obj['gripper_width_min'],
|
||
'gripper_height_min': obj['gripper_height_min'],
|
||
'gripper_diameter_min': obj['gripper_diameter_min'],
|
||
'gripper_length_max': obj['gripper_length_max'],
|
||
'gripper_width_max': obj['gripper_width_max'],
|
||
'gripper_height_max': obj['gripper_height_max'],
|
||
'gripper_diameter_max': obj['gripper_diameter_max'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'transverse_groove': obj['transverse_groove'],
|
||
'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'active': obj['active']}
|
||
|
||
def _json_magnet_fixture_param(self, obj):
|
||
"""磁吸夹具:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'height_tolerance_value': obj['height_tolerance_value'],
|
||
'weight': obj['weight'],
|
||
'gripper_length_min': obj['gripper_length_min'],
|
||
'gripper_width_min': obj['gripper_width_min'],
|
||
'gripper_height_min': obj['gripper_height_min'],
|
||
'gripper_diameter_min': obj['gripper_diameter_min'],
|
||
'gripper_length_max': obj['gripper_length_max'],
|
||
'gripper_width_max': obj['gripper_width_max'],
|
||
'gripper_height_max': obj['gripper_height_max'],
|
||
'gripper_diameter_max': obj['gripper_diameter_max'],
|
||
'rated_adsorption_force': obj['rated_adsorption_force'],
|
||
'magnetic_field_height': obj['magnetic_field_height'],
|
||
'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'active': obj['active']}
|
||
|
||
def _json_adapter_board_fixture_param(self, obj):
|
||
"""转接板(锁板)夹具:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'weight': obj['weight'],
|
||
'gripper_length_min': obj['gripper_length_min'],
|
||
'gripper_width_min': obj['gripper_width_min'],
|
||
'gripper_height_min': obj['gripper_height_min'],
|
||
'gripper_diameter_min': obj['gripper_diameter_min'],
|
||
'gripper_length_max': obj['gripper_length_max'],
|
||
'gripper_width_max': obj['gripper_width_max'],
|
||
'gripper_height_max': obj['gripper_height_max'],
|
||
'gripper_diameter_max': obj['gripper_diameter_max'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'screw_size': obj['screw_size'],
|
||
'via_hole_diameter': obj['via_hole_diameter'],
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'active': obj['active']}
|
||
|
||
def _json_scroll_chuck_param(self, obj):
|
||
"""转接板(锁板)夹具:将data数据转换成list数据"""
|
||
return {'code': obj['code'],
|
||
'fixture_model_id': self.env['sf.fixture.model'].sudo().search(
|
||
[('code', '=', obj.get('fixture_model_code'))]).id,
|
||
'name': obj['name'],
|
||
'length': obj['length'],
|
||
'width': obj['width'],
|
||
'height': obj['height'],
|
||
'diameter': obj['diameter'],
|
||
'weight': obj['weight'],
|
||
'gripper_length_min': obj['gripper_length_min'],
|
||
'gripper_width_min': obj['gripper_width_min'],
|
||
'gripper_height_min': obj['gripper_height_min'],
|
||
'gripper_diameter_min': obj['gripper_diameter_min'],
|
||
'gripper_length_max': obj['gripper_length_max'],
|
||
'gripper_width_max': obj['gripper_width_max'],
|
||
'gripper_height_max': obj['gripper_height_max'],
|
||
'gripper_diameter_max': obj['gripper_diameter_max'],
|
||
'chucking_power_max': obj['chucking_power_max'],
|
||
'carrying_capacity_max': obj['carrying_capacity_max'],
|
||
'materials_model_id': self.env['sf.materials.model'].sudo().search(
|
||
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
|
||
'rigidity': obj['rigidity'],
|
||
'mounting_hole_depth': obj['mounting_hole_depth'],
|
||
'centering_diameter': obj['centering_diameter'],
|
||
'type_of_drive': obj['type_of_drive'],
|
||
'active': obj['active']}
|