MotionBuilder UI----FBEditVector of Translation and Rotation

完整代碼:

from pyfbsdk import *
from pyfbsdk_additions import *


# 回調函數
def BtnCallback(control,event):
    CloseTool(t)
    print e1.Value
    print e2.Value
    print e3.Value
    print e.Value


# FBEditVector
def PopulateLayout(mainLyt):
    editStyles = ["FBEditVector", "FBEditVector", "FBEditVector", "FBEditVector" ] 
    global edits
    edits = {}
    anchor = ""
    attachType = FBAttachType.kFBAttachTop

    index = 0

    for style in editStyles:
        # 創建label
        labId = "Label{}{}".format(style, index)
        l = FBLabel()
        l.Caption = style
        x = FBAddRegionParam(10,FBAttachType.kFBAttachLeft,"")
        y = FBAddRegionParam(10,attachType,anchor)
        w = FBAddRegionParam(100,FBAttachType.kFBAttachNone,"")
        h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"")

        mainLyt.AddRegion(labId,labId, x, y, w, h)
        mainLyt.SetControl(labId,l)

        # 創建edit
        editId = "Edit{}{}".format(style, index)
        initCall = "%s()" % (style)
        global e,e1, e2,e3
        e = eval( initCall )
        edits[style,index] = e
        
        e1 = eval( initCall )
        edits[style,index] = e1

        x = FBAddRegionParam(10,FBAttachType.kFBAttachRight,labId)
        y = FBAddRegionParam(10,attachType,anchor)
        w = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"")
        h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"")

        mainLyt.AddRegion(editId, editId, x, y, w, h)
 
        mainLyt.SetControl(editId, e)
        mainLyt.SetControl(editId, e1)

        attachType = FBAttachType.kFBAttachBottom
        anchor = labId
        index = index + 1


    e = edits['FBEditVector',0]
    e.Value = FBVector3d(0.0, 0.0, 0.0)
    
    e1 = edits['FBEditVector',1]
    e1.Value = FBVector3d(0.0, 0.0, 0.0)
    
    e2 = edits['FBEditVector',2]
    e2.Value = FBVector3d(0.0, 0.0, 0.0)
    
    e3 = edits['FBEditVector',3]
    e3.Value = FBVector3d(0.0, 0.0, 0.0)
    
 
# Button
def PopulateLayout343(mainLyt):
    x = FBAddRegionParam(200,FBAttachType.kFBAttachLeft,"") # 左邊距
    y = FBAddRegionParam(300,FBAttachType.kFBAttachTop,"")  # 上邊距
    w = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"")  
    h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"")  # 自身的高
    mainLyt.AddRegion("main","main", x, y, w, h)
    lyt = FBHBoxLayout()
    mainLyt.SetControl("main",lyt)
    
    b = FBButton()
    b.Caption = "But1"
    b.Justify = FBTextJustify.kFBTextJustifyLeft 
    lyt.Add(b,60)
    b.OnClick.Add(BtnCallback)


def CreateTool():
    # Tool creation will serve as the hub for all other controls
    global t
    t = FBCreateUniqueTool("Example")
    PopulateLayout(t)
    PopulateLayout343(t)
    ShowTool(t)


CreateTool()

運行效果圖:
對應位置輸入需要數值

輸入完成點擊 Button(OK)
打印的數值:

FBVector3d(1, 1, 1)
FBVector3d(2, 2, 2)
FBVector3d(3, 3, 3)
FBVector3d(4, 4, 4)

若有更好的方法,歡迎指點^^~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章