FreeCAD stp文件基于python脚本操作
FreeCAD对于3D模型处理这块的东西封装的还是很完善的,所以移植这块的东西还是有必要的!
首先下载FreeCAD编译好的库:
https://www.freecadweb.org/wiki/Download#FreeCAD_LibPack
打开,并解压,在bin中有相应的FreeCAD.exe工具,这里也有大量的python库,Q库等等;
lib文件夹里面也有大量的库文件;
这里说一下模型操作相应的python脚本的使用:
首先我通过一个stp模型转obj模型的例子来讲解,通常给我们一个stl的模型,我放在E盘下(文件的取名不要在意,我之前做测试忘记改名了):

由于bin文件存在python的库,我们可将该python.exe文件设置环境变量。或者可自己独立安装相应的库。
创建一个.py的脚本(为了方便我直接在lib文件夹里写了,这里没有位置的限定):

step_stl.py:
#!/Applications/FreeCAD.app/Contents/MacOS/FreeCADCmd
FREECADPATH = 'E:/FreeCAD/FreeCAD/lib/' # path to your FreeCAD.so or FreeCAD.dll file
import sys
sys.path.append(FREECADPATH)
import math
import FreeCAD
import Part
import Mesh import sys in_fn, out_fn = sys.argv[], sys.argv[]
Type=sys.argv[] Part.open(in_fn) strlist = in_fn.split('\\')
stllist=strlist[len(strlist)-].split('.')
print(strlist[len(strlist)-])
print(stllist[])
print(len(FreeCAD.getDocument("Unnamed").Objects))
size=len(FreeCAD.getDocument("Unnamed").Objects)
for a in range(len(FreeCAD.getDocument("Unnamed").Objects)):
o = [ FreeCAD.getDocument("Unnamed").Objects[a] ]
out_model=out_fn+'\\'+stllist[]+'_part'+str(a)+Type
Mesh.export(o, out_model)
out_advance=str(round((float(a+)/size),)*)+'%'
print(out_advance)
需要注意的是需要使用的库文件的导入,用到什么库就导入什么(设置环境变量和在代码设置路径都是可行的)。我的库目录就是在代码设置的(FreeCAD.pyd 在bin文件夹内,可复制过去)。
这个python脚本是个命令行程序:python.exe step_stl.py(.py文件的路径) E:\1.stp(需要转换文件的路径) E:(保存文件的位置) .obj(保存文件的格式)
需要注意的是:这个程序是按文件的mesh进行输出,假如需要转换成单个模型,去官网或者博客查找相应的API.

我们都知道,这样操作借助的库多而且麻烦,所以打包成exe是必要的:
py2exe解决了这个问题:
这是py2exe下载链接(保证python版本一致):http://www.py2exe.org/
py2exe使用:http://www.cnblogs.com/jans2002/archive/2006/09/30/519393.html
import py2exe-----------------pyt2exe是一个文件夹,将它的上级设置成环境变量就好
后序编译会遇到一些库文件依赖没找到的问题,"dll_excludes"是很好的处理手段(下面是我的.py文件):
FREECADPATH = 'E:/Python/Lib/site-packages' # path to your FreeCAD.so or FreeCAD.dll file
import sys
sys.path.append(FREECADPATH)
from distutils.core import setup
import py2exe setup(console=["E:\FreeCAD\FreeCAD\lib\step_stl.py"],
options={
'py2exe': {
"dll_excludes": ["MSVCP90.dll","libzmq.pyd","geos_c.dll","api-ms-win-core-string-l1-1-0.dll","api-ms-win-core-rtlsupport-l1-2-0.dll","api-ms-win-core-registry-l1-1-0.dll",
"api-ms-win-core-errorhandling-l1-1-1.dll","api-ms-win-core-string-l2-1-0.dll","api-ms-win-core-profile-l1-1-0.dll","api-ms-win*.dll","api-ms-win-core-processthreads-l1-1-2.dll",
"api-ms-win-core-libraryloader-l1-2-1.dll","api-ms-win-core-file-l1-2-1.dll","api-ms-win-security-base-l1-2-0.dll","api-ms-win-eventing-provider-l1-1-0.dll","api-ms-win-core-heap-l2-1-0.dll",
"api-ms-win-core-libraryloader-l1-2-0.dll","api-ms-win-core-localization-l1-2-1.dll","api-ms-win-core-sysinfo-l1-2-1.dll","api-ms-win-core-synch-l1-2-0.dll","api-ms-win-core-heap-l1-2-0.dll",
"api-ms-win-core-handle-l1-1-0.dll","api-ms-win-core-io-l1-1-1.dll","api-ms-win-core-com-l1-1-1.dll","api-ms-win-core-memory-l1-1-2.dll","api-ms-win-core-version-l1-1-1.dll","api-ms-win-core-version-l1-1-0.dll"]
} })
编译那块py2exe有很详细的解释;
FreeCAD stp文件基于python脚本操作的更多相关文章
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
		摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ... 
- 基于python脚本,实现Unity全平台的自动打包
		转载请标明出处:http://www.cnblogs.com/zblade/ 0. 概述 本文主要针对项目中自动打包过程进行调研,实现用python脚本来打出win/android/ios三个平台下的 ... 
- 基于python脚本的对拍debug
		首先,这是python脚本 import os; for i in range(0,20): print ("Case:"+str(i)); print ("random ... 
- android删除无用资源文件的python脚本
		随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ... 
- socket发送文字、图片、文件---基于python实现
		socket官方文档:https://docs.python.org/2/library/socket.html socket中文详细介绍:http://blog.csdn.net/rebelqsp/ ... 
- 将Excel文件转为csv文件的python脚本
		#!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级 ... 
- .bat 文件调用python脚本
		1.将clearlog.py 脚本放在指定目录 比如 我放在 C:\Users\Administrator\Desktop 上 也就是桌面上 2.创建一个.bat 位后缀名的脚本 3.写入如下脚本 @ ... 
- 使用Python脚本操作MongoDB的教程
		Reference: http://www.jb51.net/article/64225.htm 
- Python脚本控制的WebDriver 常用操作 <一> 启动浏览器
		由于本人的学习定位是基于Selenium+WebDriver+Python+FireFox+Eclipse+Pydev, 所以我的笔记也只和这方面相关. 我打算先学习基于Python脚本WebDriv ... 
随机推荐
- Thymeleaf基本知识(推荐)
			原文: http://blog.csdn.net/pdw2009/article/details/44700897 Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非We ... 
- 一个DBA的雄心壮志
			math-liu, 一个甲方的DBA,同时他还有另外一个名字“怕提神”.在某甲方工作的他最近这几年如打了鸡血一般工作起来完全由拼命三郎的那股劲,据说能唯一使他感到一丝鼓励和安慰的是以下这两位大牛前辈. ... 
- Spring @Async之一:实现异步调用示例
			什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果 ... 
- UniGUI 之UniDBGrid(05)
			UniGUI 之UniDBGrid(05) 目录1]DataSource设置2]显示MEMO类型里的文字3]显示悬浮提示4]显示当前记录及总记录数5]读取所有记录,及分页6]在前面加上序号列7]不显示 ... 
- mysql5.7 忘记root密码修改方式
			参考文档: http://www.jb51.net/article/77858.htm # /etc/init.d/mysql stop --停止mysql服务 # /work/program/mys ... 
- SVN团队开发项目工具(安装以及使用)
			https://pan.baidu.com/s/1jJyo9ue 密码:ce9z 
- lnmp一键安装的缺点???
			自己尝试几次在新的服务器上安装lnmp环境,每次都是一键安装,然后在/home/wwwroot/default目录下放对应的PHP文件就Ok了,很方便.其实也尝试过用命令行,就是很多命令的那种安装,中 ... 
- shell脚本中执行sql脚本并传递参数(mysql为例)
			1.mysql脚本文件 t.sql insert into test.t values(@name,@age); exit 2.shell脚本文件 a.sh (为方便演示,与t.sql文件放在同一目 ... 
- Linux文件系统层次结构标准FHS
			文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容.FHS由Linux基金会维护. 当前版本为3.0版,于2 ... 
- Java的equals方法实现及其细节
			判断两个对象是否等价,是OOP编程中常见的需求(下面围绕Java来进行阐述). 考虑这样几种情况:通过某个特征值来判断两个对象是否“等价”,当这两个对象等价时,判断结果为true,否则结果为false ... 
