{"id":175,"date":"2017-02-17T12:55:54","date_gmt":"2017-02-17T17:55:54","guid":{"rendered":"http:\/\/www.vicdebaie.com\/blog\/?p=175"},"modified":"2017-11-07T16:35:44","modified_gmt":"2017-11-07T21:35:44","slug":"%ef%bb%bfplotting-selected-properties-using-motionbuilders-python","status":"publish","type":"post","link":"http:\/\/www.vicdebaie.com\/blog\/%ef%bb%bfplotting-selected-properties-using-motionbuilders-python\/","title":{"rendered":"\ufeffPlotting selected properties using MotionBuilder&#8217;s Python."},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg\"><img data-attachment-id=\"177\" data-permalink=\"http:\/\/www.vicdebaie.com\/blog\/%ef%bb%bfplotting-selected-properties-using-motionbuilders-python\/img_3946-jpg\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?fit=320%2C186\" data-orig-size=\"320,186\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"img_3946.jpg\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?fit=300%2C174\" data-large-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?fit=320%2C186\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-177\" title=\"\" src=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?resize=320%2C186\" alt=\"\" width=\"320\" height=\"186\" srcset=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?w=320 320w, https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?resize=300%2C174 300w\" sizes=\"(max-width: 320px) 100vw, 320px\" data-recalc-dims=\"1\" \/><\/a><br \/>\nI ran\u00a0the script I created in <a href=\"http:\/\/www.vicdebaie.com\/blog\/animating-and-setting-keys-with-motionbuilders-python-editor\/\">&#8220;Animating and setting keys with MotionBuilder&#8217;s Python Editor&#8221;<\/a>\u00a0and decided that I would use the scene it creates\u00a0to learn how to plot on selected properties in MotionBuilder&#8217;s Python Editor.<\/p>\n<h1><span style=\"color: #ff9900;\">Update:<\/span><\/h1>\n<p><span style=\"color: #000000;\">I found a work around for the bug and it is covered in my <a href=\"http:\/\/www.vicdebaie.com\/blog\/lock-and-plot-selected-properties-using-motionbuilders-python\/\">&#8220;lock-and-plot-selected-properties-using-motionbuilders-python&#8221;<\/a> post.<\/span><\/p>\n<p style=\"text-align: center;\">Original post below:<\/p>\n<hr \/>\n<p><span style=\"color: #808080;\"><em><strong>BUG NOTE:<\/strong><\/em><\/span><\/p>\n<p><span style=\"color: #808080;\"><em>I started to write this post with a clear idea in my mind &#8211; Animate the Translation, Rotation and Scale of an object using Python and then have the Translation curves be plotted with Plot Selected Properties.<\/em><\/span><\/p>\n<p><span style=\"color: #808080;\"><em>MotionBuilder 2015 seems to have a bug with Plotting selected properties. It seems that Translation and Rotation are coupled\u00a0when using Plot Selected Properties. The easiest way I can reproduce this bug is through the following steps in MotionBuilder 2015:<\/em><\/span><\/p>\n<ul>\n<li><span style=\"color: #808080;\"><em>Create a marker<\/em><\/span><\/li>\n<li><span style=\"color: #808080;\"><em>Set a key on frame 0<\/em><\/span><\/li>\n<li><span style=\"color: #808080;\"><em>Move to another frame<\/em><\/span><\/li>\n<li><span style=\"color: #808080;\"><em>Translate the marker and set a key<\/em><\/span><\/li>\n<li><span style=\"color: #808080;\"><em>In either the FCurve editor or the \u00a0properties window select the x axis of the translation only<\/em><\/span><\/li>\n<li><span style=\"color: #808080;\"><em>Under key controls select Animation -&gt; Plot Selected (Selected Properties)<\/em><\/span><\/li>\n<\/ul>\n<p><span style=\"color: #808080;\"><em>I would expect that only the X axis of the translation gets plotted (or even <strong>just<\/strong> Translation), but we get all of Translation and Rotation plotted while Scale remains untouched.<\/em><\/span><\/p>\n<p><span style=\"color: #808080;\"><em>If I was to go into Key Controls and choose\u00a0&#8220;Selected Properties&#8221; from the drop down and then reproduce the above mentioned steps we would get Translation and Rotation curves to separate from each other when plotting.<\/em><\/span><\/p>\n<p><img data-attachment-id=\"207\" data-permalink=\"http:\/\/www.vicdebaie.com\/blog\/%ef%bb%bfplotting-selected-properties-using-motionbuilders-python\/keymode\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" data-orig-size=\"256,152\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" data-large-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-207\" src=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?resize=256%2C152\" alt=\"\" width=\"256\" height=\"152\" data-recalc-dims=\"1\" \/><\/p>\n<p><span style=\"color: #808080;\"><em>The Translation&#8217;s 3 axis are still not referenced to or processed as separate curves &#8211; so no plotting on just the X axis. \ud83d\ude41<\/em><\/span><\/p>\n<p><span style=\"color: #808080;\"><em>I am still going to show the code below here because\u00a0there is still some interesting things learned when writing it.<\/em><\/span><\/p>\n<hr \/>\n<p><strong>To follow this post you should run the script that was created for\u00a0<a href=\"http:\/\/www.vicdebaie.com\/blog\/animating-and-setting-keys-with-motionbuilders-python-editor\/\">&#8220;Animating and setting keys with MotionBuilder&#8217;s Python Editor&#8221;<\/a>\u00a0or you can download the final Python script here.<\/strong><\/p>\n<p>OK, now that the <strong>Python script mentioned above has been executed<\/strong> into your MotionBuilder scene it&#8217;s now time to move onward to Plotting selected properties using MotionBuilder&#8217;s Python.<\/p>\n<p><span style=\"color: #808080;\"><strong>A NOTE ON GETTING THE SCRIPT TO WORK CORRECTLY:<\/strong><\/span><\/p>\n<p><span style=\"color: #808080;\"><em>To get the script to run properly you need to set the Key Mode to &#8220;Selected Properties&#8221; within your Key Controls before running the code below.<\/em><\/span><\/p>\n<p><img data-attachment-id=\"207\" data-permalink=\"http:\/\/www.vicdebaie.com\/blog\/%ef%bb%bfplotting-selected-properties-using-motionbuilders-python\/keymode\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" data-orig-size=\"256,152\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" data-large-file=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?fit=256%2C152\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-207\" src=\"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/KeyMode.jpg?resize=256%2C152\" alt=\"\" width=\"256\" height=\"152\" data-recalc-dims=\"1\" \/><\/p>\n<p><span style=\"color: #808080;\"><em>I am researching a way to have\u00a0Python tell MotionBuilder to set the Key Mode to &#8220;Selected Properties&#8221;, as of right now it looks as if &#8220;Key Mode&#8221;\u00a0is only available for the CharacterControls (FullBody, BodyPart, etc.).<\/em><\/span><\/p>\n<p>Selecting\u00a0properties to plot on:<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nfrom pyfbsdk import *\r\n\r\n'''\r\nHere is where we will start the attempt to plot on selected properties\r\n\r\nFirst we are going to animate the rotation and the scaling - this will have animation on all 3 transforms\r\n'''\r\n\r\n# Define the Transaltion to be represented as lmarker.Translation\r\nxTrans, yTrans, zTrans = lmarker.Translation\r\n# Define the Rotation to be represented as lmarker.Rotation\r\nxRot, yRot, zRot = lmarker.Rotation\r\n# Define the Scale to be represented as lmarker.Rotation\r\nxScl, yScl, zScl = lmarker.Scaling\r\n\r\n# Declare that lmarker.Translation, lmarker.Rotation and lmarker.Scale can be animated\r\nlmarker.Translation.SetAnimated(True)\r\nlmarker.Rotation.SetAnimated(True)\r\nlmarker.Scaling.SetAnimated(True)\r\n\r\n# Rotate lmarker.Rotation to 0 on the x axis, 0 on the y axis and 0 on the z axis &#x5B;0, 0, 0]\r\n# Set a key at frame 0 (FBTime(0,0,0,0) - the time is the last 0 in the sequence\r\nlmarker.Rotation.GetAnimationNode().KeyAdd(FBTime(0,0,0,0), &#x5B;0, 0, 0])\r\n\r\n# Rotate lmarker.Rotation to 3600 on the x, y and z axis &#x5B;3600, 3600, 3600].\r\n# I picked 3600 so that we can really see the result\r\n# Set a key at frame 200 (FBTime(0,0,0,200) - the time is the last 0 in the sequence\r\nlmarker.Rotation.GetAnimationNode().KeyAdd(FBTime(0,0,0,200), &#x5B;3600, 3600, 3600])\r\n\r\n# Scale lmarker.Scaling to 0 on the x axis, 0 on the y axis and 0 on the z axis &#x5B;0, 0, 0]\r\nlmarker.Scaling.GetAnimationNode().KeyAdd(FBTime(0,0,0,0), &#x5B;1, 1, 1])\r\n\r\n# Scale lmarker.Scaling to 10 on the x, y and z axis &#x5B;10, 10, 10].\r\n# Set a key at frame 200 (FBTime(0,0,0,200) - the time is the last 0 in the sequence\r\nlmarker.Scaling.GetAnimationNode().KeyAdd(FBTime(0,0,0,100), &#x5B;5, 5, 5])\r\n\r\n# Scale lmarker.Scaling to 0 on the x axis, 0 on the y axis and 0 on the z axis &#x5B;0, 0, 0]\r\nlmarker.Scaling.GetAnimationNode().KeyAdd(FBTime(0,0,0,200), &#x5B;1, 1, 1])\r\n\r\n''' now let's plot only the translation animations and leave the rotation and scaling untouched '''\r\n# Search the objects PropertyList and find &quot;Lcl Translation, Lcl Rotation and Lcl Scaling&quot;\r\nlTranslation = lmarker.PropertyList.Find( 'Lcl Translation' )\r\nlRotation = lmarker.PropertyList.Find( 'Lcl Rotation' )\r\nlScaling = lmarker.PropertyList.Find( 'Lcl Scaling' )\r\n\r\n# Select the marker's Translation fcurves using SetFocus\r\nlTranslation.SetFocus(True)\r\n#Ensure the marker's Rotation and Scaling is not selected\r\nlRotation.SetFocus(False)\r\nlScaling.SetFocus(False)\r\n\r\n# Plot the Marker's Selected Properties    \r\nFBSystem().CurrentTake.PlotTakeOnSelectedProperties( FBTime(0,0,0,1))\r\n<\/pre>\n<p>Once the above script is executed\u00a0we see that the Scale&#8217;s curves were untouched when plotting. Unfortunately the bug in MotionBuilder 2015 will not uncouple the Translation and Rotation using Plot Selected Properties.<\/p>\n<p><strong>&#8220;PropertyList.Find()&#8221; and the &#8220;SetFocus()&#8221; are the interesting parts of this code:<\/strong><\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n# Search the objects PropertyList and find &quot;Lcl Translation, Lcl Rotation and Lcl Scaling&quot;\r\nlTranslation = lmarker.PropertyList.Find( 'Lcl Translation' )\r\nlRotation = lmarker.PropertyList.Find( 'Lcl Rotation' )\r\nlScaling = lmarker.PropertyList.Find( 'Lcl Scaling' )\r\n\r\n# Select the marker's Translation fcurves using SetFocus\r\nlTranslation.SetFocus(True)\r\n#Ensure the marker's Rotation and Scaling is not selected\r\nlRotation.SetFocus(False)\r\nlScaling.SetFocus(False)\r\n<\/pre>\n<p><strong>Here is a simple script to demonstrate &#8220;PropertyList.Find()&#8221; and the &#8220;SetFocus()&#8221; working together to select a property of an object:<\/strong><\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nfrom pyfbsdk import *\r\n\r\n# Get the instance of FBApplication, and clear the scene with FileNew().\r\napp = FBApplication()\r\napp.FileNew()\r\n\r\n# Creat an object that we will animate\r\nlmarker = FBModelMarker('VicMarker')\r\nlmarker.Show = True\r\nlmarker.Size = 1000\r\nlmarker.PropertyList.Find('LookUI').Data=1\r\nlmarker.Color = FBColor(0,1,1)\r\nlmarker.Selected = True\r\n\r\n# Search the objects PropertyList and find &quot;Lcl Translation, Lcl Rotation and Lcl Scaling&quot;\r\nlTranslation = lmarker.PropertyList.Find( 'Lcl Translation' )\r\nlRotation = lmarker.PropertyList.Find( 'Lcl Rotation' )\r\nlScaling = lmarker.PropertyList.Find( 'Lcl Scaling' )\r\n\r\n# Set Properties to be Selected\r\nlTranslation.SetFocus(False)\r\nlRotation.SetFocus(True)\r\nlScaling.SetFocus(False)\r\n<\/pre>\n<p>By playing with the &#8220;SetFocus()&#8221; values (True or False) and rerunning the script &#8211; we see in the FCurve Editor which properties are being selected.<\/p>\n<p>I hope this has helped, I know I learned a lot from this long post.<\/p>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>I ran\u00a0the script I created in &#8220;Animating and setting keys with MotionBuilder&#8217;s Python Editor&#8221;\u00a0and decided that I would use the scene it creates\u00a0to learn how to plot on selected properties in MotionBuilder&#8217;s Python Editor. Update: I found a work around for the bug and it is covered in my &#8220;lock-and-plot-selected-properties-using-motionbuilders-python&#8221; post. Original post below: BUG [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":177,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[4],"tags":[5,7],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3946.jpg?fit=320%2C186","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8pltq-2P","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":216,"url":"http:\/\/www.vicdebaie.com\/blog\/lock-and-plot-selected-properties-using-motionbuilders-python\/","url_meta":{"origin":175,"position":0},"title":"Lock and Plot selected properties using MotionBuilder\u2019s Python.","author":"admin","date":"February 21, 2017","format":false,"excerpt":"\u00a0 I ran into a bug in my previous post\u00a0about Plotting Selected properties - a bug that occurs in MotionBuilder 2015. I got in touch with Discreet and they said it would be easy enough for them to fix the\u00a0bug in an update\/hot fix, but I really wanted to solve\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/motionbuilder_locked_fcurve.jpg?fit=737%2C271&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/motionbuilder_locked_fcurve.jpg?fit=737%2C271&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/motionbuilder_locked_fcurve.jpg?fit=737%2C271&resize=700%2C400 2x"},"classes":[]},{"id":288,"url":"http:\/\/www.vicdebaie.com\/blog\/getting-information-on-motionbuilders-python-with-dir\/","url_meta":{"origin":175,"position":1},"title":"Getting information on MotionBuilder&#8217;s Python with dir","author":"admin","date":"March 13, 2017","format":false,"excerpt":"Trying to figure how things work in MotionBuilder's Python editor is tough. Google and the SDK Help that comes along with MotionBuilder are great, but there is still more help out there - the \"dir\"! :) What does \"dir\" do? The definition I was able to find is \"It gives\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":495,"url":"http:\/\/www.vicdebaie.com\/blog\/using-motionbuilders-python-to-have-one-object-follow-another\/","url_meta":{"origin":175,"position":2},"title":"Using MotionBuilder&#8217;s Python To Have One Object Follow Another","author":"admin","date":"March 8, 2018","format":false,"excerpt":"Here's a quick script that I wrote to have one object follow another. The object that follows will do so on Translation (x and y axis only) as well as Rotation (y axis only). This is the type of set up I use often at work for when I have\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2018\/03\/followtheleader.jpg?fit=1024%2C318&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2018\/03\/followtheleader.jpg?fit=1024%2C318&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2018\/03\/followtheleader.jpg?fit=1024%2C318&resize=700%2C400 2x"},"classes":[]},{"id":172,"url":"http:\/\/www.vicdebaie.com\/blog\/animating-and-setting-keys-with-motionbuilders-python-editor\/","url_meta":{"origin":175,"position":3},"title":"Animating and setting keys with MotionBuilder&#8217;s Python Editor","author":"admin","date":"February 16, 2017","format":false,"excerpt":"Here is the code for a Python script that I wrote dealing animating and setting keys on a selected object within MotionBuilder. Writing this animation script really helped me get a better understanding on how to\u00a0use MotionBuilder's FBTime. The exercise forced me to sit down for about two hours and\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/AnimateWithCode.jpg?fit=600%2C220&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":566,"url":"http:\/\/www.vicdebaie.com\/blog\/motionbuilder-python-parent-constraint-tool\/","url_meta":{"origin":175,"position":4},"title":"MotionBuilder Python Parent Constraint Tool","author":"admin","date":"June 18, 2018","format":false,"excerpt":"Here is a quick post to share a tool I created a little while back. It is designed to help to quickly create Parent Constraints between two objects as well as easily allow the user to bake that constraint down. The script can be found HERE and there are a\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.vicdebaie.com\/blog\/wp-content\/uploads\/2017\/02\/img_3937.jpg?fit=443%2C364&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":419,"url":"http:\/\/www.vicdebaie.com\/blog\/re-visting-motionbuilders-python-dir\/","url_meta":{"origin":175,"position":5},"title":"Re-visting MotionBuilder&#8217;s Python Dir()","author":"admin","date":"October 15, 2017","format":false,"excerpt":"In a previous post I briefly talked about the dir() command within python. The dir() command is an invaluable tool when trying to discover valid attributes. This is going to be a very quick post on how I have been using the print dir() command to list out attribute with\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"http:\/\/www.vicdebaie.com\/blog\/category\/python\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/posts\/175"}],"collection":[{"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/comments?post=175"}],"version-history":[{"count":11,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/posts\/175\/revisions"}],"predecessor-version":[{"id":446,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/posts\/175\/revisions\/446"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/media\/177"}],"wp:attachment":[{"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/media?parent=175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/categories?post=175"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.vicdebaie.com\/blog\/wp-json\/wp\/v2\/tags?post=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}