当前位置: 首页 > news >正文

Compile FreeCAD on Windows

Compile FreeCAD on Windows

eryar@163.com

1.Introduction

FreeCAD是一个参数化的三维造型软件,主要用于任意大小的实际模型的设计。参数化的建模方式可以通过修改相关参数从而方便地修改你的设计。FreeCAD是开源软件,并提供了便利地自定义方式,也提供了脚本,从而根据自己的需要去扩展功能。FreeCAD是跨平台(Windows, Mac和Linux),可以读写许多开放的模型文件,如STEP,IGES,STL,SVG,DXF,OBJ,IFC,DAE等。

如果说学习OpenCASCADE可以了解一些几何内核底层的算法,那么学习FreeCAD则可以用来实现一些具体的功能,从而将三维的技术应用到实际的生活中去,创造出有意义的功能。

本文详细说明如何在Windows平台上编译FreeCAD源码。如果你已经可以正常编译OpenCASCADE这种开源库的源码,那么编译FreeCAD还是很简单的。

2.Preparation

编译FreeCAD源码之前,需要做些准备工作:下载源码及所需的第三方库。其中源码可以从github上下载,地址为:https://github.com/FreeCAD

为了方便其源码的编译,FreeCAD将所需要的第三方库打包在一起取名LibPack,方便开发者自己编译。LibPack可以从sourceforge上下载:

https://sourceforge.net/projects/free-cad/files/FreeCAD%20LibPack/

wps_clip_image-26073

Figure 2.1 Download LibPack of FreeCAD

找到与自己编译器版本一致的LibPack下载。如果想在Visual Studio2008中编译,则下载FreeCADLibs_11.1_x86_VC9.7z。下载好源码和LibPack就万事具备了,我们先来粗略地看下LibPack中都有哪些库:

wps_clip_image-30453

Figure 2.2 3rd party libraries used in FreeCAD

从include可以看出,几何内核主要使用了oce(OpenCASCADE社区版),脚本使用了Python,显示使用了Inventor,网格库还使用了SMESH,逆向工程的功能使用了pcl,还用到了boost及eigen矩阵计算库,程序界面使用了Qt等。由此可见,FreeCAD中的第三方库的数量比OpenCASCADE中的要多,所以编译成功的关键就是要将这些第三方库配置正确。

还好FreeCAD的开发团队提供了这些第三方库,如果自己去准备这些库也要花不少时间和精力。

3.Compiling

FreeCAD在Windows中编译主要使用CMake,通过CMake生成Visual Studio工程文件。如果直接Configure源码文件夹中的CMakeLists.txt会有如下图所示的错误:

wps_clip_image-18431

Figure 3.1 Could not find libpack error

根据错误信息,说是没有在指定目录找到libpack,所以自己将FREECAD_LIBPACK_DIR设置到下载的libpack中去之后,就可以Configure成功了,如下图所示:

wps_clip_image-26076

Figure 3.2 CMake success

Configure成功后,即可使用Generate来生成FreeCAD_trunk.sln工程文件,从而用Visual Studio来打开和编译了。

wps_clip_image-8433

Figure 3.3 FreeCAD projects in Visual Studio

看着自己编译一个模块,在FreeCAD的功能选择中就多出一个模块,还是很有感觉的。自己动手编译下,经过漫长的等待后得到可以运行的程序也是有些收获。

4.Play

编译成功后,就迫不及待地想测试下很有亮点的功能,如网格设计、逆向工程、机器人等模块。

wps_clip_image-3527

Figure 4.1 Shape in Wireframe mode

wps_clip_image-12981

Figure 4.2 Shape Mesh

wps_clip_image-28814

Figure 4.3 Assembly in FreeCAD

看到Assembly中只有那一个按钮,装配功能基本上不能用。如果有了装配功能,那么FreeCAD的功能就和常见的那些三维软件功能类似了。装配功能中需要用到了三维的约束,像什么面对齐,同轴等,商用软件会用到西门子的约束求解库DCM,DCM相关信息可参考simens官方网站:

https://www.plm.automation.siemens.com/en_us/products/open/d-cubed/

有需要DCM的可直接与他们联系,不过价格也是不便宜的。

wps_clip_image-9288

Figure 4.4 DCM of SIEMENS

没有了google找点东西还是很费劲,用baidu和bing中文版的都没找到什么有用的东西。用了Bing英语版的,才找到,如下图同样输入关键字dcm3d,百度中出来的东西完全无用:

wps_clip_image-10165

Figure 4.5 Search result of DCM3d

FreeCAD中机器人功能的视频:http://www.tudou.com/listplay/5zDaAoucSXQ/

wps_clip_image-20045

Figure 4.6 Robot in FreeCAD

PDF Version: Compile FreeCAD on Windows

相关文章:

  • Elasticsearch-DSL(highlight) 004
  • linux-selinux安全防护,加密解密
  • Lua 笔记--编译、执行、错误与协同程序
  • 解决input file按钮要点击两次才弹出选择文件窗口
  • java-NIO
  • 转:对分库分表的一些想法
  • Web 图形验证码的校验1
  • Xcode快捷键--灰常实用的快捷键,以后编程快捷多了
  • 十条nmap常用的扫描命令
  • winPE系统下查看系统的IP及DNS地址
  • PC标签 phpcmsv9
  • YII 验证和消息
  • Postgresql数据库运维笔记
  • C#中箱子、扳手、闪电等含义
  • 转载: #pragma pack(push,1) #pragma pack(pop)
  • Google 是如何开发 Web 框架的
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • axios 和 cookie 的那些事
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Iterator 和 for...of 循环
  • jquery cookie
  • Nodejs和JavaWeb协助开发
  • vue:响应原理
  • webpack4 一点通
  • 记录一下第一次使用npm
  • 跨域
  • 面试总结JavaScript篇
  • 前端临床手札——文件上传
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 使用agvtool更改app version/build
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 物联网链路协议
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 再次简单明了总结flex布局,一看就懂...
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • C# - 为值类型重定义相等性
  • 移动端高清、多屏适配方案
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #、%和$符号在OGNL表达式中经常出现
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (2)STL算法之元素计数
  • (solr系列:一)使用tomcat部署solr服务
  • (vue)页面文件上传获取:action地址
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (三) diretfbrc详解
  • (十一)图像的罗伯特梯度锐化
  • (转)ABI是什么
  • .describe() python_Python-Win32com-Excel
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .netcore如何运行环境安装到Linux服务器