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 中文文档

相关推荐
小军军军军军军4 分钟前
MLU运行Stable Diffusion WebUI Forge【flux】
人工智能·python·语言模型·stable diffusion
数据小小爬虫11 分钟前
Python爬虫获取AliExpress商品详情
开发语言·爬虫·python
小爬虫程序猿12 分钟前
利用Python爬虫速卖通按关键字搜索AliExpress商品
开发语言·爬虫·python
Eiceblue32 分钟前
使用Python获取PDF文本和图片的精确位置
开发语言·python·pdf
我叫czc34 分钟前
【Python高级353】python实现多线程版本的TCP服务器
服务器·python·tcp/ip
爱数学的程序猿38 分钟前
Python入门:6.深入解析Python中的序列
android·服务器·python
comli_cn1 小时前
使用清华源安装python包
开发语言·python
赵谨言1 小时前
基于python 微信小程序的医院就诊小程序
经验分享·python·毕业设计
1.01^10001 小时前
[1111].集成开发工具Pycharm安装与使用
python·pycharm
HEX9CF2 小时前
【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)
python·django·csrf