04.快速开始

想要快速了解 CadQuery 的功能吗?本快速入门将使用一个简单的示例演示 CadQuery 的基础知识

先决条件安装 CadQuery 和 CQ-editor

如果尚未安装,请按照 安装 CadQuery 的步骤安装 CadQuery 和 CQ-editor。

安装完成后,运行CQ-editor:

找到左侧的 CadQuery 代码编辑器。您将看到我们从一个简单块的脚本开始。

Note

桌面没有创建启动图标的话,可以在安装目录中查找启动文件 安装目录\cq-editor\Scripts\CQ-editor.exe,双击运行即可。

我们将实现什么

在本快速入门中,我们将创建一个完全参数化的轴承垫块。我们完成的对象将如下所示:

我们希望我们的块有以下功能:

  1. 它的大小应能容纳一个 608轴承,位于轴承座的中心。
  2. 它的四角应有用于 M2 套筒头螺丝的埋头孔。
  3. 它的长度和宽度应该由用户配置为任何合理的大小。

人类会将其描述为:

"一个 80 毫米 x 60 毫米 x 10 毫米的矩形块,四角有用于安装 M2 套筒头螺丝的埋头孔,在中间有一个直径为 22 毫米的圆形凹槽,用于安装轴承。"

人类的描述很优雅吧?希望我们完成的脚本不会比这个以人为本的描述复杂太多。

让我们看看我们是怎么做的。

从一个简单的板材开始

cadquery 引用说明

CQ-editor 中默认使用 import cadquery as cq 引入 cadquery ,因此您可以直接使用 cq 调用对应的方法

scss 复制代码
# import cadquery as cq
result = cq.Workplane("XY").box(1, 2, 3).faces(">Z").circle(0.25).extrude(1,combine = True)
show_object(result)

复制

也可以使用 from cadquery import * 来引入,使用方法时,直接调用对应方法名即可

scss 复制代码
from cadquery import *
# from cadquery import Workplane, Sketch, Vector, Location
result = Workplane("XY").box(1, 2, 3).faces(">Z").circle(0.25).extrude(1,combine = True)
show_object(result)

复制

show_object(result) 用来渲染显示出实体

让我们从一个简单的模型开始,它只制作一个矩形块,但带有尺寸占位符。将其粘贴到代码编辑器中:

ini 复制代码
height = 60.0
width = 80.0
thickness = 10.0

# make the base
result = cq.Workplane("XY").box(height, width, thickness)

# Render the solid
show_object(result)

按工具栏中的绿色"渲染"按钮来运行脚本。您应该会看到我们的基础对象。

没什么特别的,这只是一个开始!

添加孔洞

我们的轴承垫块需要在中心有一个直径为 22 毫米的孔来固定轴承。

这样改装就可以了:

ini 复制代码
height = 60.0
width = 80.0
thickness = 10.0
diameter = 22.0

# make the base
result = (
    cq.Workplane("XY")
    .box(height, width, thickness)
    .faces(">Z")
    .workplane()
    .hole(diameter)
)

# Render the solid
show_object(result)

单击"渲染"按钮重建模型。你的模型块应该是这样的:

代码非常简洁,让我们一步步来。

第 4 行 添加了一个新参数--直径,表示孔的直径
第 10-12 行 我们添加了这个洞。 cadquery.Workplane.faces() 选择 Z 方向最顶端的面,然后 cadquery.Workplane.workplane()在这个面上开始一个新的工作平面。该工作平面的中心位于形状的质心,在本例中也就是平板的中心。最后,cadquery.Workplane.hole()在零件上钻一个直径 22 毫米的孔。

Note

现在不用担心 CadQuery 的语法,你可以在稍后的 API 参考中学习到所有相关知识。

更多孔洞

好吧,这个孔还不算太难,但四角的埋头孔呢?

M2 内六角螺钉的尺寸如下:

  • 头部直径:3.8 毫米
  • 头部高度 :2.0 毫米
  • 容差孔直径:2.4 毫米
  • 埋头孔直径:4.4 毫米

这些孔的中心应距离块边缘 6 毫米。而且,我们希望即使用户调整了块的大小,块也能正常工作。

别告诉我我们要重复上面的步骤 8 次才能打出埋头孔?好消息是,我们只需几行代码就能完成工作。下面是我们需要的代码:

ini 复制代码
height = 60.0
width = 80.0
thickness = 10.0
diameter = 22.0
padding = 12.0

# make the base
result = (
	cq.Workplane("XY")
	.box(height, width, thickness)
	.faces(">Z")
	.workplane()
	.hole(diameter)
	.faces(">Z")
	.workplane()
	.rect(height - padding, width - padding, forConstruction=True)
	.vertices()
	.cboreHole(2.4, 4.4, 2.1)
)
# Render the solid
show_object(result)

单击"渲染"按钮重新执行模型后,您应该可以看到如下内容:

这里发生了很多事情,让我们来细细分析一下。

第 5 行 创建了一个新的填充参数,该参数决定了孔与板边缘的距离。

第 11-12 行选择图块最顶端的面,并在该面的顶端创建一个工作平面,我们将用它来定义四角上孔的中心。

关于这一行,有几点需要注意:

  1. cadquery.Workplane.rect()函数绘制一个矩形。 forConstruction=True 告诉 CadQuery 该矩形不会形成实体的一部分,但我们只是用它来帮助定义他几何图形。
  2. 除非您另外指定,否则绘制的矩形将以当前工作平面中心为圆心,在本例中为块顶面的中心,在本例中就是以块顶面的中心为圆心。因此,该矩形将以工作面为中心。

第 16 行绘制一个比块的总长和宽小 12mm 的矩形,我们将用它来定位角孔的位置。我们将使用该矩形的顶点(角)来定位孔。矩形的中心位于工作平面的中心,在本例中与轴承孔的中心重合。

第 17 行 选择矩形的顶点,我们将使用这些顶点作为孔的中心。该cadquery.Workplane.vertices()函数选择矩形的角。

第 18 行 使用 cboreHole 函数来绘制孔。该cadquery.Workplane.cboreHole()函数是一个方便的 CadQuery 函数,可以绘制埋头孔。与大多数 CadQuery 函数一样,该函数对堆栈中的值进行操作。在本例中,由于我们在调用函数之前选择了四个顶点,因此该函数对四个点中的每一个点进行操作,从而在矩形的每个角上都开了一个孔。

切片

快完成了。让我们把块的角弄圆一点。这很简单,我们只需要选择边缘然后对它们进行圆角处理:

我们可以使用参数定义中的预设字典来做到这一点:

less 复制代码
height = 60.0
width = 80.0
thickness = 10.0
diameter = 22.0
padding = 12.0

# make the base
result = (
	cq.Workplane("XY")
	.box(height, width, thickness)
	.faces(">Z")
	.workplane()
	.hole(diameter)
	.faces(">Z")
	.workplane()
	.rect(height - padding, width - padding, forConstruction=True)
	.vertices()
	.cboreHole(2.4, 4.4, 2.1)
	.edges("|Z")
	.fillet(2.0)
)

# Render the solid
show_object(result)

第 20 行 使用该方法对边进行圆角处理cadquery.Workplane.fillet()

要抓取正确的边缘, cadquery.Workplane.edges() 选择平行于 Z 轴 ("|Z") 的所有边缘,

成品如下所示:

导出

如果要制作实物,则需要将结果导出为 STL 或 DXF。此外,还可以导出为 STEP 格式,以便在其他 CAD 工具中进行后处理。

这可以使用 cadquery.exporters.export() 函数轻松完成:

less 复制代码
height = 60.0
width = 80.0
thickness = 10.0
diameter = 22.0
padding = 12.0

# make the base
result = (
	cq.Workplane("XY")
	.box(height, width, thickness)
	.faces(">Z")
	.workplane()
	.hole(diameter)
	.faces(">Z")
	.workplane()
	.rect(height - padding, width - padding, forConstruction=True)
	.vertices()
	.cboreHole(2.4, 4.4, 2.1)
	.edges("|Z")
	.fillet(2.0)
)

# Render the solid
show_object(result)

# Export
cq.exporters.export(result, "result.stl")
cq.exporters.export(result.section(), "result.dxf")
cq.exporters.export(result, "result.step")

完毕!

您刚刚创建了一个参数化模型,只需 <30 行代码就能生成几乎所有轴承垫块。

想了解更多吗?

  • 示例包含大量演示 cadquery 功能的 示例
  • API 参考 很好地概述了按功能分类的语言功能
  • CadQuery 类摘要 是所有可用函数的核心列表。

来源:CadQuery 中文文档

相关推荐
郭庆汝5 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变8 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络8 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find10 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取11 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector12 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习12 小时前
Python入门Day2
开发语言·python
Vertira12 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉12 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗13 小时前
黑马python(二十四)
开发语言·python