5、 Python在FreeCAD中的封装

Python在FreeCAD中的封装

Python解释器使得脚本编写、宏录制等功能变得神奇。然而,将C++代码封装到Python中是一个复杂的故事。

将C++封装成Python模块的概述
Pybind11示例封装代码

Pybind11是一个基于C++11特性的解决方案,API类似于但更简单于boost::python。它仅包含头文件,生成的二进制胶水代码更小,构建速度更快。

比较不同方法

作者设置了一个开源仓库GitHub - qingfengxia/python_wrap: Demonstration, comparison and interopereation of different c++11 class python wrapping methods, like swig, pybind11, binder, cython, cppyy, etc, with CMake integration setup.,用于演示、比较和互操作不同的C++11类Python封装方法,如SWIG、pybind11、binder、cython、cppyy等,并带有CMake集成设置。

在FreeCAD中混合使用C++和Python

FreeCAD通过FreeCADInit.py将模块路径添加到Python的sys.path中,并在每个模块中运行"Init.Py"。PythonObject有它自己的继承树,与FreeCAD中的cpp对象树几乎并行。

Python模块的限制(除性能外)

对于小项目,建议使用pybind11以可管理的方式编写Pythonic接口。对于包含数十个头文件的项目,推荐使用binder自动生成样板封装代码。

Python对象序列化

在FreeCAD中,纯Python特性对象通过Python的JSON模块保存在FcStd文件中。出于安全原因,避免使用cPickle。

Python导出类(双胞胎类)概念

DocumentObjectPyApp::DocumentObject的Python导出类(双胞胎类)。XML文件不是手动编码的,而是在构建时由cmake宏转换为.h和.cpp文件。

Python与Qt4/Qt5支持

建议使用兼容层如"Qt.py"或"qtpy"来支持不同的绑定:PyQt4、PyQt5、PySide和PySide2。

Python 3支持正在进行中

对于模块开发者来说,现在是时候使模块兼容Python 2和Python 3了。

编写Python 2-3兼容代码的速查表

提供了一个PDF版本的速查表,展示如何编写与Python 2和3都兼容的代码。

FreeCAD中的Python封装选择

FreeCAD的Python API主要是手动创建的。不推荐直接使用<Python.h> C API,因为它不兼容Python 2.7到Python 3.3+的迁移。

工作流:编写Python双胞胎类

在FreeCAD中,可以通过XML文件和CMake宏自动生成Python封装代码。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeCAD,可以使用Python编程语言来设计模型。通过Python脚本,您可以在FreeCAD执行各种操作,如创建几何体、编辑对象属性、生成模型等。 首先,您需要安装FreeCAD软件,并确保正确配置了Python环境。安装完成后,您可以在FreeCAD界面使用Python控制台来执行Python脚本。 在FreeCAD,不同的模块提供了不同的功能和对象类型。其一些重要的模块包括: - 零件模块:用于创建和编辑零件对象,如立方体、球体、圆柱体等。 - 网格模块:用于处理和编辑网格对象,如导入和导出3D模型文件、进行网格操作等。 - 草绘器模块:用于创建和编辑二维草绘对象,在平面内生成几何形状。 - 工程图模块:用于创建和编辑工程图,包括尺寸标注、视图布局等。 通过使用这些模块提供的Python命令,您可以在FreeCAD以编程的方式创建和编辑模型。您可以编写自定义的Python脚本,执行各种操作,自动化模型设计过程,提高工作效率。 如果您想扩展FreeCAD的功能,可以安装更多的工作台。通过安装额外的工作台,您可以获得更多的功能和命令,以满足特定的设计需求。 总之,通过使用Python编程语言,结合FreeCAD的各种模块和工作台,您可以以编程的方式设计模型,并实现复杂的操作和自动化任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值