FreeCAD是功能上与solidworks等同的开源免费软件。功能非常强大。从3D建模,BIM,组装,到力学分析,热分析,等一应俱全。更重要的,他的底层是和python完全封装的。换句话说,我们可以使用python做任何事情。今天我们就介绍一下,FreeCAD二次开发的基础内容。

文章内容看完可能需要一点时间,建议大家边编程边看文章。

1、工作台的python终端


(1) 全局变量

FreeCAD在console里的名字是App。


在python脚本中,是FreeCAD模块。

getHomePath()返回的是软件安装目录

getResourceDir() 返回的是软件的资源目录

(2) Mod 目录


该软件根目录下的Mod目录,是用来存放workbench的python脚本文件的。

这些文件对应于界面上的workbench的工作台。


我们通过对工作台的python的开发,就可以定制自己的工作台。

关于Freecad的API 可以通过help文档来查看

2、零件工作台(Part workbench)

打开Mod目录中的Part目录


文件中,只有Init.py 和InitGui.py 是必须的。

Init.py 文件是初始化文件,可以为空。

InitGui.py 文件是界面的初始化文件。

(1)Init.py文件

在Init.py文件中,除了说明文件,就是一些导入的类型文件。


(2)InitGui.py 文件

在InitGui.py 文件中,只有两步:


创建工作台类,并将该类载入工作台。

下面我们详细分析一下PartWorkbench类。


该类,有三个函数,初始化的__init__()函数,Initialize()函数,GetClassName() 函数。


在__init__()函数中,主要定义一些基本的实例变量。例如图标的文件,菜单的名称,和工具条显示的信息。


在Initialize() 函数中,是我们在界面中点击part之后的响应。

首先加载PartGui

加载自定义模块

并进行一系列的操作。


GetClassName()函数,是返回类的信息。

3、 工作台开发框架

(1)我的自定义工作台

在工作台的开发中,我们始终围绕Init.py和InitGui.py 两个文件来展开,所有的文件都以这两个文件为触发点,向FreeCad响应。

首先我们新建一个目录,名称叫MyWorkBench, 并在目录中新建Init.py和InitGui.py文件。

(2)、Init.py

该文件为空

(3)、InitGui.py


可以在python终端查看使用方法


直接打开FreeCAD,可以看到界面


可以看到这个命名为MyWork的界面出现了。由于,并未定义任何界面按钮,所以这是一个空界面。

需要说明的是,类的名字,不能与其他工作台类名称相同。

同时,可以看到,在python终端已经显示,当前工作台为MyWorkbench1.

4、 按钮

(1)按钮文件


按钮文件是一个类,包含三个函数,

l Activated 处理点击响应

l IsActive 处理是否可用

l GetResource 获取Gui标识

(2)响应中加入界面HelloWorld

我们可以在Activated函数内增加界面


重新启动freecad,则会弹出窗口。