feat: 集成Creo几何优化分析薄壳化API并简化参数设置
- 在creoApi服务中添加startShrinkwrapShell方法,调用/api/creo/shrinkwrap/shell接口 - 更新几何优化默认参数配置,符合用户要求的默认值 - 修改参数设置页面集成API调用,支持异步执行薄壳化分析 - 移除输出文件路径设置UI,简化用户操作流程 - 清理无用的文件名生成逻辑和相关常量 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
088941747a
commit
4aedb9b3be
@ -27,11 +27,6 @@
|
||||
<input type="text" class="param-input" v-model="parameters.project_name" readonly>
|
||||
</div>
|
||||
|
||||
<div class="param-group">
|
||||
<label class="param-label">输出文件路径</label>
|
||||
<div class="param-description">优化后模型的保存路径和文件名(自动生成,不可修改)</div>
|
||||
<input type="text" class="param-input" v-model="parameters.output_file_path" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -212,8 +207,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ref } from 'vue'
|
||||
import { getGeometryOptimizationDefaults } from '@/config/cad.js'
|
||||
import { creoApi } from '@/services/creoApi.js'
|
||||
|
||||
// Emits
|
||||
const emit = defineEmits(['close', 'start-optimization'])
|
||||
@ -240,7 +236,7 @@ const parameters = ref({
|
||||
fill_holes: configDefaults.FILL_HOLES,
|
||||
ignore_small_surfaces: configDefaults.IGNORE_SMALL_SURFACES,
|
||||
small_surface_percentage: configDefaults.SMALL_SURFACE_PERCENTAGE,
|
||||
output_file_path: '',
|
||||
output_file_path: '自定义名字',
|
||||
output_type: configDefaults.OUTPUT_TYPE,
|
||||
ignore_quilts: configDefaults.IGNORE_QUILTS,
|
||||
ignore_skeleton: configDefaults.IGNORE_SKELETON,
|
||||
@ -257,39 +253,33 @@ const selectMethod = (method) => {
|
||||
parameters.value.method = method
|
||||
}
|
||||
|
||||
// 文件名生成常量
|
||||
const FILE_NAME_CONSTANTS = {
|
||||
DEFAULT_PROJECT_NAME: 'project',
|
||||
NAME_LENGTH: 3,
|
||||
PAD_LENGTH: 2,
|
||||
PAD_CHAR: '0',
|
||||
FILE_EXTENSION: '.prt'
|
||||
}
|
||||
|
||||
// 生成输出文件名
|
||||
function generateOutputFileName() {
|
||||
const projectName = parameters.value?.project_name || FILE_NAME_CONSTANTS.DEFAULT_PROJECT_NAME
|
||||
const baseName = projectName.replace(/\.[^/.]+$/, "")
|
||||
const simpleName = baseName.replace(/[\s\-_]/g, '').substring(0, FILE_NAME_CONSTANTS.NAME_LENGTH)
|
||||
const now = new Date()
|
||||
const month = String(now.getMonth() + 1).padStart(FILE_NAME_CONSTANTS.PAD_LENGTH, FILE_NAME_CONSTANTS.PAD_CHAR)
|
||||
const day = String(now.getDate()).padStart(FILE_NAME_CONSTANTS.PAD_LENGTH, FILE_NAME_CONSTANTS.PAD_CHAR)
|
||||
const hour = String(now.getHours()).padStart(FILE_NAME_CONSTANTS.PAD_LENGTH, FILE_NAME_CONSTANTS.PAD_CHAR)
|
||||
const minute = String(now.getMinutes()).padStart(FILE_NAME_CONSTANTS.PAD_LENGTH, FILE_NAME_CONSTANTS.PAD_CHAR)
|
||||
const timestamp = `${month}${day}${hour}${minute}`
|
||||
const fileName = `${simpleName}${timestamp}`
|
||||
return `${fileName}${FILE_NAME_CONSTANTS.FILE_EXTENSION}`
|
||||
}
|
||||
|
||||
// 开始几何优化
|
||||
const startOptimization = () => {
|
||||
emit('start-optimization', { ...parameters.value })
|
||||
const startOptimization = async () => {
|
||||
// 构建API参数,使用"通过接口获取"作为project_name的占位符
|
||||
const apiParams = {
|
||||
software_type: parameters.value.software_type,
|
||||
project_name: "通过接口获取",
|
||||
method: parameters.value.method,
|
||||
quality: parameters.value.quality,
|
||||
chord_height: parameters.value.chord_height,
|
||||
fill_holes: parameters.value.fill_holes,
|
||||
ignore_small_surfaces: parameters.value.ignore_small_surfaces,
|
||||
small_surface_percentage: parameters.value.small_surface_percentage,
|
||||
output_file_path: parameters.value.output_file_path,
|
||||
output_type: parameters.value.output_type,
|
||||
ignore_quilts: parameters.value.ignore_quilts,
|
||||
ignore_skeleton: parameters.value.ignore_skeleton,
|
||||
assign_mass_properties: parameters.value.assign_mass_properties
|
||||
}
|
||||
|
||||
// 调用API
|
||||
const result = await creoApi.startShrinkwrapShell(apiParams)
|
||||
|
||||
// 发射事件通知父组件
|
||||
emit('start-optimization', { result, parameters: { ...parameters.value } })
|
||||
}
|
||||
|
||||
// 组件挂载时初始化
|
||||
onMounted(() => {
|
||||
parameters.value.output_file_path = generateOutputFileName()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@ -49,14 +49,14 @@ const API_CONFIG = {
|
||||
GEOMETRY_OPTIMIZATION: {
|
||||
SOFTWARE_TYPE: "creo",
|
||||
METHOD: "outer_shell",
|
||||
QUALITY: 8,
|
||||
CHORD_HEIGHT: 0.1,
|
||||
FILL_HOLES: true,
|
||||
IGNORE_SMALL_SURFACES: true,
|
||||
SMALL_SURFACE_PERCENTAGE: 0.5,
|
||||
QUALITY: 5,
|
||||
CHORD_HEIGHT: 0.15,
|
||||
FILL_HOLES: false,
|
||||
IGNORE_SMALL_SURFACES: false,
|
||||
SMALL_SURFACE_PERCENTAGE: 0.0,
|
||||
OUTPUT_TYPE: "solid_surface",
|
||||
IGNORE_QUILTS: true,
|
||||
IGNORE_SKELETON: true,
|
||||
IGNORE_QUILTS: false,
|
||||
IGNORE_SKELETON: false,
|
||||
ASSIGN_MASS_PROPERTIES: false
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,6 +191,22 @@ class CreoApiService {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行薄壳化分析 (Shrinkwrap Shell Analysis)
|
||||
* @param {Object} params - 分析参数
|
||||
* @returns {Promise<{success: boolean, data?: any, error?: string}>}
|
||||
*/
|
||||
async startShrinkwrapShell(params) {
|
||||
const url = buildApiUrl(this.softwareName, 'optimization')
|
||||
|
||||
return await apiClient.post(url, params, {
|
||||
operationContext: {
|
||||
software: 'Creo',
|
||||
operation: '薄壳化分析'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出模型到指定格式
|
||||
* @param {string} formatType - 导出格式类型 (step, iges, stl, pdf, dwg)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user