2014-03-04 125 views
0

我是一个初学者,我想在python中做一个while循环。我有两条相交的共面曲线,我想将第一条曲线移动到公共平面上的某个矢量,直到它们不再相交。我试过类似的东西:虽然真循环python

vec = [0,0.1,0] 
int = True 
while True: 
    move=rs.MoveObject(curve1,vec) 
    int=rs.CurveCurveIntersection(curve1, curve2) 
    if int = False: 
     break 

任何人都知道我在做什么错? 在此先感谢!

+2

不要使用'int'作为变量名,你在这里掩盖了内建类型。 –

+2

你有什么错误? –

+0

对于初学者,您需要'=='而不是'=':'if int == False:'(或者只是'如果不是int:')。除此之外,还有'int' @MartijnPieters提到,你需要具体告诉我们发生了什么(错误?向我们展示回溯),以及这与你期望看到的输出有什么不同 – mhlester

回答

1

可以简化为

vec = [0, .1, 0] 

while rs.CurveCurveIntersection(curve1, curve2): 
    move = rs.MoveObject(curve1, vec) 

...我不太明白什么是move

如果rs.MoveObject()修改对象,您只需要rs.MoveObject(curve1, vec);

如果它返回一个修改的对象,您需要curve1 = rs.MoveObject(curve1, vec)而不是(而您的当前代码将导致无限循环)。

+0

curve1和curve2的初始值可能不相交。在显示它时,您需要在进入while循环之前执行第一步。 – sabbahillel

+0

@sabbahillel:我认为这是他的代码中的错误 - 他_assumes_曲线已经相交,因此必须移动。如果两条曲线最初不相交,则根本没有理由运行while循环的主体。 –

+0

非常感谢您的快速响应。它现在有效! – user3380098

3

首先,您使用int关键字(整数类型)作为变量并显式设置'int'变量为False(这是if中的语法错误)。这可能会弄乱你的系统。你也没有显示错误信息是什么。

intersect = rs.CurveCurveIntersection(curve1, curve2) 
if not intersect: 
    break 
+0

没错!感谢您的快速回答! – user3380098