配置-刀具型号新增整体式刀具能力参数补充;补充产品-整体式刀具同步配置-刀具型号-整体式刀具参数。

This commit is contained in:
yuxianghui
2023-09-06 11:02:55 +08:00
parent fe78d91fa9
commit 0b8042f07a
3 changed files with 125 additions and 13 deletions

View File

@@ -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('前角(°)')

View File

@@ -243,6 +243,11 @@
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="blade_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_neck_length" string="颈部长度(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_blade_type" string="刃部类型"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<!--刀片-->
<label for="tool_length" string="尺寸(mm)"
attrs='{"invisible": [("cutting_tool_type","not in",("刀片","刀杆","刀盘"))]}'/>
@@ -259,7 +264,7 @@
options="{'format': false}"/>
</div>
<field name="diameter"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片','刀杆','刀盘'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片','刀杆','刀盘'))]}"/>
<field name="blade_diameter"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
<field name="blade_number"
@@ -288,32 +293,83 @@
<field name="blade_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
<field name="chuck_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘','刀柄','整体式刀具'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘','刀柄'))]}"/>
<field name="handle_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头'))]}"/>
</group>
<group>
<!--整体式刀具-->
<field name="integral_hardness" string="刀具硬度(HRC)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_coarse_medium_fine" string="粗/中/精"
attrs="{'required': [('cutting_tool_type','=','整体式刀具')],'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_shank_diameter" string="柄部直径(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_blade_diameter" string="刃部直径(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_neck_diameter" string="颈部直径(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_blade_tip_diameter" string="刀尖直径(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_blade_helix_angle" string="刃部螺旋角(°)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_blade_tip_taper" string="刀尖锥度(°)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="jump_accuracy"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="front_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="top_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="rear_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="main_included_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="coating_material"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="accuracy_level"
attrs="{'invisible': [('cutting_tool_type', '=', '刀柄')]}"/>
<field name="working_hardness"/>
attrs="{'invisible': [('cutting_tool_type', 'in', ('整体式刀具','刀柄'))]}"/>
<field name="working_hardness"
attrs="{'invisible': [('cutting_tool_type', '=', '整体式刀具')]}"/>
<field name="wrench"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄','刀杆','刀盘' ))]}"/>
<field name="screw"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))]}"/>
<field name="nut"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
</group>
</group>
<group col="1" attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<group>
<group>
<label for="integral_run_out_accuracy_min" string="端跳精度:"/>
<div class="test_model">
<label for="integral_run_out_accuracy_min" string="最小(min)"/>
<field name="integral_run_out_accuracy_min" class="o_address_zip" required="1"
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
<span>(mm)&amp;nbsp;</span>
<label for="integral_run_out_accuracy_max" string="最大(max)"/>
<field name="integral_run_out_accuracy_max" class="o_address_zip" required="1"
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
<span>(mm)&amp;nbsp;</span>
</div>
</group>
</group>
<group string="适合加工方式">
<field name="suitable_machining_method_ids" string=""/>
</group>
<group string="刀尖特征">
<field name="blade_tip_characteristics_ids" string=""/>
</group>
<group string="柄部类型">
<field name="handle_type_ids" string=""/>
</group>
<group string="走刀方向">
<field name="cutting_direction_ids" string=""/>
</group>
<group string="适合冷却液">
<field name="suitable_coolant_ids" string=""/>
</group>
</group>
</page>

View File

@@ -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