MCPcopy
hub / github.com/CadQuery/cadquery / testPolarArray

Method testPolarArray

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

Source from the content-addressed store, hash-verified

1405 self.assertEqual(s0.size(), s1.size())
1406
1407 def testPolarArray(self):
1408 radius = 10
1409
1410 to_x = lambda l: l.wrapped.Transformation().TranslationPart().X()
1411 to_y = lambda l: l.wrapped.Transformation().TranslationPart().Y()
1412 to_angle = (
1413 lambda l: l.wrapped.Transformation().GetRotation().GetRotationAngle()
1414 * 180.0
1415 / math.pi
1416 )
1417
1418 # Test for proper placement when fill == True
1419 s = Workplane("XY").polarArray(radius, 0, 180, 3)
1420 self.assertEqual(3, s.size())
1421 self.assertAlmostEqual(radius, to_x(s.objects[0]))
1422 self.assertAlmostEqual(0, to_y(s.objects[0]))
1423
1424 # Test for proper placement when angle to fill is multiple of 360 deg
1425 s = Workplane("XY").polarArray(radius, 0, 360, 4)
1426 self.assertEqual(4, s.size())
1427 self.assertAlmostEqual(radius, to_x(s.objects[0]))
1428 self.assertAlmostEqual(0, to_y(s.objects[0]))
1429
1430 # Test for proper placement when fill == False
1431 s = Workplane("XY").polarArray(radius, 0, 90, 3, fill=False)
1432 self.assertEqual(3, s.size())
1433 self.assertAlmostEqual(-radius, to_x(s.objects[2]))
1434 self.assertAlmostEqual(0, to_y(s.objects[2]))
1435
1436 # Test for proper operation of startAngle
1437 s = Workplane("XY").polarArray(radius, 90, 180, 3)
1438 self.assertEqual(3, s.size())
1439 self.assertAlmostEqual(0, to_x(s.objects[0]))
1440 self.assertAlmostEqual(radius, to_y(s.objects[0]))
1441
1442 # Test for local rotation
1443 s = Workplane().polarArray(radius, 0, 180, 3)
1444 self.assertAlmostEqual(0, to_angle(s.objects[0]))
1445 self.assertAlmostEqual(90, to_angle(s.objects[1]))
1446
1447 s = Workplane().polarArray(radius, 0, 180, 3, rotate=False)
1448 self.assertAlmostEqual(0, to_angle(s.objects[0]))
1449 self.assertAlmostEqual(0, to_angle(s.objects[1]))
1450
1451 with raises(ValueError):
1452 Workplane().polarArray(radius, 20, 180, 0)
1453
1454 s = Workplane().polarArray(radius, 20, 0, 1)
1455 assert s.size() == 1
1456 assert Workplane().polarLine(radius, 20).val().positionAt(
1457 1
1458 ).toTuple() == approx(s.val().toTuple()[0])
1459
1460 s = Workplane().center(2, -4).polarArray(2, 10, 50, 3).rect(1.0, 0.5).extrude(1)
1461 assert s.solids().size() == 3
1462 assert s.vertices(">Y and >Z").val().toTuple() == approx(
1463 (3.0334936490538906, -1.7099364905389036, 1.0)
1464 )

Callers

nothing calls this directly

Calls 12

WorkplaneClass · 0.85
polarArrayMethod · 0.80
polarLineMethod · 0.80
extrudeMethod · 0.80
centerMethod · 0.80
sizeMethod · 0.45
toTupleMethod · 0.45
positionAtMethod · 0.45
valMethod · 0.45
rectMethod · 0.45
solidsMethod · 0.45
verticesMethod · 0.45

Tested by

no test coverage detected