From 0b8042f07ae12a7e86298a616dc3dbedbd49a035 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Wed, 6 Sep 2023 11:02:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE-=E5=88=80=E5=85=B7=E5=9E=8B?= =?UTF-8?q?=E5=8F=B7=E6=96=B0=E5=A2=9E=E6=95=B4=E4=BD=93=E5=BC=8F=E5=88=80?= =?UTF-8?q?=E5=85=B7=E8=83=BD=E5=8A=9B=E5=8F=82=E6=95=B0=E8=A1=A5=E5=85=85?= =?UTF-8?q?=EF=BC=9B=E8=A1=A5=E5=85=85=E4=BA=A7=E5=93=81-=E6=95=B4?= =?UTF-8?q?=E4=BD=93=E5=BC=8F=E5=88=80=E5=85=B7=E5=90=8C=E6=AD=A5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE-=E5=88=80=E5=85=B7=E5=9E=8B=E5=8F=B7-=E6=95=B4?= =?UTF-8?q?=E4=BD=93=E5=BC=8F=E5=88=80=E5=85=B7=E5=8F=82=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base_new.py | 24 +++++++ sf_base/views/tool_views.xml | 74 ++++++++++++++++++--- sf_manufacturing/models/product_template.py | 40 +++++++++-- 3 files changed, 125 insertions(+), 13 deletions(-) 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