x
This commit is contained in:
@@ -29,6 +29,7 @@ from shared.models.schemas import create_mold_cavity_data, create_mold_key_info
|
||||
from shared.utils.logger import get_logger
|
||||
from moldinsight.core.base_mold_generator import BaseMoldGenerator
|
||||
from moldinsight.core.side_action_designer import SideActionDesigner
|
||||
from moldinsight.services.material_service import MaterialService
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
@@ -54,48 +55,6 @@ class AluminumFoamMoldGenerator(BaseMoldGenerator):
|
||||
|
||||
self.foam_material = foam_material
|
||||
|
||||
self.foam_materials = {
|
||||
"AlSi10Mg": {
|
||||
"density": 0.45,
|
||||
"expansion_ratio": 2.5,
|
||||
"shrinkage_rate": 0.015,
|
||||
"molding_temp": 380,
|
||||
"description": "常用铝硅泡沫"
|
||||
},
|
||||
"AlSi12": {
|
||||
"density": 0.50,
|
||||
"expansion_ratio": 2.2,
|
||||
"shrinkage_rate": 0.012,
|
||||
"molding_temp": 360,
|
||||
"description": "高强度铝泡沫"
|
||||
},
|
||||
"Pure Al Foam": {
|
||||
"density": 0.35,
|
||||
"expansion_ratio": 3.0,
|
||||
"shrinkage_rate": 0.020,
|
||||
"molding_temp": 400,
|
||||
"description": "纯铝泡沫"
|
||||
},
|
||||
"AlSi7Mg": {
|
||||
"density": 0.40,
|
||||
"expansion_ratio": 2.8,
|
||||
"shrinkage_rate": 0.018,
|
||||
"molding_temp": 390,
|
||||
"description": "轻质铝镁泡沫"
|
||||
}
|
||||
}
|
||||
|
||||
self.plastic_materials = {
|
||||
"ABS": {"density": 1.05, "shrinkage": 0.005},
|
||||
"PP": {"density": 0.90, "shrinkage": 0.016},
|
||||
"PC": {"density": 1.20, "shrinkage": 0.005},
|
||||
"PE": {"density": 0.95, "shrinkage": 0.025},
|
||||
"PS": {"density": 1.05, "shrinkage": 0.004},
|
||||
"PA": {"density": 1.14, "shrinkage": 0.015},
|
||||
"POM": {"density": 1.42, "shrinkage": 0.020},
|
||||
"PMMA": {"density": 1.18, "shrinkage": 0.004}
|
||||
}
|
||||
|
||||
self.parting_line_tolerance = 0.1
|
||||
self.max_draft_angle = 5.0
|
||||
self.min_draft_angle = 1.0
|
||||
@@ -107,21 +66,21 @@ class AluminumFoamMoldGenerator(BaseMoldGenerator):
|
||||
|
||||
def set_foam_material(self, material: str):
|
||||
"""设置铝泡沫材料"""
|
||||
if material in self.foam_materials:
|
||||
props = self.foam_materials[material]
|
||||
if MaterialService.is_foam_material(material):
|
||||
props = MaterialService.get_material(material)
|
||||
self.foam_material = material
|
||||
self.material_density = props["density"]
|
||||
self.shrinkage_rate = props["shrinkage_rate"]
|
||||
self.shrinkage_rate = props["shrinkage"]
|
||||
logger.info(f"铝泡沫材料设置为 {material}, 密度: {props['density']} g/cm³")
|
||||
else:
|
||||
logger.warning(f"未知材料 {material}, 使用当前设置")
|
||||
|
||||
def set_material(self, material: str):
|
||||
"""设置材料(自动识别类型)"""
|
||||
if material in self.foam_materials:
|
||||
if MaterialService.is_foam_material(material):
|
||||
self.set_foam_material(material)
|
||||
elif material in self.plastic_materials:
|
||||
props = self.plastic_materials[material]
|
||||
elif MaterialService.has_material(material):
|
||||
props = MaterialService.get_material(material)
|
||||
self.material_density = props["density"]
|
||||
self.shrinkage_rate = props["shrinkage"]
|
||||
logger.info(f"塑料材料设置为 {material}, 密度: {props['density']} g/cm³")
|
||||
@@ -204,7 +163,7 @@ class AluminumFoamMoldGenerator(BaseMoldGenerator):
|
||||
|
||||
parting_geometry = self._extract_parting_surface_geometry(parting_surface)
|
||||
|
||||
material_info = self.foam_materials.get(self.foam_material, {})
|
||||
material_info = MaterialService.get_material(self.foam_material)
|
||||
|
||||
detailed_json = {
|
||||
"metadata": {
|
||||
@@ -251,7 +210,7 @@ class AluminumFoamMoldGenerator(BaseMoldGenerator):
|
||||
def generate_cavity_key_info(self, cavity_data: Dict) -> Dict[str, Any]:
|
||||
"""生成模具型腔的关键信息"""
|
||||
analysis = cavity_data["analysis"]
|
||||
material_info = self.foam_materials.get(self.foam_material, {})
|
||||
material_info = MaterialService.get_material(self.foam_material)
|
||||
|
||||
key_info = {
|
||||
"mold_parameters": {
|
||||
|
||||
@@ -9,6 +9,7 @@ from shared.models.schemas import (
|
||||
create_analysis_result
|
||||
)
|
||||
from shared.utils.logger import get_logger
|
||||
from moldinsight.services.material_service import MaterialService
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
@@ -25,12 +26,6 @@ class GeometryAnalyzer:
|
||||
"high_complexity": 50,
|
||||
}
|
||||
|
||||
self.product_materials = {
|
||||
"ABS": {"shrinkage": 0.005, "min_wall": 1.2},
|
||||
"PP": {"shrinkage": 0.016, "min_wall": 1.0},
|
||||
"PC": {"shrinkage": 0.007, "min_wall": 1.5},
|
||||
}
|
||||
|
||||
self.mold_materials = {
|
||||
"Aluminum": {"thermal_conductivity": 200, "hardness": "HB80", "cost": "low"},
|
||||
"P20_Steel": {"thermal_conductivity": 30, "hardness": "HRC30", "cost": "medium"},
|
||||
@@ -54,7 +49,6 @@ class GeometryAnalyzer:
|
||||
|
||||
features = self._detect_features(geometry_data, shape)
|
||||
|
||||
product_props = self.product_materials.get(product_material, {})
|
||||
mold_props = self.mold_materials.get(mold_material, {})
|
||||
|
||||
recommendations = self._generate_recommendations(
|
||||
@@ -744,8 +738,8 @@ class GeometryAnalyzer:
|
||||
avg_thickness = (volume / surface_area) * 0.6
|
||||
|
||||
if avg_thickness is not None:
|
||||
material_props = self.product_materials.get(material, self.product_materials["ABS"])
|
||||
min_wall = material_props["min_wall"]
|
||||
material_props = MaterialService.get_material(material)
|
||||
min_wall = material_props.get("min_wall", 1.2)
|
||||
|
||||
if avg_thickness < min_wall:
|
||||
return create_design_recommendation(
|
||||
|
||||
@@ -13,6 +13,7 @@ from shared.models.schemas import create_mold_cavity_data, create_mold_key_info
|
||||
from shared.utils.logger import get_logger
|
||||
from moldinsight.core.base_mold_generator import BaseMoldGenerator
|
||||
from moldinsight.core.side_action_designer import SideActionDesigner
|
||||
from moldinsight.services.material_service import MaterialService
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
@@ -24,25 +25,14 @@ class MoldCavityGenerator(BaseMoldGenerator):
|
||||
material_density: float = 1.05):
|
||||
super().__init__(shrinkage_rate, draft_angle, material_density)
|
||||
|
||||
self.material_densities = {
|
||||
"ABS": 1.05,
|
||||
"PP": 0.90,
|
||||
"PC": 1.20,
|
||||
"PE": 0.95,
|
||||
"PS": 1.05,
|
||||
"PA": 1.14,
|
||||
"POM": 1.42,
|
||||
"PMMA": 1.18
|
||||
}
|
||||
|
||||
self.parting_line_tolerance = 0.1
|
||||
self.max_draft_angle = 5.0
|
||||
self.side_action_designer = SideActionDesigner()
|
||||
|
||||
def set_material(self, material: str):
|
||||
"""设置产品材料"""
|
||||
if material in self.material_densities:
|
||||
self.material_density = self.material_densities[material]
|
||||
if MaterialService.has_material(material):
|
||||
self.material_density = MaterialService.get_material(material)["density"]
|
||||
logger.info(f"材料设置为 {material}, 密度: {self.material_density} g/cm³")
|
||||
else:
|
||||
logger.warning(f"未知材料 {material}, 使用默认密度 {self.material_density} g/cm³")
|
||||
|
||||
Reference in New Issue
Block a user