На этом этапе я попробовал все аргументы, доступные в развертке (например, нормальный, вспомогательный позвоночник и т. д.), но ни один из них не попал в цель.
Сначала я попробовал использовать прямоугольник, который должен быть в случае волновой пружины. но тогда для простоты использовал круг. Как видно на изображении, ориентация развертки меняется (обозначается тем, что черная линия пути становится видимой, а затем выходит за развертку при вращении) независимо от определения вспомогательного позвоночника. вот мой код:
Код: Выделить всё
import cadquery as cq
import math
t1 = 0
t2 = 50
num_points = 500
radius = 50
offset_in_x = 2
circle_diameter = 4.0
circle_radius = circle_diameter / 2
points = []
aux_points = []
delta_t = (t2 - t1) / num_points
for i in range(num_points + 1):
t = t1 + i * delta_t
x = radius * math.sin(t)
y = radius * math.cos(t)
z = 7 * math.sin(3.5 * t) + 3 * t
points.append((x, y, z))
aux_points.append((x + offset_in_x, y, z+offset_in_x))
wave_path = cq.Workplane("XY").spline(points)
aux_spine = cq.Workplane("XY").spline(aux_points)
result = (
cq.Workplane("YZ")
.center(radius, 0)
.circle(circle_radius)
.sweep(wave_path, isFrenet=False, auxSpine=aux_spine)
)
show_object(result, name="WaveSpring")
Подробнее здесь: https://stackoverflow.com/questions/793 ... p-function
Мобильная версия