1.新增每日同步切削速度和每齿走刀量及切削宽度和深度的接口
2.优化产品模版
This commit is contained in:
@@ -106,10 +106,8 @@ class CuttingToolModel(models.Model):
|
||||
chuck_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='夹头基本参数')
|
||||
cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc')
|
||||
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('cutting_speed', '!=', False)])
|
||||
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('cutting_speed', '!=', False)])
|
||||
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')
|
||||
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')
|
||||
|
||||
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
||||
# 适用夹头型号可以多选
|
||||
@@ -156,12 +154,6 @@ class CuttingToolModel(models.Model):
|
||||
active = fields.Boolean('有效', default=True)
|
||||
is_cloud = fields.Boolean('云端数据', default=False)
|
||||
|
||||
# 无用字段
|
||||
feed_per_tooth_ids_2 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('machining_method', '!=', False)])
|
||||
feed_per_tooth_ids_4 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('machining_method', '!=', False)])
|
||||
|
||||
def _get_ids(self, cutting_tool_type_code, factory_short_name):
|
||||
cutting_tool_type_ids = []
|
||||
for item in cutting_tool_type_code:
|
||||
|
||||
@@ -41,6 +41,7 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
install_aperture_diameter = fields.Float('安装孔直径(mm)')
|
||||
chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')],
|
||||
string='有无断屑槽')
|
||||
chip_breaker_type_code = fields.Char('断屑槽型代号')
|
||||
blade_teeth_model = fields.Selection(
|
||||
[('无', '无'), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'),
|
||||
('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'),
|
||||
@@ -107,6 +108,7 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
max_rotate_speed = fields.Integer('最大转速(n/min)')
|
||||
diameter_slip_accuracy = fields.Char('径跳精度(mm)', size=20)
|
||||
cooling_model = fields.Char('冷却类型', size=20)
|
||||
taper_shank_model = fields.Char('锥柄型号')
|
||||
is_rough_machining = fields.Boolean('可粗加工', default=False)
|
||||
is_finish_machining = fields.Boolean('可精加工', default=False)
|
||||
is_quick_cutting = fields.Boolean('可高速切削', default=False)
|
||||
@@ -136,169 +138,12 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
)
|
||||
active = fields.Boolean(string='有效', default=True)
|
||||
|
||||
def _json_integral_tool_basic_param(self, obj):
|
||||
integral_tool_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'blade_number': obj['blade_number'],
|
||||
'neck_length': obj['neck_length'],
|
||||
'neck_diameter': obj['neck_diameter'],
|
||||
'handle_diameter': obj['handle_diameter'],
|
||||
'handle_length': obj['handle_length'],
|
||||
'blade_tip_diameter': obj['blade_tip_diameter'],
|
||||
'blade_tip_working_size': obj['blade_tip_working_size'],
|
||||
'blade_tip_taper': obj['blade_tip_taper'],
|
||||
'blade_helix_angle': obj['blade_helix_angle'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'blade_depth': obj['blade_depth'],
|
||||
'pitch': obj['pitch'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
})
|
||||
return integral_tool_basic_param_str
|
||||
|
||||
def _json_blade_basic_param(self, obj):
|
||||
blade_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'length': obj['length'],
|
||||
'thickness': obj['thickness'],
|
||||
'width': obj['width'],
|
||||
'cutting_blade_length': obj['cutting_blade_length'],
|
||||
'relief_angle': obj['relief_angle'],
|
||||
'blade_tip_circular_arc_radius': obj['blade_tip_circular_arc_radius'],
|
||||
'inscribed_circle_diameter': obj['inscribed_circle_diameter'],
|
||||
'install_aperture_diameter': obj['install_aperture_diameter'],
|
||||
'pitch': obj['pitch'],
|
||||
'chip_breaker_groove': obj['chip_breaker_groove'],
|
||||
'blade_teeth_model': '无' if not obj['bladed_teeth_model'] else obj['bladed_teeth_model'],
|
||||
'blade_blade_number': obj['blade_blade_number'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'top_angle': obj['top_angle'],
|
||||
'blade_tip_dip_angle': obj['blade_tip_dip_angle'],
|
||||
'side_cutting_edge_angle': obj['side_cutting_edge_angle'],
|
||||
'thread_model': '无' if not obj['thread_model'] else obj['thread_model'],
|
||||
'thread_num': obj['thread_num'],
|
||||
'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'],
|
||||
'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'],
|
||||
'thickness_tolerance': obj['thickness_tolerance'],
|
||||
})
|
||||
return blade_basic_param_str
|
||||
|
||||
def _json_cutter_arbor_basic_param(self, obj):
|
||||
cutter_arbor_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'height': obj['height'],
|
||||
'width': obj['width'],
|
||||
'total_length': obj['total_length'],
|
||||
'knife_head_height': obj['knife_head_height'],
|
||||
'knife_head_width': obj['knife_head_width'],
|
||||
'knife_head_length': obj['knife_head_length'],
|
||||
'cutter_arbor_diameter': obj['cutter_arbor_diameter'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'relief_angle': obj['relief_angle'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'min_machining_aperture': obj['min_machining_aperture'],
|
||||
'install_blade_tip_num': obj['install_blade_tip_num'],
|
||||
'cutting_blade_model': obj['cutting_blade_model'],
|
||||
'is_cooling_hole': obj['is_cooling_hole'],
|
||||
'locating_slot_code': obj['locating_slot_code'],
|
||||
'installing_structure': obj['installing_structure'],
|
||||
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else
|
||||
self.evn['sf.cutting_tool.standard.library']._get_ids(obj['blade_codes']),
|
||||
'tool_shim': obj['tool_shim'],
|
||||
'cotter_pin': obj['cotter_pin'],
|
||||
'pressing_plate': obj['pressing_plate'],
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
})
|
||||
return cutter_arbor_basic_param_str
|
||||
|
||||
def _json_cutter_head_basic_param(self, obj):
|
||||
cutter_head_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'install_blade_tip_num': obj['install_blade_tip_num'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'cutter_head_diameter': obj['cutter_head_diameter'],
|
||||
'interface_diameter': obj['interface_diameter'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'installing_structure': obj['installing_structure'],
|
||||
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else
|
||||
self.evn['sf.cutting_tool.standard.library']._get_ids(obj['blade_codes']),
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
'cutting_blade_model': obj['cutting_blade_model'],
|
||||
'is_cooling_hole': obj['is_cooling_hole'],
|
||||
'locating_slot_code': obj['locating_slot_code'],
|
||||
})
|
||||
return cutter_head_basic_param_str
|
||||
|
||||
def _json_knife_handle_basic_param(self, obj):
|
||||
knife_handle_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'total_length': obj['total_length'],
|
||||
'flange_shank_length': obj['flange_shank_length'],
|
||||
'handle_inside_diameter': obj['handle_inside_diameter'],
|
||||
'min_clamping_diameter': obj['min_clamping_diameter'],
|
||||
'max_clamping_diameter': obj['max_clamping_diameter'],
|
||||
'clamping_mode': obj['clamping_mode'],
|
||||
'max_load_capacity': obj['max_load_capacity'],
|
||||
'taper': obj['taper'],
|
||||
'tool_changing_time': obj['tool_changing_time'],
|
||||
'standard_rotate_speed': obj['standard_rotate_speed'],
|
||||
'max_rotate_speed': obj['max_rotate_speed'],
|
||||
'diameter_slip_accuracy': obj['diameter_slip_accuracy'],
|
||||
'cooling_model': obj['cooling_model'],
|
||||
'is_rough_machining': obj['is_rough_machining'],
|
||||
'is_finish_machining': obj['is_finish_machining'],
|
||||
'is_quick_cutting': obj['is_quick_cutting'],
|
||||
'is_drill_hole': obj['is_drill_hole'],
|
||||
'is_safe_lock': obj['is_safe_lock'],
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
})
|
||||
return knife_handle_basic_param_str
|
||||
|
||||
def _json_chuck_basic_param(self, obj):
|
||||
chuck_basic_param_str = (0, '', {
|
||||
'name': obj['name'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'er_size_model': obj['er_size_model'],
|
||||
'min_clamping_diameter': obj['min_clamping_diameter'],
|
||||
'max_clamping_diameter': obj['max_clamping_diameter'],
|
||||
'outer_diameter': obj['outer_diameter'],
|
||||
'inner_diameter': obj['inner_diameter'],
|
||||
'run_out_accuracy': obj['run_out_accuracy'],
|
||||
'total_length': obj['total_length'],
|
||||
'taper': obj['taper'],
|
||||
'run_out_accuracy': obj['run_out_accuracy'],
|
||||
'top_diameter': obj['top_diameter'],
|
||||
'weight': obj['weight'],
|
||||
'clamping_mode': obj['clamping_mode'],
|
||||
'clamping_length': obj['clamping_length'],
|
||||
'clamping_tolerance': obj['clamping_tolerance'],
|
||||
'max_load_capacity': obj['max_load_capacity'],
|
||||
'handle_ids': [(6, 0, [])] if not obj.get(
|
||||
'handle_codes') else self.evn['sf.cutting_tool.standard.library']._get_ids(obj['handle_codes']),
|
||||
'cooling_jacket': obj['cooling_jacket'],
|
||||
})
|
||||
return chuck_basic_param_str
|
||||
|
||||
|
||||
class CuttingSpeed(models.Model):
|
||||
_name = 'sf.cutting.speed'
|
||||
_description = '切削速度Vc'
|
||||
|
||||
name = fields.Char('名称')
|
||||
product_template_id = fields.Many2one('product.template')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
|
||||
@@ -318,40 +163,7 @@ class CuttingSpeed(models.Model):
|
||||
cutting_speed_min = fields.Float('最小值')
|
||||
|
||||
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
|
||||
|
||||
# ===============待删除字段==============
|
||||
material_id = fields.Many2one('sf.materials.model', '材料名称',
|
||||
domain="[('standards_id', '=', execution_standard_id)]")
|
||||
slope_milling_angle = fields.Integer('坡铣角度(°)')
|
||||
cutting_speed_n1 = fields.Char('径向切宽 ae=100%D1 ap=1*D1 切削速度Vc')
|
||||
cutting_speed_n2 = fields.Char('径向切宽 ae=50%D1 ap=1.5*D1 切削速度Vc')
|
||||
cutting_speed_n3 = fields.Char('径向切宽 ae=25%D1 ap=L1max 切削速度Vc')
|
||||
cutting_speed_n4 = fields.Char('径向切宽 ae=15%D1 ap=L1max 切削速度Vc')
|
||||
cutting_speed_n5 = fields.Char('径向切宽 ae=5%D1 ap=L1max 切削速度Vc')
|
||||
rough_machining = fields.Char('粗加工 Vc(m/min)')
|
||||
precision_machining = fields.Char('精加工 Vc(m/min)')
|
||||
|
||||
# ======================================
|
||||
|
||||
def _json_cutting_speed(self, obj):
|
||||
cutting_speed_str = (0, '', {
|
||||
'execution_standard_id': self.env['sf.international.standards'].search(
|
||||
[('code', '=', obj['execution_standard_code'])]).id,
|
||||
'material_code': obj['material_code'],
|
||||
'material_id': self.env['sf.materials.model'].search([('materials_no', '=', obj['material_name_code'])]).id,
|
||||
'material_grade': obj['material_grade'],
|
||||
'tensile_strength': obj['tensile_strength'],
|
||||
'hardness': obj['hardness'],
|
||||
'cutting_speed_n1': obj['cutting_speed_n1'],
|
||||
'cutting_speed_n2': obj['cutting_speed_n2'],
|
||||
'cutting_speed_n3': obj['cutting_speed_n3'],
|
||||
'cutting_speed_n4': obj['cutting_speed_n4'],
|
||||
'cutting_speed_n5': obj['cutting_speed_n5'],
|
||||
'rough_machining': obj['rough_machining'],
|
||||
'precision_machining': obj['precision_machining'],
|
||||
'application': obj['application'],
|
||||
})
|
||||
return cutting_speed_str
|
||||
active = fields.Boolean(string='有效', default=True)
|
||||
|
||||
|
||||
class FeedPerTooth(models.Model):
|
||||
@@ -359,52 +171,16 @@ class FeedPerTooth(models.Model):
|
||||
_description = '每齿走刀量fz'
|
||||
_order = 'blade_diameter,cutting_width_depth_id,materials_type_id'
|
||||
|
||||
name = fields.Char('名称')
|
||||
product_template_id = fields.Many2one('product.template')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
blade_diameter = fields.Integer('刃部直径(mm)', readonly=True)
|
||||
materials_type_id = fields.Many2one('sf.materials.model', string='材料名称', readonly=True)
|
||||
cutting_width_depth_id = fields.Many2one('sf.cutting.width.depth', '切削宽度和深度', readonly=True)
|
||||
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)', size=20)
|
||||
active = fields.Boolean(string='有效', default=True)
|
||||
|
||||
# =============待删除字段===========
|
||||
cutting_speed = fields.Char('径向切宽 ae(mm)')
|
||||
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
|
||||
|
||||
# ================================
|
||||
|
||||
def _json_feed_per_tooth(self, obj):
|
||||
feed_per_tooth_str = (0, '', {
|
||||
'cutting_speed': obj['cutting_speed'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_str
|
||||
|
||||
def _json_feed_per_tooth_2(self, obj):
|
||||
feed_per_tooth_2_str = (0, '', {
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', obj['materials_type_code'])]).id,
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_2_str
|
||||
|
||||
def _json_feed_per_tooth_3(self, obj):
|
||||
feed_per_tooth_3_str = (0, '', {
|
||||
'cutting_speed': obj['cutting_speed'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_3_str
|
||||
|
||||
def _json_feed_per_tooth_4(self, obj):
|
||||
feed_per_tooth_4_str = (0, '', {
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', obj['materials_type_code'])]).id,
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_4_str
|
||||
|
||||
# @api.depends('product_template_id')
|
||||
# def _compute_product_template_id(self):
|
||||
|
||||
Reference in New Issue
Block a user