probiner

WriteVEXparams

Jul 23rd, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1. # coding=utf-8
  2. """
  3. docstring with a period.
  4.  
  5. and two lines.
  6. """
  7. pfix = "ppf_"
  8. # parameters type: ["name, label, default, r_min, r_max"]
  9. params = {"f": ["slerp", "crwl"], "v": ["fwd", "up"], "t": ["flip", "init"], "s": ["natt,Normal Att", "tatt,Tangent Att", "matt, Matrix Att"]}
  10.  
  11. print "++ VEX++ \n"
  12. print "// Get UI Parameters \n"
  13.  
  14. for key in params:
  15. if key == "f":
  16. print "// float"
  17. for att in params[key]:
  18. name = att.split(",")[0]
  19. line = "float " + name + " = ch(\"" + pfix + name + "\") ;"
  20. print line
  21. print ""
  22. if key == "v":
  23. print "// vector"
  24. for att in params[key]:
  25. name = att.split(",")[0]
  26. line = "vector " + name + " = chv(\"" + pfix + name + "\") ;"
  27. print line
  28. print ""
  29. if key == "i" or key == "t":
  30. print "// integer"
  31. for att in params[key]:
  32. name = att.split(",")[0]
  33. line = "int " + name + " = chi(\"" + pfix + name + "\") ;"
  34. print line
  35. print ""
  36. elif key == "s":
  37. print "// string"
  38. for att in params[key]:
  39. name = att.split(",")[0]
  40. line = "string " + name + " = chs(\"" + pfix + name + "\") ;"
  41. print line
  42. print ""
  43.  
  44. print "\n // Override with Existing Attributes \n"
  45.  
  46. for key in params:
  47. if key == "f":
  48. print "// float"
  49. for att in params[key]:
  50. name = att.split(",")[0]
  51. line = "if(! hasprimattrib(0, \"" + pfix + name + "\")) f@" + pfix + name + " = " + name + " ;"
  52. print line
  53. print ""
  54.  
  55. elif key == "v":
  56. print "// vector"
  57. for att in params[key]:
  58. name = att.split(",")[0]
  59. line = "if(! hasprimattrib(0, \"" + pfix + name + "\")) v@" + pfix + name + " = " + name + " ;"
  60. print line
  61. print ""
  62.  
  63. elif key == "i" or key == "t":
  64. print "// integer"
  65. for att in params[key]:
  66. name = att.split(",")[0]
  67. line = "if(! hasprimattrib(0, \"" + pfix + name + "\")) i@" + pfix + name + " = " + name + " ;"
  68. print line
  69. print ""
  70.  
  71. elif key == "s":
  72. print "// string"
  73. for att in params[key]:
  74. name = att.split(",")[0]
  75. line = "if(! hasprimattrib(0, \"" + pfix + name + "\") && " + name + " != \"\") s@" + pfix + name + " = " + name + " ;"
  76. print line
  77. print ""
  78.  
  79. print "\n ++ Python UI Create Paramaters ++ \n"
  80. # functions
  81.  
  82.  
  83. def filliterargs(args, maxsize, defaultval, r_min, r_max):
  84. """list(args, defaultval) float(r_min, r_max)."""
  85. for n in range(len(args), 5):
  86. args.append("")
  87. if args[1] == "":
  88. args[1] = args[0].title()
  89. if args[2] == "":
  90. args[2] = str(list(defaultval))
  91. if args[3] == "":
  92. args[3] = str(r_min)
  93. if args[4] == "":
  94. args[4] = str(r_max)
  95. return args
  96.  
  97.  
  98. def fillsingleargs(args, maxsize, defaultval):
  99. """list(args, defaultval) float(r_min, r_max)."""
  100. for n in range(len(args), 5):
  101. args.append("")
  102. if args[1] == "":
  103. args[1] = args[0].title()
  104. if args[2] == "":
  105. args[2] = str(defaultval)
  106. return args
  107.  
  108. print "nd = hou.selectedNodes()[0] # first selected node\n"
  109. print "group = nd.parmTemplateGroup()\n"
  110.  
  111. for key in params:
  112. if key == "f":
  113. print "# float"
  114. for att in params[key]:
  115. args = att.split(",")
  116. args = filliterargs(args, 5, [0], 0, 10)
  117. name, label, val, r_min, r_max = args[0], args[1], args[2], args[3], args[4]
  118. pycode = "group.addParmTemplate(hou.FloatParmTemplate(\"" + pfix + name + "\", \"" + label + "\", 1, " + val + ", " + r_min + ", " + r_max + "))"
  119. print pycode
  120. print ""
  121.  
  122. if key == "v":
  123. print "# vector"
  124. for att in params[key]:
  125. args = att.split(",")
  126. args = filliterargs(args, 5, [0, 0, 0], 0, 10)
  127. name, label, val, r_min, r_max = args[0], args[1], args[2], args[3], args[4]
  128. pycode = "group.addParmTemplate(hou.FloatParmTemplate(\"" + pfix + name + "\", \"" + label + "\", 3, " + val + ", " + r_min + ", " + r_max + "))"
  129. print pycode
  130. print ""
  131.  
  132. if key == "i":
  133. print "# int"
  134. for att in params[key]:
  135. args = att.split(",")
  136. args = filliterargs(args, 5, [0], 0, 10)
  137. name, label, val, r_min, r_max = args[0], args[1], args[2], args[3], args[4]
  138. pycode = "group.addParmTemplate(hou.IntParmTemplate(\"" + pfix + name + "\", \"" + label + "\", 1, " + val + ", " + r_min + ", " + r_max + "))"
  139. print pycode
  140. print ""
  141.  
  142. if key == "t":
  143. print "# toggle"
  144. for att in params[key]:
  145. args = att.split(",")
  146. args = fillsingleargs(args, 3, 0)
  147. name, label, val, r_min, r_max = args[0], args[1], args[2], args[3], args[4]
  148. pycode = "group.addParmTemplate(hou.ToggleParmTemplate(\"" + pfix + name + "\", \"" + label + "\", " + val + "))"
  149. print pycode
  150. print ""
  151.  
  152. if key == "s":
  153. print "# string"
  154. for att in params[key]:
  155. args = att.split(",")
  156. args = filliterargs(args, 3, [""], "", "")
  157. name, label, val, r_min, r_max = args[0], args[1], args[2], args[3], args[4]
  158. pycode = "group.addParmTemplate(hou.StringParmTemplate(\"" + pfix + name + "\", \"" + label + "\", 1, " + val + "))"
  159. print pycode
  160. print ""
  161.  
  162. print "nd.setParmTemplateGroup(group)\n"
  163. print ""
Advertisement
Add Comment
Please, Sign In to add comment