2D草图是3D CAD的基础。本文介绍如何在CadQuery中使用不同的方法构建二维草图(Sketch)。

1、基于面的 API

构建2D草图的主要方法是基于构建面并使用布尔运算将它们组合起来。

import cadquery as cqresult = (cq.Sketch().trapezoid(4,3,90).vertices().circle(.5, mode='s').reset().vertices().fillet(.25).reset().rarray(.6,1,5,1).slot(1.5,0.4, mode='s', angle=90)
)

请注意上面代码中,选择器已实现,但选择集必须明确重置。 Sketch 类没有实现历史,所有修改都是就地发生。

2、模式

来自面 API 的每个操作都接受一个模式参数来定义如何将创建的对象与现有对象组合。 模式可以是融合 (mode=‘a’)、剪切 (mode=‘s’)、相交 (mode=‘i’) 或仅存储用于构建 (mode=‘c’)。 在最后一种情况下,必须指定一个标签以便以后能够引用该对象。 默认情况下,面融合在一起。 请注意上例中减法和加法模式的使用。 另外两个如下所示。

result = (cq.Sketch().rect(1, 2, mode='c', tag='base').vertices(tag='base').circle(.7).reset().edges('|Y', tag='base').ellipse(1.2, 1, mode='i').reset().rect(2, 2, mode='i').clean()
)

3、基于边的 API

如果需要,可以通过放置单独的边来构建草图。

import cadquery as cqresult = (cq.Sketch().segment((0.,0),(0.,2.)).segment((2.,0)).close().arc((.6,.6),0.4,0.,360.).assemble(tag='face').edges('%LINE',tag='face').vertices().chamfer(0.2)
)

构造完成后,必须使用 assemble() 将其转换为基于面的表示。 之后,可以应用基于面的操作。

4、凸包

对于某些特殊用例,凸包可以由直线段和圆构成。

result = (cq.Sketch().arc((0,0),1.,0.,360.).arc((1,1.5),0.5,0.,360.).segment((0.,2),(-1,3.)).hull())

5、基于约束的草图

最后,如果需要,可以使用几何约束来构建草图。 到目前为止,在这种用例中只能使用线段和弧线。

import cadquery as cqresult = (cq.Sketch().segment((0,0), (0,3.),"s1").arc((0.,3.), (1.5,1.5), (0.,0.),"a1").constrain("s1","Fixed",None).constrain("s1", "a1","Coincident",None).constrain("a1", "s1","Coincident",None).constrain("s1",'a1', "Angle", 45).solve().assemble()
)

以下约束已实现。 参数在 constrain() 中作为一个元组传入。 在此表中, 0…1 指的是介于 0 和 1 之间的浮点数,其中 0 将创建相对于元素开头的约束,1 表示结尾。

  • 固定点约束:指定的点被固定
  • 重合约束:指定的两个点重合
  • 夹角约束:两个实体的夹角固定
  • 长度约束:指定的实体具有固定的长度
  • 距离约束:两点之间的距离固定
  • 半径约束:指定的实体具有固定的半径
  • 方向约束:指定的实体平行于 (x,y)
  • 弧角度:指定的实体具有固定的圆周角度

6、工作平面集成

创建后,二维草图可用于在工作平面上构造各种特征。 支持的操作包括 extrude()、 twistExtrude()、 revolve()、 sweep()、 cutBlind()、 cutThruAll() 和 loft()。

二维草图可以创建为单独的实体并重复使用,但也可以在一个调用链中临时创建,如下所示。

请注意,2D草图放置在堆栈顶部的所有位置。就地构建草图可以按如下方式完成。

import cadquery as cqresult = (cq.Workplane().box(5,5,1).faces('>Z').sketch().regularPolygon(2,3,tag='outer').regularPolygon(1.5,3,mode='s').vertices(tag='outer').fillet(.2).finalize().extrude(.5)
)

Sketch API 在 sketch() 调用和原始工作平面之后可用。

在构建草图之前选择多个元素时,将创建多个草图。

import cadquery as cqresult = (cq.Workplane().box(5,5,1).faces('>Z').workplane().rarray(2,2,2,2).rect(1.5,1.5).extrude(.5).faces('>Z').sketch().circle(0.4).wires().distribute(6).circle(0.1,mode='a').clean().finalize().cutBlind(-0.5,taper=10)
)

有时需要重复使用现有草图并将它们按原样放置在工作平面上。

import cadquery as cqs = (cq.Sketch().trapezoid(3,1,110).vertices().fillet(0.2))result = (cq.Workplane().box(5,5,5).faces('>X').workplane().transformed((0,0,-90)).placeSketch(s).cutThruAll())

使用 loft() 时需要重用现有草图。

from cadquery import Workplane, Sketch, Vector, Locations1 = (Sketch().trapezoid(3,1,110).vertices().fillet(0.2))s2 = (Sketch().rect(2,1).vertices().fillet(0.2))result = (Workplane().placeSketch(s1, s2.moved(Location(Vector(0, 0, 3)))).loft())

放样时仅考虑外线,而忽略内线。


原文链接:CadQuery 2D草图教程 — BimAnt

CadQuery二维Sketch教程相关推荐

  1. 小米4硬改教程_小米手环3美化/修改资源包教程(含加入二维码教程)

    小米手环3美化/修改资源包教程(含加入二维码教程) 注意:本教程侧重于讲刷资源包res,不过多的进行刷固件的讲解(并且不建议刷固件,容易砖,一般修改res已经可以达到你预期的效果了). 1.2更新 温 ...

  2. 一维二维_Excel教程:二维转一维,方法你绝对没用过

    提示:小程序可以高清看本公众号视频教程 苹果iOS用户请微信扫码学习 一.数据透视表的方法 操作步骤: 按键调出[数据透视表和数据透视图向导] 选中[多重合并计算数据区域],点[下一步] [创建单页字 ...

  3. python生成二维码教程_使用Python生成个性二维码

    任务目的 这一步会介绍通过Python中的MyQR包实现生成二维码的操作,包括生成普通二维码.带有静态图和动态图的二维码,同时也会对MyQR生成二维码的常用参数进行介绍说明. 任务步骤注:CVM适合用 ...

  4. html5二维动画教程,H5+JS二维动画制作的一个实例

    今天介绍一个网络上并不常用的插件two.js,刚开始学习的过程中,发现网上并没有合适的教程,在此发表基本操作 two.js是一款网页二维绘图软件,可以在指定区域内产生自设的各种动画效果 下载网址如下: ...

  5. 使用JavaScript生成二维码教程-附qrcodejs中文文档

    使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimj... DIV <div id="qrcode" ...

  6. TP5生成二维码教程

    1.引入 endroid/qr-code 扩展包 composer require endroid/qr-code 2.1 单页 <?php require 'vendor/autoload.p ...

  7. 二维码教程之如何制作表白二维码

    1.首先我们打开Excel,新建一个工作表 2.然后任选一个单元格,录入我们想要说的话. 3.点击图片工具 ​ 4.选择[单个生成] 5.点击[前景色]选项,将颜色设置为粉色 ​ 6.点击[预览]查看 ...

  8. python二维码生成识别代码_Python3+qrcode+zxing生成和识别二维码教程

    一.安装依赖库 pip install qrcode pillow image zxing pillow是python3中PIL的代替库,image是生成图版需要用到的库 安装image时报错&quo ...

  9. 个性二维码教程——听课笔记

    今天听了@新媒体大学 公众号的一个制作个性二维码的课程,收获挺多,也大概了解了各种常见的二维码是怎么做出来的.整理笔记如下. 认识二维码 首先要明确二维码中的重要元素:定位点(下图红色).校正点(下图 ...

最新文章

  1. 神策数据CEO桑文锋:精准采集数据,走向智能化分析
  2. 【数据结构】图解霍夫曼编码,看了就能懂
  3. c++分治法求最大最小值实现_程序员:算法导论,分治法、归并排序,伪代码和Java实现...
  4. 在.NET中执行Async/Await的两种错误方法
  5. js 根据时间生成唯一订单号
  6. c#.net中创建带图标的ListBox
  7. ES9新特性_ES9正则扩展-dotAll模式---JavaScript_ECMAScript_ES6-ES11新特性工作笔记056
  8. TabIndex 属性 Tabindex=-1 与Tabindex=0、任意数字 (收录)
  9. VRAR应该是工具,而不是“玩具”
  10. python有什么用-我们为什么要选择学习python?学习python有什么用?
  11. 复变函数(第五版)课后答案 余家荣 版 课后习题答案 高等教育出版社 第一章 课后题答案与解析
  12. 网友发给我一个钓鱼网站,我用 Python 渗透了该网站所有信息
  13. 大陆车牌识别算法的背景与技术
  14. 工作流引擎——构建企业流程管控体系
  15. APP启动时间检测——u-apm
  16. 翻译翻译什么叫HTML5(四)jQuery——给我的网页换个小皮肤
  17. Quartus II使用说明(Verilog HDL二选一数据选择器 )
  18. 高性能架构学习路线图-分布式架构演进,mybatis一对一一对多面试题
  19. linux 锁定用户目录,Linux vfpd锁定用户目录
  20. [内附完整源码和文档] 基于.Net实现的线上医疗咨询系统

热门文章

  1. 互联网产品的交互设计方法
  2. 一年级小嘎蹦豆儿的故事
  3. TikTok直播带货有哪些实用的出单经验?
  4. FLUX WMS 自定义面单打印
  5. JVM GC之对象生死
  6. win10屏幕亮度无法调整的原因
  7. ipa文件itools无法开启服务器,iOS手机安装ipa包的几种方式
  8. java学习之nio
  9. 红米note7支持html,红米Note7配置怎么样 Redmi Note7配置参数及图赏
  10. 股票量化投资出现的主要原因分析