cadquery常用命令
.Workplane("front") 确定绘图平面
.circle(2.0) 画圆
.pushPoints([(1.5, 0), (0, 1.5), (-1.5, 0), (0, -1.5)]) 创建点合集
.extrude(0.125) 拉伸
.cutThruAll() 完全贯穿切除
.polygon(5, 1.0) 绘制多边形,第一个数是边数,第二个数是边长. 起点在x轴上. 存在疑问: 多边形的相对位置方向如何改变.
.polyline() 可以将所有的点连成图形
.mirrorY() 关于Y轴对称
.spline(sPnts, includeCurrent=True) 根据sPnts点列表中的点,绘制样条曲线. includeCurrent=True使用当前点作为起点.
.hLine(1.0) 绘制水平线 括号内为距离
.vLine(-0.25) 绘制垂直线 括号内为距离
.hLineTo(0.0) 绘制水平线 括号内为坐标
.vLineTo(0.0) 同上
.lineTo(1.5, 3) 绘制直线,括号内为坐标
.threePointArc((0.4393, 3.4393), (0, 4.5)) 绘制三点圆, 括号内为途径的另外两个点
.close() 闭合图形,连接开口图形中两个自由的点
.rotate((0, 0, 0), (1, 0, 0), 90) 旋转操作 括号内为旋转轴的起点\终点\旋转角度
.translate() 移动操作,括号内可以写坐标
.mirror(mirrorPlane="XY", basePointVector=(0, 0, -30)) 镜像操作,括号内的作用主要是获得镜像面, 与XY平面平行,基准点为括号内坐标
.union() 布尔操作,几何体加和.
.faces(">Z") 选择Y方向上最远的面
result.faces(">Z").vertices("<XY").workplane(centerOption="CenterOfMass")
如果在选中一个面后立即选择顶点,则将 centerOption 参数设置为 CenterOfMass 的 Workplane.workplane() 会将工作平面定位在面上,原点位于顶点而不是面的中心。
result.faces("<X").workplane(offset=0.1) 选择-x方向最远端的面,并进行偏置0.1 偏置方向为体外方向
.transformed() 结果是offset与rotate的加和.
.transformed(offset=cq.Vector(0, -1.5, 1.0),rotate=cq.Vector(60, 0, 0)) 对工作平面进行变换
.rect(1.5, 1.5, forConstruction=True) 绘制的图形为辅助图形,不会被拉伸
result = cq.Workplane("front").box(2, 2, 2).shell(-0.1)
result = cq.Workplane("front").box(2, 2, 2).shell(0.1)
shell括号内加不加负号对结果有很大影响.括号内的数字表示壳的厚度,正负号表示方向,当时正号时,在模型外表面加壳,并在边线上加圆角.
.loft(combine=True) 方向操作, 括号中的combine可以理解为是否要合并的操作,如果执行combine的两个体将会合并为一个体.
result = (cq.Workplane(origin = (20,0,0))
.circle(2)
.revolve(180, (-20,0,0),(-20,-1,0))
revolve命令中的三个参数含义分别为旋转角度\旋转轴的起始点\旋转轴的终点,切记此时的坐标不是绝对坐标,而是相对坐标.
.extrude("next") 拉伸到下一面
.edges("#Z") 选择所有与Z轴垂直的边
.edges("|Z") 选择所有与Z轴平行的边

|
Name |
xDir |
yDir |
zDir |
|---|---|---|---|
|
XY |
+x |
+y |
+z |
|
YZ |
+y |
+z |
+x |
|
ZX |
+z |
+x |
+y |
|
XZ |
+x |
+z |
-y |
|
YX |
+y |
+x |
-z |
|
ZY |
+z |
+y |
-x |
|
front |
+x |
+y |
+z |
|
back |
-x |
+y |
-z |
|
left |
+z |
+y |
-x |
|
right |
-z |
+y |
+x |
|
top |
+x |
-z |
+y |
|
bottom |
+x |
+z |
-y |
result2 = (cq.Workplane("ZY",origin=(5, 0, 0)).circle(1).extrude(10)) 选择ZY方向的面,基准设置为5,0,0 ,绘制一个圆柱
demo
1 result0 = (cq.Workplane("XY") 2 .moveTo(10, 0) 3 .lineTo(5, 0) 4 .threePointArc((3.9393, 0.4393), (3.5, 1.5)) 5 .threePointArc((3.0607, 2.5607), (2, 3)) 6 .lineTo(1.5, 3) 7 .threePointArc((0.4393, 3.4393), (0, 4.5)) 8 .lineTo(0, 13.5) 9 .threePointArc((0.4393, 14.5607), (1.5, 15)) 10 .lineTo(28, 15) 11 .lineTo(28, 13.5) 12 .lineTo(24, 13.5) 13 .lineTo(24, 11.5) 14 .lineTo(27, 11.5) 15 .lineTo(27, 10) 16 .lineTo(22, 10) 17 .lineTo(22, 13.2) 18 .lineTo(14.5, 13.2) 19 .lineTo(14.5, 10) 20 .lineTo(12.5, 10) 21 .lineTo(12.5, 13.2) 22 .lineTo(5.5, 13.2) 23 .lineTo(5.5, 2) 24 .threePointArc((5.793, 1.293), (6.5, 1)) 25 .lineTo(10, 1) 26 .close())

1 skyscrapers_locations = [(-16,1),(-8,0),(7,0.2),(17,-1.2)] 2 angles = iter([35,15,15,15]) 3 skyscrapers = (cq.Workplane() 4 .pushPoints(skyscrapers_locations) 5 .eachpoint(lambda loc: (cq.Workplane() 6 .rect(5,16) #绘制矩形 7 .workplane(offset=10) 8 .ellipse(3,8) #绘制椭圆 9 .workplane(offset=10) 10 .slot2D(20,5, 90) #绘制键槽 11 .loft() #放样 12 .rotateAboutCenter((1,0,0),next(angles)) #旋转位置 13 .val().located(loc) # val取队列里的第一个,located用于复制草图到当前位置 14 ) 15 ) 16 )

浙公网安备 33010602011771号