arc

圓弧

November 26, 2021

Workplane 提供了多個建立圓弧的方法,包括了 radiusArcthreePointArctangentArcPointsagittaArc

radiusArc

如果想畫一個圓弧通過目前的點與指定的終點,可以使用 radiusArc,半徑會用來計算出圓心,因為只有兩個點,可能的圓心會有兩個,透過半徑的正負可以決定使用哪個作為圓心。

來畫朵簡單的花吧!

import cadquery as cq

petal = (cq.Workplane()
            .radiusArc((10, 0), 10)
            .radiusArc((0, 0), 10)
            .wire()
            .extrude(1)
         )

flower = cq.Workplane()
for i in range(8):
      flower.add(petal.rotate((0, 0, 0), (0, 0, 1), 45 * i))

show_object(flower)

這會顯示以下的結果:

圓弧

threePointArc

threePointArc 是用目前的點、指定的另外兩個點構成三角形,然後計算出三角形的外接圓,取通過目前的點、指定的另外兩點之弧:

import cadquery as cq

arc = (cq.Workplane()
         .threePointArc((10, 10), (0, 10)).close()
         .extrude(1)
      )

tri = (cq.Workplane()
         .lineTo(10, 10)
         .lineTo(0, 10)
         .close()
         .extrude(2)
      )

這個範例畫出了三點弧與三角形,以便觀察三角形、外接圓與弧的關係:

圓弧

tangentArcPoint

如果你畫了一條線,想作為切線建立圓弧,可以使用 tangentArcPoint,指定半徑與圓弧的終點,這蠻適合用來在折線上建立圓角:

import cadquery as cq

tri = (cq.Workplane()
         .lineTo(10, 10)
         .lineTo(0, 20)
         .close()
      )
      
arc = (cq.Workplane()
         .lineTo(5, 5)
         .tangentArcPoint((5, 15), relative = False)
         .lineTo(0, 20)
         .close()
         .extrude(2)
      )

tangentArcPointrelative 預設為 True,表示指定終點時是相對於目前的點,這邊的範例使用絕對座標,來看看畫出來的模型:

圓弧

sagittaArc

sagittaArc 可以使用目前的點、終點與矢量(sagitta)來建立弧形,矢量是指:

圓弧

同樣地,可以藉由矢量的正負來決定圓弧的圓心會在哪一邊。

再來畫一朵簡單的花吧!

import cadquery as cq
      
petal = (cq.Workplane()
            .moveTo(0, -10)
            .sagittaArc((0, 10), 2)
            .sagittaArc((0, -10), 2)
            .wire()
            .extrude(1)
         )

flower = cq.Workplane()
for i in range(8):
      flower.add(petal.rotate((0, 0, 0), (0, 0, 1), 45 * i))

show_object(flower)

這會顯示出以下的結果:

圓弧

這邊畫花的範例,都是用一個 Workplane 當容器收集花瓣,add 並不會自動進行聯集,若要聯集,記得收集完後呼叫 combine 方法,這邊的範例為了能看出有弧,最後並沒有呼叫 combine

分享到 LinkedIn 分享到 Facebook 分享到 Twitter