MotionBuilder Python Script – MarkerTool v0.1 – Easily Create Markers In MotionBuilder Through Python Sripting
I created a Python script that would allow MotionBuilder to quickly create Markers (or nulls/helpers depending on what package you started out with). It is a simple script that creates a floating window that will list all Marker visual types, by checking off the type you want an hitting the button it will generate the helper in the center of the world.
This is tool is in its basic form right now, I hope later to allow for size adjustment through user input as well as some other features like auto align to selected object, parent to auto selected object, transfer animation from selected object to newly created marker, etc.
Below you will find a link to the tool as well as the script itself in full form, I have also sectioned off parts of the script that I think would be interesting to anyone who has been following this blog and is trying to learn more about Python scripting within MotionBuilder.
You can down load the MarkerTool through this Link Here
Full script for Marker Tool v0.1
from pyfbsdk import * from pyfbsdk_additions import * from random import * MarkerTools = FBLabel() MarkerCreateButton = FBButton() SizeLabel = FBLabel() SizeInput = FBEdit() bMarkerCreateButton = FBButton() ## Check Boxes --------------------- bMarkCube = FBButton() bMarkHardCross = FBButton() bMarkLightCross = FBButton() bMarkSphere = FBButton() bMarkCapsule = FBButton() bMarkBox = FBButton() bMarkBone = FBButton() bMarkCircle = FBButton() bMarkSquare = FBButton() bMarkStick = FBButton() bMarkNone = FBButton() bMarkRigidgoal = FBButton() bMarkRotationgoal = FBButton() bMarkAimRollgoal = FBButton() ## Create Marker Button def BtnCallbackbMarkerCreateButton(control, event): lR = random() lG = random() lB = random() ## Create Helper lHelper = FBModelMarker('Helper_Mark 1') lHelper.Show = True lHelperSize = 1000 lHelper.Size = lHelperSize ## Define the look of the Marker if bMarkCube.State == True: lMarkerLook = 0 if bMarkHardCross.State == True: lMarkerLook = 1 if bMarkLightCross.State == True: lMarkerLook = 2 if bMarkSphere.State == True: lMarkerLook = 3 if bMarkCapsule.State == True: lMarkerLook = 4 if bMarkBox.State == True: lMarkerLook = 5 if bMarkBone.State == True: lMarkerLook = 6 if bMarkCircle.State == True: lMarkerLook = 7 if bMarkSquare.State == True: lMarkerLook = 8 if bMarkStick.State == True: lMarkerLook = 9 if bMarkNone.State == True: lMarkerLook = 10 if bMarkRigidgoal.State == True: lMarkerLook = 11 if bMarkRotationgoal.State == True: lMarkerLook = 12 if bMarkAimRollgoal.State == True: lMarkerLook = 13 ## Fail safe for if no check boxes are marked (default to cube) if bMarkCube.State == bMarkHardCross.State == bMarkLightCross.State == bMarkSphere.State == bMarkCapsule.State == bMarkBox.State == bMarkBone.State == bMarkCircle.State == bMarkSquare.State == bMarkStick.State == bMarkNone.State == bMarkRigidgoal.State == bMarkRotationgoal.State == bMarkAimRollgoal.State == False: lMarkerLook = 0 print 'No Marker Choice Made - Defaulting to "Cube" visual' ## Set LookUi to be that of the users choice lHelper.PropertyList.Find('LookUi').Data = lMarkerLook ## Set the color for the helper using our random generated numbers defined above lHelper.Color = FBColor(lR,lG,lB) ## ui look check box decision ## Cube def BtnCallbackbMarkCube(control, event): if bMarkCube.State == True: bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Hard Cross def BtnCallbackbMarkHardCross(control, event): if bMarkHardCross.State == True: bMarkCube.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Lighgt Cross def BtnCallbackbMarkLightCross(control, event): if bMarkLightCross.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Sphere def BtnCallbackbMarkSphere(control, event): if bMarkSphere.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Capsule def BtnCallbackbMarkCapsule(control, event): if bMarkCapsule.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True # Box def BtnCallbackbMarkBox(control, event): if bMarkBox.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Bone def BtnCallbackbMarkBone(control, event): if bMarkBone.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Circle def BtnCallbackbMarkCircle(control, event): if bMarkCircle.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Square def BtnCallbackbMarkSquare(control, event): if bMarkSquare.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Stick def BtnCallbackbMarkStick(control, event): if bMarkStick.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## None def BtnCallbackbMarkNone(control, event): if bMarkNone.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Rigid Goal def BtnCallbMarkRigidgoal(control, event): if bMarkRigidgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkAimRollgoal.Enabled = False bMarkRotationgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Rotational Goal def BtnCallbackbMarkRotationgoal(control, event): if bMarkRotationgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Aim Roll Goal def BtnCallbackbMarkAimRollgoal(control, event): if bMarkAimRollgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRotationgoal.Enabled = False bMarkRigidgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Tool Window Creation def PopulateTool(t): #populate regions here # Checkboxs for Character Process Type x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(20,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkCube","bMarkCube", x, y, w, h) tMark.SetControl("bMarkCube", bMarkCube) bMarkCube.Visible = True bMarkCube.ReadOnly = False bMarkCube.Enabled = True bMarkCube.Hint = "" bMarkCube.Caption = "Cube" bMarkCube.State = 0 bMarkCube.Style = FBButtonStyle.kFBCheckbox bMarkCube.Justify = FBTextJustify.kFBTextJustifyLeft bMarkCube.Look = FBButtonLook.kFBLookNormal bMarkCube.OnClick.Add(BtnCallbackbMarkCube) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(50,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkHardCross","bMarkHardCross", x, y, w, h) tMark.SetControl("bMarkHardCross", bMarkHardCross) bMarkHardCross.Visible = True bMarkHardCross.ReadOnly = False bMarkHardCross.Enabled = True bMarkHardCross.Hint = "" bMarkHardCross.Caption = "Hard Cross" bMarkHardCross.State = 0 bMarkHardCross.Style = FBButtonStyle.kFBCheckbox bMarkHardCross.Justify = FBTextJustify.kFBTextJustifyLeft bMarkHardCross.Look = FBButtonLook.kFBLookNormal bMarkHardCross.OnClick.Add(BtnCallbackbMarkHardCross) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(80,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkLightCross","bMarkLightCross", x, y, w, h) tMark.SetControl("bMarkLightCross", bMarkLightCross) bMarkLightCross.Visible = True bMarkLightCross.ReadOnly = False bMarkLightCross.Enabled = True bMarkLightCross.Hint = "" bMarkLightCross.Caption = "Light Cross" bMarkLightCross.State = 0 bMarkLightCross.Style = FBButtonStyle.kFBCheckbox bMarkLightCross.Justify = FBTextJustify.kFBTextJustifyLeft bMarkLightCross.Look = FBButtonLook.kFBLookNormal bMarkLightCross.OnClick.Add(BtnCallbackbMarkLightCross) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(110,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkSphere","bMarkSphere", x, y, w, h) tMark.SetControl("bMarkSphere", bMarkSphere) bMarkSphere.Visible = True bMarkSphere.ReadOnly = False bMarkSphere.Enabled = True bMarkSphere.Hint = "" bMarkSphere.Caption = "Sphere" bMarkSphere.State = 0 bMarkSphere.Style = FBButtonStyle.kFBCheckbox bMarkSphere.Justify = FBTextJustify.kFBTextJustifyLeft bMarkSphere.Look = FBButtonLook.kFBLookNormal bMarkSphere.OnClick.Add(BtnCallbackbMarkSphere) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkCapsule","bMarkCapsule", x, y, w, h) tMark.SetControl("bMarkCapsule", bMarkCapsule) bMarkCapsule.Visible = True bMarkCapsule.ReadOnly = False bMarkCapsule.Enabled = True bMarkCapsule.Hint = "" bMarkCapsule.Caption = "Capsule" bMarkCapsule.State = 0 bMarkCapsule.Style = FBButtonStyle.kFBCheckbox bMarkCapsule.Justify = FBTextJustify.kFBTextJustifyLeft bMarkCapsule.Look = FBButtonLook.kFBLookNormal bMarkCapsule.OnClick.Add(BtnCallbackbMarkCapsule) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(170,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkBox","bMarkBox", x, y, w, h) tMark.SetControl("bMarkBox", bMarkBox) bMarkBox.Visible = True bMarkBox.ReadOnly = False bMarkBox.Enabled = True bMarkBox.Hint = "" bMarkBox.Caption = "Box" bMarkBox.State = 0 bMarkBox.Style = FBButtonStyle.kFBCheckbox bMarkBox.Justify = FBTextJustify.kFBTextJustifyLeft bMarkBox.Look = FBButtonLook.kFBLookNormal bMarkBox.OnClick.Add(BtnCallbackbMarkBox) x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkBone","bMarkBone", x, y, w, h) tMark.SetControl("bMarkBone", bMarkBone) bMarkBone.Visible = True bMarkBone.ReadOnly = False bMarkBone.Enabled = True bMarkBone.Hint = "" bMarkBone.Caption = "Bone" bMarkBone.State = 0 bMarkBone.Style = FBButtonStyle.kFBCheckbox bMarkBone.Justify = FBTextJustify.kFBTextJustifyLeft bMarkBone.Look = FBButtonLook.kFBLookNormal bMarkBone.OnClick.Add(BtnCallbackbMarkBone) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(20,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkCircle","bMarkCircle", x, y, w, h) tMark.SetControl("bMarkCircle", bMarkCircle) bMarkCircle.Visible = True bMarkCircle.ReadOnly = False bMarkCircle.Enabled = True bMarkCircle.Hint = "" bMarkCircle.Caption = "Circle" bMarkCircle.State = 0 bMarkCircle.Style = FBButtonStyle.kFBCheckbox bMarkCircle.Justify = FBTextJustify.kFBTextJustifyLeft bMarkCircle.Look = FBButtonLook.kFBLookNormal bMarkCircle.OnClick.Add(BtnCallbackbMarkCircle) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(50,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkSquare","bMarkSquare", x, y, w, h) tMark.SetControl("bMarkSquare", bMarkSquare) bMarkSquare.Visible = True bMarkSquare.ReadOnly = False bMarkSquare.Enabled = True bMarkSquare.Hint = "" bMarkSquare.Caption = "Square" bMarkSquare.State = 0 bMarkSquare.Style = FBButtonStyle.kFBCheckbox bMarkSquare.Justify = FBTextJustify.kFBTextJustifyLeft bMarkSquare.Look = FBButtonLook.kFBLookNormal bMarkSquare.OnClick.Add(BtnCallbackbMarkSquare) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(80,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkStick","bMarkStick", x, y, w, h) tMark.SetControl("bMarkStick", bMarkStick) bMarkStick.Visible = True bMarkStick.ReadOnly = False bMarkStick.Enabled = True bMarkStick.Hint = "" bMarkStick.Caption = "Stick" bMarkStick.State = 0 bMarkStick.Style = FBButtonStyle.kFBCheckbox bMarkStick.Justify = FBTextJustify.kFBTextJustifyLeft bMarkStick.Look = FBButtonLook.kFBLookNormal bMarkStick.OnClick.Add(BtnCallbackbMarkStick) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(110,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkNone","bMarkNone", x, y, w, h) tMark.SetControl("bMarkNone", bMarkNone) bMarkNone.Visible = True bMarkNone.ReadOnly = False bMarkNone.Enabled = True bMarkNone.Hint = "" bMarkNone.Caption = "None" bMarkNone.State = 0 bMarkNone.Style = FBButtonStyle.kFBCheckbox bMarkNone.Justify = FBTextJustify.kFBTextJustifyLeft bMarkNone.Look = FBButtonLook.kFBLookNormal bMarkNone.OnClick.Add(BtnCallbackbMarkNone) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkRigidgoal","bMarkRigidgoal", x, y, w, h) tMark.SetControl("bMarkRigidgoal", bMarkRigidgoal) bMarkRigidgoal.Visible = True bMarkRigidgoal.ReadOnly = False bMarkRigidgoal.Enabled = True bMarkRigidgoal.Hint = "" bMarkRigidgoal.Caption = "Rigid goal" bMarkRigidgoal.State = 0 bMarkRigidgoal.Style = FBButtonStyle.kFBCheckbox bMarkRigidgoal.Justify = FBTextJustify.kFBTextJustifyLeft bMarkRigidgoal.Look = FBButtonLook.kFBLookNormal bMarkRigidgoal.OnClick.Add(BtnCallbMarkRigidgoal) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(170,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkRotationgoal","bMarkRotationgoal", x, y, w, h) tMark.SetControl("bMarkRotationgoal", bMarkRotationgoal) bMarkRotationgoal.Visible = True bMarkRotationgoal.ReadOnly = False bMarkRotationgoal.Enabled = True bMarkRotationgoal.Hint = "" bMarkRotationgoal.Caption = "Rotational goal" bMarkRotationgoal.State = 0 bMarkRotationgoal.Style = FBButtonStyle.kFBCheckbox bMarkRotationgoal.Justify = FBTextJustify.kFBTextJustifyLeft bMarkRotationgoal.Look = FBButtonLook.kFBLookNormal bMarkRotationgoal.OnClick.Add(BtnCallbackbMarkRotationgoal) x = FBAddRegionParam(140,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(35,FBAttachType.kFBAttachNone,"") tMark.AddRegion("bMarkAimRollgoal","bMarkAimRollgoal", x, y, w, h) tMark.SetControl("bMarkAimRollgoal", bMarkAimRollgoal) bMarkAimRollgoal.Visible = True bMarkAimRollgoal.ReadOnly = False bMarkAimRollgoal.Enabled = True bMarkAimRollgoal.Hint = "" bMarkAimRollgoal.Caption = "Aim/Roll goal" bMarkAimRollgoal.State = 0 bMarkAimRollgoal.Style = FBButtonStyle.kFBCheckbox bMarkAimRollgoal.Justify = FBTextJustify.kFBTextJustifyLeft bMarkAimRollgoal.Look = FBButtonLook.kFBLookNormal bMarkAimRollgoal.OnClick.Add(BtnCallbackbMarkAimRollgoal) ## ---------------------------------------------------------------- x = FBAddRegionParam(0,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(0,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(270,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(30,FBAttachType.kFBAttachNone,"") tMark.AddRegion("MarkerTools","MarkerTools", x, y, w, h) tMark.SetControl("MarkerTools", MarkerTools) MarkerTools.Visible = True MarkerTools.ReadOnly = False MarkerTools.Enabled = True MarkerTools.Hint = "" MarkerTools.Caption = "MarkerTool" MarkerTools.Style = FBTextStyle.kFBTextStyleBold MarkerTools.Justify = FBTextJustify.kFBTextJustifyCenter MarkerTools.WordWrap = False x = FBAddRegionParam(4,FBAttachType.kFBAttachNone,"") y = FBAddRegionParam(240,FBAttachType.kFBAttachNone,"") w = FBAddRegionParam(260,FBAttachType.kFBAttachNone,"") h = FBAddRegionParam(55,FBAttachType.kFBAttachNone,"") tMark.AddRegion("MarkerCreateButton","MarkerCreateButton", x, y, w, h) tMark.SetControl("MarkerCreateButton", MarkerCreateButton) MarkerCreateButton.Visible = True MarkerCreateButton.ReadOnly = False MarkerCreateButton.Enabled = True MarkerCreateButton.Hint = "" MarkerCreateButton.Caption = "Create" MarkerCreateButton.State = 0 MarkerCreateButton.Style = FBButtonStyle.kFBPushButton MarkerCreateButton.Justify = FBTextJustify.kFBTextJustifyCenter MarkerCreateButton.Look = FBButtonLook.kFBLookNormal MarkerCreateButton.OnClick.Add(BtnCallbackbMarkerCreateButton) def CreateTool(): global tMark tMark = FBCreateUniqueTool("MarkerTool v 0.1") tMark.StartSizeX = 285 tMark.StartSizeY = 340 PopulateTool(tMark) ShowTool(tMark) CreateTool()
Here are some of the more interesting parts of the script:
The tool needed a fail safe for if and when the user does not chose a visual style for the marker. When there is no decision made by the user we will then generate a default marker visual style – a “Cube” look:
## Fail safe for if no check boxes are marked (default to cube) if bMarkCube.State == bMarkHardCross.State == bMarkLightCross.State == bMarkSphere.State == bMarkCapsule.State == bMarkBox.State == bMarkBone.State == bMarkCircle.State == bMarkSquare.State == bMarkStick.State == bMarkNone.State == bMarkRigidgoal.State == bMarkRotationgoal.State == bMarkAimRollgoal.State == False: lMarkerLook = 0
Every state is equal (using the “==”) to each other which is then equal to “False”, when this happens we set the “lMarkerLook” to be “0” which is the Cube visual style.
Below we have the decision for the check boxes, when one is selected the other check boxes will be greyed out preventing multiple boxes form being selected. The below lines could be cleaned up a lot and I look forward to doing the in the next version.
## ui look check box decision ## Cube def BtnCallbackbMarkCube(control, event): if bMarkCube.State == True: bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Hard Cross def BtnCallbackbMarkHardCross(control, event): if bMarkHardCross.State == True: bMarkCube.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Lighgt Cross def BtnCallbackbMarkLightCross(control, event): if bMarkLightCross.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Sphere def BtnCallbackbMarkSphere(control, event): if bMarkSphere.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Capsule def BtnCallbackbMarkCapsule(control, event): if bMarkCapsule.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True # Box def BtnCallbackbMarkBox(control, event): if bMarkBox.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Bone def BtnCallbackbMarkBone(control, event): if bMarkBone.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Circle def BtnCallbackbMarkCircle(control, event): if bMarkCircle.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Square def BtnCallbackbMarkSquare(control, event): if bMarkSquare.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Stick def BtnCallbackbMarkStick(control, event): if bMarkStick.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## None def BtnCallbackbMarkNone(control, event): if bMarkNone.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Rigid Goal def BtnCallbMarkRigidgoal(control, event): if bMarkRigidgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkAimRollgoal.Enabled = False bMarkRotationgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Rotational Goal def BtnCallbackbMarkRotationgoal(control, event): if bMarkRotationgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True ## Aim Roll Goal def BtnCallbackbMarkAimRollgoal(control, event): if bMarkAimRollgoal.State == True: bMarkCube.Enabled = False bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRotationgoal.Enabled = False bMarkRigidgoal.Enabled = False else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkSquare.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True
A simpler way would be to define the “else” conditions once and then call that multiple times. I believe I could of made the above cleaner by doing the following:
## Instead of using this: else: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## I should of done: def lAllTrue: bMarkCube.Enabled = True bMarkHardCross.Enabled = True bMarkLightCross.Enabled = True bMarkSphere.Enabled = True bMarkCapsule.Enabled = True bMarkBox.Enabled = True bMarkBone.Enabled = True bMarkCircle.Enabled = True bMarkStick.Enabled = True bMarkNone.Enabled = True bMarkRigidgoal.Enabled = True bMarkRotationgoal.Enabled = True bMarkAimRollgoal.Enabled = True ## Then Used something like: ## Cube def BtnCallbackbMarkCube(control, event): if bMarkCube.State == True: bMarkHardCross.Enabled = False bMarkLightCross.Enabled = False bMarkSphere.Enabled = False bMarkCapsule.Enabled = False bMarkBox.Enabled = False bMarkBone.Enabled = False bMarkCircle.Enabled = False bMarkSquare.Enabled = False bMarkStick.Enabled = False bMarkNone.Enabled = False bMarkRigidgoal.Enabled = False bMarkRotationgoal.Enabled = False bMarkAimRollgoal.Enabled = False else: lAllTrue
This script was a quick and dirty tool that i wanted for my day to day work flow, in later version I would like features such as:
- User input for marker size
- User input value for number of markers to be created (with positional off set so that they are all viewable within the view port)
- On creation automatically align to currently selected object
- On Creation automatically constrain to currently selected object
- On Creation Transfer Animation data from currently selected object onto created Marker
I will see how much time I have to investigated the above options, most are easy enough to do. For a challenge you could set up/add the Automatic alignment, Automatic Constraint and Transfer Animation by going through my blog and reading MotionBuilder’s Constraint system and Python. 🙂
I hope this has helped.