CadQuery:一个基于OCCT的Python参数化CAD脚本框架

2020-09-19 03:15:10

CadQuery是一个直观、易于使用的Python模块,用于构建参数化3D CAD模型。使用CadQuery,您可以编写简短、简单的脚本来生成高质量的CAD模型。使用一个可以自定义的脚本可以很容易地制作许多不同的对象。

CadQuery经常被比作OpenSCAD。与OpenSCAD一样,CadQuery也是一个开源的、基于脚本的参数化模型生成器。然而,CadQuery在许多方面脱颖而出,并具有几个关键优势:

脚本使用标准编程语言Python,因此可以从相关的基础设施中获益。这包括许多标准库和IDE。

CadQuery的CAD内核Open Casade Technology(OCCT)比CGAL强大得多。除了CGAL支持的标准CSG操作之外,OCCT本身支持的功能还包括NURBS、样条曲线、曲面缝合、STL修复、STEP导入/导出和其他复杂操作。

可以导入/导出STEP,也可以从CAD软件包中创建的STEP模型开始,然后添加参数化特征。这在使用STL的OpenSCAD中是可能的,但STL是一种有损格式。

CadQuery脚本创建大多数对象所需的代码较少,因为可以根据其他要素、工作平面、顶点等的位置定位要素。

使用尽可能接近于向人类描述对象的方式的脚本构建3D模型。

除了STL和AMF之外,还输出高质量(无损)的CAD格式,如STEP和DXF。

提供只能使用Web浏览器编辑和执行的非专有纯文本模型格式。

最初的CadQuery版本是基于FreeCAD API构建的。这很棒,因为它允许快速开发和轻松的跨平台功能。然而,对于一些高级操作和选择器,我们最终开始达到API的极限。这个2.0版本的CadQuery直接基于OCCT内核的Python包装器。这为我们提供了更多的控制和灵活性,但代价是一些简单性和不得不自己处理部署的跨平台方面。我们认为,为了让CadQuery在未来继续增长和扩张,这是一个值得的权衡。

目前可以通过3种不同的方式将CadQuery用于您自己的项目:

对于感兴趣的人,OCP存储库包含CQ使用的当前OCCT包装器。

CQ-Editor是一个IDE,允许用户在GUI环境中编辑CadQuery模型脚本。它包括以下功能:

CadQuery使用@bernhard-42创建的jupyter-cadquery扩展支持开箱即用的Jupyter笔记本:

CadQuery的构建目的是在没有任何GUI的情况下用作Python库。这使得它非常适用于集成到服务器或创建科学和工程脚本等用例。使用Anaconda/Miniconda安装CadQuery,然后将import cadquery添加到Python脚本的顶部。

我们还有一个Google Group,可以方便地从其他CadQuery用户那里获得帮助。我们希望您感到受欢迎,并鼓励您加入我们的团队并自我介绍。我们也很想听听您对CadQuery做了什么。

您不需要是一名软件开发人员就可以对此项目产生重大影响。捐款可以采取多种形式,包括但不限于以下内容:

要求对该项目的所有捐款都应以尊重和体贴的方式作出。请参考Python社区行为准则作为参考。

尽量简明扼要(如果你想改变几件事,就从一件事开始!)。

派生CadQuery存储库,克隆派生并创建一个新分支以开始处理您的更改。

如果需要,安装cq-Editor的主分支(注意;发布版本可能与cadquery的主分支不兼容):conda install-c cadquery-c conda-forge cq-Editor=master安装cq-Editor添加另一个cadquery实例,该实例覆盖刚刚添加的克隆。通过使用pip重新安装cadquery来修复此问题:

在进行任何更改之前,请验证当前测试是否通过。从cadquery克隆的根目录运行pytest,应该不会出现任何故障,并且输出将如下所示:

从测试开始!更改后,CadQuery应该如何操作?确保将一些测试添加到测试套件中,以确保正确的行为。

向测试添加一个漂亮的文档字符串,指示测试正在做什么;如果有太多需要解释的内容,请考虑将测试一分为二!

向您实现的函数/方法/类添加一个漂亮的文档字符串,描述它们做什么、预期的参数是什么以及它返回什么(如果有的话)。

密切关注您将从CI管道收到的自动反馈;如果测试失败或某些代码格式不正确,您将在没有人工干预的情况下收到通知。

要有耐心和尊重,记住那些检查您的代码的人也很努力(有时检查更改比实现更改更难!)。

如果你发现自己想要一个不存在的功能,你可能并不孤单。肯定会有其他有类似需求的人。打开一个描述您想要查看的功能、为什么需要它以及它应该如何工作的问题。