สลับโหมด X-Ray ใน Maya โดยใช้ Python

Sep 12 2020

ฉันพยายามผูกรหัส Python กับคีย์เพื่อให้สามารถสลับโหมด X-Ray ใน Maya ได้

สิ่งหนึ่งที่ทำให้ฉันสับสนคือเมื่อฉันเรียกใช้โค้ดบรรทัดนี้ ...

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

xrayQuery()

ไม่มีการส่งคืนผลลัพธ์แม้ว่าฉันจะสอบถามโหมด xray แต่เมื่อฉันเรียกใช้คำสั่งโดยไม่มีฟังก์ชั่น ...

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

ฉันได้รับสิ่งที่ฉันคาดหวังในครั้งแรกซึ่งเป็นผลลัพธ์แบบบูลีนขึ้นอยู่กับว่าเปิดใช้งานโหมด xray หรือไม่ ใครช่วยบอกทีว่าทำไมถึงเป็นแบบนี้?

ฉันใหม่มากสำหรับ python ใน Maya ดังนั้นความช่วยเหลือใด ๆ จะได้รับการชื่นชมมาก! ขอบคุณ!

คำตอบ

2 sam Sep 11 2020 at 23:26

คุณต้องเรียกกลับหากคุณต้องการให้ฟังก์ชันที่ผู้ใช้กำหนดเองส่งคืนผลลัพธ์เดียวกันกับที่เรียกว่าภายใน ชอบด้านล่าง:

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

หมายเหตุด้านข้างหากคุณสามารถอธิบายวัตถุประสงค์ในการเขียนฟังก์ชันแทนการเรียกฟังก์ชันเดิมได้การทำความเข้าใจกรณีการใช้งานจะเป็นประโยชน์

user14261562 Sep 12 2020 at 02:59

ดังนั้นฉันจึงคิดหาวิธีที่จะทำให้สิ่งที่ฉันพยายามบรรลุเป็นเรื่องง่ายขึ้นซึ่งก็คือโค้ดสองสามบรรทัดเพื่อเปิดและปิดโหมดมุมมองเอ็กซ์เรย์สำหรับวิวพอร์ตเฉพาะ ฉันสามารถขจัดความจำเป็นในการใช้คำสั่ง if else โดยใช้ตัวดำเนินการ 'not' ในโค้ดบล็อกนี้:

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()