Rhino Python绘制重复矩形脚本报错:'NoneType'不可下标访问,如何修复?
问题修复方案
核心错误原因
list.append()方法没有返回值(返回None),你写的c = c.append(...)会把列表c直接覆盖成None,后续执行c[i]时,自然会抛出'NoneType' object is not subscriptable的错误。- 代码里的
x、y、u三个变量没有定义赋值,运行时会先触发未定义错误。 - 循环内的旋转逻辑可能不符合需求:
i+2.0会让每次旋转角度递增(2°、3°、4°...),如果是要均匀旋转,应该用固定角度值。
修复后的完整代码
import rhinoscriptsyntax as rs # 定义必要参数:矩形尺寸、重复次数、每次旋转角度 x = 5 # 矩形宽度 y = 3 # 矩形高度 u = 10 # 重复次数 rotate_angle = 2.0 # 每次旋转的角度(单位:度) # 初始化工作平面 plane = rs.WorldXYPlane() # 存储所有矩形ID的列表 rect_ids = [] for i in range(u): # 旋转工作平面 plane = rs.RotatePlane(plane, rotate_angle, [0,0,1]) # 创建矩形并记录ID rect_id = rs.AddRectangle(plane, x, y) rect_ids.append(rect_id) # 移动矩形(每次沿Z轴向上移动1单位,累计叠加可改成(0,0,i+1)) rs.MoveObject(rect_id, (0,0,1)) # 可选:选中所有创建的矩形 rs.SelectObjects(rect_ids)
额外说明
- 如果你需要每次旋转的角度是递增的(比如第1次2°,第2次4°...),可以把
rotate_angle换成(i+1)*2.0。 - 移动逻辑如果是要让每个矩形沿Z轴叠加,把移动向量改成
(0,0,i+1)即可,避免所有矩形都移到同一Z高度。
内容的提问来源于stack exchange,提问作者Zahra Ramezani
相关产品推荐
相关产品推荐

