Install_home\\BETA_CAE_Systems\\ansa_v22.1.0\\ansa64.bat -exec "load_script: ‘..\\batchmesh_script.py'"
(其中 “test.py” 为 ANSA 的测试脚本,内容可仅包含打印当前工作路径的代码),若 ANSA 能正常启动并返回脚本执行结果,说明环境配置成功。
#设置导入文件路径
set input_file “..\\demo.stp”
*start_batch_import 3
*setgeomrefinelevel 1
*geomimport "auto_detect" $input_file "AttributesAsMetadata=on" "BodyIDAsMetadata=off" "CleanupTol=-0.01" "ColorsAsMetadata=off" "CreationType=Parts" "DegSurfTol=0.0" "DensityAsMetadata=off" "DisplayRepresentation=off" "DoNotMergeEdges=off" "FullNameAsMetadata=off" "ImportBlanked=off" "ImportCoordinateSystems=on" "ImportFreeCurves=on" "ImportFreePoints=on" "LayerAsMetadata=off" "LegacyHierarchyAsMetadata=off" "MID=MaterialId" "MaterialName=Material" "MeshFlag=MeshFlag" "OriginalIdAsMetadata=on" "PID=PID" "PartNumber=PartNumber" "Revision=Revision" "ScaleFactor=1.0" "SkipCreationOfSolid=off" "SplitComponents=Body" "StitchingAcrossBodies=on" "TagsAsMetadata=on" "TargetUnits=CAD units" "ThicknessName=Thickness" "UID=UID" "VariantCondition=VariantCondition" "VariantScope=VariantScope"
*end_batch_import
该代码实现从指定路径批量导入 CATIA 模型,并按部件名称重命名,避免模型混淆。
#删除重复面
set check_surfs {1 2}
hm_createmark surfs 1 $check_surfs
set delet_surf [*surfacemark_duplicate_check 1 1 518 0 1 0.01]
*createmark surfaces 1 $delet_surf
*deletemark surfaces 1
#修补破面
*surfacemode 4
*createmark lines 1 28-30
*createplane 1 1 0 0 0 0 0
*splinesurface lines 1 1 1 65
脚本执行后,会生成每个部件的几何质量检查报告,便于工程师快速定位未修复的几何问题。
#关联部件和网格批处理数据
stp_mesh_file = {}
for stp in stp_file_ls:
stp_rel_path = os.path.basename(stp)
stp_name = os.path.splitext(stp_rel_path)[0] qual_mpar_ls = []
for mesh in batchmesh_files:
if stp_name in mesh: qual_mpar_ls.append(mesh)
stp_mesh_file[stp] = qual_mpar_ls
#定义ANSA脚本路径
set ansa_batchmesh_file [file join $workdir ansa_batchmesh.py]
#执行批处理文件
set ansa_bat_path $env(ANSAPATH)
$ansa_bat_path -exec "load_script: $ ansa_batchmesh_file " –nogui
#生成的网格文件回传到hypermesh
*feinputpreserveincludefiles
*createstringarray 12 "OptiStruct " " " "ANSA " "PATRAN " "EXPAND_IDS_FOR_FORMULA_SETS " \
"ASSIGNPROP_BYHMCOMMENTS " "LOADCOLS_DISPLAY_SKIP " "VECTORCOLS_DISPLAY_SKIP " \
"SYSTCOLS_DISPLAY_SKIP " "CONTACTSURF_DISPLAY_SKIP " "CREATE_PART_HIERARCHY " \
"IMPORT_MATERIAL_METADATA "
*feinputwithdata2 "\
#optistruct
\\optistruct" $fem_file 0 0 0 0 0 1 12 1 0
执行该脚本后,HyperMesh 将自动完成几何预处理、参数传递,调用 ANSA 生成网格,并在批处理结束后显示总不良单元数量,工程师可根据报告快速定位问题部件,进行二次优化。
try:
batchmesh.RunMeshingScenario(shell_scenario, 3600)
except Exception as e:
with open(os.path.join(work_dir, "Error_Log.txt"), "a") as f:
f.write(f"Part {part_name} Mesh Generation Failed: {str(e)}\n")
# 启用多线程
set num_threads 4
set part_chunks [split_list $part_list $num_threads] ;# 自定义函数,将部件列表分为4组
foreach chunk $part_chunks {
# 为每组部件生成独立的参数文件和ANSA脚本
set chunk_param [file join $work_dir "Params_Chunk.txt"]
# ...(写入该组部件的参数)
set chunk_script [file join $work_dir "Script_Chunk.py"]
# ...(生成该组部件的ANSA脚本)
# 并行调用ANSA
exec "%ANSA_PATH%\bin\ansa.bat" –exec load_script:..\\test.py
}
提供vip群答疑和模型下载
《HyperMesh二次开发网格批处理核心技术:打破效率瓶颈-解锁仿真自动化新技能》