Bambu Studio 发现 xx个开放边

目录

admesh修复

[我现在加载blender标注正方体,水平直接切割,切割完导出glb, Bambu Studio 发现有25条开放边](#我现在加载blender标注正方体,水平直接切割,切割完导出glb, Bambu Studio 发现有25条开放边)

bpy修复:


Bambu Studio 自带修复功能

admesh修复

bash 复制代码
apt install admesh

admesh -b repaired.stl zft_print.stl

我现在加载blender标注正方体,水平直接切割,切割完导出glb, Bambu Studio 发现有25条开放边

bpy修复:

测试效果,会改变物体,不可取

python 复制代码
# fix_model.py - 适配 Blender 5.0+
import bpy, sys

# 解析参数
argv = sys.argv
argv = argv[argv.index("--") + 1:]  # 获取 -- 之后的参数
input_file = argv[0]
output_file = argv[1]
voxel_size = float(argv[2]) if len(argv) > 2 else 0.15
merge_objects = argv[3].lower() == 'true' if len(argv) > 3 else False

print(f"输入: {input_file}")
print(f"输出: {output_file}")
print(f"体素大小: {voxel_size}mm")
print(f"合并物体: {merge_objects}")

# 清空场景
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

# 导入 GLB/GLTF
bpy.ops.import_scene.gltf(filepath=input_file)
print(f"导入完成,物体数量: {len(bpy.data.objects)}")

# 确保所有物体都是MESH类型
mesh_objects = [obj for obj in bpy.data.objects if obj.type == 'MESH']
if not mesh_objects:
	raise Exception("没有找到网格物体")

print(f"网格物体数量: {len(mesh_objects)}")

# 如果需要合并所有物体
if merge_objects and len(mesh_objects) > 1:
	# 取消所有选择
	bpy.ops.object.select_all(action='DESELECT')
	# 选择所有网格物体
	for obj in mesh_objects:
		obj.select_set(True)
	# 设置活动物体
	bpy.context.view_layer.objects.active = mesh_objects[0]
	# 合并
	bpy.ops.object.join()
	mesh_objects = [bpy.context.active_object]
	print("物体已合并")

# 对每个网格物体进行Voxel Remesh
for obj in mesh_objects:
	print(f"处理物体: {obj.name}")

	# 取消所有选择
	bpy.ops.object.select_all(action='DESELECT')

	# 选择当前物体
	obj.select_set(True)
	bpy.context.view_layer.objects.active = obj

	# 确保在物体模式
	bpy.ops.object.mode_set(mode='OBJECT')

	# 添加 Remesh 修改器(Voxel)
	mod = obj.modifiers.new(name="VoxelRemesh", type='REMESH')
	mod.mode = 'VOXEL'
	mod.voxel_size = voxel_size
	mod.use_remove_disconnected = False

	# 应用修改器
	bpy.ops.object.modifier_apply(modifier=mod.name)

	# 进入编辑模式,清理顶点
	bpy.ops.object.mode_set(mode='EDIT')
	bpy.ops.mesh.select_all(action='SELECT')
	bpy.ops.mesh.remove_doubles(threshold=0.0001)
	bpy.ops.mesh.normals_make_consistent(inside=False)
	bpy.ops.object.mode_set(mode='OBJECT')

	print(f"  Remesh 完成,顶点数: {len(obj.data.vertices)}")

# 选择所有网格物体用于导出
bpy.ops.object.select_all(action='DESELECT')
for obj in mesh_objects:
	obj.select_set(True)
if mesh_objects:
	bpy.context.view_layer.objects.active = mesh_objects[0]

bpy.ops.wm.stl_export(filepath=output_file)
# 导出为 STL
# bpy.ops.export_mesh.stl(filepath=output_file, use_selection=True, use_mesh_modifiers=True, batch_mode='OBJECT' if len(mesh_objects) > 1 else 'OFF')

print(f"\n✅ Voxel Remesh 完成 → {output_file}")
print(f"   处理了 {len(mesh_objects)} 个物体")
相关推荐
2601_966949656 分钟前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
长不大的杨瑞杰7 分钟前
OpenCode v2 配置工程实战:Config 优先级、JSONC、变量替换与多环境治理
人工智能·安全·云计算·软件工程·devops
.Bryce.16 分钟前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
高升说24 分钟前
手眼方案怎么选:眼在手上与眼在手外的工程对比
人工智能·数码相机
Highcharts.js40 分钟前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化
apple_692658851 小时前
基于 Qwen-Image-2.1 的人物替换 LoRA 模型及部署工作流 人物替换的效果 吊打闭源
人工智能·计算机视觉
甲维斯1 小时前
绝了!Codex找苹果客服解决Claude订阅问题!
人工智能
斗象科技1 小时前
斗象入选上海市“AI+制造“服务商能力图谱·AI安全服务商
人工智能·安全·制造
明志数科1 小时前
工业采集数据的计量口径分层与可复算质检设计
人工智能·机器人
qq_25294131681 小时前
日本道路病害检测数据集 | 道路病害 裂缝检测 坑洼识别 市政巡检9287期
人工智能·深度学习·yolo·目标检测·计算机视觉·道路检测