MCPcopy Index your code
hub / github.com/CadQuery/cadquery / testSplineApprox

Method testSplineApprox

tests/test_cadquery.py:5174–5238  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

5172 f = Face.makeFromWires(w0, [w1])
5173
5174 def testSplineApprox(self):
5175
5176 from .naca import naca5305
5177 from math import pi, cos
5178
5179 pts = [Vector(e[0], e[1], 0) for e in naca5305]
5180
5181 # spline
5182
5183 e1 = Edge.makeSplineApprox(pts, 1e-6, maxDeg=6, smoothing=(1, 1, 1))
5184 e2 = Edge.makeSplineApprox(pts, 1e-6, minDeg=2, maxDeg=6)
5185
5186 self.assertTrue(e1.isValid())
5187 self.assertTrue(e2.isValid())
5188 self.assertTrue(e1.Length() > e2.Length())
5189
5190 with raises(ValueError):
5191 e4 = Edge.makeSplineApprox(pts, 1e-6, maxDeg=3, smoothing=(1, 1, 1.0))
5192
5193 pts_closed = pts + [pts[0]]
5194
5195 e3 = Edge.makeSplineApprox(pts_closed)
5196 w = Edge.makeSplineApprox(pts).close()
5197
5198 self.assertTrue(e3.IsClosed())
5199 self.assertTrue(w.IsClosed())
5200
5201 # Workplane method
5202
5203 w1 = Workplane().splineApprox(pts)
5204 w2 = Workplane().splineApprox(pts, forConstruction=True)
5205 w3 = Workplane().splineApprox(pts, makeWire=True)
5206 w4 = Workplane().splineApprox(pts, makeWire=True, forConstruction=True)
5207
5208 self.assertEqual(w1.edges().size(), 1)
5209 self.assertEqual(len(w1.ctx.pendingEdges), 1)
5210 self.assertEqual(w2.edges().size(), 1)
5211 self.assertEqual(len(w2.ctx.pendingEdges), 0)
5212 self.assertEqual(w3.wires().size(), 1)
5213 self.assertEqual(len(w3.ctx.pendingWires), 1)
5214 self.assertEqual(w4.wires().size(), 1)
5215 self.assertEqual(len(w4.ctx.pendingWires), 0)
5216
5217 # spline surface
5218
5219 N = 40
5220 T = 20
5221 A = 5
5222
5223 pts = [
5224 [
5225 Vector(i, j, A * cos(2 * pi * i / T) * cos(2 * pi * j / T))
5226 for i in range(N + 1)
5227 ]
5228 for j in range(N + 1)
5229 ]
5230
5231 f1 = Face.makeSplineApprox(pts, smoothing=(1, 1, 1), maxDeg=6)

Callers

nothing calls this directly

Calls 11

VectorClass · 0.85
WorkplaneClass · 0.85
isValidMethod · 0.80
IsClosedMethod · 0.80
splineApproxMethod · 0.80
makeSplineApproxMethod · 0.45
LengthMethod · 0.45
closeMethod · 0.45
sizeMethod · 0.45
edgesMethod · 0.45
wiresMethod · 0.45

Tested by

no test coverage detected