import math #导入数学模块,因为会使用π
def x_comp(k,r,t): #定义x坐标的计算函数
return r * (k -1) * math.cos(t) + r * math.cos( (k - 1) *
t)
def y_comp(k,r,t): #定义y坐标的计算函数
return r * (k -1) * math.sin(t) - r * math.sin( (k - 1) *
t)
def z_comp(k,r,t): #定义z坐标的计算函数
return 0
k = 4 #一共由四条线组成
r = IN(1) #半径
i = math.pi*2.0 / k / 10.0 #在各条线上取十个点,计算每个点的角度位置
def GenerateHypocycloidSegment(t,n, i):
#定义内摆线的生成函数
ptList = List[Point]() #定义一个点的列表
while t <= n: #循环每条线
ptList.Add(Point.Create(x_comp(k,r,t), y_comp(k,r,t),
z_comp(k,r,t))) #将点放入点的列表当中
t =
t + i #
#生成非均匀有理B样条曲线穿过所有的点
#第一个参数False表示曲线不具有周期性
#第二个参数表示曲线穿过的点
#第三个参数表示曲线的容差
ncurve = NurbsCurve.CreateThroughPoints(False, ptList,
0.0001)
#CurveSegment表示曲线段,用上面的曲线创建曲线段
curveSegment = CurveSegment.Create(ncurve)
#设计曲线两个参数
#第一个参数需要得到曲线的父类
#第二个参数表示需要设计的曲线
designCurve = DesignCurve.Create(GetPart(),
curveSegment)
index = 0 #曲线的索引
segment = math.pi*2.0 / k #每条曲线的角度
while index < k: #循环索引生成各条曲线
GenerateHypocycloidSegment(index*segment, (index+1)*segment, i)
#生成曲线
index = index + 1
![spaceclaim脚本(内摆线) spaceclaim脚本(内摆线)]()