Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. layout.column().prop(view, "cursor_location", text="Location")
  2.  
  3. class path_mesh_viewer_panel(bpy.types.Panel):
  4. bl_label = "Path Node"
  5. bl_space_type = 'PROPERTIES'
  6. bl_region_type = 'WINDOW'
  7. bl_context = "scene"
  8.  
  9. @classmethod
  10. def poll(cls, context):
  11. return (context.active_object is not None and
  12. context.mode=="EDIT_MESH")
  13.  
  14. def draw(self, context):
  15. layout = self.layout
  16. ob = bpy.context.active_object
  17. me = ob.data
  18. bm = bmesh.from_edit_mesh(me)
  19.  
  20. node_width_key = bm.verts.layers.float['node_width']
  21.  
  22. bm.verts.ensure_lookup_table()
  23. bm.edges.ensure_lookup_table()
  24.  
  25. if bm.select_mode != {'VERT'}:
  26. layout.label("Vertex select only", icon = 'INFO')
  27. return
  28.  
  29. selected = [vert.index for vert in bm.verts if vert.select]
  30. if not selected:
  31. layout.label("Nothing selected", icon = 'INFO')
  32. else:
  33. for i in selected:
  34. # I would like to have UI element here so I can edit the vertex layers
  35. layout.column().prop(bm.verts[i][node_width_key], "", text = 'INFO')
  36.  
  37. Traceback (most recent call last):
  38. File "E:paths-visualizerblenderview.py", line 94, in draw
  39. layout.column().prop(bm.verts[i][node_area_id], "", text = 'INFO')
  40. TypeError: UILayout.prop(): error with argument 1, "data" - Function.data expected a AnyType type, not int
  41.  
  42. location: <unknown location>:-1
  43.  
  44. import bpy
  45. import bmesh
  46.  
  47. class MeshVertLayerList(bpy.types.UIList):
  48. def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
  49. if self.layout_type in {'DEFAULT', 'COMPACT'}:
  50. layout.label(item.name)
  51. layout.prop(item, "value", text="", emboss=False)
  52.  
  53. elif self.layout_type in {'GRID'}:
  54. layout.alignment = 'CENTER'
  55. layout.label(text="")
  56.  
  57.  
  58. class MESH_OT_vert_layer_add(bpy.types.Operator):
  59. """Tooltip"""
  60. bl_label = "Add Vertex Layer"
  61. bl_idname = "mesh.vert_layer_add"
  62.  
  63. @classmethod
  64. def poll(cls, context):
  65. return (context.object is not None and
  66. context.object.type == 'MESH' and
  67. context.object.mode == 'EDIT')
  68.  
  69. def execute(self, context):
  70. bm = bmesh.from_edit_mesh(context.object.data)
  71. try:
  72. bm.verts.layers.float['test']
  73. except KeyError:
  74. bm.verts.layers.float.new('test')
  75. else:
  76. return {'CANCELLED'}
  77.  
  78. return {'FINISHED'}
  79.  
  80.  
  81. class HelloWorldPanel(bpy.types.Panel):
  82. """Creates a Panel in the Object properties window"""
  83. bl_label = "Hello World Panel"
  84. bl_idname = "OBJECT_PT_hello"
  85. bl_space_type = 'PROPERTIES'
  86. bl_region_type = 'WINDOW'
  87. bl_context = "data"
  88.  
  89. @classmethod
  90. def poll(cls, context):
  91. return (context.object is not None and
  92. context.object.type == 'MESH' and
  93. context.object.mode == 'EDIT')
  94.  
  95. def draw(self, context):
  96. layout = self.layout
  97. wm = context.window_manager
  98.  
  99. ob = context.object
  100. me = ob.data
  101. bm = bmesh.from_edit_mesh(me)
  102.  
  103. try:
  104. l = bm.verts.layers.float['test']
  105. except KeyError:
  106. layout.label("No custom data layer 'test'.")
  107. layout.operator("mesh.vert_layer_add")
  108. return
  109.  
  110. wm.mesh_vert_layer.verts.clear()
  111. for v in bm.verts:
  112. if v.select:
  113. item = wm.mesh_vert_layer.verts.add()
  114. item.name = "Vertex #%i" % v.index
  115. item.index = v.index
  116. item.value = v[l]
  117.  
  118. layout.template_list("MeshVertLayerList", "", wm.mesh_vert_layer, "verts", wm.mesh_vert_layer, "index")
  119.  
  120.  
  121. def upd(self, context):
  122. try:
  123. me = context.object.data
  124. bm = bmesh.from_edit_mesh(me)
  125. bm.verts[self.index][bm.verts.layers.float['test']] = self.value
  126. bmesh.update_edit_mesh(me, tessface=False, destructive=False)
  127. except:
  128. pass
  129.  
  130. class MeshVertLayerVert(bpy.types.PropertyGroup):
  131. value = bpy.props.FloatProperty(update=upd)
  132. index = bpy.props.IntProperty()
  133.  
  134.  
  135. class MeshVertLayer(bpy.types.PropertyGroup):
  136. index = bpy.props.IntProperty()
  137. verts = bpy.props.CollectionProperty(type=MeshVertLayerVert)
  138.  
  139. def register():
  140. bpy.utils.register_module(__name__)
  141. bpy.types.WindowManager.mesh_vert_layer = bpy.props.PointerProperty(type=MeshVertLayer)
  142.  
  143.  
  144. def unregister():
  145. bpy.utils.unregister_module(__name__)
  146. del bpy.types.WindowManager.mesh_vert_layer
  147.  
  148.  
  149. if __name__ == "__main__":
  150. register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement