sarscape 将dem文件转化成stl_IGS模型批量转换成STL模型

背景:做配载仪时需要批量的将IGS模型转换成STL模型

用到的方法:

  • 方法1:使用3D-tool或者其他工具进行转换
  • 方法2:通过python使用FreeCAD的接口批量转换(当时师弟写的程序)

FreeCAD

FreeCAD是一个基于OpenCASCADE的开源CAD/CAE工具,FreeCAD 是多平台的,可用于 Windows、Mac OS X+ 以及 Linux。

https://www.freecadweb.org/​www.freecadweb.org

Your own 3D parametric modeler

https://www.freecadweb.org/​www.freecadweb.org

c46043a9d640b2610a11bd9a7ea4c38e.png

测试平台:windows

步骤:

  1. 安装FreeCAD
  2. 查看FreeCAD对应python版本号(x86 还是 x64),然后下载安装对应python版本
  3. 写python程序

1.安装FreeCAD比较简单,直接官网下载exe即可

2.查看python版本

12b03c37c467209fb61e56bbe468bba6.png

安装完成后,默认不显示python脚本

7b4807ad984166fe8a831bf4d3955111.png

通过View->Panels->python console打开python控制台

f6850ca1f3a3c71969daaaedbb59c875.png

python控制台还可以学习freeCAD 的pythonAPI

比如我通过菜单打开了一个igs文件,然后导出stl 控制台中给出了相关的提示

e16fe8c9fcfdd4a6771e9ba376b454ed.png

3. 安装python

4. 写python脚本

66c3dcc19671de70cc18c33f5a65bba7.png

使用VS code打开igs2stl.py文件,编辑代码

引入FreeCAD 包

import FreeCAD

运行,如果成功的话显示版本号:

e324519a9921857264b4e81c6959c7f7.png

5.完善Python脚本,打开igs文件所在的文件夹然后开始批量转换STL

代码如下:

# -*- coding: utf-8 -*-
#precision=input("Please input  precision. default:40 :n")
precision=40
if not precision:
    precision=40
else:
    precision=float(precision)
import sys
#sys.path.append('win32')
import FreeCAD,Part,os
import Mesh
import tkinter as tk
from tkinter import filedialog
folder=filedialog.askdirectory()
# first we check for filenames that contain .stp, .step, .igs or .iges
cadfiles = []
for f in os.listdir(folder):
    for ext in [".stp", ".step", ".igs", ".iges"]:
        if f.lower().endswith(ext):
            cadfiles.append((folder+os.sep+f,ext))
            break
       
if not cadfiles:
    print ("No step or iges files found in the given folder")
    sys.exit()

for f,ext in cadfiles:       
    #f=f.decode('gbk')
    s = Part.read(f)
    stl = f.replace(ext,'.stl')
    stl=stl.encode('utf-8')
    m=Mesh.Mesh()
    m.addFacets(s.tessellate(precision))
    mat=FreeCAD.Matrix()
    mat.scale(1/1000.0,1/1000.0,1/1000.0)
    m.transform(mat)
    m.write(stl)
print("finished") 

运行结果:

fe9884f364734899988c96d4d718df97.png

6.善后工作

转换我们用到Mesh和Part模块,所以可以删除一些不必要的模块及DLL,不然整个包特别打

拷贝整个安装目录到自己的文件夹,一遍删除dll一遍运行,如果出错就后退

清理前大概1.65G 删除无关模块后,大概100M

以Mod文件夹为例

cfbfda5f8c6326e3373dbfca253640a1.png

e5313010ad47b4b523221a65357994eb.png

删除后就剩2个文件夹

7.现在程序可以独立运行了,不再依赖于FreeCAD的安装包,可以用python做任何想做的事,然后发布成exe。深藏功与名

注意:

  • python版本要和FreeCAD的对应
  • 如果转换后的STL模型有问题,可以用Netfabb软件进行修复,支持批量修复及导出,导出后文件名会统一添加(repaired),写个python脚本批量重命名即可,见参考目录
  • 使用FreeCAD批量处理省力多了,感谢小师弟,以前我都是一个个保存,经常100+文件 眼泪 TT
  • 本文是以IGS转STL模型为例,同样支持其他类型,大家可以按需修改,如下图所示

86240148a2226cef74d5e1d08a83aab5.png

参考:

开源免费freeCAD:

https://wiki.freecadweb.org/Feature_list​wiki.freecadweb.org

免费的3d-tool viewer:

3D und 2D CAD Viewer und 3D-Konverter​www.3d-tool.de
a94a7b1dc7573199716dc33c4fb44a07.png

其他的一些转换软件:

The Best STL File Converter Tools | All3DP​all3dp.com
edf1c34c559ff92140625c7510877189.png

python脚本批量重命名:

刘春雷:python 批量重命名​zhuanlan.zhihu.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值