基于Python的FreeCAD二次开发

参考文献:python手册

启动freecad。

在开始python编程前,需要设置界面:

Edit → Preferences → General → Output window 勾选:

Redirect internal Python output to report view.

Redirect internal Python errors to report view.

在这里插入图片描述
然后菜单: View → Panels 勾选 Report view.
在这里插入图片描述
写python代码
有2种方式写python 代码:

View → Panels → Python console

Macro → Macros…

下面是第一种方式
在这里插入图片描述
开始试一试代码

doc = FreeCAD.newDocument()

回车,其效果就是新建文档,菜单:file->New, 或者工具条 的新建,或者按键 Ctrl + N

在这里插入图片描述

box = doc.addObject("Part::Box", "myBox")

什么都没发生。 为什么? 因为FreeCAD是为大局而生的。 有一天,它将处理数百个复杂的对象,它们彼此依赖。 在某处进行小的更改可能会产生很大的影响,可能需要很长时间。 因此,几乎没有命令会自动更新场景。 必须手动执行。话虽这么说,在这里还是可以看到:
在这里插入图片描述

doc.recompute()

这样,在图形界面可以看到了。

在这里插入图片描述
显示高度

box.Height

在这里插入图片描述

box.Height=5
在这里插入图片描述
更改高度为5

可以看到图形变了。

矢量和位置
体验下矢量和他的运算

myvec = FreeCAD.Vector(2, 0, 0)
myvec.x
myvec.y
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)

在这里插入图片描述
然后看看位置:

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

在这里插入图片描述
在这里插入图片描述
App and Gui
FreeCAD的设计使其可以在没有用户界面的情况下用作命令行应用程序。 因此,FreeCAD中的几乎每个对象都由两部分组成:一个对象(其“几何”组件)和一个ViewObject(其“可视”组件)。 在命令行模式下工作时,存在几何图形部分,但可视部分被禁用。

为了说明这个概念,让我们看一下我们的多维数据集对象。 多维数据集的几何属性(例如其尺寸,位置等)存储在对象中。 而其视觉属性(例如其颜色,线条粗细等)存储在ViewObject中。 这对应于“属性”编辑器中的“数据 Data”和“视图View”选项卡。 对象的视图对象的访问方式如下:

vo = box.ViewObject

现在可以改变View 的属性:

vo.Transparency = 80
vo.hide()
vo.show()

vo.Transparency = 0
在这里插入图片描述
vo.Transparency = 80
在这里插入图片描述
模块 Module
FreeCAD的真正强大在于模块。 FreeCAD基本应用程序只是一个空容器。 没有它的模块,它只能执行创建新的空文档的工作。 每个模块不仅向界面添加了新的工作台,而且还增加了新的Python命令和新的对象类型。几种不同甚至完全不兼容的对象类型可以共存于同一文档中。 这里介绍FreeCAD中最重要的模块:零件,网格,草绘器和工程图。

“草绘器”和“草稿”都使用“零件”模块来创建和处理其几何图形。 而网格是完全独立的,并处理自己的对象。 下文提供了更多信息。

可以像这样检查当前文档的所有可用基础对象类型:

doc.supportedTypes()

在这里插入图片描述
模块并不自动导入python 控制台,需要的时候,你要自己导入,这样避免启动太慢。比如导入Part

import Part

在这里插入图片描述
导入后,可以

Part. 就有很多功能提示。这里P是大写。

网格 Mesh
网格是一种非常简单的3D对象,例如Sketchup,Blender和3D Studio Max都使用网格。它们由3个元素组成:点(也称为顶点),线(也称为边缘)和面。在许多应用程序中(包括FreeCAD),面只能有3个顶点。当然,可以由多个共面三角形组成的更大的面。

网格很简单,正因为简单,在一个文档中很容易拥有数百万个网格。在FreeCAD中,用得不多,大多数情况下都是从其他应用程序以网格格式(.stl,.obj)导入对象。

网格对象和FreeCAD对象是不同的东西。可以将FreeCAD对象看作是Mesh对象的容器(对于Part对象也是如此)。为了将网格对象添加到FreeCAD中,必须首先创建一个FreeCAD对象和一个Mesh对象,然后将Mesh对象添加到FreeCAD对象中:

import Mesh
mymesh = Mesh.createSphere()
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

这段代码的解说是:导入Mesh,建立一个Mesh(mymesh) ,查看面和点, doc 中添加mesh 对象,赋值mymesh, 显示计算。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
零件 Part
零件模块是整个FreeCAD中最主要的模块。 它允许您创建和操作BRep对象。 BRep代表“边界表示”。与网格不同,BRep对象可以具有从平面到非常复杂的NURBS曲面的多种组件。

零件模块基于强大的OpenCasCade库,该库允许对这些对象执行各种复杂的操作,例如布尔操作,圆角,放样等。

“零件”模块的工作方式与“网格”模块相同:创建一个FreeCAD对象,一个“零件”对象,然后将“零件”对象添加到FreeCAD对象中:

import Part
myshape = Part.makeSphere(10)
myshape.Volume
myshape.Area
 
shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
doc.recompute()

在这里插入图片描述
其实后面代码也可简化为:

Part.show(myshape)

网格也一样。

草图 Draft
FreeCAD有更多的模块,例如Sketcher和Draft,它们也可以创建零件对象。 这些模块为创建的对象添加了附加参数,甚至实现了一种全新的方式来处理其中的零件几何图形。 上面的box例子是参数对象的一个示例。 定义box所需要做的只是指定参数高度,宽度和长度。 基于这些,对象将自动计算其零件形状。

Draft 模块添加了诸如线和圆之类的2D参数化对象类型(全部为零件对象),并且还提供了一些通用功能,这些功能适用于Draft 对象,而且适用于任何Part对象。 执行以下操作练练手:

import Draft
rec = Draft.makeRectangle(5, 2)
mvec = FreeCAD.Vector(4, 4, 0)
Draft.move(rec, mvec)
Draft.move(box, mvec)

在这里插入图片描述
界面 Interface
FreeCAD用户界面由功能强大的图形界面系统Qt组成,它负责绘制和处理3D视图周围的所有控件,菜单,工具栏和按钮。 Qt提供了一个PySide模块,该模块允许Python访问和修改Qt接口,例如FreeCAD。 下面用Qt界面产生一个简单的对话框:

from PySide import QtGui
QtGui.QMessageBox.information(None, "Apollo program", "hello, we have a problem")

在这里插入图片描述
注意,出现的对话框的工具栏中有FreeCAD图标,这意味着Qt知道Order是从FreeCAD应用程序内部发出的。 可以操纵FreeCAD界面的任何部分。

Qt是一个非常强大的界面系统,可执行非常复杂的事情。 它还具有一些易于使用的工具,例如Qt Designer,可以使用该工具以图形方式设计对话框,然后使用几行Python代码将其添加到FreeCAD界面中。

宏 Macros
现在,已经对基础知识有了很好的了解,我们将在哪里保留Python脚本,以及如何在FreeCAD中启动它们? 有一种简单的机制称为宏。 宏是可以添加到工具栏并通过单击鼠标启动的Python脚本。 FreeCAD为您提供了一个简单的文本编辑器(宏→宏…→创建),您可以在其中编写或粘贴脚本。 脚本完成后,使用工具→自定义…→宏为其定义按钮,该按钮可以添加到工具栏。

现在,可以进行更深入的FreeCAD脚本编写了。

学完了,开始看https://wiki.freecadweb.org/Power_users_hub 这个像是目录或链接分支说明。

接口个性化,就是改变toolbar 和快捷键:https://wiki.freecadweb.org/Interface_Customization

Tools->Customize

Macros (宏)

https://wiki.freecadweb.org/Macros

所有操作都可以用python 命令完成,一系列操作可以记录为python 文件,以后用一个宏再做同样的工作。

https://wiki.freecadweb.org/Macros_recipes

自动安装宏:

addon manager: Tools → Addon manager

手动安装:

menu:Macro → Macros

create 按钮,给个名字,复制python 代码,save 保存, 然后再打开 选择你的宏,Excute

新加宏到工具条,tool->ccustomize, 选择 Macro

https://wiki.freecadweb.org/Customize_Toolbars

安装workbenches

https://wiki.freecadweb.org/Installing_more_workbenches

Talk:Developer hub

https://wiki.freecadweb.org/Developer_hub

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值