spaceclaim脚本(内摆线)

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脚本(内摆线)

posted @ 2017-01-07 00:10  硫酸亚铜  阅读(689)  评论(0)    收藏  举报