|
要实现查询五金材料的理论重量,通常需要根据材料的类型(如钢材、铝材等)、形状(如圆钢、钢板、钢管等)以及尺寸参数(如直径、长度、厚度等),结合密度进行计算。
python
- class HardwareItem:
- # 材料密度表(单位:kg/m³)
- MATERIAL_DENSITY = {
- "steel": 7850, # 钢
- "aluminum": 2700, # 铝
- "copper": 8960, # 铜
- "brass": 8500 # 黄铜
- }
- def __init__(self, name, category, material, shape_params):
- self.name = name
- self.category = category
- self.material = material.lower()
- self.shape_params = shape_params # 根据形状存储参数,例如圆钢是{"diameter": 0.01, "length": 1}
- def calculate_weight(self):
- """根据形状和材料计算理论重量"""
- if self.category == "round_bar": # 圆钢(单位:米)
- diameter = self.shape_params["diameter"]
- length = self.shape_params["length"]
- volume = 3.1416 * (diameter/2)**2 * length
- elif self.category == "plate": # 钢板(单位:米)
- length = self.shape_params["length"]
- width = self.shape_params["width"]
- thickness = self.shape_params["thickness"]
- volume = length * width * thickness
- elif self.category == "pipe": # 钢管(外径、内径、长度,单位:米)
- outer_diameter = self.shape_params["outer_diameter"]
- inner_diameter = self.shape_params["inner_diameter"]
- length = self.shape_params["length"]
- volume = 3.1416 * ( (outer_diameter/2)**2 - (inner_diameter/2)**2 ) * length
- else:
- return "Unsupported category."
- density = self.MATERIAL_DENSITY.get(self.material)
- if not density:
- return "Material density unknown."
-
- weight_kg = volume * density
- return f"{weight_kg:.2f} kg"
- def __str__(self):
- weight = self.calculate_weight()
- return f"{self.name} ({self.material} {self.category}) - Theoretical Weight: {weight}"
- # 示例用法
- if __name__ == "__main__":
- # 创建一个圆钢对象:直径10mm,长度1m,材质为钢
- round_bar = HardwareItem(
- name="Round Steel Bar",
- category="round_bar",
- material="steel",
- shape_params={"diameter": 0.01, "length": 1}
- )
- print(round_bar) # 输出理论重量
- # 创建一个钢板对象:1m x 0.5m x 5mm,材质为铝
- plate = HardwareItem(
- name="Aluminum Plate",
- category="plate",
- material="aluminum",
- shape_params={"length": 1, "width": 0.5, "thickness": 0.005}
- )
- print(plate) # 输出理论重量
复制代码 功能说明材料密度预设:
·内置常见材料的密度(钢、铝、铜、黄铜),可直接调用。
·单位统一为国际单位制(米、千克)。
支持形状:
·圆钢:需输入直径(米)和长度(米)。
·钢板:需输入长、宽、厚(米)。
·钢管:需输入外径、内径、长度(米)。
计算结果:
·直接通过 calculate_weight() 方法返回理论重量(千克)。
·输出示例:Round Steel Bar (steel round_bar) - Theoretical Weight: 0.62 kg
扩展功能建议
1.添加更多形状:
python
- elif self.category == "hex_bar": # 六角钢
- side_length = self.shape_params["side_length"]
- length = self.shape_params["length"]
- volume = (3 * (3**0.5) / 2) * (side_length**2) * length
复制代码
2.自定义材料密度:
python
- def add_custom_material(self, material_name, density):
- self.MATERIAL_DENSITY[material_name.lower()] = density
复制代码
3.单位转换工具:
python
- def mm_to_m(value):
- return value / 1000
- # 用户输入毫米时自动转换
- diameter_mm = 10
- diameter_m = mm_to_m(diameter_mm)
复制代码 使用场景示例用户输入: 名称:304 Stainless Steel Pipe 类别:pipe 材质:steel 形状参数:{"outer_diameter": 0.025, "inner_diameter": 0.020, "length": 6}
输出: - 304 Stainless Steel Pipe (steel pipe) - Theoretical Weight: 8.67 kg
复制代码
通过此代码,你可以快速查询常见五金材料的理论重量,并灵活扩展支持更多形状和材料。
|
|