FreeCAD将STL导出为GLB失败求助:导出文件仅含头部信息
解决FreeCAD导出STL为GLB为空的问题
问题分析
你的代码存在几个关键逻辑错误,导致导出的GLB仅包含头部信息:
- 重复创建多个FreeCAD文档,最终操作的文档中未关联任何STL网格数据
- 创建
Mesh::Feature对象后,未将读取到的STL网格赋值给该对象 - 存在冗余的模块导入和无意义的文档操作
修正后的代码
import FreeCAD import FreeCADGui import Mesh import ImportGui # 初始化FreeCAD并隐藏主窗口 FreeCADGui.showMainWindow() mw = FreeCADGui.getMainWindow() mw.hide() # 替换为你的STL文件路径 stl_file = "test.stl" # 读取STL文件到Mesh对象 mesh_obj = Mesh.read(stl_file) # 创建新文档并添加Mesh特征 doc = FreeCAD.newDocument("STL_to_GLB") mesh_feature = doc.addObject("Mesh::Feature", "STLMesh") # 将读取到的网格数据关联到特征对象 mesh_feature.Mesh = mesh_obj # 刷新文档确保对象状态更新 doc.recompute() # 导出为GLB文件 ImportGui.export([mesh_feature], "test.glb")
关键修正点说明
- 精简冗余模块导入,仅保留必要模块
- 只创建一个目标文档,避免文档切换导致的数据丢失
- 明确将读取到的STL网格对象赋值给
Mesh::Feature的Mesh属性,这是导出有效GLB的核心 - 添加
doc.recompute()确保文档对象状态同步
内容的提问来源于stack exchange,提问作者user2354769
相关产品推荐
相关产品推荐

