文档目录结构简洁化

This commit is contained in:
2026-09-01 18:05:18 +08:00
parent bee439cf34
commit 5e531ffe1e
47 changed files with 1334 additions and 3380 deletions
+13 -26
View File
@@ -33,9 +33,9 @@ class MultiSchemeMoldPlanner:
) -> Dict[str, Any]:
generator = mold_generator_registry.get_by_type("aluminum_foam" if is_foam_material else "injection")
generator.set_material(material["name"])
self._apply_process_params(generator, material, process_params)
generator.apply_process_params(material, process_params)
analysis = generator._analyze_product_geometry(shape)
analysis = generator.analyze_product_geometry(shape)
analysis["axis_normal_stats"] = self._collect_axis_normal_stats(generator, shape)
candidates = self.candidate_generator.generate_candidates(
analysis=analysis,
@@ -100,24 +100,24 @@ class MultiSchemeMoldPlanner:
candidate.get("opening_span_mm"),
)
parting_line = generator.optimize_parting_line(
generator._calculate_parting_line(shape, parting_surface)
generator.calculate_parting_line(shape, parting_surface)
)
parting_direction = candidate["direction"]
side_action_result = generator.side_action_designer.analyze_and_design(
shape=shape,
parting_direction=parting_direction,
mold_size=generator._calculate_mold_size(analysis),
mold_size=generator.calculate_mold_size(analysis),
parting_surface=parting_surface,
)
undercut_regions = generator._build_undercut_regions(
undercut_regions = generator.build_undercut_regions(
side_action_result.get("undercut_analysis", {})
)
mold_structure = self._determine_mold_structure(analysis, undercut_regions)
scaled_shape = generator._apply_shrinkage_compensation(shape)
drafted_shape = generator._apply_draft_angles(scaled_shape, parting_surface)
cavity, core = generator._split_cavity_core(drafted_shape, parting_surface)
scaled_shape = generator.apply_shrinkage_compensation(shape)
drafted_shape = generator.apply_draft_angles(scaled_shape, parting_surface)
cavity, core = generator.split_cavity_core(drafted_shape, parting_surface)
cavity_result = {
"cavity": cavity,
@@ -130,7 +130,7 @@ class MultiSchemeMoldPlanner:
}
if is_foam_material:
cavity_result["mold_block"] = generator._generate_mold_block(cavity, analysis)
cavity_result["mold_block"] = generator.generate_mold_block(cavity, analysis)
cavity_result["parting_surfaces"] = {
"primary_surface": parting_surface,
"primary_line": parting_line,
@@ -158,10 +158,10 @@ class MultiSchemeMoldPlanner:
# 生成可视化辅助形状:A/B 半模(分型面切分)、产品本体
a_plate, b_plate, product_for_export = None, None, scaled_shape
try:
mold_block_shape = generator._create_mold_block(analysis, margin=30.0)
a_plate, b_plate = generator._split_mold_block_by_plane(
mold_block_shape = generator.create_mold_block(analysis, margin=30.0)
a_plate, b_plate = generator.split_mold_block_by_plane(
mold_block_shape,
generator._get_parting_plane(parting_surface, shape),
generator.get_parting_plane(parting_surface, shape),
)
except Exception as exc:
logger.debug(f"A/B 半模生成失败(不影响主流程): {exc}")
@@ -199,19 +199,6 @@ class MultiSchemeMoldPlanner:
},
}
@staticmethod
def _apply_process_params(generator: Any, material: Dict[str, Any], process_params: Optional[Dict[str, Any]]):
params = process_params or {}
draft_angle = float(params.get("draft_angle", getattr(generator, "draft_angle", 2.0)))
shrinkage_rate = float(params.get("shrinkage_rate", material.get("shrinkage", 0.005) * 100.0)) / 100.0
parting_precision = float(params.get("parting_precision", getattr(generator, "parting_line_tolerance", 0.1)))
cavity_match = float(params.get("cavity_match", getattr(generator, "cavity_match_rate", 95.0)))
generator.draft_angle = draft_angle
generator.shrinkage_rate = shrinkage_rate
generator.parting_line_tolerance = parting_precision
generator.cavity_match_rate = cavity_match
def _build_parting_surface(
self,
generator: Any,
@@ -290,7 +277,7 @@ class MultiSchemeMoldPlanner:
explorer.Next()
try:
normal = generator._get_face_normal(face)
normal = generator.get_face_normal(face)
if normal is None:
continue