Chuyển đổi Chế độ X-Ray trong Maya bằng Python

Sep 12 2020

Tôi đang cố gắng liên kết một số mã Python với một khóa để tôi có thể chuyển đổi chế độ X-Ray trong Maya.

Một điều khiến tôi bối rối là khi tôi chạy dòng mã này ...

def xrayQuery():
    cmds.modelEditor('modelPanel4', q=True, xr=True)

xrayQuery()

không có kết quả nào được trả về, mặc dù tôi đã truy vấn chế độ xray. Nhưng khi tôi chỉ chạy lệnh mà không có hàm ...

cmds.modelEditor('modelPanel4', q=True, xr=True)

Tôi nhận được những gì tôi mong đợi lần đầu tiên, đó là một kết quả boolean dựa trên việc chế độ xray có được bật hay không. Bất cứ ai có thể cho tôi biết tại sao điều này là?

Tôi rất mới sử dụng python bên trong Maya, vì vậy mọi sự trợ giúp sẽ được đánh giá cao! Cảm ơn!

Trả lời

2 sam Sep 11 2020 at 23:26

Bạn cần gọi hàm return nếu bạn muốn hàm do người dùng định nghĩa trả về cùng một đầu ra như được gọi bên trong. Như bên dưới:

def xrayQuery():
    return cmds.modelEditor('modelPanel4', q=True, xr=True)

Một lưu ý nhỏ, nếu bạn có thể giải thích mục đích để viết một hàm thay vì gọi hàm ban đầu, sẽ rất hữu ích nếu bạn hiểu được use-case

user14261562 Sep 12 2020 at 02:59

Vì vậy, tôi đã tìm ra cách để đơn giản hóa những gì tôi đang cố gắng đạt được, đó là một vài dòng mã để bật và tắt chế độ xem x-ray cho một chế độ xem cụ thể. Tôi đã có thể loại bỏ nhu cầu về các câu lệnh if else bằng cách sử dụng toán tử 'not' trong khối mã này:

import maya.cmds as cmds

def xray_toggle():
    result = cmds.modelEditor('modelPanel4', q=True, xr=True)
    cmds.modelEditor('modelPanel4', e=True, xr=not result)

xray_toggle()