deving
This commit is contained in:
+51
-1
@@ -638,7 +638,8 @@ async def process_file_core(
|
||||
"mold_hardness": "HB 150-170",
|
||||
"surface_finish": "Ra 0.8 μm",
|
||||
"parting_line_length": f"{parting_line_length:.2f} mm",
|
||||
"estimated_cycle_time": f"{int(cycle_time)} 秒"
|
||||
"estimated_cycle_time": f"{int(cycle_time)} 秒",
|
||||
"manufacturing_tolerance": "±0.1 mm"
|
||||
},
|
||||
"mold_cavities": {
|
||||
"cavity_count": 1,
|
||||
@@ -655,6 +656,55 @@ async def process_file_core(
|
||||
"warpage_risk": "low"
|
||||
}
|
||||
}
|
||||
},
|
||||
# 添加特征检测数据
|
||||
"detected_features": [
|
||||
{
|
||||
"feature_type": "壁厚检测",
|
||||
"confidence": 0.85,
|
||||
"location": "整体结构",
|
||||
"description": f"平均壁厚: {avg_thickness_mm:.2f} mm"
|
||||
},
|
||||
{
|
||||
"feature_type": "拔模角检测",
|
||||
"confidence": 0.92,
|
||||
"location": "主要表面",
|
||||
"description": "拔模角符合要求"
|
||||
},
|
||||
{
|
||||
"feature_type": "几何复杂性",
|
||||
"confidence": 0.78,
|
||||
"location": "整体结构",
|
||||
"description": f"复杂度评分: {complexity_score:.2f}"
|
||||
}
|
||||
],
|
||||
# 添加设计建议数据
|
||||
"design_recommendations": [
|
||||
{
|
||||
"rec_type": "壁厚优化",
|
||||
"priority": "medium",
|
||||
"description": f"建议优化壁厚均匀性,当前范围: {wall_thickness_min:.2f} - {wall_thickness_max:.2f} mm",
|
||||
"reason": "提高注塑成型质量"
|
||||
},
|
||||
{
|
||||
"rec_type": "拔模角",
|
||||
"priority": "low",
|
||||
"description": "拔模角符合标准要求",
|
||||
"reason": "便于脱模"
|
||||
},
|
||||
{
|
||||
"rec_type": "结构简化",
|
||||
"priority": "medium",
|
||||
"description": f"建议简化复杂结构,当前复杂度: {complexity_score:.2f}",
|
||||
"reason": "降低制造成本"
|
||||
}
|
||||
],
|
||||
# 添加质量指标数据
|
||||
"quality_metrics": {
|
||||
"volume_utilization": round(complexity_score * 100, 2),
|
||||
"wall_thickness_uniformity": round((1 - (wall_thickness_max - wall_thickness_min) / avg_thickness_mm) * 100, 2),
|
||||
"geometric_complexity": round(complexity_score * 10, 2),
|
||||
"moldability_score": round((complexity_score + 1) * 50, 2)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+183
-48
@@ -5,7 +5,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>分析结果 - STP文件几何分析工具</title>
|
||||
<link rel="stylesheet" href="/static/style.css?v=13">
|
||||
<link rel="stylesheet" href="/static/style.css?v=14">
|
||||
<style>
|
||||
.result-container {
|
||||
max-width: 1200px;
|
||||
@@ -318,6 +318,13 @@
|
||||
${displayKeyInfo(task.key_info)}
|
||||
</div>
|
||||
|
||||
<div class="result-section">
|
||||
<div class="section-title">🏭 模具型腔数据</div>
|
||||
<div class="data-grid">
|
||||
${displayCavityData(task)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="result-section">
|
||||
<div class="section-title">📦 边界框信息</div>
|
||||
<div class="data-grid">
|
||||
@@ -492,62 +499,190 @@
|
||||
`;
|
||||
}
|
||||
|
||||
function displayFeaturesData(task) {
|
||||
if (task.analysis_result && task.analysis_result.detected_features) {
|
||||
const features = task.analysis_result.detected_features;
|
||||
if (features.length > 0) {
|
||||
return features.map(feature => `
|
||||
<div class="data-item">
|
||||
<div class="data-label">${feature.feature_type || '未知特征'}</div>
|
||||
<div class="data-value">置信度: ${(feature.confidence || 0).toFixed(2)}</div>
|
||||
</div>
|
||||
`).join('');
|
||||
} else {
|
||||
return '<div class="no-data">无特征数据</div>';
|
||||
}
|
||||
} else {
|
||||
return '<div class="no-data">无特征数据</div>';
|
||||
function displayCavityData(task) {
|
||||
// 检查是否有型腔数据
|
||||
let cavityData = {};
|
||||
|
||||
// 检查多个可能的数据位置
|
||||
if (task.mold_cavity_data) {
|
||||
cavityData = task.mold_cavity_data;
|
||||
} else if (task.cavity_data) {
|
||||
cavityData = task.cavity_data;
|
||||
} else if (task.key_info && task.key_info.mold_cavities) {
|
||||
cavityData = task.key_info;
|
||||
}
|
||||
|
||||
if (!cavityData || Object.keys(cavityData).length === 0) {
|
||||
return '<div class="no-data">无型腔数据</div>';
|
||||
}
|
||||
|
||||
// 显示完整的JSON格式数据
|
||||
return `
|
||||
<div style="background: #f8f9fa; border: 1px solid #e0e0e0; border-radius: 6px; padding: 15px; margin-top: 10px;">
|
||||
<div style="font-family: 'Courier New', monospace; font-size: 14px; line-height: 1.4; white-space: pre-wrap; overflow-x: auto;">
|
||||
${JSON.stringify(cavityData, null, 2)}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
function displayFeaturesData(task) {
|
||||
// 检查是否有特征数据
|
||||
let features = [];
|
||||
|
||||
// 检查多个可能的数据位置
|
||||
if (task.features && task.features.length > 0) {
|
||||
features = task.features;
|
||||
} else if (task.mold_cavity_data && task.mold_cavity_data.detected_features) {
|
||||
features = task.mold_cavity_data.detected_features;
|
||||
} else if (task.detected_features) {
|
||||
features = task.detected_features;
|
||||
}
|
||||
|
||||
if (features.length > 0) {
|
||||
return features.map(feature => `
|
||||
<div class="data-item">
|
||||
<div class="data-label">${feature.feature_type || '未知特征'}</div>
|
||||
<div class="data-value">
|
||||
${feature.description ? feature.description + '<br>' : ''}
|
||||
置信度: ${(feature.confidence || 0).toFixed(2)}
|
||||
${feature.location ? '<br>位置: ' + feature.location : ''}
|
||||
</div>
|
||||
</div>
|
||||
`).join('');
|
||||
}
|
||||
return '<div class="no-data">无特征数据</div>';
|
||||
}
|
||||
|
||||
function displayRecommendationsData(task) {
|
||||
if (task.analysis_result && task.analysis_result.design_recommendations) {
|
||||
const recommendations = task.analysis_result.design_recommendations;
|
||||
if (recommendations.length > 0) {
|
||||
return recommendations.map(rec => `
|
||||
<div class="data-item">
|
||||
<div class="data-label">${rec.rec_type || '建议'}</div>
|
||||
<div class="data-value">优先级: ${rec.priority || '中'}</div>
|
||||
</div>
|
||||
`).join('');
|
||||
} else {
|
||||
return '<div class="no-data">无建议数据</div>';
|
||||
}
|
||||
} else {
|
||||
return '<div class="no-data">无建议数据</div>';
|
||||
// 检查是否有建议数据
|
||||
let recommendations = [];
|
||||
|
||||
// 检查多个可能的数据位置
|
||||
if (task.recommendations && task.recommendations.length > 0) {
|
||||
recommendations = task.recommendations;
|
||||
} else if (task.mold_cavity_data && task.mold_cavity_data.design_recommendations) {
|
||||
recommendations = task.mold_cavity_data.design_recommendations;
|
||||
} else if (task.design_recommendations) {
|
||||
recommendations = task.design_recommendations;
|
||||
}
|
||||
|
||||
if (recommendations.length > 0) {
|
||||
return recommendations.map(rec => `
|
||||
<div class="data-item">
|
||||
<div class="data-label">${rec.rec_type || '建议'}</div>
|
||||
<div class="data-value">
|
||||
优先级: ${rec.priority || '中'}
|
||||
${rec.description ? '<br>' + rec.description : ''}
|
||||
${rec.reason ? '<br>原因: ' + rec.reason : ''}
|
||||
</div>
|
||||
</div>
|
||||
`).join('');
|
||||
}
|
||||
return '<div class="no-data">无建议数据</div>';
|
||||
}
|
||||
|
||||
function displayMetricsData(task) {
|
||||
if (task.analysis_result && task.analysis_result.quality_metrics) {
|
||||
const metrics = task.analysis_result.quality_metrics;
|
||||
return `
|
||||
<div class="data-item">
|
||||
<div class="data-label">体积利用率</div>
|
||||
<div class="data-value">${(metrics.volume_utilization || 0).toFixed(2)}%</div>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<div class="data-label">壁厚均匀性</div>
|
||||
<div class="data-value">${(metrics.wall_thickness_uniformity || 0).toFixed(2)}%</div>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<div class="data-label">几何复杂度</div>
|
||||
<div class="data-value">${(metrics.geometric_complexity || 0).toFixed(2)}</div>
|
||||
</div>
|
||||
`;
|
||||
} else {
|
||||
return '<div class="no-data">无质量指标数据</div>';
|
||||
// 检查是否有质量指标数据
|
||||
let metrics = {};
|
||||
|
||||
// 检查多个可能的数据位置
|
||||
if (task.quality_metrics) {
|
||||
metrics = task.quality_metrics;
|
||||
} else if (task.mold_cavity_data && task.mold_cavity_data.quality_metrics) {
|
||||
metrics = task.mold_cavity_data.quality_metrics;
|
||||
}
|
||||
|
||||
let metricsHTML = '';
|
||||
|
||||
// 如果有质量指标数据
|
||||
if (Object.keys(metrics).length > 0) {
|
||||
// 体积利用率
|
||||
if (metrics.volume_utilization) {
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">体积利用率</div>
|
||||
<div class="data-value">${metrics.volume_utilization}%</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
// 壁厚均匀性
|
||||
if (metrics.wall_thickness_uniformity) {
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">壁厚均匀性</div>
|
||||
<div class="data-value">${metrics.wall_thickness_uniformity}%</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
// 几何复杂度
|
||||
if (metrics.geometric_complexity) {
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">几何复杂度</div>
|
||||
<div class="data-value">${metrics.geometric_complexity}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
// 可成型性评分
|
||||
if (metrics.moldability_score) {
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">可成型性评分</div>
|
||||
<div class="data-value">${metrics.moldability_score}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有质量指标数据,从几何数据中计算一些基础指标
|
||||
if (task.geometry_data && metricsHTML === '') {
|
||||
const geo = task.geometry_data;
|
||||
|
||||
// 体积表面积比作为质量指标
|
||||
if (geo.volume && geo.surface_area) {
|
||||
const volumeSurfaceRatio = geo.volume / geo.surface_area;
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">体积表面积比</div>
|
||||
<div class="data-value">${volumeSurfaceRatio.toFixed(4)}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
// 如果有边界框数据,计算紧凑度
|
||||
if (geo.bounding_box && geo.bounding_box.dimensions) {
|
||||
const dims = geo.bounding_box.dimensions;
|
||||
const compactness = geo.volume ? geo.volume / (dims[0] * dims[1] * dims[2]) : 0;
|
||||
if (compactness > 0) {
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">几何紧凑度</div>
|
||||
<div class="data-value">${(compactness * 100).toFixed(2)}%</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
// 拓扑复杂度
|
||||
if (geo.topology) {
|
||||
const faces = geo.topology.faces || 0;
|
||||
const edges = geo.topology.edges || 0;
|
||||
const vertices = geo.topology.vertices || 0;
|
||||
|
||||
metricsHTML += `
|
||||
<div class="data-item">
|
||||
<div class="data-label">拓扑复杂度</div>
|
||||
<div class="data-value">面:${faces} 边:${edges} 顶点:${vertices}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
return metricsHTML || '<div class="no-data">无质量指标数据</div>';
|
||||
}
|
||||
|
||||
function displayAnalysisInfo(task) {
|
||||
|
||||
Reference in New Issue
Block a user