技术学习-方波造价

 找回密码
 本站不允许注册

QQ登录

只需一步,快速开始

查看: 473|回复: 0

一个五金手册的代码

[复制链接]

7352

主题

248

回帖

2万

积分

管理员

积分
25935
发表于 2025-2-3 00:44:22 | 显示全部楼层 |阅读模式
      要实现查询五金材料的理论重量,通常需要根据材料的类型(如钢材、铝材等)、形状(如圆钢、钢板、钢管等)以及尺寸参数(如直径、长度、厚度等),结合密度进行计算。

python
  1. class HardwareItem:
  2.     # 材料密度表(单位:kg/m³)
  3.     MATERIAL_DENSITY = {
  4.         "steel": 7850,    # 钢
  5.         "aluminum": 2700, # 铝
  6.         "copper": 8960,   # 铜
  7.         "brass": 8500     # 黄铜
  8.     }

  9.     def __init__(self, name, category, material, shape_params):
  10.         self.name = name
  11.         self.category = category
  12.         self.material = material.lower()
  13.         self.shape_params = shape_params  # 根据形状存储参数,例如圆钢是{"diameter": 0.01, "length": 1}

  14.     def calculate_weight(self):
  15.         """根据形状和材料计算理论重量"""
  16.         if self.category == "round_bar":  # 圆钢(单位:米)
  17.             diameter = self.shape_params["diameter"]
  18.             length = self.shape_params["length"]
  19.             volume = 3.1416 * (diameter/2)**2 * length
  20.         elif self.category == "plate":    # 钢板(单位:米)
  21.             length = self.shape_params["length"]
  22.             width = self.shape_params["width"]
  23.             thickness = self.shape_params["thickness"]
  24.             volume = length * width * thickness
  25.         elif self.category == "pipe":     # 钢管(外径、内径、长度,单位:米)
  26.             outer_diameter = self.shape_params["outer_diameter"]
  27.             inner_diameter = self.shape_params["inner_diameter"]
  28.             length = self.shape_params["length"]
  29.             volume = 3.1416 * ( (outer_diameter/2)**2 - (inner_diameter/2)**2 ) * length
  30.         else:
  31.             return "Unsupported category."

  32.         density = self.MATERIAL_DENSITY.get(self.material)
  33.         if not density:
  34.             return "Material density unknown."
  35.         
  36.         weight_kg = volume * density
  37.         return f"{weight_kg:.2f} kg"

  38.     def __str__(self):
  39.         weight = self.calculate_weight()
  40.         return f"{self.name} ({self.material} {self.category}) - Theoretical Weight: {weight}"


  41. # 示例用法
  42. if __name__ == "__main__":
  43.     # 创建一个圆钢对象:直径10mm,长度1m,材质为钢
  44.     round_bar = HardwareItem(
  45.         name="Round Steel Bar",
  46.         category="round_bar",
  47.         material="steel",
  48.         shape_params={"diameter": 0.01, "length": 1}
  49.     )
  50.     print(round_bar)  # 输出理论重量

  51.     # 创建一个钢板对象:1m x 0.5m x 5mm,材质为铝
  52.     plate = HardwareItem(
  53.         name="Aluminum Plate",
  54.         category="plate",
  55.         material="aluminum",
  56.         shape_params={"length": 1, "width": 0.5, "thickness": 0.005}
  57.     )
  58.     print(plate)  # 输出理论重量
复制代码

功能说明
  • 材料密度预设
    ·内置常见材料的密度(钢、铝、铜、黄铜),可直接调用。
    ·单位统一为国际单位制(米、千克)。

  • 支持形状
    ·圆钢:需输入直径(米)和长度(米)。
    ·钢板:需输入长、宽、厚(米)。
    ·钢管:需输入外径、内径、长度(米)。

  • 计算结果
    ·直接通过 calculate_weight() 方法返回理论重量(千克)。
    ·输出示例:Round Steel Bar (steel round_bar) - Theoretical Weight: 0.62 kg



扩展功能建议

  1.
添加更多形状
python
  1. elif self.category == "hex_bar":  # 六角钢
  2.     side_length = self.shape_params["side_length"]
  3.     length = self.shape_params["length"]
  4.     volume = (3 * (3**0.5) / 2) * (side_length**2) * length
复制代码

  2.自定义材料密度

python

  1. def add_custom_material(self, material_name, density):
  2.     self.MATERIAL_DENSITY[material_name.lower()] = density
复制代码

  3.单位转换工具
python

  1. def mm_to_m(value):
  2.     return value / 1000

  3. # 用户输入毫米时自动转换
  4. diameter_mm = 10
  5. diameter_m = mm_to_m(diameter_mm)
复制代码

使用场景示例
用户输入:
  • 名称:304 Stainless Steel Pipe
  • 类别:pipe
  • 材质:steel
  • 形状参数:{"outer_diameter": 0.025, "inner_diameter": 0.020, "length": 6}

输出:
  1. 304 Stainless Steel Pipe (steel pipe) - Theoretical Weight: 8.67 kg
复制代码

通过此代码,你可以快速查询常见五金材料的理论重量,并灵活扩展支持更多形状和材料。
方波QQ群:内蒙古工程造价:187076956;内蒙古工程资料:136060347;内蒙古建材:136060736;内蒙古安装:31527187;内蒙古市政:38323777;内蒙古钢结构:383111550;内蒙古土建:782780079;内蒙古精装:783373575;电脑软件交流:7273829;招投标:22111225
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 本站不允许注册

本版积分规则

QQ|Archiver|小黑屋|方波造价 ( 蒙ICP备16001035号 )

GMT+8, 2025-4-4 12:11 , Processed in 0.135482 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表