Chuyển đổi Chế độ X-Ray trong Maya bằng Python
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
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
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()