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/

Figure 2.1 Download LibPack of FreeCAD

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

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会有如下图所示的错误:

Figure 3.1 Could not find libpack error

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

Figure 3.2 CMake success

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

Figure 3.3 FreeCAD projects in Visual Studio

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

4.Play

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

Figure 4.1 Shape in Wireframe mode

Figure 4.2 Shape Mesh

Figure 4.3 Assembly in FreeCAD

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

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

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

Figure 4.4 DCM of SIEMENS

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

Figure 4.5 Search result of DCM3d

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

Figure 4.6 Robot in FreeCAD

Compile FreeCAD on Windows的更多相关文章

  1. windows 10上源码编译dlib教程 | compile dlib on windows 10

    本文首发于个人博客https://kezunlin.me/post/654a6d04/,欢迎阅读! compile dlib on windows 10 Series Part 1: compile ...

  2. windows 10 上源码编译opengv | compile opengv on windows 10 from source

    本文首发于个人博客https://kezunlin.me/post/51cd9fa0/,欢迎阅读! compile opengv on windows 10 from source Series co ...

  3. Win10 + YOLOv3 环境配置,编译,实现目标检测----How to compile YOLOv3 on Windows

    其他比较好的参考链接: 环境配置: 环境配置的最终图片列表:https://blog.csdn.net/shanglianlm/article/details/80322718 视频讲解YOLOv1: ...

  4. compile FFMPEG under windows

    这个文章应该算是中文版最好的了.但是还有一些需要修正. 特别是winsock2的处理 win10 msys2 vs2015 ffmpeg3.2.2 编译 这个英文版的才是最好的 Building ff ...

  5. windows系统下安装和使用ROS的解决方案 (1 win_ros 2 rosserial_windows)

    具体请参考官网: 1  http://wiki.ros.org/win_ros 2  https://github.com/ros-windows/win_ros 3  http://wiki.ros ...

  6. WIndows下使用Grafana+InfluxDB打造监控系统

     前言 对于一个运维DBA来说,了解数据库的TPS.QPS很有必要(QPS:每秒查询数,即对数据库每秒的DML的操作数:TPS:每秒事物处理,即对数据库每秒DDL操作数),通过了解他们,可以掌握一个实 ...

  7. 使用code::blocks编译windows的dll链接库

    因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32 ...

  8. ubuntu 16.04上源码编译dlib教程 | compile dlib on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/c6ead512/,欢迎阅读! compile dlib on ubuntu 16.04 Series Part 1: compil ...

  9. ubuntu 16.04上源码编译opengv | compile opengv on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/1e5d14ee/,欢迎阅读! compile opengv on ubuntu 16.04 Series compile open ...

随机推荐

  1. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  2. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  3. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  4. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  5. Oracle Database 12c Data Redaction介绍

    什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...

  6. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  7. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  8. javascript之闭包理解以及应用场景

    半个月没写博文了,最近一直在弄小程序,感觉也没啥好写的. 之前读了js权威指南,也写了篇博文,但是实话实说当初看闭包确实还是一头雾水.现在时隔一个多月(当然这一段时间还是一直有在看闭包的相关知识)理解 ...

  9. 分享两种实现Winform程序的多语言支持的解决方案

    因公司业务需要,需要将原有的ERP系统加上支持繁体语言,但不能改变原有的编码方式,即:普通程序员感受不到编码有什么不同.经过我与几个同事的多番沟通,确定了以下两种方案: 方案一:在窗体基类中每次加载并 ...

  10. 【iOS】Xcode8+Swift3 纯代码模式实现 UICollectionView

    开发环境 macOS Sierra 10.12.Xcode 8.0,如下图所示: 总体思路 1.建立空白的storyboard用于呈现列表 2.实现自定义单个单元格(继承自:UICollectionV ...