(self)
| 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 | ) |
nothing calls this directly
no test coverage detected