赋值混合前引用的局部变量

2024-09-29 03:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

这是python中blender函数的一部分,但是每当我运行这个脚本时,它会说yz_slope没有赋值,但是xy峎u slope没有错误,我在函数中声明了yz_slope。有什么问题吗?在

def execute(self, context):
    obj = context.active_object
    if obj.mode == 'EDIT':
        bm = bmesh.from_edit_mesh(obj.data)
        vertices = bm.verts

    else:
        vertices = obj.data.vertices

    verts = [obj.matrix_world * vert.co for vert in vertices] 

    plain_verts = [vert.to_tuple() for vert in verts]
    print(plain_verts)
    rdomain_list = [x[0] for x in plain_verts]
    domain_list = rdomain_list[:]
    domain_list.sort(reverse=False)
    domain_list[:] = [x - domain_list[0] for x in domain_list]
    xstart = domain_list[0]
    for i, var in enumerate(domain_list):
        if i == len(domain_list) - 1:
            xend = var
    print(xstart, xend)
    ry_list = [x[1] for x in plain_verts]
    y_list = ry_list[:]
    y_list.sort(reverse=False)
    y_list[:] = [x - y_list[0] for x in y_list]
    ystart = y_list[0]
    for i, var in enumerate(y_list):
        if i == len(y_list) - 1:
            yend = var
    print(ystart, yend)
    rz_list = [x[2] for x in plain_verts]
    z_list = rz_list[:]
    z_list.sort(reverse=False)
    z_list[:] = [x - z_list[0] for x in z_list]
    zstart = z_list[0]
    for i, var in enumerate(z_list):
        if i == len(z_list) - 1:
            zend = var
    print(zstart, zend)
    if rdomain_list[1]==rdomain_list[0]:
        xy_slope = 'undefined'
        y_int = 'none'
        x_int = rdomain_list[0]
        if ry_list[1]==ry_list[0]:
            yz_slope = 'undefined'
            z_int = 'none'
        else:
            yz_slope = (rz_list[1]-rz_list[0])/(ry_list[1]-ry_list[0])
            z_int = rz_list[0]-ry_list[0]*yz_slope
    else:
        xy_slope = (ry_list[1]-ry_list[0])/(rdomain_list[1]-rdomain_list[0])
        y_int = ry_list[0]-rdomain_list[0]*xy_slope
        if ry_list[1]==ry_list[0]:
            yz_slope = 'undefined'
            z_int = 'none'
        else:
            yz_slope = (rz_list[1]-rz_list[0])/(ry_list[1]-ry_list[0])

有错误的行。UnboundLocalError:赋值前引用了局部变量“yz_slope”

^{pr2}$

Tags: inobjforifvardomainslopelist