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 )

 

posted @ 2023-10-10 12:04  Arxu  阅读(464)  评论(0)    收藏  举报