diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 04b8338a..88478c24 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -108,10 +108,34 @@ class CuttingToolModel(models.Model): tool_thickness = fields.Integer('厚度(mm)') tool_weight = fields.Float('重量(kg)') coating_material = fields.Char('涂层材质') + # 整体式刀具参数 total_length = fields.Float('总长度(mm)') shank_length = fields.Float('柄部长度(mm)') blade_length = fields.Float('刃部长度(mm)') + # 整体式刀具新增字段 + integral_neck_length = fields.Float('整体式刀具颈部长度(mm)', digits=(6, 1)) + integral_shank_diameter = fields.Float('整体式刀具柄部直径(mm)', digits=(6, 1)) + integral_blade_diameter = fields.Float('整体式刀具刃部直径(mm)', digits=(6, 1)) + integral_neck_diameter = fields.Float('整体式刀具颈部直径(mm)', digits=(6, 1)) + integral_blade_tip_diameter = fields.Float('整体式刀具刀尖直径(mm)', digits=(6, 1)) + integral_blade_tip_taper = fields.Float('整体式刀具刀尖锥度(°)', digits=(6, 1)) + integral_blade_helix_angle = fields.Float('整体式刀具刃部螺旋角(°)', digits=(6, 1)) + integral_blade_type = fields.Char('整体式刀具刃部类型') + integral_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '整体式刀具粗/中/精') + integral_hardness = fields.Integer('整体式刀具硬度(HRC)') + integral_run_out_accuracy_max = fields.Float('整体式刀具端跳精度max', digits=(6, 1)) + integral_run_out_accuracy_min = fields.Float('整体式刀具端跳精度min', digits=(6, 1)) + suitable_machining_method_ids = fields.Many2many('sf.suitable.machining.method', + 'rel_suitable_machining_method_cutting_tool', '适合加工方式') + blade_tip_characteristics_ids = fields.Many2many('sf.blade.tip.characteristics', + 'rel_blade_tip_characteristics_cutting_tool', '刀尖特征') + handle_type_ids = fields.Many2many('sf.handle.type', 'rel_handle_type_cutting_tool', '柄部类型') + cutting_direction_ids = fields.Many2many('sf.cutting.direction', 'rel_cutting_direction_cutting_tool', + '走刀方向') + suitable_coolant_ids = fields.Many2many('sf.suitable.coolant', 'rel_suitable_coolant_cutting_tool', + '适合冷却液') + diameter = fields.Float('直径(mm)') blade_number = fields.Integer('刃数') front_angle = fields.Float('前角(°)') diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index bfc405f9..71dea744 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -243,6 +243,11 @@ attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> + + + @@ -259,7 +264,7 @@ options="{'format': false}"/> + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片','刀杆','刀盘'))]}"/> + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘','刀柄'))]}"/> + + + + + + + + + + + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/> + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/> + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/> + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/> - + attrs="{'invisible': [('cutting_tool_type', 'in', ('整体式刀具','刀柄'))]}"/> + + attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/> + + + + + + + + + + (mm) + + + (mm) + + + + + + + + + + + + + + + + + diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 4e1c104e..c8c6f8f6 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -1,8 +1,8 @@ from odoo import models, fields, api from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -# from OCC.Extend.DataExchange import read_step_file -# from OCC.Extend.DataExchange import write_stl_file +from OCC.Extend.DataExchange import read_step_file +from OCC.Extend.DataExchange import write_stl_file import logging import base64 import hashlib @@ -80,7 +80,6 @@ class ResProductMo(models.Model): cutting_tool_blade_length = fields.Float('刃部长度(mm)', digits=(6, 1)) cutting_tool_blade_number = fields.Integer('刃数(个)') # 整体式刀具新增字段 - integral_code = fields.Char('整体式刀具编码', readonly=True) integral_neck_length = fields.Float('整体式刀具颈部长度(mm)', digits=(6, 1)) integral_shank_diameter = fields.Float('整体式刀具柄部直径(mm)', digits=(6, 1)) integral_blade_diameter = fields.Float('整体式刀具刃部直径(mm)', digits=(6, 1)) @@ -422,7 +421,23 @@ class ResProductMo(models.Model): item.coating_material = item.cutting_tool_model_id.coating_material item.cutting_tool_total_length = item.cutting_tool_model_id.total_length item.cutting_tool_shank_length = item.cutting_tool_model_id.shank_length - item.cutting_tool_blade_length = item.cutting_tool_model_id.blade_length + item.integral_neck_length = item.cutting_tool_model_id.integral_neck_length + item.integral_shank_diameter = item.cutting_tool_model_id.integral_shank_diameter + item.integral_blade_diameter = item.cutting_tool_model_id.integral_blade_diameter + item.integral_neck_diameter = item.cutting_tool_model_id.integral_neck_diameter + item.integral_blade_tip_diameter = item.cutting_tool_model_id.integral_blade_tip_diameter + item.integral_blade_tip_taper = item.cutting_tool_model_id.integral_blade_tip_taper + item.integral_blade_helix_angle = item.cutting_tool_model_id.integral_blade_helix_angle + item.integral_blade_type = item.cutting_tool_model_id.integral_blade_type + item.integral_coarse_medium_fine = item.cutting_tool_model_id.integral_coarse_medium_fine + item.integral_hardness = item.cutting_tool_model_id.integral_hardness + item.integral_run_out_accuracy_max = item.cutting_tool_model_id.integral_run_out_accuracy_max + item.integral_run_out_accuracy_min = item.cutting_tool_model_id.integral_run_out_accuracy_min + item.suitable_machining_method_ids = self._get_ids(item.cutting_tool_model_id.suitable_machining_method_ids) + item.blade_tip_characteristics_ids = self._get_ids(item.cutting_tool_model_id.blade_tip_characteristics_ids) + item.handle_type_ids = self._get_ids(item.cutting_tool_model_id.handle_type_ids) + item.cutting_direction_ids = self._get_ids(item.cutting_tool_model_id.cutting_direction_ids) + item.suitable_coolant_ids = self._get_ids(item.cutting_tool_model_id.suitable_coolant_ids) item.cutting_tool_diameter = item.cutting_tool_model_id.diameter item.cutting_tool_blade_number = item.cutting_tool_model_id.blade_number item.cutting_tool_front_angle = item.cutting_tool_model_id.front_angle @@ -461,6 +476,23 @@ class ResProductMo(models.Model): item.cutting_tool_total_length = False item.cutting_tool_shank_length = False item.cutting_tool_blade_length = False + item.integral_neck_length = False + item.integral_shank_diameter = False + item.integral_blade_diameter = False + item.integral_neck_diameter = False + item.integral_blade_tip_diameter = False + item.integral_blade_tip_taper = False + item.integral_blade_helix_angle = False + item.integral_blade_type = False + item.integral_coarse_medium_fine = False + item.integral_hardness = False + item.integral_run_out_accuracy_max = False + item.integral_run_out_accuracy_min = False + item.suitable_machining_method_ids = False + item.blade_tip_characteristics_ids = False + item.handle_type_ids = False + item.cutting_direction_ids = False + item.suitable_coolant_ids = False item.cutting_tool_diameter = False item.cutting_tool_blade_number = False item.cutting_tool_front_angle = False