我写了第一行(在SO的帮助下):
import rhinoscriptsyntax as rs
obj = rs.GetObject("Select a curve", rs.filter.curve)
maxd = input("max offset: ")
a = input("first offset: ")
b = input("next offset: ")
if rs.IsCurve(obj):
i=0
while i < maxd:
rs.OffsetCurve( obj, [0,0,0], -i )
i += a
rs.OffsetCurve( obj, [0,0,0], -i )
i += b
现在我试图通过插入偏移输入列表来进一步研究。但似乎我最终得到了一个无限循环。此外,第一个rs.OffsetCurve()
似乎运行两次或i
没有更新第二次rs.OffserCurve()
循环时的第一次运行。
import rhinoscriptsyntax as rs
obj = rs.GetObject("Select a curve", rs.filter.curve)
maxd = input("max offset: ")
a = input("first offset: ")
offlist = []
while True:
b = input("next offset or 0 for exit: ")
offlist.append(b)
if b == 0:
break
if rs.IsCurve(obj):
i=0
while i < maxd:
rs.OffsetCurve( obj, [0,0,0], -i )
i = a
c = len(offlist)
k = 0
while k != c:
rs.OffsetCurve( obj, [0,0,0], -i )
i = offlist[k]
k += 1
while i < maxd:
和i = a
在周期的每一步都没有改变maxd
和a
两个周期都可能导致这种行为。
顺便说一下,我会考虑以这样的方式命名你的变量,这样你或任何其他开发人员只需一眼就可以理解这里发生了什么。此外,您可以考虑在这种情况下使用嵌套的while
循环是否是个好主意。
您忘记更新变量a的值,结果是外部while循环的计数器i。我通常做的是手动跟循环中每个计数器的值进行几次迭代来调试我的代码。