目录

  • 先决条件安装 CadQuery 和 CQ-editor
  • 我们将实现什么
  • 从一个简单的板材开始
  • 添加孔洞
  • 更多孔洞
  • 切片
  • 导出
  • 完毕!
  • 想了解更多吗?
  •  

    想要快速了解 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 调用对应的方法

    # 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 * 来引入,使用方法时,直接调用对应方法名即可

    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) 用来渲染显示出实体

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

    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 毫米的孔来固定轴承。

    这样改装就可以了:

    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 次才能打出埋头孔?好消息是,我们只需几行代码就能完成工作。下面是我们需要的代码:

    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 函数一样,该函数对堆栈中的值进行操作。在本例中,由于我们在调用函数之前选择了四个顶点,因此该函数对四个点中的每一个点进行操作,从而在矩形的每个角上都开了一个孔。

    切片

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

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

    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() 函数轻松完成:

    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 类摘要 是所有可用函数的核心列表。

    作者:码峰  创建时间:2023-11-17 11:33
    最后编辑:码峰  更新时间:2024-01-12 17:58