Clean-up: bl_info['tracker_url'] updated to developer.blender.org, some minor other...
authorCoDEmanX <codemanx@gmx.de>
Tue, 4 Feb 2014 01:56:01 +0000 (02:56 +0100)
committerCoDEmanX <codemanx@gmx.de>
Tue, 4 Feb 2014 01:56:01 +0000 (02:56 +0100)
104 files changed:
add_mesh_building_objects/__init__.py
add_mesh_building_objects/add_mesh_balcony.py
add_mesh_building_objects/add_mesh_beam_builder.py
add_mesh_building_objects/add_mesh_sove.py
add_mesh_building_objects/add_mesh_window.py
add_mesh_chain_rope/__init__.py
add_mesh_chain_rope/oscurart_chain_maker.py
add_mesh_chain_rope/oscurart_rope_maker.py
add_mesh_clusters/__init__.py
add_mesh_rocks/__init__.py
add_mesh_symmetrical_empty.py
anim_selection_sets.py
animation_motion_trail.py
btrace/__init__.py
btrace/bTrace.py
cmu_mocap_browser/__init__.py
cursor_control/__init__.py
curve_tools.py
development_class_viewer.py
ewoc_projects_tools/mesh_deathguppie.py
ewoc_projects_tools/mesh_edgegrow.py
ewoc_projects_tools/mesh_edgetune.py
ewoc_projects_tools/mesh_fanconnect.py
ewoc_projects_tools/mesh_floodsel.py
ewoc_projects_tools/mesh_innerweld.py
ewoc_projects_tools/mesh_laprelax.py
ewoc_projects_tools/mesh_paredge.py
ewoc_projects_tools/mesh_quadder.py
ewoc_projects_tools/mesh_selproject.py
ewoc_projects_tools/mesh_straightenplus.py
ewoc_projects_tools/object_decouple.py
ewoc_projects_tools/object_fastorigin.py
ewoc_projects_tools/object_keeptrans.py
geodesic_domes/__init__.py
io_atomblend_utilities/__init__.py
io_directx_bel/__init__.py
io_export_marmalade.py
io_export_md3.py
io_import_BrushSet.py
io_import_LRO_Lola_MGS_Mola_img.py
io_import_lipSync_Importer.py
io_import_sound_to_anim.py
io_import_voodoo_camera.py
io_mesh_gwyddion/__init__.py
io_mesh_xyz/__init__.py
io_scene_cod/__init__.py
io_scene_fpx/__init__.py
io_scene_fpx/fpx_import.py
mesh_discombobulator.py
mesh_easylattice.py
mesh_edge_intersection_tools.py
mesh_edgetools.py
mesh_extra_tools/__init__.py
mesh_extra_tools/mesh_bevel_witold.py
mesh_extra_tools/mesh_bump.py
mesh_extra_tools/mesh_filletplus.py
mesh_extra_tools/mesh_mextrude_plus.py
mesh_extra_tools/mesh_normal_smooth.py
mesh_extrude_along_curve.py
mesh_face_info_select.py
mesh_insert_edge_ring.py
mesh_select_tools/__init__.py
mesh_select_tools/mesh_index_select.py
mesh_select_tools/mesh_select_by_direction.py
mesh_select_tools/mesh_select_by_edge_length.py
mesh_select_tools/mesh_select_by_pi.py
mesh_select_tools/mesh_select_checkered.py
mesh_select_tools/mesh_select_connected_faces.py
mesh_select_tools/mesh_select_innermost.py
mesh_select_tools/mesh_selection_topokit.py
mesh_select_vertex_groups.py
mesh_show_vgroup_weights.py
object_batch_rename_datablocks.py
object_booleans.py
object_creaprim.py
object_drop_to_ground.py
object_laplace_lightning.py
object_mangle_tools.py
object_powerlib.py
online_mat_lib/__init__.py
oscurart_futurism.py
oscurart_mesh_thread.py
particle_hair_lab.py
render_auto_save.py
render_clay.py
render_time.py
render_to_print.py
sequencer_extra_actions/__init__.py
sequencer_jumptocut.py
sequencer_tools/__init__.py
space_view3d_add_surround_cameras.py
space_view3d_enhanced_3d_cursor.py
space_view3d_game_props_visualiser.py
space_view3d_manipulator_Menu.py
space_view3d_objects_panel.py
space_view3d_paint_bprojection.py
space_view3d_quickPrefs.py
space_view3d_simple_align.py
system_keyboard_svg.py
system_project_folder.py
text_editor_pasteall.py
text_intellisense.py
ui_layer_manager.py
wetted_mesh.py

index 19623aa..49b7a81 100644 (file)
@@ -26,10 +26,8 @@ bl_info = {
     "location": "View3D > Add > Mesh > Cad Objects",
     "description": "Add building object types",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
-        "Scripts",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=32711",
+    "wiki_url": "",
+    "tracker_url": "https://developer.blender.org/T32711",
     "category": "Add Mesh"}
 
 
index 4648849..d80f0ee 100644 (file)
@@ -4,7 +4,6 @@ bl_info = {
     "author": "SayPRODUCTIONS",
     "version": (1, 0),
     "blender": (2, 59, 0),
-    "api": 33333,
     "location": "View3D > Add > Mesh > Say3D",
     "description": "Balcony olusturma",
     "warning": "",
index 446009e..1fe695e 100644 (file)
@@ -23,21 +23,22 @@ bl_info = {
     "version": (0, 1, 3),
     "blender": (2, 60, 0),
     "location": "View3D > Add > Mesh",
-    "warning": "Currently under development.", 
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Add_Mesh/BeamBuilder",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?func=detail&aid=26911",
+    "warning": "Currently under development.",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Add_Mesh/BeamBuilder",
+    "tracker_url": "https://developer.blender.org/Taid=26911",
     "category": "Add Mesh"}
 
 #
 # Creates a rectangluar, 'C', 'L', 'T', or 'I' - type beam.
 #
-       
+
 # Version History
 #
 # v0.1 - Script only generates a multi-sided mesh object,
 #           initial release for testing. 3/12/11
 #
-# v0.1.1 - Added 'C'-type beam, updated to work with 
+# v0.1.1 - Added 'C'-type beam, updated to work with
 #           api r35499. 3/13/11
 #
 # v0.1.2 - Totally changed the way beams are created, size
@@ -45,15 +46,15 @@ bl_info = {
 #           (x,y,z). Added ability to taper beams as well.
 #           Add 'L' - type beam
 #           Add 'T' - type beam
-#           Add 'I' - type beam 
+#           Add 'I' - type beam
 #
 # v0.1.3 - Updated to work with api r41226, including using object_utils.py -
 #           part of blender's bpy_extras scripts. This is what handles
 #           the 'align to view', 'location', & 'rotation' options in the
 #           toolshelf when creating mesh. Added wiki & tracker url. Fixed
 #           a few bugs & fixed some debug prints that were still printing
-#           to console.  
-#     
+#           to console.
+#
 
 import bpy
 
@@ -66,17 +67,17 @@ def create_mesh (self, context, name, verts, faces, debug):
     # verts - a list of vertex tuples
     # faces - a list of face tuples
     # debug - debug flag - if true prints data to console
-           
+
     # Actually create mesh and object
     mesh = bpy.data.meshes.new(name)
 
     # add verts & faces to object
     mesh.from_pydata(verts, [], faces)
     mesh.update(calc_edges=True)
-    
+
     if debug:
-        print("create_mesh function called and finished")    
-      
+        print("create_mesh function called and finished")
+
     return object_utils.object_data_add(context, mesh, operator=self)
 
 
@@ -85,8 +86,8 @@ def recalc_normals(debug):
     # parts of this script creates faces that are backwards or
     # have thier normals facing the wrong way, so recalculate them
     # debug - debug flag - if true prints data to console
-    
-    
+
+
     if bpy.context.mode != 'EDIT_MESH':
         bpy.ops.object.editmode_toggle()
         # Recalcuate normals
@@ -98,7 +99,7 @@ def recalc_normals(debug):
         bpy.ops.mesh.normals_make_consistent()
         if debug:
             print("\nEditMode")
-            
+
     return
 
 
@@ -108,21 +109,21 @@ def create_end_faces(verts_list, thick, debug):
     # thick - if true object is hollow, so construct loop of end faces
     #           instead of a solid end face
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # faces - a list of tuples defining the end faces
-    
+
     faces = []
-    
+
     num_of_verts = len(verts_list)
     faces_temp = []
 
     sides = 4 # sides - number of sides to mesh *added because of code re-write
-    
+
     if thick:
-        # has thickness, so build end faces            
+        # has thickness, so build end faces
         num_of_verts = int(num_of_verts / 2)
-        
+
         # Create a list of the front faces
         for index in range(num_of_verts):
             if index == (num_of_verts - 1):
@@ -135,13 +136,13 @@ def create_end_faces(verts_list, thick, debug):
                 faces_temp.append(verts_list[index+1])
                 faces_temp.append(verts_list[index+num_of_verts+1])
                 faces_temp.append(verts_list[index+num_of_verts])
-                        
+
             faces.append(tuple(faces_temp))
-            faces_temp = []                
+            faces_temp = []
     else:
         #this code may not be needed, depends upon rewrite...
         if sides > 4:
-            # more than 4 sides, so replace last list item (center vert) with first list item 
+            # more than 4 sides, so replace last list item (center vert) with first list item
             # for looping and building faces
             center_vert = verts_list[num_of_verts - 1]
             verts_list[num_of_verts - 1] = verts_list[0]
@@ -152,20 +153,20 @@ def create_end_faces(verts_list, thick, debug):
                 faces_temp.append(center_vert)
                 faces.append(tuple(faces_temp))
                 faces_temp = []
-        
+
         else:
             # create 1 end face
             for index in range(num_of_verts):
                 faces_temp.append(verts_list[index])
-            faces.append(tuple(faces_temp))               
-    
+            faces.append(tuple(faces_temp))
+
     # print debug info to console
     if debug:
         print("\ncreate_end_faces Function Starts")
         print("\n End Face Verts list :", verts_list)
         print("\n End Faces: ", faces)
         print("\ncreate_end_faces Function Ends\n\n")
-            
+
     return faces
 
 
@@ -176,26 +177,26 @@ def create_side_faces(front_verts, back_verts, debug):
     # front_verts - a list of front face vertices
     # back_verts - a list of back face vertices
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # new_faces - a list of tuples defining the faces bridged between front_verts & back_verts
-    
+
     # Number of faces to create
     num_of_faces = (len(front_verts))
     new_faces = []
-    
+
     # add first value to end of lists for looping
     front_verts.append(front_verts[0])
     back_verts.append(back_verts[0])
-    
-    # Build the new_faces list with tuples defining each face    
+
+    # Build the new_faces list with tuples defining each face
     for index in range(num_of_faces):
         facestemp = (front_verts[index], front_verts[index+1], back_verts[index+1], back_verts[index])
         new_faces.append(facestemp)
-    
+
     # print debug info to console
     if debug:
-        print("\ncreate_side_faces Function Starts") 
+        print("\ncreate_side_faces Function Starts")
         print("\n Number of faces to create: ", num_of_faces)
         print("\n New faces :", new_faces)
         print("\ncreate_side_faces Function Ends\n\n")
@@ -205,24 +206,24 @@ def create_side_faces(front_verts, back_verts, debug):
 
 def calc_end_verts(size, y_off, thick, debug):
     # Calculates vertex location for end of mesh
-    
+
     # size - tuple of x,y,z dimensions of mesh to create
     # y_off - y offset, lets function know where to create verts on y-axis
     # thick - thickness, if not zero this is the thickness of a hollow mesh
     #         with the inner faces inset from size dimensions
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # verts - a list of tuples of the x,y,z location of each vertex
-    
+
     verts = []
-    
+
     if debug:
         print ("\ncalc_end_verts Function Starts\n")
         print("\nsize = ",size)
         print("y_off = ",y_off)
-        
-    # Create vertices by calculation 
+
+    # Create vertices by calculation
     x_pos = 0 + size[0]/2
     z_pos = 0 + size[2]/2
     verts.append((x_pos, y_off, z_pos))
@@ -230,24 +231,24 @@ def calc_end_verts(size, y_off, thick, debug):
     x_pos = 0 - size[0]/2
     z_pos = 0 + size[2]/2
     verts.append((x_pos, y_off, z_pos))
-    
+
     x_pos = 0 - size[0]/2
     z_pos = 0 - size[2]/2
-    verts.append((x_pos, y_off, z_pos)) 
-    
+    verts.append((x_pos, y_off, z_pos))
+
     x_pos = 0 + size[0]/2
     z_pos = 0 - size[2]/2
-    verts.append((x_pos, y_off, z_pos))   
-         
+    verts.append((x_pos, y_off, z_pos))
+
     if thick:
         # has thickness, so calculate inside vertices
-        #### not too sure about this, but it does work the way the 
+        #### not too sure about this, but it does work the way the
         #### solidify modifier works, so leaving as is for now
         x_pos = size[0] - (thick * 2)
         z_pos = size[2] - (thick * 2)
         size = (x_pos, y_off, z_pos)
-        
-        # Create vertices by calculation 
+
+        # Create vertices by calculation
         x_pos = 0 + size[0]/2
         z_pos = 0 + size[2]/2
         verts.append((x_pos, y_off, z_pos))
@@ -255,19 +256,19 @@ def calc_end_verts(size, y_off, thick, debug):
         x_pos = 0 - size[0]/2
         z_pos = 0 + size[2]/2
         verts.append((x_pos, y_off, z_pos))
-    
+
         x_pos = 0 - size[0]/2
         z_pos = 0 - size[2]/2
-        verts.append((x_pos, y_off, z_pos)) 
-    
+        verts.append((x_pos, y_off, z_pos))
+
         x_pos = 0 + size[0]/2
         z_pos = 0 - size[2]/2
-        verts.append((x_pos, y_off, z_pos))          
-            
+        verts.append((x_pos, y_off, z_pos))
+
     if debug:
         print ("verts :", verts)
         print ("\ncalc_end_verts Function Ends.\n\n")
-    
+
     return verts
 
 
@@ -276,35 +277,35 @@ def adjust_c_beam_verts(verts, taper, debug):
     # verts - a list of tuples of vertex locations for one end of beam
     # taper - % to taper outside verts by
     # debug - if true values are printed to console for debugging
-    
+
     # returns:
     # verts - the corrected list of tuples of the adjustec vertex locations
-    
+
     # This function corrects vertex locations to properly shape the
-    # beam, because creating a c beam uses the same code as the 
+    # beam, because creating a c beam uses the same code as the
     # create_rectangular_beam function does. Therefore the 5th & 6th
     # vertice's z location needs to be changed to match the 1st & 2nd
     # vertice's z location.
 
     vert_orig = verts[0]
-    
+
     # get 3rd value, the z location
-    vert_z = vert_orig[2] 
-    # get 1st value, the x location, for vert taper calcs    
+    vert_z = vert_orig[2]
+    # get 1st value, the x location, for vert taper calcs
     vert_x = vert_orig[0]
-  
+
     # vert_z has the z value to be used in the 5th & 6th verts
-    # get value of 5th vert 
+    # get value of 5th vert
     vert_temp = verts[4]
-    
 
-    
+
+
     # calculate the amount of taper, updating vert_x
     # with the new value calculated.
     vert_x = calc_taper(vert_orig[0], vert_temp[0], taper)
-    
+
     vert_new = (vert_x,vert_temp[1],vert_z)
-    
+
     if debug:
         print ("\nadjust_c_beam_verts function starting")
         print ("vert_orig = ",vert_orig[0])
@@ -314,39 +315,39 @@ def adjust_c_beam_verts(verts, taper, debug):
 
     # update 5th vert with new value
     verts[4] = vert_new
-    
+
     vert_orig = verts[1]
-    
+
     # get 3rd value, the z location
-    vert_z = vert_orig[2] 
-    # get 1st value, the x location, for vert taper calcs    
+    vert_z = vert_orig[2]
+    # get 1st value, the x location, for vert taper calcs
     vert_x = vert_orig[0]
     # vert_z has the z value to be used in the 5th & 6th verts
-    # get value of 5th vert 
+    # get value of 5th vert
     vert_temp = verts[5]
-    
 
-    
+
+
     # calculate the amount of taper, updating vert_x
     # with the new value calculated.
     vert_x = calc_taper(vert_orig[0], vert_temp[0], taper)
-    
+
     vert_new = (vert_x,vert_temp[1],vert_z)
-    
+
     if debug:
         print ("vert_orig = ",vert_orig[0])
         print ("vert_x = ",vert_x)
         print("vert_temp =",vert_temp)
         print("vert_new =",vert_new)
-    
+
     # update 6th vert with new value
-    verts[5] = vert_new    
-    
+    verts[5] = vert_new
+
     if debug:
         print("\n adjust_c_beam_verts function ending")
         print("verts =", verts)
-        
-    return verts        
+
+    return verts
 
 
 def calc_taper(outer_vert, inner_vert, taper):
@@ -355,188 +356,188 @@ def calc_taper(outer_vert, inner_vert, taper):
     # outer_vert - the outside vertex
     # inner_vert - the inside vertex to be moved
     # taper - percentage to move vert
-    
+
     # returns:
     # adjusted_vert - the calculated vertex
 
     #print("outer_vert =",outer_vert,"inner_vert",inner_vert)
-    
+
     # taper values range from 0 to 100 for UI, but for calculations
     # this value needs to be flipped, ranging from 100 to 0
     taper = 100 - taper
-    
+
     # calcuate taper & adjust vertex
     vert_delta = inner_vert - outer_vert
-    adjusted_vert = outer_vert + ((vert_delta/100) * taper)    
-    
-    #print("adjusted_vert =", adjusted_vert)    
+    adjusted_vert = outer_vert + ((vert_delta/100) * taper)
+
+    #print("adjusted_vert =", adjusted_vert)
     return adjusted_vert
 
-    
+
 def create_rectangular_beam(size, thick, debug):
     # Creates a rectangular beam mesh object
     # size - tuple of x,y,z dimensions of box
-    # thick - thickness, if not zero this is the thickness of a hollow 
+    # thick - thickness, if not zero this is the thickness of a hollow
     #         box with inner faces inset from size dimensions
     # debug - if true prints values from this function to console
-    
-    # returns: 
+
+    # returns:
     # verts_final - a list of tuples of the x, y, z, location of each vertice
-    # faces_final - a list of tuples of the vertices that make up each face  
-    
+    # faces_final - a list of tuples of the vertices that make up each face
+
     # Create temporarylists to hold vertices locations
     verts_front_temp=[]
     verts_back_temp=[]
-    
+
     #calculate y offset from center for front vertices
-    y_off = size[1]/2 
-      
-        
+    y_off = size[1]/2
+
+
     # Create front vertices by calculation
     verts_front_temp = calc_end_verts(size, y_off, thick, debug)
-    
+
     # re-calculate y offset from center for back vertices
     y_off = 0 - y_off
-    
+
     # Create back vertices by calculation
     verts_back_temp = calc_end_verts(size, y_off, thick, debug)
-    
+
     # Combine all vertices into a final list of tuples
-    verts_final = verts_front_temp + verts_back_temp   
-           
+    verts_final = verts_front_temp + verts_back_temp
+
     # Print debug info to console
     if debug:
         print("\ncreate_multi_side_box Function Start")
         print("\n Front vertices :", verts_front_temp)
         print("\n Back vertices:", verts_back_temp)
         print("\n All vertices:", verts_final)
-                      
+
     # Create front face
     faces_front_temp = []
     verts_front_list = []
     numofverts = len(verts_front_temp)
-    
+
     # Build vertex list
     for index in range(numofverts):
         verts_front_list.append(index)
-       
-    faces_front_temp = create_end_faces(verts_front_list, thick, debug) 
-    
+
+    faces_front_temp = create_end_faces(verts_front_list, thick, debug)
+
     # Create back face
     faces_back_temp = []
     verts_back_list = []
     numofverts = len(verts_back_temp)
-    
+
     # Build vertex list
     for index in range(numofverts):
         verts_back_list.append(index + len(verts_back_temp))
-        
+
     faces_back_temp = create_end_faces(verts_back_list, thick, debug)
 
     # Create side faces
     faces_side_temp = []
-    
+
     # better code needed here???
     if thick:
         # Object has thickness, create list of outside vertices
         numofverts = len(verts_front_list)
         verts_front_temp = verts_front_list[0:int(numofverts/2)]
         verts_back_temp = verts_back_list[0:int(numofverts/2)]
-        
+
         faces_side_temp = create_side_faces(verts_front_temp, verts_back_temp, debug)
-        
+
         # Create list of inside vertices
         verts_front_temp = verts_front_list[int(numofverts/2):numofverts]
         verts_back_temp = verts_back_list[int(numofverts/2):numofverts]
-        
-        faces_side_temp += create_side_faces(verts_front_temp, verts_back_temp, debug)            
+
+        faces_side_temp += create_side_faces(verts_front_temp, verts_back_temp, debug)
     else:
         # Create list of only outside faces
         faces_side_temp = create_side_faces(verts_front_list, verts_back_list, debug)
-    
-    # Combine all faces 
+
+    # Combine all faces
     faces_final = faces_front_temp + faces_back_temp + faces_side_temp
-    
-    # print debug info to console   
+
+    # print debug info to console
     if debug:
         print("\ncreate_multi_side_box Function")
         print("\nAll faces :",faces_final)
         print("\ncreate_multi_side_box Function Ends\n\n")
-    
+
     return verts_final, faces_final
 
 
 def create_C_beam(size, thick, taper, debug):
-    # Creates a C or U shaped mesh beam object 
+    # Creates a C or U shaped mesh beam object
     # size - tuple of x,y,z dimensions of beam
     # thick - thickness, the amount the inner faces will be
     #           inset from size dimensions
     # taper - % to taper outside edges by
     # debug - if true prints values from this function to console
-    
-    # returns: 
+
+    # returns:
     # verts_final - a list of tuples of the x, y, z, location of each vertice
     # faces_final - a list of tuples of the vertices that make up each face
-    
+
     # print debug info to console
     if debug:
         print ("\ncreate_C_beam - function called")
 
     # Get y offset of vertices from center
     y_off = size[1] / 2
-    
+
     # Create temporarylists to hold vertices locations
     verts_front_temp=[]
     verts_back_temp=[]
-    
+
     # Create front vertices by calculation
     verts_front_temp = calc_end_verts(size, y_off, thick, debug)
     # Additional adjustment to the verts needed - 5th & 6th verts
     # needed because the calc_end_verts creates a rectangluar beam
     # the insides are inset, for a U channel we need the inside
-    # verts on the open end to match the z-loc of the outside verts 
-    verts_front_temp = adjust_c_beam_verts(verts_front_temp, taper, debug)       
-    
+    # verts on the open end to match the z-loc of the outside verts
+    verts_front_temp = adjust_c_beam_verts(verts_front_temp, taper, debug)
+
     # recalculate y_off for other end vertices
     y_off = 0 - y_off
-    
+
     # Create back vertices by calculation
     verts_back_temp = calc_end_verts(size, y_off, thick, debug)
     # Additional adjustment to the verts needed - the z location
-    verts_back_temp = adjust_c_beam_verts(verts_back_temp, taper, debug)  
-    
+    verts_back_temp = adjust_c_beam_verts(verts_back_temp, taper, debug)
+
     # Combine all vertices into a final list of tuples
-    verts_final = verts_front_temp + verts_back_temp   
-  
+    verts_final = verts_front_temp + verts_back_temp
+
     # Print debug info to console
     if debug:
         print("\ncreate_C_beam function start")
         print("\n Front vertices :", verts_front_temp)
         print("\n Back vertices:", verts_back_temp)
         print("\n All vertices:", verts_final)
-    
+
     # Create front face
     faces_front_temp = []
     verts_front_list = []
     numofverts = len(verts_front_temp)
-    
+
     # Build vertex list
     for index in range(numofverts):
         verts_front_list.append(index)
-    # problem area   
-    faces_front_temp = create_end_faces(verts_front_list, thick, debug) 
+    # problem area
+    faces_front_temp = create_end_faces(verts_front_list, thick, debug)
     # Remove 1st face - only 3 end faces needed
     faces_front_temp = faces_front_temp[1:4]
-        
+
     # Create back face
     faces_back_temp = []
     verts_back_list = []
     numofverts = len(verts_back_temp)
-    
+
     # Build vertex list
     for index in range(numofverts):
         verts_back_list.append(index + len(verts_back_temp))
-      
+
     faces_back_temp = create_end_faces(verts_back_list, thick, debug)
     # Remove 1st face - only 3 end faces needed
     faces_back_temp = faces_back_temp[1:4]
@@ -545,34 +546,34 @@ def create_C_beam(size, thick, taper, debug):
     numofverts = (len(verts_front_list))
     verts_front_temp = verts_front_list[0:int(numofverts/2)]
     verts_back_temp = verts_back_list[0:int(numofverts/2)]
-        
+
     faces_side_temp = create_side_faces(verts_front_temp, verts_back_temp, debug)
     # create_side_faces creates 4 outside faces, we only want 3
     # so remove the 1st face
     faces_side_temp  = faces_side_temp[1:]
-    
+
     # Create list of inside vertices for the 3 inside faces
     verts_front_temp = verts_front_list[int(numofverts/2):numofverts]
     verts_back_temp = verts_back_list[int(numofverts/2):numofverts]
-        
+
     faces_side_temp += create_side_faces(verts_front_temp, verts_back_temp, debug)
     # create_side_faces creates 4 outside faces, we only want 3
     # so remove the 1st face
     faces_side_temp  = faces_side_temp[0:3] + faces_side_temp[4:]
-    
+
     # fill in top two faces
     faces_side_temp.append((0, 4, 12, 8))
-    faces_side_temp.append((5, 1, 9, 13))    
-    
-    # Combine all faces 
+    faces_side_temp.append((5, 1, 9, 13))
+
+    # Combine all faces
     faces_final = faces_front_temp + faces_back_temp + faces_side_temp
 
     # Print debug info to console
     if debug:
-        print("\ncreate_C_beam function") 
+        print("\ncreate_C_beam function")
         print("\nAll faces =", faces_final)
         print("\ncreate_C_beam function ending")
-         
+
     return verts_final, faces_final
 
 
@@ -583,11 +584,11 @@ def create_L_beam(size, thick, taper, debug):
     #           inset from size dimensions
     # taper - % to taper outside edges by
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # verts_final - a list of tuples of the x, y, z, location of each vertice
     # faces_final - a list of tuples of the vertices that make up each face
-    
+
     if debug:
         print("\ncreate_L_beam function starting")
 
@@ -595,11 +596,11 @@ def create_L_beam(size, thick, taper, debug):
     x_off = size[0] / 2
     y_off = size[1] / 2
     z_off = size[2] / 2
-    
+
     # Create temporarylists to hold vertices locations
     verts_front_temp=[]
     verts_back_temp=[]
-    
+
     # Create front vertices by calculation
     verts_front_temp = [(0 - x_off, 0 - y_off, z_off), \
         (0 - (x_off - thick), 0 - y_off, z_off), \
@@ -607,16 +608,16 @@ def create_L_beam(size, thick, taper, debug):
         (x_off, 0 - y_off, 0 - (z_off - thick)), \
         (x_off, 0 - y_off, 0 - z_off), \
         (0 - x_off, 0 - y_off, 0 - z_off)]
-    
+
     # Adjust taper
     vert_outside = verts_front_temp[0]
     vert_inside = verts_front_temp[1]
     verts_front_temp[1] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1],vert_inside[2]]
-   
+
     vert_outside = verts_front_temp[4]
     vert_inside = verts_front_temp[3]
     verts_front_temp[3] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     # Create back vertices by calculation
     verts_back_temp = [(0 - x_off, y_off, z_off), \
         (0 - (x_off - thick), y_off, z_off), \
@@ -628,48 +629,48 @@ def create_L_beam(size, thick, taper, debug):
     # Adjust taper
     vert_outside = verts_back_temp[0]
     vert_inside = verts_back_temp[1]
-    verts_back_temp[1] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1],vert_inside[2]]   
-    
+    verts_back_temp[1] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1],vert_inside[2]]
+
     vert_outside = verts_back_temp[4]
     vert_inside = verts_back_temp[3]
-    verts_back_temp[3] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))] 
-    
+    verts_back_temp[3] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
+
     verts_final = verts_front_temp + verts_back_temp
-    
+
     if debug:
         print("\n verts_front_temp =", verts_front_temp)
         print("\n verts_back_temp =", verts_back_temp)
         print("\n verts_final =", verts_final)
-    
+
     # define end faces, only 4 so just coded
     faces_front_temp = []
     faces_back_temp = []
     faces_side_temp = []
-    
+
     faces_front_temp = [(0, 1, 2, 5), (2, 3, 4, 5)]
     faces_back_temp = [(6, 7, 8, 11), (8, 9, 10, 11)]
-    
+
     verts_front_list = []
     verts_back_list = []
     num_of_verts = len(verts_front_temp)
-    
+
     # build lists of back and front verts for create_side_faces function
     for index in range(num_of_verts):
         verts_front_list.append(index)
     for index in range(num_of_verts):
         verts_back_list.append(index  + 6)
-    
+
     faces_side_temp = create_side_faces(verts_front_list, verts_back_list, debug)
-        
+
     faces_final = faces_front_temp + faces_back_temp + faces_side_temp
-    
+
     if debug:
         print("\n faces_front_temp =", faces_front_temp)
         print("\n faces_back_temp =", faces_back_temp)
         print("\n faces_side_temp =", faces_side_temp)
         print("\n faces_final =", faces_final)
         print("\ncreate_L_beam function ending")
-        
+
     return verts_final, faces_final
 
 
@@ -681,12 +682,12 @@ def create_T_beam(size, thick, taper, debug):
     #           inset from size dimensions
     # taper - % to taper outside edges by
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # verts_final - a list of tuples of the x, y, z, location of each vertice
     # faces_final - a list of tuples of the vertices that make up each face
     debug = 0
-    
+
     if debug:
         print("\ncreate_T_beam function starting")
 
@@ -699,7 +700,7 @@ def create_T_beam(size, thick, taper, debug):
     # Create temporarylists to hold vertices locations
     verts_front_temp=[]
     verts_back_temp=[]
-    
+
     # Create front vertices by calculation
     verts_front_temp = [(0 - x_off, 0 - y_off, z_off), \
         (0 - thick_off, 0 - y_off, z_off), \
@@ -719,14 +720,14 @@ def create_T_beam(size, thick, taper, debug):
 
     vert_outside = verts_front_temp[3]
     vert_inside = verts_front_temp[4]
-    verts_front_temp[4] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]  
+    verts_front_temp[4] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
 
     # Adjust taper of bottom of beam, so 0 the center
     # now becomes vert_outside, and vert_inside is calculated
     # 1/2 way towards center
     vert_outside = (0, 0 - y_off, 0 - z_off)
     vert_inside = verts_front_temp[6]
-    verts_front_temp[6] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1], vert_inside[2]]  
+    verts_front_temp[6] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1], vert_inside[2]]
 
     vert_outside = (0, 0 - y_off, 0 - z_off)
     vert_inside = verts_front_temp[7]
@@ -752,49 +753,49 @@ def create_T_beam(size, thick, taper, debug):
     vert_outside = verts_back_temp[3]
     vert_inside = verts_back_temp[4]
     verts_back_temp[4] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     # Adjust taper of bottom of beam, so 0 the center
     # now becomes vert_outside, and vert_inside is calculated
     # 1/2 way towards center
     vert_outside = (0, 0 - y_off, 0 - z_off)
     vert_inside = verts_back_temp[6]
-    verts_back_temp[6] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1], vert_inside[2]]  
+    verts_back_temp[6] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1], vert_inside[2]]
 
     vert_outside = (0, 0 - y_off, 0 - z_off)
     vert_inside = verts_back_temp[7]
     verts_back_temp[7] = [(calc_taper(vert_outside[0], vert_inside[0], taper)), vert_inside[1], vert_inside[2]]
-        
+
     verts_final = verts_front_temp + verts_back_temp
-    
-    
+
+
     # define end faces, only 8 so just coded
     faces_front_temp = []
     faces_back_temp = []
     faces_side_temp = []
-    
+
     faces_front_temp = [(0, 1, 8, 9), (1, 2, 5, 8), \
         (2, 3, 4, 5), (5, 6, 7, 8)]
-        
+
     faces_back_temp = [(10, 11, 18, 19), (11, 12, 15, 18), \
         (12, 13, 14, 15), (15, 16, 17,  18)]
 
     verts_front_list = []
     verts_back_list = []
     num_of_verts = len(verts_front_temp)
-    
+
     # build lists of back and front verts for create_side_faces function
     for index in range(num_of_verts):
         verts_front_list.append(index)
     for index in range(num_of_verts):
         verts_back_list.append(index  + 10)
-    
+
     faces_side_temp = create_side_faces(verts_front_list, verts_back_list, debug)
-    
+
     faces_final = faces_front_temp + faces_back_temp + faces_side_temp
 
     if debug:
-        print("\ncreate_T_beam function ending")    
-        
+        print("\ncreate_T_beam function ending")
+
     return verts_final, faces_final
 
 
@@ -805,12 +806,12 @@ def create_I_beam(size, thick, taper, debug):
     #           inset from size dimensions
     # taper - % to taper outside edges by
     # debug - if true prints values from this function to console
-    
+
     # returns:
     # verts_final - a list of tuples of the x, y, z, location of each vertice
     # faces_final - a list of tuples of the vertices that make up each face
     debug = 0
-    
+
     if debug:
         print("\ncreate_I_beam function starting")
 
@@ -823,7 +824,7 @@ def create_I_beam(size, thick, taper, debug):
     # Create temporarylists to hold vertices locations
     verts_front_temp=[]
     verts_back_temp=[]
-    
+
     # Create front vertices by calculation
     verts_front_temp = [(0 - x_off, 0 - y_off, z_off), \
         (0 - thick_off, 0 - y_off, z_off), \
@@ -841,20 +842,20 @@ def create_I_beam(size, thick, taper, debug):
         (0 - thick_off, 0 - y_off, 0 - z_off + thick), \
         (0 - thick_off, 0 - y_off, z_off - thick), \
         (0 - x_off, 0 - y_off, z_off - thick)]
-    
+
     # Adjust taper
     vert_outside = verts_front_temp[0]
     vert_inside = verts_front_temp[15]
     verts_front_temp[15] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_front_temp[3]
     vert_inside = verts_front_temp[4]
     verts_front_temp[4] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_front_temp[8]
     vert_inside = verts_front_temp[7]
     verts_front_temp[7] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_front_temp[11]
     vert_inside = verts_front_temp[12]
     verts_front_temp[12] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
@@ -881,19 +882,19 @@ def create_I_beam(size, thick, taper, debug):
     vert_outside = verts_back_temp[0]
     vert_inside = verts_back_temp[15]
     verts_back_temp[15] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_back_temp[3]
     vert_inside = verts_back_temp[4]
     verts_back_temp[4] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_back_temp[8]
     vert_inside = verts_back_temp[7]
     verts_back_temp[7] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
-    
+
     vert_outside = verts_back_temp[11]
     vert_inside = verts_back_temp[12]
-    verts_back_temp[12] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]       
+    verts_back_temp[12] = [vert_inside[0], vert_inside[1], (calc_taper(vert_outside[2], vert_inside[2], taper))]
+
     verts_final = verts_front_temp + verts_back_temp
 
 
@@ -901,65 +902,65 @@ def create_I_beam(size, thick, taper, debug):
     faces_front_temp = []
     faces_back_temp = []
     faces_side_temp = []
-    
+
     faces_front_temp = [(0, 1, 14, 15), (1, 2, 5, 14), \
         (2, 3, 4, 5), (6, 7, 8, 9), \
         (6, 9, 10, 13), (12, 13, 10, 11), \
         (5, 6, 13, 14)]
-        
+
     faces_back_temp = [(16, 17, 30, 31), (17, 18, 21, 30), \
         (18, 19, 20, 21), (22, 23, 24, 25), \
         (22, 25, 26, 29), (28, 29, 26, 27), \
         (21, 22, 29, 30)]
-        
+
     verts_front_list = []
     verts_back_list = []
     num_of_verts = len(verts_front_temp)
-    
+
     # build lists of back and front verts for create_side_faces function
     for index in range(num_of_verts):
         verts_front_list.append(index)
     for index in range(num_of_verts):
         verts_back_list.append(index  + 16)
-    
+
     faces_side_temp = create_side_faces(verts_front_list, verts_back_list, debug)
-    
-    faces_final = faces_front_temp + faces_back_temp + faces_side_temp   
-    
+
+    faces_final = faces_front_temp + faces_back_temp + faces_side_temp
+
     if debug:
         print("\ncreate_I_beam function ending")
-    
+
     return verts_final, faces_final
 
-        
+
 
 # Define "Add_Rectangular_Beam" operator
-########### Needs Work ###############        
+########### Needs Work ###############
 class Add_Rectangular_Beam(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_rectangle_add"
     bl_label = "Add Rectangluar Beam"
     bl_description = "Create a Rectangular Beam mesh"
     bl_options = {'REGISTER', 'UNDO'}
-        
+
     mesh_z_size = bpy.props.FloatProperty(name = "Height(z)",
         description = "Height (along the z-axis) of mesh",
         min = 0.01,
         max = 100,
         default = 1)
-        
+
     mesh_x_size = bpy.props.FloatProperty(name = "Width(x)",
         description = "Width (along the x-axis) of mesh",
         min = 0.01,
         max = 100,
         default = .5)
-        
+
     mesh_y_size = bpy.props.FloatProperty(name = "Length(y)",
         description = "Length (along y-axis) of mesh",
         min = 0.01,
         max = 100,
         default = 2)
-            
+
     thick_bool = bpy.props.BoolProperty(name = "Hollow",
         description = "Create a hollow mesh with a defined thickness",
         default = True)
@@ -969,7 +970,7 @@ class Add_Rectangular_Beam(bpy.types.Operator):
         min = 0.01,
         max = 1,
         default = 0.1)
-        
+
     # generic transform props
     # required by object_utils.py - part of blender's
     # code and is what handles alignment amongst other
@@ -986,7 +987,7 @@ class Add_Rectangular_Beam(bpy.types.Operator):
             name="Rotation",
             subtype='EULER',
             )
-            
+
     # Define tool parameter layout
     def draw(self, context):
         layout = self.layout
@@ -1000,58 +1001,58 @@ class Add_Rectangular_Beam(bpy.types.Operator):
         col = layout.column()
         col.prop(self, 'location')
         col.prop(self, 'rotation')
-                
+
     def execute(self, context):
         # debug flag - True prints debug info to console
         debug = 0
-        
+
         size = (self.mesh_x_size, self.mesh_y_size, self.mesh_z_size)
         if self.thick_bool is True:
             thick = self.thick
         else:
             thick = 0
-                        
+
         verts, faces = create_rectangular_beam(size, thick, debug)
-            
+
         if debug:
             print("\nCreated Verts:", verts)
             print("\nCreated Faces:", faces)
-                
+
         create_mesh(self, context, "Rectangular Beam", verts, faces, debug)
-        
-        recalc_normals(debug)        
-        
+
+        recalc_normals(debug)
+
         return {'FINISHED'}
 
 '''
     def invoke(self, context, event):
         #self.align_matrix = align_matrix(context)
         self.execute(context)
-        return {'FINISHED'}    
+        return {'FINISHED'}
 '''
 
 
-# Define "Add_C_Beam" operator        
+# Define "Add_C_Beam" operator
 class Add_C_Beam(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_c_beam_add"
     bl_label = "Add C or U Channel"
     bl_description = "Create a C or U channel mesh"
     bl_options = {'REGISTER', 'UNDO'}
-    
-        
+
+
     mesh_z_size = bpy.props.FloatProperty(name = "Height(z)",
         description = "Height (along the z-axis) of mesh",
         min = 0.01,
         max = 100,
         default = 1)
-        
+
     mesh_x_size = bpy.props.FloatProperty(name = "Width(x)",
         description = "Width (along the x-axis) of mesh",
         min = 0.01,
         max = 100,
         default = .5)
-        
+
     mesh_y_size = bpy.props.FloatProperty(name = "Length(y)",
         description = "Length (along y-axis) of mesh",
         min = 0.01,
@@ -1068,12 +1069,12 @@ class Add_C_Beam(bpy.types.Operator):
         description = "Percentage to taper outside edges, 0 = no taper, 100 = full taper",
         min = 0,
         max = 100,
-        default = 0)        
+        default = 0)
 
     type = bpy.props.BoolProperty(name = "U-shaped",
-        description = "Create the beam in a U orientation rather than the defualt C orientation", 
+        description = "Create the beam in a U orientation rather than the defualt C orientation",
         default = True)
-                
+
     # generic transform props
     # required by object_utils.py - part of blender's
     # code and is what handles alignment amongst other
@@ -1104,12 +1105,12 @@ class Add_C_Beam(bpy.types.Operator):
         col = layout.column()
         col.prop(self, 'location')
         col.prop(self, 'rotation')
-        
-                
+
+
     def execute(self, context):
         # debug flag - True prints debug info to console
         debug = 0
-        
+
         # if type == true beam is U chanel, otherwise it's a C
         if self.type:
             size = (self.mesh_x_size, self.mesh_y_size, self.mesh_z_size)
@@ -1117,17 +1118,17 @@ class Add_C_Beam(bpy.types.Operator):
         else:
             size = (self.mesh_z_size, self.mesh_y_size, self.mesh_x_size)
             mesh_name = "C Beam"
-                        
-        verts, faces = create_C_beam(size, self.thick, self.taper, debug)      
+
+        verts, faces = create_C_beam(size, self.thick, self.taper, debug)
 
         if debug:
             print("\nCreated Verts:", verts)
             print("\nCreated Faces:", faces)
-                
+
         create_mesh(self, context, mesh_name, verts, faces, debug)
-        
+
         recalc_normals(debug)
-           
+
         if not self.type:
         # C-type beam is actually created as a u-type beam
         # so rotate 90 degrees on y-axis to make a c-type
@@ -1136,7 +1137,7 @@ class Add_C_Beam(bpy.types.Operator):
         # rotation value is in radians
             bpy.ops.transform.rotate(value=[1.570796], constraint_axis=[False, True, False])
             bpy.ops.object.transform_apply(location=False, rotation =True, scale=False)
-        
+
         return {'FINISHED'}
 
 '''
@@ -1145,11 +1146,11 @@ class Add_C_Beam(bpy.types.Operator):
         self.execute(context)
         return {'FINISHED'}
 '''
-    
 
-# Define "Add_L_Beam" operator    
+
+# Define "Add_L_Beam" operator
 class Add_L_Beam(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_l_beam_add"
     bl_label = "Add L Beam"
     bl_description = "Create a L shaped mesh"
@@ -1160,13 +1161,13 @@ class Add_L_Beam(bpy.types.Operator):
         min = 0.01,
         max = 100,
         default = 1)
-        
+
     mesh_x_size = bpy.props.FloatProperty(name = "Width(x)",
         description = "Width (along the x-axis) of mesh",
         min = 0.01,
         max = 100,
         default = .5)
-        
+
     mesh_y_size = bpy.props.FloatProperty(name = "Length(y)",
         description = "Length (along y-axis) of mesh",
         min = 0.01,
@@ -1214,24 +1215,24 @@ class Add_L_Beam(bpy.types.Operator):
         col = layout.column()
         col.prop(self, 'location')
         col.prop(self, 'rotation')
-        
+
 
     def execute(self, context):
         # debug flag - True prints debug info to console
-        debug = 0 
-        
+        debug = 0
+
         size = (self.mesh_x_size, self.mesh_y_size, self.mesh_z_size)
-                           
+
         verts, faces = create_L_beam(size, self.thick, self.taper, debug)
-        
+
         if debug:
             print("\nCreated Verts:", verts)
             print("\nCreated Faces:", faces)
-                
+
         create_mesh(self, context, "L Beam", verts, faces, debug)
-        
-        recalc_normals(debug) 
-        
+
+        recalc_normals(debug)
+
         return {'FINISHED'}
 
 '''
@@ -1240,28 +1241,28 @@ class Add_L_Beam(bpy.types.Operator):
         self.execute(context)
         return {'FINISHED'}
 '''
-    
-    
-# Define "Add_T_Beam" operator    
+
+
+# Define "Add_T_Beam" operator
 class Add_T_Beam(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_t_beam_add"
     bl_label = "Add T Beam"
     bl_description = "Create a T shaped mesh"
-    bl_options = {'REGISTER', 'UNDO'}    
+    bl_options = {'REGISTER', 'UNDO'}
 
     mesh_z_size = bpy.props.FloatProperty(name = "Height(z)",
         description = "Height (along the z-axis) of mesh",
         min = 0.01,
         max = 100,
         default = 1)
-        
+
     mesh_x_size = bpy.props.FloatProperty(name = "Width(x)",
         description = "Width (along the x-axis) of mesh",
         min = 0.01,
         max = 100,
         default = .5)
-        
+
     mesh_y_size = bpy.props.FloatProperty(name = "Length(y)",
         description = "Length (along y-axis) of mesh",
         min = 0.01,
@@ -1314,19 +1315,19 @@ class Add_T_Beam(bpy.types.Operator):
     def execute(self, context):
         # debug flag - True prints debug info to console
         debug = 0
-        
+
         size = (self.mesh_x_size, self.mesh_y_size, self.mesh_z_size)
-                           
+
         verts, faces = create_T_beam(size, self.thick, self.taper, debug)
-        
+
         if debug:
             print("\nCreated Verts:", verts)
             print("\nCreated Faces:", faces)
-                
+
         create_mesh(self, context, "T Beam", verts, faces, debug)
-        
-        recalc_normals(debug) 
-        
+
+        recalc_normals(debug)
+
         return {'FINISHED'}
 
 '''
@@ -1335,28 +1336,28 @@ class Add_T_Beam(bpy.types.Operator):
         self.execute(context)
         return {'FINISHED'}
 '''
-    
-    
-# Define "Add_I_Beam" operator    
+
+
+# Define "Add_I_Beam" operator
 class Add_I_Beam(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_i_beam_add"
     bl_label = "Add I Beam"
     bl_description = "Create a I shaped mesh"
-    bl_options = {'REGISTER', 'UNDO'}    
+    bl_options = {'REGISTER', 'UNDO'}
 
     mesh_z_size = bpy.props.FloatProperty(name = "Height(z)",
         description = "Height (along the z-axis) of mesh",
         min = 0.01,
         max = 100,
         default = 1)
-        
+
     mesh_x_size = bpy.props.FloatProperty(name = "Width(x)",
         description = "Width (along the x-axis) of mesh",
         min = 0.01,
         max = 100,
         default = .5)
-        
+
     mesh_y_size = bpy.props.FloatProperty(name = "Length(y)",
         description = "Length (along y-axis) of mesh",
         min = 0.01,
@@ -1391,7 +1392,7 @@ class Add_I_Beam(bpy.types.Operator):
             name="Rotation",
             subtype='EULER',
             )
-    
+
     # Define tool parameter layout
     def draw(self, context):
         layout = self.layout
@@ -1404,24 +1405,24 @@ class Add_I_Beam(bpy.types.Operator):
         col = layout.column()
         col.prop(self, 'location')
         col.prop(self, 'rotation')
-        
+
 
     def execute(self, context):
         # debug flag - True prints debug info to console
         debug = 0
-        
+
         size = (self.mesh_x_size, self.mesh_y_size, self.mesh_z_size)
-                           
+
         verts, faces = create_I_beam(size, self.thick, self.taper, debug)
-        
+
         if debug:
             print("\nCreated Verts:", verts)
             print("\nCreated Faces:", faces)
-                
+
         create_mesh(self, context, "I Beam", verts, faces, debug)
-        
-        recalc_normals(debug) 
-        
+
+        recalc_normals(debug)
+
         return {'FINISHED'}
 
 
@@ -1429,7 +1430,7 @@ class Add_I_Beam(bpy.types.Operator):
     def invoke(self, context, event):
         self.align_matrix = align_matrix(context)
         self.execute(context)
-        return {'FINISHED'}    
+        return {'FINISHED'}
 '''
 
 
@@ -1439,39 +1440,39 @@ class INFO_MT_mesh_beambuilder_add(bpy.types.Menu):
     # Define the "Beam Builder" menu
     bl_idname = "INFO_MT_mesh_beambuilder_add"
     bl_label = "Beam Builder"
-    
+
     def draw(self, context):
-        layout = self.layout  
+        layout = self.layout
         layout.operator_context = 'INVOKE_REGION_WIN'
-        layout.operator("mesh.primitive_rectangle_add", text = "Rectangluar Beam")  
+        layout.operator("mesh.primitive_rectangle_add", text = "Rectangluar Beam")
         layout.operator("mesh.primitive_c_beam_add", text = "C or U Channel")
         layout.operator("mesh.primitive_l_beam_add", text = "L Shaped Beam")
         layout.operator("mesh.primitive_t_beam_add", text = "T Shaped Beam")
         layout.operator("mesh.primitive_i_beam_add", text = "I Shaped Beam")
-        
-        
-    
-# Define menu    
+
+
+
+# Define menu
 def menu_func(self, context):
     self.layout.menu("INFO_MT_mesh_beambuilder_add", icon='PLUGIN')
 
 
-# Add     
+# Add
 def register():
     bpy.utils.register_module(__name__)
-    
+
     # Add BeamBuilder menu to the 'Add Mesh' menu
     bpy.types.INFO_MT_mesh_add.append(menu_func)
 
-# Remove 
+
+# Remove
 def unregister():
     bpy.utils.unregister_module(__name__)
-    
+
     # Remove BeamBuilder menu from 'Add Mesh' menu
     bpy.types.INFO_MT_mesh_add.remove(menu_func)
 
+
 if __name__ == "__main__":
-    register() 
-     
+    register()
+
index b922239..6dee212 100644 (file)
@@ -3,14 +3,13 @@
     "author": "SayPRODUCTIONS",
     "version": (1, 0),
     "blender": (2, 59, 0),
-    "api": 33333,
     "location": "View3D > Add > Mesh > Say3D",
     "description": "Sove Framema",
     "warning": "",
     "wiki_url": "",
     "tracker_url": "",
     "category": "Add Mesh"}
-       '''
+'''
 import bpy
 from bpy.props import *
 from bpy_extras.object_utils import object_data_add
@@ -22,8 +21,8 @@ def MSVE():
     if 'Sove' not in bpy.data.materials:
         mtl=bpy.data.materials.new('Sove')
         mtl.diffuse_color     = (0.44,0.52,0.64)
-        mtl.diffuse_shader    = 'LAMBERT' 
-        mtl.diffuse_intensity = 1.0 
+        mtl.diffuse_shader    = 'LAMBERT'
+        mtl.diffuse_intensity = 1.0
     else:
         mtl=bpy.data.materials['Sove']
     return mtl
@@ -102,7 +101,7 @@ def add_object(self, context):
     if self.dr==False:
         fc.append([14,10,11,15]);fc.append([6,14,15,7])
     #Yuvarlak-----------
-    else:        
+    else:
         if dh>mx:dh=mx;self.dh=mx*100
         vr[ 6][2]-=dh;vr[ 7][2]-=dh
         vr[14][2]-=dh;vr[15][2]-=dh
@@ -197,7 +196,7 @@ class OBJECT_OT_add_object(bpy.types.Operator):
         row=box.row();row.prop(self, 'fh');row.prop(self, 'fd')
         for i in range(self.fg):
             box.prop(self,'f'+str(i))
-            
+
     def execute(self, context):
         if self.son!=self.prs:
             if self.prs=='1':Prs(self,200,15,590,44,33,15,20,30,True,1,2,3,90,30,30,30,30,30,30,30,30,30)
index 459a612..e73c6e3 100644 (file)
@@ -3,7 +3,6 @@ bl_info = {
     "author": "SayPRODUCTIONS",
     "version": (2, 0),
     "blender": (2, 63, 0),
-    "api": 33333,
     "location": "View3D > Add > Mesh > Say3D",
     "description": "Window Generator 2",
     "warning": "",
@@ -158,7 +157,7 @@ def add_object(self, context):
         for i in range(0,mx*4+2,2):fc.extend([[z+i+Y+0,z+i+Y+2,z+i+Y+V+4,z+i+Y+V+2],[z+i+Y  +3,z+i+Y  +1,z+i+Y+V+3,z+i+Y+V+5]])
         for i in range(0,mx*4-3,4):fc.extend([[z+i+Y+2,z+i+Y+3,z+i+Y  +5,z+i+Y  +4],[z+i+Y+V+5,z+i+Y+V+4,z+i+Y+V+6,z+i+Y+V+7]])
     #Dikey
-    for Y in range(0,my):    
+    for Y in range(0,my):
         z=Y*(mx*4+4)*2
         for i in range(0,mx*4+2,4):fc.extend([[z+i+1,z+i+0,z+i+V+2,z+i+V+3],[z+i+3,z+i+1,z+i+V+3,z+i+V+5],[z+i+2,z+i+3,z+i+V+5,z+i+V+4],[z+i+0,z+i+2,z+i+V+4,z+i+V+2]])
     #Fitil-------------------
@@ -249,7 +248,7 @@ def add_object(self, context):
         y=my-1
         for x in range(0,mx):
             if  kx[x][y]==True:
-                fr=(k1+k2)*0.5-0.01;ek=k2                
+                fr=(k1+k2)*0.5-0.01;ek=k2
                 R=C-k1;K=R-k2
 
                 x1=X[x*2+1];x2=X[x*2+2]
@@ -329,7 +328,7 @@ def add_object(self, context):
             vr.extend([[x2,fr-0.005,sqrt(K**2-x2**2)+z],[x2,fr+0.005,sqrt(K**2-x2**2)+z]])
             n=len(vr);ON.extend([n-1,n-3,n-5,n-7]);AR.extend([n-2,n-4,n-6,n-8])
             fc.append(ON);AR.reverse();fc.append(AR)
-            m=len(fc);cam.extend([m-1,m-2])        
+            m=len(fc);cam.extend([m-1,m-2])
 
     elif self.UST=='3':#Egri
         if   self.DT3=='1':H=(self.VL1/200)/u
index 9d914bc..d8e35d0 100644 (file)
@@ -1,20 +1,19 @@
 bl_info = {
     "name": "Oscurart Chain and Rope Maker",
     "author": "Oscurart",
-    "version": (1,1),
+    "version": (1, 1),
     "blender": (2, 63, 0),
     "location": "Add > Mesh",
     "description": "Create chains and ropes along armatures/curves",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Add_Mesh/Oscurart_Chain_Rope_Maker",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=28136",
+    "tracker_url": "https://developer.blender.org/T28136",
     "category": "Object"}
 
 
 import bpy
-from .oscurart_rope_maker import * 
+from .oscurart_rope_maker import *
 from .oscurart_chain_maker import *
 
 def register():
@@ -27,7 +26,7 @@ def unregister():
     bpy.utils.unregister_class(OBJECT_OT_add_object)
     bpy.types.INFO_MT_curve_add.remove(oscRopeButton)
     bpy.utils.unregister_module(__name__)
-    bpy.types.INFO_MT_mesh_add.remove(menu_oscChain)    
+    bpy.types.INFO_MT_mesh_add.remove(menu_oscChain)
 
 if __name__ == "__main__":
     register()
index c5b1e68..c6b8a04 100644 (file)
@@ -21,7 +21,6 @@ bl_info = {
     "author": "Oscurart",
     "version": (1,1),
     "blender": (2, 56, 0),
-    "api": 3800,
     "location": "Add > Mesh > Oscurart Chain",
     "description": "Create chain links from armatures.",
     "warning": "",
@@ -36,12 +35,12 @@ bl_info = {
 import bpy
 
 
-def makeChain (self, context, mult, curverig):     
+def makeChain (self, context, mult, curverig):
 
-    if bpy.context.active_object.type == 'ARMATURE':                
-        bpy.ops.object.mode_set(mode='OBJECT')      
+    if bpy.context.active_object.type == 'ARMATURE':
+        bpy.ops.object.mode_set(mode='OBJECT')
         VAR_SWITCH=abs(1)
-        ARMATURE=bpy.context.active_object        
+        ARMATURE=bpy.context.active_object
         def creahuesocero(hueso):
             ## CREO DATA PARA ESLABON
             mesh=bpy.data.meshes.new("objectData"+str(hueso.name))
@@ -53,11 +52,11 @@ def makeChain (self, context, mult, curverig):
             )
             bpy.context.scene.objects.link(object)
             ## ESCALO EL HUESO
-            bpy.data.objects['EslabonCero'+str(hueso.name)].scale= (hueso.length*mult,hueso.length*mult,hueso.length*mult)            
+            bpy.data.objects['EslabonCero'+str(hueso.name)].scale= (hueso.length*mult,hueso.length*mult,hueso.length*mult)
             ## EMPARENTO
             bpy.data.objects['EslabonCero'+str(hueso.name)].parent=ARMATURE
             bpy.data.objects['EslabonCero'+str(hueso.name)].parent_type = 'BONE'
-            bpy.data.objects['EslabonCero'+str(hueso.name)].parent_bone=hueso.name           
+            bpy.data.objects['EslabonCero'+str(hueso.name)].parent_bone=hueso.name
         def creahuesonoventa(hueso):
             ## CREO DATA PARA ESLABON
             mesh=bpy.data.meshes.new("objectData"+str(hueso.name))
@@ -67,49 +66,49 @@ def makeChain (self, context, mult, curverig):
             [(1,2),(0,3),(3,5),(2,4),(0,6),(5,6),(1,7),(4,7),(0,8),(1,8),(7,9),(6,9),(8,9),(2,10),(3,10),(4,11),(5,11),(10,11),(5,12),(12,13),(11,13),(13,14),(4,14),(10,16),(15,16),(3,15),(2,17),(16,17),(9,19),(18,19),(6,18),(7,20),(19,20),(8,22),(21,22),(1,21),(0,23),(22,23),(14,20),(12,18),(15,23),(17,21),(12,15),(13,16),(14,17),(20,21),(19,22),(18,23)],
             [(6,0,3,5),(1,7,4,2),(0,6,9,8),(8,9,7,1),(2,4,11,10),(10,11,5,3),(11,13,12,5),(4,14,13,11),(3,15,16,10),(10,16,17,2),(6,18,19,9),(9,19,20,7),(1,21,22,8),(23,0,8,22),(7,20,14,4),(5,12,18,6),(0,23,15,3),(2,17,21,1),(16,15,12,13),(17,16,13,14),(22,21,20,19),(23,22,19,18),(21,17,14,20),(15,23,18,12)]
             )
-            bpy.context.scene.objects.link(object)            
+            bpy.context.scene.objects.link(object)
             ## ESCALO EL HUESO
-            bpy.data.objects['EslabonNov'+str(hueso.name)].scale= (hueso.length*mult,hueso.length*mult,hueso.length*mult)        
+            bpy.data.objects['EslabonNov'+str(hueso.name)].scale= (hueso.length*mult,hueso.length*mult,hueso.length*mult)
             ## EMPARENTO
             bpy.data.objects['EslabonNov'+str(hueso.name)].parent=ARMATURE
             bpy.data.objects['EslabonNov'+str(hueso.name)].parent_type = 'BONE'
-            bpy.data.objects['EslabonNov'+str(hueso.name)].parent_bone=hueso.name         
-        
+            bpy.data.objects['EslabonNov'+str(hueso.name)].parent_bone=hueso.name
+
         for hueso in bpy.context.active_object.pose.bones:
             if VAR_SWITCH == 1:
                 creahuesocero(hueso)
             else:
-                creahuesonoventa(hueso)    
+                creahuesonoventa(hueso)
             if VAR_SWITCH == 1:
                 VAR_SWITCH = 0
                 print(VAR_SWITCH)
             else :
                 VAR_SWITCH = 1
-                print(VAR_SWITCH)                      
+                print(VAR_SWITCH)
         # SI NO TILDAMOS CURVERIG
-        if curverig == True:                           
+        if curverig == True:
             # VARIABLES
             LISTA_POINTC=[]
-            ACTARM=bpy.context.active_object            
+            ACTARM=bpy.context.active_object
             # CREO DATA , OBJETO Y LO CONECTO A LA ESCENA
             crv= bpy.data.curves.new("CurvaCable", "CURVE")
             obCable=bpy.data.objects.new("Cable",crv)
-            bpy.context.scene.objects.link(obCable)            
+            bpy.context.scene.objects.link(obCable)
             # SETEO ATRIBUTOS
             crv.dimensions = "3D"
             crv.resolution_u = 10
             crv.resolution_v = 10
-            crv.twist_mode = "MINIMUM"            
-            # CREO LISTA DE COORDENADAS DE TAIL Y HEAD            
+            crv.twist_mode = "MINIMUM"
+            # CREO LISTA DE COORDENADAS DE TAIL Y HEAD
             LISTA_POINTC.append((
                 ACTARM.data.bones[0].head_local[0],
                 ACTARM.data.bones[0].head_local[1],
                 ACTARM.data.bones[0].head_local[2],
                 1
-            ))            
+            ))
             print("huesos: "+ str(len(ACTARM.data.bones)))
             for hueso in ACTARM.data.bones:
-                LISTA_POINTC.append((hueso.tail_local[0],hueso.tail_local[1],hueso.tail_local[2],1))               
+                LISTA_POINTC.append((hueso.tail_local[0],hueso.tail_local[1],hueso.tail_local[2],1))
             # CREO EL SPLINE
             spline=crv.splines.new("NURBS")
             lencoord= len(LISTA_POINTC)
@@ -120,20 +119,20 @@ def makeChain (self, context, mult, curverig):
                 spline.points[punto].co = LISTA_POINTC[punto]
                 print(LISTA_POINTC[punto])
             # SETEO ENDPOINT
-            bpy.data.objects['Cable'].data.splines[0].use_endpoint_u= True            
+            bpy.data.objects['Cable'].data.splines[0].use_endpoint_u= True
             # SELECCIONO LA CURVA
             bpy.ops.object.select_all(action='DESELECT')
             bpy.data.objects['Cable'].select=1
-            bpy.context.scene.objects.active=bpy.data.objects['Cable']            
+            bpy.context.scene.objects.active=bpy.data.objects['Cable']
             # PASO A EDIT
-            bpy.ops.object.mode_set(mode='EDIT')            
+            bpy.ops.object.mode_set(mode='EDIT')
             # CREO HOOKS
             POINTSTEP=0
             for POINT in bpy.data.objects['Cable'].data.splines[0].points:
                 bpy.ops.curve.select_all(action="DESELECT")
                 bpy.data.objects['Cable'].data.splines[0].points[POINTSTEP].select=1
                 bpy.ops.object.hook_add_newob()
-                POINTSTEP+=1            
+                POINTSTEP+=1
             # PASO A SELECCIONAR LOS OBJETOS
             bpy.ops.object.mode_set(mode='OBJECT')
             bpy.ops.object.select_all(action='DESELECT')
@@ -147,45 +146,45 @@ def makeChain (self, context, mult, curverig):
             bpy.ops.pose.constraint_add_with_targets(type='SPLINE_IK')
             ACTARM.pose.bones[-1].constraints['Spline IK'].target = bpy.data.objects['Cable']
             ACTARM.pose.bones[-1].constraints['Spline IK'].chain_count=100
-            bpy.context.active_object.pose.bones[-1].constraints['Spline IK'].use_y_stretch= False     
+            bpy.context.active_object.pose.bones[-1].constraints['Spline IK'].use_y_stretch= False
             # VUELVO A OBJECT MODE
-            bpy.ops.object.mode_set(mode='OBJECT')     
+            bpy.ops.object.mode_set(mode='OBJECT')
     else:
-        self.report({'WARNING'}, "Active Object must be an Armature")                  
-                             
-            
-#---------------        
+        self.report({'WARNING'}, "Active Object must be an Armature")
+
+
+#---------------
 from bpy.props import *
 
 class MESH_OT_chain_maker(bpy.types.Operator):
     bl_idname="mesh.primitive_oscurart_chain_add"
     bl_label="Oscurart Chain"
     bl_options={'REGISTER','UNDO'}
-    
+
     curverig= BoolProperty(name="Curve Rig", default=False)
     multiplier= FloatProperty (name="Scale", default=1 , min=0.01, max=100.0)
 
     @classmethod
     def poll(cls, context):
-        return (context.object is not None)       
-    
+        return (context.object is not None)
+
     def execute(self, context):
         makeChain(self, context, self.multiplier,self.curverig)
         return {'FINISHED'}
-    
+
 def menu_oscChain(self, context):
-    self.layout.operator("mesh.primitive_oscurart_chain_add", 
-        text="Oscurart Chain", 
+    self.layout.operator("mesh.primitive_oscurart_chain_add",
+        text="Oscurart Chain",
         icon='LINKED')
 
 def register():
    bpy.utils.register_module(__name__)
    bpy.types.INFO_MT_mesh_add.append(menu_oscChain)
+
 def unregister():
     bpy.utils.unregister_module(__name__)
     bpy.types.INFO_MT_mesh_add.remove(menu_oscChain)
-    
+
+
 if __name__ == "__main__":
-    register()    
\ No newline at end of file
+    register()
\ No newline at end of file
index e355887..338d1ed 100644 (file)
@@ -21,7 +21,6 @@ bl_info = {
     "author": "Oscurart",
     "version": (1,1),
     "blender": (2, 56, 0),
-    "api": 3800,
     "location": "Add > Curve > Oscurart Rope",
     "description": "Create ropes",
     "warning": "",
@@ -37,19 +36,19 @@ import bpy, math
 
 
 
-def makeRope (context, DISTPOS, curvaResU, radius, FE, CUERDAS, stResU,DIAMETRO):    
-    
+def makeRope (context, DISTPOS, curvaResU, radius, FE, CUERDAS, stResU,DIAMETRO):
+
     # CREO DATA , OBJETO Y LO CONECTO A LA ESCENA
     crv= bpy.data.curves.new("CurvaCable", "CURVE")
     obCable=bpy.data.objects.new("Cable",crv)
     bpy.context.scene.objects.link(obCable)
-    
+
     # SETEO ATRIBUTOS
     crv.dimensions = "3D"
     crv.resolution_u = 10
     crv.resolution_v = 10
     crv.twist_mode = "MINIMUM"
-    
+
     # LISTA DE COMPONENTES
     coordenadas= [
         (0,radius,0,radius),
@@ -57,9 +56,9 @@ def makeRope (context, DISTPOS, curvaResU, radius, FE, CUERDAS, stResU,DIAMETRO)
         (0,-radius,0,radius),
         (-radius,0,0,radius)
     ]
-    
-    
-    
+
+
+
     # CREO EL SPLINE
     spline=crv.splines.new("NURBS")
     lencoord= len(coordenadas)
@@ -69,70 +68,70 @@ def makeRope (context, DISTPOS, curvaResU, radius, FE, CUERDAS, stResU,DIAMETRO)
     for punto in rango:
         spline.points[punto].co = coordenadas[punto]
         #print(punto)
-        
-        
+
+
     # MODIFICACIONES DE DATA
     spline.use_cyclic_u = True
     spline.resolution_u = curvaResU
-    spline.order_u = 3    
+    spline.order_u = 3
     spline.use_endpoint_u = True
-    
-    
+
+
     ## ==CREO CADENAS==
-    
+
     ## DIVIDO EL RADIO POR LA CANTIDAD DE LINEAS Y SETEO UNA LISTA
-    
+
     GRADOS=[]
     VALORPORPARTE=[]
     DIVISION=360/CUERDAS
     TAJADA=0
-    
+
     for parte in range(0,CUERDAS):
         GRADOS.append(TAJADA)
         TAJADA+=DIVISION
-        
 
-    
+
+
     for GRAD in GRADOS:
 
 
         # VARIABLES
         FC=0
         VARLISTVER=[]
-       
+
         VARANGLEY=0
         VARANGLEZ=90
         VARPOSX=0
         EDGEINDEX=0
         # DEFINO EL PESO PARA LAS COORDENADAS
         WEIGHT = 1
-        
-        while FC < FE:           
-            ## CREA 3 CADENAS EN 0 90 Y 180 GRADOS 
+
+        while FC < FE:
+            ## CREA 3 CADENAS EN 0 90 Y 180 GRADOS
             VARLISTVER.append((VARPOSX, math.sin(math.radians(GRAD))/(1/DIAMETRO) , math.sin(math.radians(GRAD+90))/(1/DIAMETRO),WEIGHT))
-    
+
             GRAD += 30
             FC += 1
             VARPOSX += DISTPOS
-     
-        
-        
+
+
+
         # CREO DATA , OBJETO Y LO CONECTO A LA ESCENA
         crv= bpy.data.curves.new("curvaData", "CURVE")
         ob=bpy.data.objects.new("Curva",crv)
         bpy.context.scene.objects.link(ob)
-        
+
         # SETEO ATRIBUTOS
         crv.dimensions = "3D"
         crv.resolution_u = 10
         crv.resolution_v = 10
         crv.twist_mode = "MINIMUM"
-        
+
         # LISTA DE COMPONENTES
         coordenadas= VARLISTVER
-        
-        
-        
+
+
+
         # CREO EL SPLINE
         spline=crv.splines.new("NURBS")
         lencoord= len(coordenadas)
@@ -142,26 +141,26 @@ def makeRope (context, DISTPOS, curvaResU, radius, FE, CUERDAS, stResU,DIAMETRO)
         for punto in rango:
             spline.points[punto].co = coordenadas[punto]
             #print(punto)
-            
-            
+
+
         # MODIFICACIONES DE DATA
         spline.use_cyclic_u = False
         spline.resolution_u = stResU
-        spline.order_u = 3    
+        spline.order_u = 3
         spline.use_endpoint_u = True
-        
+
         ob.data.bevel_object= bpy.data.objects["Cable"]
-        
+
         #print(VARLISTVER)
-        
-#---------------        
+
+#---------------
 from bpy.props import *
 
 class OBJECT_OT_add_object(bpy.types.Operator):
     bl_idname="curve.primitive_osc_rope_add"
     bl_label="Oscurart Rope"
     bl_options={'REGISTER','UNDO'}
-    
+
     strands = IntProperty (name="Strands", default=5 , min=1, max=1000, step=1)
     diameter = FloatProperty (name="Diameter", default=1 , min=0, max=1000)
     distPos= FloatProperty (name="Stretch", default=1 , min=0.01, max=100.0)
@@ -171,10 +170,10 @@ class OBJECT_OT_add_object(bpy.types.Operator):
     radio= FloatProperty (name="Radius", default=1 , min=0, max=1000)
 
     def execute(self, context):
-        makeRope(context, 
+        makeRope(context,
             self.distPos,self.distResU,self.radio,self.vertices,self.strands, self.stResU,self.diameter)
         return {'FINISHED'}
-    
+
 # Registration
 
 def oscRopeButton(self, context):
index 8d8f56d..64dbfb4 100644 (file)
@@ -34,7 +34,7 @@
 #  1. Include other shapes: dodecahedron, ...
 #  2. Skin option for parabolic shaped clusters
 #  3. Skin option for icosahedron
-#  4. Icosahedron: unlimited size ... 
+#  4. Icosahedron: unlimited size ...
 #
 
 bl_info = {
@@ -45,11 +45,11 @@ bl_info = {
     "blender": (2, 60, 0),
     "location": "Panel: View 3D - Tools (left side)",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Add_Mesh/Cluster",
-    "tracker_url": "http://projects.blender.org/tracker/"
-                   "index.php?func=detail&aid=31618&group_id=153&atid=468",
-    "category": "Add Mesh"
-}
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Add_Mesh/Cluster",
+    "tracker_url": "https://developer.blender.org/T31618",
+    "category": "Add Mesh"}
+
 
 import os
 import io
@@ -93,15 +93,15 @@ class CLASS_atom_cluster_panel(Panel):
     @classmethod
     def poll(self, context):
         global ATOM_Cluster_PANEL
-        
+
         if ATOM_Cluster_PANEL == 0:
             return False
-        
+
         return True
 
     def draw(self, context):
         layout = self.layout
-        
+
         scn = context.scene.atom_cluster
 
         row = layout.row()
@@ -129,24 +129,24 @@ class CLASS_atom_cluster_panel(Panel):
         row = box.row()
         row.prop(scn, "element")
         row = box.row()
-        row.prop(scn, "radius_type")        
+        row.prop(scn, "radius_type")
         row = box.row()
         row.prop(scn, "scale_radius")
         row = box.row()
         row.prop(scn, "scale_distances")
-        
+
         row = layout.row()
         row.label(text="Load cluster")
         box = layout.box()
-        row = box.row()    
+        row = box.row()
         row.operator("atom_cluster.load")
         row = box.row()
         row.label(text="Number of atoms")
         row = box.row()
-        row.prop(scn, "atom_number_total")  
+        row.prop(scn, "atom_number_total")
         row = box.row()
-        row.prop(scn, "atom_number_drawn")  
-        
+        row.prop(scn, "atom_number_drawn")
+
         row = layout.row()
         row.label(text="Modify cluster")
         box = layout.box()
@@ -162,14 +162,14 @@ class CLASS_atom_cluster_panel(Panel):
         row.label(text="2. Change atom radii by scale")
         row = box.row()
         col = row.column()
-        col.prop(scn, "radius_all")         
+        col.prop(scn, "radius_all")
         col = row.column(align=True)
         col.operator( "atom_cluster.radius_all_bigger" )
         col.operator( "atom_cluster.radius_all_smaller" )
 
 
 # The properties (gadgets) in the panel. They all go to scene
-# during initialization (see end) 
+# during initialization (see end)
 class CLASS_atom_cluster_Properties(bpy.types.PropertyGroup):
 
     def Callback_radius_type(self, context):
@@ -187,10 +187,10 @@ class CLASS_atom_cluster_Properties(bpy.types.PropertyGroup):
         name = "Diameter", default=30.0, min=0.1,
         description = "Top diameter in Angstroem")
     parabol_height = FloatProperty(
-        name = "Height", default=30.0, min=0.1, 
+        name = "Height", default=30.0, min=0.1,
         description = "Height in Angstroem")
     icosahedron_size = IntProperty(
-        name = "Size", default=1, min=1, max=13, 
+        name = "Size", default=1, min=1, max=13,
         description = "Size n: 1 (13 atoms), 2 (55 atoms), 3 (147 atoms), 4 (309 atoms), 5 (561 atoms), ..., 13 (8217 atoms)")
     shape = EnumProperty(
         name="",
@@ -206,7 +206,7 @@ class CLASS_atom_cluster_Properties(bpy.types.PropertyGroup):
                ('parabolid_square', "Paraboloid: square",  "Paraboloid with square lattice"),
                ('parabolid_ab',     "Paraboloid: hex ab",  "Paraboloid with ab-lattice"),
                ('parabolid_abc',    "Paraboloid: hex abc", "Paraboloid with abc-lattice")),
-               default='sphere_square',)  
+               default='sphere_square',)
     lattice_parameter = FloatProperty(
         name = "Lattice", default=4.08, min=1.0,
         description = "Lattice parameter in Angstroem")
@@ -225,12 +225,12 @@ class CLASS_atom_cluster_Properties(bpy.types.PropertyGroup):
     scale_distances = FloatProperty(
         name = "Scale d", default=1.0, min=0.0,
         description = "Scale distances")
-        
+
     atom_number_total = StringProperty(name="Total",
-        default="---", description = "Number of all atoms in the cluster")    
+        default="---", description = "Number of all atoms in the cluster")
     atom_number_drawn = StringProperty(name="Drawn",
-        default="---", description = "Number of drawn atoms in the cluster")    
-        
+        default="---", description = "Number of drawn atoms in the cluster")
+
     radius_how = EnumProperty(
         name="",
         description="Which objects shall be modified?",
@@ -247,7 +247,7 @@ class CLASS_atom_cluster_Properties(bpy.types.PropertyGroup):
     radius_all = FloatProperty(
         name="Scale", default = 1.05, min=0.0,
         description="Put in the scale factor")
-        
+
 
 # The button for reloading the atoms and creating the scene
 class CLASS_atom_cluster_load_button(Operator):
@@ -274,47 +274,47 @@ class CLASS_atom_cluster_load_button(Operator):
             parameter1 = scn.size * 1.4
             parameter2 = scn.skin
         elif scn.shape in ["icosahedron"]:
-            parameter1 = scn.icosahedron_size 
+            parameter1 = scn.icosahedron_size
         else:
             parameter1 = scn.size
             parameter2 = scn.skin
 
         if scn.shape in ["octahedron", "truncated_octahedron", "sphere_square", "pyramide_square", "parabolid_square"]:
             numbers = add_mesh_cluster.create_square_lattice(
-                                scn.shape, 
-                                parameter1, 
+                                scn.shape,
+                                parameter1,
                                 parameter2,
                                 (scn.lattice_parameter/2.0))
 
         if scn.shape in ["sphere_hex_ab", "parabolid_ab"]:
             numbers = add_mesh_cluster.create_hexagonal_abab_lattice(
-                                scn.shape, 
+                                scn.shape,
                                 parameter1,
-                                parameter2, 
+                                parameter2,
                                 scn.lattice_parameter)
 
         if scn.shape in ["sphere_hex_abc", "pyramide_hex_abc", "parabolid_abc"]:
             numbers = add_mesh_cluster.create_hexagonal_abcabc_lattice(
-                                scn.shape, 
+                                scn.shape,
                                 parameter1,
-                                parameter2, 
+                                parameter2,
                                 scn.lattice_parameter)
-                                
+
         if scn.shape in ["icosahedron"]:
-            numbers = add_mesh_cluster.create_icosahedron( 
-                                parameter1, 
+            numbers = add_mesh_cluster.create_icosahedron(
+                                parameter1,
                                 scn.lattice_parameter)
 
         DEF_atom_draw_atoms(scn.element,
                             scn.radius_type,
                             scn.scale_radius,
-                            scn.scale_distances)                        
+                            scn.scale_distances)
 
         scn.atom_number_total = str(numbers[0])
         scn.atom_number_drawn = str(numbers[1])
-        
+
         return {'FINISHED'}
-        
+
 
 def DEF_atom_draw_atoms(prop_element,
                         prop_radius_type,
@@ -322,15 +322,15 @@ def DEF_atom_draw_atoms(prop_element,
                         prop_scale_distances):
 
     current_layers=bpy.context.scene.layers
-                        
+
     for element in add_mesh_cluster.ATOM_CLUSTER_ELEMENTS:
         if prop_element in element.name:
             number = element.number
             name = element.name
             color = element.color
             radii = element.radii
-            break   
-    
+            break
+
     material = bpy.data.materials.new(name)
     material.name = name
     material.diffuse_color = color
@@ -338,14 +338,14 @@ def DEF_atom_draw_atoms(prop_element,
     atom_vertices = []
     for atom in add_mesh_cluster.ATOM_CLUSTER_ALL_ATOMS:
         atom_vertices.append( atom.location * prop_scale_distances )
-    
+
     # Build the mesh
     atom_mesh = bpy.data.meshes.new("Mesh_"+name)
     atom_mesh.from_pydata(atom_vertices, [], [])
     atom_mesh.update()
     new_atom_mesh = bpy.data.objects.new(name, atom_mesh)
     bpy.context.scene.objects.link(new_atom_mesh)
-    
+
     bpy.ops.surface.primitive_nurbs_surface_sphere_add(
                             view_align=False, enter_editmode=False,
                             location=(0,0,0), rotation=(0.0, 0.0, 0.0),
@@ -398,7 +398,7 @@ def DEF_atom_cluster_radius_type(rtype,how):
                     for element in add_mesh_cluster.ATOM_CLUSTER_ELEMENTS:
                         if element.name in obj.name:
                             obj.scale = (element.radii[int(rtype)],) * 3
-                            
+
 
 # Routine to scale the radii of all atoms
 def DEF_atom_cluster_radius_all(scale, how):
@@ -512,9 +512,9 @@ def DEF_menu_func(self, context):
 def register():
     bpy.utils.register_module(__name__)
     bpy.types.Scene.atom_cluster = bpy.props.PointerProperty(type=
-                                                  CLASS_atom_cluster_Properties)    
+                                                  CLASS_atom_cluster_Properties)
     bpy.types.INFO_MT_mesh_add.append(DEF_menu_func)
-    
+
 def unregister():
     bpy.utils.unregister_module(__name__)
     bpy.types.INFO_MT_mesh_add.remove(DEF_menu_func)
index d364613..1cb30d2 100644 (file)
@@ -39,12 +39,12 @@ bl_info = {
     "blender": (2, 68, 0),
     "location": "View3D > Add > Rock Generator",
     "description": "Adds a mesh rock to the Add Mesh menu",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6"\
-        "/Py/Scripts/Add_Mesh/Rock_Generator",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=27314",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Add_Mesh/Rock_Generator",
+    "tracker_url": "https://developer.blender.org/T27314",
     "category": "Add Mesh"}
 
+
 if "bpy" in locals():
     import imp
     imp.reload(rockgen)
index 697be49..bdd36e8 100644 (file)
 
 bl_info = {
     "name": "Add Symmetrical Empty",
-    "author": "Pablo Vazquez",                 
-    "version": (1,0,2),
+    "author": "Pablo Vazquez",
+    "version": (1, 0, 2),
     "blender": (2, 64, 0),
     "location": "View3D > Add > Mesh > Symmetrical Empty",
     "description": "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Add_Mesh/Add_Symmetrical_Empty",
     "tracker_url": "",
     "category": "Add Mesh"}
 '''
 Adds an empty mesh with a mirror modifier.
-'''    
+'''
 
 import bpy
 from bpy.props import BoolProperty
@@ -55,7 +55,7 @@ def Add_Symmetrical_Empty():
 
 
 class AddSymmetricalEmpty(bpy.types.Operator):
-    
+
     bl_idname = "mesh.primitive_symmetrical_empty_add"
     bl_label = "Add Symmetrical Empty Mesh"
     bl_description = "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling"
index a746e4d..101b4e0 100644 (file)
@@ -37,9 +37,11 @@ bl_info = {
   "blender": (2, 65, 4),
   "location": "Properties > Object data (Armature) > Selection Sets",
   "description": "Selection Sets to select groups of posebones",
-  "warning": "Proxy armatures need to export sets and run generated script on re-opening file",
-  "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Animation/SelectionSets",
-  "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=31492",
+  "warning": "Proxy armatures need to export sets and "
+    "run generated script on re-opening file",
+  "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+    "Scripts/Animation/SelectionSets",
+  "tracker_url": "https://developer.blender.org/T31492",
   "category": "Animation"
 }
 
index 5e53729..d48ba9f 100644 (file)
@@ -26,11 +26,10 @@ bl_info = {
     "blender": (2, 65, 4),
     "location": "View3D > Toolbar > Motion Trail tab",
     "warning": "",
-    "description": "Display and edit motion trails in the 3d-view",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/"
-                "Py/Scripts/Animation/Motion_Trail",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"
-                    "func=detail&aid=26374",
+    "description": "Display and edit motion trails in the 3D View",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Animation/Motion_Trail",
+    "tracker_url": "https://developer.blender.org/T26374",
     "category": "Animation"}
 
 
index b2e21bd..4760588 100644 (file)
@@ -25,9 +25,9 @@ bl_info = {
     "description": "Tools for converting/animating objects/particles into curves",
     "warning": "Still under development, bug reports appreciated",
     "wiki_url": "",
-    "tracker_url": "http://projects.blender.org/tracker/?func=detail&atid=468&aid=29563&group_id=153",
-    "category": "Add Curve"
-    }
+    "tracker_url": "https://developer.blender.org/T29563",
+    "category": "Add Curve"}
+
 
 import bpy
 from .bTrace import *
index 9874d86..ab65910 100644 (file)
@@ -25,9 +25,9 @@ bl_info = {
     "description": "Tools for converting/animating objects/particles into curves",
     "warning": "Still under development, bug reports appreciated",
     "wiki_url": "",
-    "tracker_url": "http://projects.blender.org/tracker/?func=detail&atid=468&aid=29563&group_id=153",
-    "category": "Add Curve"
-    }
+    "tracker_url": "https://developer.blender.org/T29563",
+    "category": "Add Curve"}
+
 
 #### TO DO LIST ####
 ### [   ]  Add more options to curve radius/modulation plus cyclic/connect curve option
@@ -151,7 +151,7 @@ class TracerProperties(bpy.types.PropertyGroup):
         name="Define a color palette")
     # Custom property for how many keyframes to skip
     mmSkip = bpy.props.IntProperty(name="frames", min=1, max=500, default=20, description="Number of frames between each keyframes")
-    # Custom property to enable/disable random order for the 
+    # Custom property to enable/disable random order for the
     mmBoolRandom = bpy.props.BoolProperty(name="Random Order", default=False, description="Randomize the order of the colors")
     # Custom Color properties
     mmColor1 = bpy.props.FloatVectorProperty(min=0, max=1, default=(0.8, 0.8, 0.8), description="Custom Color 1", subtype="COLOR")
@@ -272,7 +272,7 @@ class addTracerObjectPanel(bpy.types.Panel):
                         row = box.row()
                         row.operator("object.colorblenderclear", text="Reset Material Keyframes", icon="KEY_DEHLT")
                         row.prop(Btrace, 'mmSkip', text="Keyframe every")
-                      
+
                     color_blender()
                 row = box.row()
             if Btrace.show_curve_settings:
@@ -336,7 +336,7 @@ class addTracerObjectPanel(bpy.types.Panel):
         row = col.row()
         row.prop(btracemenu, "tool_meshFollow", text="Mesh Follow", icon="DRIVER")
         row.prop(btracemenu, "tool_handwrite", text="Handwriting", icon='BRUSH_DATA')
-        row = col.row()   
+        row = col.row()
         row.prop(btracemenu, "tool_particleTrace", icon="PARTICLES", text="Particle Trace")
         row.prop(btracemenu, "tool_particleConnect", icon="MOD_PARTICLES", text="Particle Connect")
         row = layout.row()
@@ -808,7 +808,7 @@ class OBJECT_OT_particletrace(bpy.types.Operator):
             bpy.context.scene.objects.active = curveobject
             bpy.ops.object.group_link(group="Btrace")
             addtracemat(curveobject.data)  # Add material
-        
+
         if Btrace.animate:
             bpy.ops.curve.btgrow()  # Add grow curve
 
@@ -831,7 +831,7 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
         return (bpy.context.object and bpy.context.object.particle_systems)
 
     def execute(self, context):
-        
+
         obj = bpy.context.object
         ps = obj.particle_systems.active
         set = ps.settings
@@ -840,7 +840,7 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
         if set.distribution == 'GRID':
             self.report({'INFO'},"Grid distribution mode for particles not supported.")
             return{'FINISHED'}
-        
+
         Btrace = bpy.context.window_manager.curve_tracer
         particle_f_start = Btrace.particle_f_start # Get frame start
         particle_f_end = Btrace.particle_f_end # Get frame end
@@ -848,13 +848,13 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
         if curve_handle == 'AUTOMATIC': # hackish because of naming conflict in api
             curve_handle = 'AUTO'
         if curve_handle == 'FREE_ALIGN':
-            curve_handle = 'FREE'        
+            curve_handle = 'FREE'
         tracer = bpy.data.curves.new('Splines','CURVE') # define what kind of object to create
         curve = bpy.data.objects.new('Tracer',tracer) # Create new object with settings listed above
         bpy.context.scene.objects.link(curve) # Link newly created object to the scene
         spline = tracer.splines.new('BEZIER')  # add a new Bezier point in the new curve
         spline.bezier_points.add(set.count-1)
-               
+
         tracer.dimensions = '3D'
         tracer.resolution_u = Btrace.curve_u
         tracer.bevel_resolution = Btrace.curve_resolution
@@ -874,7 +874,7 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
             bpy.context.scene.frame_set(bFrames)
             if not (bFrames-f_start) % Btrace.particle_step:
                 for bFrames in range(set.count):
-                    if ps.particles[bFrames].alive_state != 'UNBORN': 
+                    if ps.particles[bFrames].alive_state != 'UNBORN':
                         e = bFrames
                     bp = spline.bezier_points[bFrames]
                     pt = ps.particles[e]
@@ -882,7 +882,7 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
                     #bp.handle_left = pt.location
                     #bp.handle_right = pt.location
                     bp.handle_right_type = curve_handle
-                    bp.handle_left_type = curve_handle 
+                    bp.handle_left_type = curve_handle
                     bp.keyframe_insert('co')
                     bp.keyframe_insert('handle_left')
                     bp.keyframe_insert('handle_right')
@@ -898,7 +898,7 @@ class OBJECT_OT_traceallparticles(bpy.types.Operator):
 ################## ################## ################## ############
 ## Writing Tool
 ## Writes a curve by animating its point's radii
-## 
+##
 ################## ################## ################## ############
 class OBJECT_OT_writing(bpy.types.Operator):
     bl_idname = 'curve.btwriting'
@@ -941,7 +941,7 @@ class OBJECT_OT_writing(bpy.types.Operator):
         bpy.ops.object.shade_smooth()
         # Return to first frame
         bpy.context.scene.frame_set(Btrace.anim_f_start)
-        
+
         return{'FINISHED'}
 
 ################## ################## ################## ############
@@ -955,7 +955,7 @@ class OBJECT_OT_convertcurve(bpy.types.Operator):
     bl_label = "Btrace: Create Curve"
     bl_description = "Convert mesh to curve using either Continuous, All Edges, or Sharp Edges"
     bl_options = {'REGISTER', 'UNDO'}
-        
+
     def execute(self, context):
         import bpy, random, mathutils
         from mathutils import Vector
@@ -964,13 +964,13 @@ class OBJECT_OT_convertcurve(bpy.types.Operator):
         traceobjects = bpy.context.selected_objects # create a list with all the selected objects
 
         obj = bpy.context.object
-        
+
         ### Convert Font
         if obj.type == 'FONT':
             bpy.ops.object.mode_set(mode='OBJECT')
             bpy.ops.object.convert(target='CURVE') # Convert edges to curve
             bpy.context.object.data.dimensions = '3D'
-            
+
         # make a continuous edge through all vertices
         if obj.type == 'MESH':
             # Add noise to mesh
@@ -988,9 +988,9 @@ class OBJECT_OT_convertcurve(bpy.types.Operator):
                 verts = bpy.context.object.data.vertices
                 bpy.ops.object.mode_set(mode='OBJECT')
                 li = []
-                p1 = random.randint(0,len(verts)-1) 
-                
-                for v in verts: 
+                p1 = random.randint(0,len(verts)-1)
+
+                for v in verts:
                     li.append(v.index)
                 li.remove(p1)
                 for z in range(len(li)):
@@ -1010,8 +1010,8 @@ class OBJECT_OT_convertcurve(bpy.types.Operator):
                     p1 = p2
                 # Convert edges to curve
                 bpy.ops.object.mode_set(mode='OBJECT')
-                bpy.ops.object.convert(target='CURVE') 
-            
+                bpy.ops.object.convert(target='CURVE')
+
             if Btrace.convert_edgetype == 'EDGEALL':
                 ## Start All edges
                 bpy.ops.object.mode_set(mode='EDIT')
@@ -1025,26 +1025,26 @@ class OBJECT_OT_convertcurve(bpy.types.Operator):
         obj = bpy.context.object
         # Set spline type to custom property in panel
         bpy.ops.object.editmode_toggle()
-        bpy.ops.curve.spline_type_set(type=Btrace.curve_spline) 
+        bpy.ops.curve.spline_type_set(type=Btrace.curve_spline)
         # Set handle type to custom property in panel
-        bpy.ops.curve.handle_type_set(type=Btrace.curve_handle) 
+        bpy.ops.curve.handle_type_set(type=Btrace.curve_handle)
         bpy.ops.object.editmode_toggle()
         obj.data.fill_mode = 'FULL'
         # Set resolution to custom property in panel
-        obj.data.bevel_resolution = Btrace.curve_resolution 
-        obj.data.resolution_u = Btrace.curve_u 
+        obj.data.bevel_resolution = Btrace.curve_resolution
+        obj.data.resolution_u = Btrace.curve_u
         # Set depth to custom property in panel
-        obj.data.bevel_depth = Btrace.curve_depth 
+        obj.data.bevel_depth = Btrace.curve_depth
         # Smooth object
         bpy.ops.object.shade_smooth()
         # Modulate curve radius and add distortion
-        if Btrace.distort_curve: 
+        if Btrace.distort_curve:
             scale = Btrace.distort_modscale
             if scale == 0:
                 return {'FINISHED'}
             for u in obj.data.splines:
                 for v in u.bezier_points:
-                    v.radius = scale*round(random.random(),3) 
+                    v.radius = scale*round(random.random(),3)
         return {'FINISHED'}
 
 
@@ -1059,8 +1059,8 @@ class OBJECT_OT_meshfollow(bpy.types.Operator):
     bl_label = "Btrace: Vertex Trace"
     bl_description = "Trace Vertex or Face on an animated mesh"
     bl_options = {'REGISTER', 'UNDO'}
-        
-    
+
+
     @classmethod
     def poll(cls, context):
         return (context.object and context.object.type in {'MESH'})
@@ -1175,12 +1175,12 @@ class OBJECT_OT_meshfollow(bpy.types.Operator):
         # Check if Btrace group exists, if not create
         bgroup = bpy.data.groups.keys()
         if 'Btrace' not in bgroup:
-            bpy.ops.group.create(name="Btrace") 
+            bpy.ops.group.create(name="Btrace")
 
         Btrace = bpy.context.window_manager.curve_tracer
         sel = getsel_option()  # Get selection
         curvelist = []  # list to use for grow curve
-        
+
         if Btrace.fol_mesh_type == 'OBJECT':
             vector_list = get_coord(obj)
             curvelist.append(make_curve(vector_list))
@@ -1306,11 +1306,11 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     materialName = "colorblendMaterial"
                     madMat = bpy.data.materials.new(materialName)
                     theObj.data.materials.append(madMat)
-                else:                
+                else:
                     pass # pass since we have what we need
                 # assign the first material of the object to "mat"
-                madMat = theObj.data.materials[0] 
-                
+                madMat = theObj.data.materials[0]
+
 
             # Numbers of frames to skip between keyframes
             skip = Btrace.mmSkip
@@ -1327,7 +1327,7 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = randomRGB
-            
+
             def colorblenderCustom():
                 if engine == 'CYCLES':
                     Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
@@ -1337,8 +1337,8 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = random.choice(customColors)
-                
-            # Black and white color        
+
+            # Black and white color
             def colorblenderBW():
                 if engine == 'CYCLES':
                     Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
@@ -1348,7 +1348,7 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = random.choice(bwColors)
-            
+
             # Bright colors
             def colorblenderBright():
                 if engine == 'CYCLES':
@@ -1359,7 +1359,7 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = random.choice(brightColors)
-                
+
             # Earth Tones
             def colorblenderEarth():
                 if engine == 'CYCLES':
@@ -1370,7 +1370,7 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = random.choice(earthColors)
-                
+
             # Green to Blue Tones
             def colorblenderGreenBlue():
                 if engine == 'CYCLES':
@@ -1381,16 +1381,16 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     madMat.diffuse_color = mat_color
                 else:
                     madMat.diffuse_color = random.choice(greenblueColors)
-             
+
             # define frame start/end variables
-            scn = bpy.context.scene       
+            scn = bpy.context.scene
             start = scn.frame_start
-            end = scn.frame_end           
+            end = scn.frame_end
             # Go to each frame in iteration and add material
             while start<=(end+(skip-1)):
-               
+
                 bpy.context.scene.frame_set(frame=start)
-                
+
                 # Check what colors setting is checked and run the appropriate function
                 if Btrace.mmColors=='RANDOM':
                     colorblenderRandom()
@@ -1406,38 +1406,38 @@ class OBJECT_OT_materialChango(bpy.types.Operator):
                     colorblenderGreenBlue()
                 else:
                     pass
-                
+
                 # Add keyframe to material
                 if engine == 'CYCLES':
                     madMat.node_tree.nodes['Diffuse BSDF'].inputs[0].keyframe_insert('default_value')
                     madMat.keyframe_insert('diffuse_color') # not sure if this is need, it's viewport color only
                 else:
                     madMat.keyframe_insert('diffuse_color')
-                
+
                 # Increase frame number
                 start += skip
         return{'FINISHED'}
-    
+
 ###### This clears the keyframes ######
 class OBJECT_OT_clearColorblender(bpy.types.Operator):
     bl_idname = 'object.colorblenderclear'
     bl_label = 'Clear colorblendness'
     bl_options = {'REGISTER', 'UNDO'}
-    
+
     def invoke(self, context, event):
-        
+
         import bpy, random
         mcolorblend = context.window_manager.colorblender_operator # properties panel
         colorObjects = bpy.context.selected_objects
-        
+
         # Go through each selected object and run the operator
         for i in colorObjects:
-            theObj = i    
+            theObj = i
             # assign the first material of the object to "mat"
-            matCl = theObj.data.materials[0] 
-            
+            matCl = theObj.data.materials[0]
+
             # define frame start/end variables
-            scn = bpy.context.scene       
+            scn = bpy.context.scene
             start = scn.frame_start
             end = scn.frame_end
 
@@ -1446,7 +1446,7 @@ class OBJECT_OT_clearColorblender(bpy.types.Operator):
                 bpy.context.scene.frame_set(frame=start)
                 matCl.keyframe_delete('diffuse_color')
                 start += 1
-            
+
         return{'FINISHED'}
 
 
@@ -1461,15 +1461,15 @@ class OBJECT_OT_fcnoise(bpy.types.Operator):
     bl_idname = "object.btfcnoise"
     bl_label = "Btrace: F-curve Noise"
     bl_options = {'REGISTER', 'UNDO'}
-    
+
     def execute(self, context):
         import bpy, random
-        
+
         Btrace = bpy.context.window_manager.curve_tracer
         amp = Btrace.fcnoise_amp
         timescale = Btrace.fcnoise_timescale
         addkeyframe = Btrace.fcnoise_key
-        
+
         # This sets properties for Loc, Rot and Scale if they're checked in the Tools window
         noise_rot = 'rotation'
         noise_loc = 'location'
@@ -1480,21 +1480,21 @@ class OBJECT_OT_fcnoise(bpy.types.Operator):
             noise_loc = 'none'
         if not Btrace.fcnoise_scale:
             noise_scale = 'none'
-            
+
         type = noise_loc, noise_rot, noise_scale # Add settings from panel for type of keyframes
         amplitude = amp
         time_scale = timescale
-        
+
         for i in bpy.context.selected_objects:
             # Add keyframes, this is messy and should only add keyframes for what is checked
             if addkeyframe == True:
-                bpy.ops.anim.keyframe_insert(type="LocRotScale")         
+                bpy.ops.anim.keyframe_insert(type="LocRotScale")
             for obj in bpy.context.selected_objects:
                 if obj.animation_data:
                     for c in obj.animation_data.action.fcurves:
                         if c.data_path.startswith(type):
                             # clean modifiers
-                            for m in c.modifiers : 
+                            for m in c.modifiers :
                                 c.modifiers.remove(m)
                             # add noide modifiers
                             n = c.modifiers.new('NOISE')
@@ -1506,17 +1506,17 @@ class OBJECT_OT_fcnoise(bpy.types.Operator):
 ################## ################## ################## ############
 ## Curve Grow Animation
 ## Animate curve radius over length of time
-################## ################## ################## ############     
+################## ################## ################## ############
 class OBJECT_OT_curvegrow(bpy.types.Operator):
     bl_idname = 'curve.btgrow'
     bl_label = 'Run Script'
     bl_description = 'Keyframe points radius'
     bl_options = {'REGISTER', 'UNDO'}
-    
+
     @classmethod
     def poll(cls, context):
         return (context.object and context.object.type in {'CURVE'})
-    
+
     def execute(self, context):
         Btrace = bpy.context.window_manager.curve_tracer
         anim_f_start, anim_length, anim_auto = Btrace.anim_f_start, Btrace.anim_length, Btrace.anim_auto
index 60aad9b..0c68095 100644 (file)
@@ -29,10 +29,9 @@ bl_info = {
     "blender": (2, 66, 6),
     "location": "View3D > Tools",
     "description": "Assistant for using CMU Motion Capture data",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
-                "Scripts/3D_interaction/CMU_Mocap_Library_Browser",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-                   "func=detail&aid=29086",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/3D_interaction/CMU_Mocap_Library_Browser",
+    "tracker_url": "https://developer.blender.org/T29086",
     "category": "Animation"}
 
 
@@ -58,7 +57,7 @@ class CMUMocapSubjectBrowser(bpy.types.Panel):
         initialize_subjects(context)
         layout = self.layout
         cml = context.user_preferences.addons['cmu_mocap_browser'].preferences
-        layout.template_list("UI_UL_list", "SB", cml, "subject_list", 
+        layout.template_list("UI_UL_list", "SB", cml, "subject_list",
             cml, "subject_active")
         layout.prop(cml, "subject_import_name")
         if cml.subject_active != -1:
index f09f351..51b9fc0 100644 (file)
@@ -20,6 +20,7 @@
 
 
 # Blender Add-Ons menu registration (in User Prefs)
+
 bl_info = {
     "name": "Cursor Control",
     "author": "Morgan Mörtsell (Seminumerical)",
@@ -29,12 +30,10 @@ bl_info = {
     "description": "Control the Cursor",
     "warning": "buggy, may crash other addons", # used for warning icon and text in addons panel
     "wiki_url": "http://blenderpythonscripts.wordpress.com/",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-                   "func=detail&aid=27253",
+    "tracker_url": "https://developer.blender.org/T27253",
     "category": "3D View"}
 
 
-
 import bpy
 
 # To support reload properly, try to access a package var, if it's there, reload everything
index 0993b6d..a418877 100644 (file)
@@ -24,10 +24,9 @@ bl_info = {
     "location": "Properties > Object data",
     "description": "Creates driven Lofts or Birails between curves",
     "warning": "may be buggy or incomplete",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Curve/Curve_Tools",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=27720",
+    "tracker_url": "https://developer.blender.org/T27720",
     "category": "Add Curve"}
 
 ### UPDATES
index 31a0a5c..2aced6d 100644 (file)
@@ -25,6 +25,7 @@ bl_info = {
     "warning": "",
     "description": "List classes and definitions of a text block",
     "wiki_url": "https://sites.google.com/site/aleonserra/home/scripts/class-viewer",
+    "tracker_url": "https://developer.blender.org/T29463",
     "category": "Development"}
 
 import bpy
index 849e66b..0f563e1 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This addon implements a subdivision scheme called deathguppie.
 It is ideal for creating more detail locally when sculpting.
 
index d7f200c..272a724 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This addon enables you to snakelike "grow" an edgeloop selection with arrow keys.
 
 
index 80df420..81453f4 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This script is an implementation of the concept of sliding vertices around
    on edges.  It is used to finetune/redraw edges/edgeloops through the process of sliding
    vertices.  It can be used to slide anything anywhere.
index 507541a..bb87f8f 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 The FanConnect addon connects multiple selected verts to one single other vert.
 
 
index 4384a93..1428fb9 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This addon enables you to "flood-select" or deselect entire areas of selected/deselected elements.
 
 
index bd2875c..610f0a3 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 InnerWeld.  This addon welds parallel connected selected edges together.
 
 Documentation
index 42a8a5e..df48a71 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This addon implements a smoothing algorithm for meshes based on Laplacian relaxation, but adapted
 to have no shrinkage.
 
index 8e8c1f4..b3e87ce 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This script uses the concept of support edges, or the inserting of new edges parallel to the selected edges.
 
 
index 942afee..87cba93 100644 (file)
@@ -19,7 +19,7 @@
 # ***** END GPL LICENCE BLOCK *****
 # --------------------------------------------------------------------------
 
-__bpydoc__ = """\
+"""
 Fills selected border verts/edges area with quads.
 Select several neighbouring verts/edges with at least one "border corner" selected.
 Invoke addon. (its on the Mesh Tools panel)
@@ -44,7 +44,6 @@ bl_info = {
        "category": "Mesh"}
 
 
-
 import bpy
 import bmesh
 
index 3af1cff..d254ff5 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 The SelProject addon enables you to "project" an object onto another object, every vertex inside the
 projection's shape will be selected.
 
index cf1b9d5..786e33d 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 This addon enables you to straighten out multiple connected-edge-snakes between their endpoints.
 
 
index 3dca80b..91e430c 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 The DeCouple addon is really simple but useful: the selected parent object will be decoupled
 temporarily from its children so youll be able to reposition the parent without influencing
 the children.  This is mainly a workflow shortcut, cause unparenting and reparenting
index edc371b..84a1b31 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 The FastOrigin addon enables one to interactively set the active objects origin, either by 3D
 manipulator or Gkey with full support for snapping and realtime preview of this.
 
index 4a9e8f3..aace5ae 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-__bpydoc__ = """\
+"""
 The KeepTrans addon works when you want to remove a ChildOf constraint, but keep the
 constrained objects transforms.
 
index eebad0c..c69ce8e 100644 (file)
 bl_info = {
     "name": "Geodesic Domes",
     "author": "PKHG , Meta Androcto, Kilon original for 2.49 from Andy Houston",
-    "version": (0,2,3),
+    "version": (0, 2, 3),
     "blender": (2, 61, 0),
     "location": "View3D > UI > Geodesic...",
     "description": "Choice for objects",
     "warning": "not yet finished",
-    "wiki_url": "http://wiki.blender.org/index.php?title=Extensions:2.6/Py/Scripts/Modeling/Geodesic_Domes",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=29609",
+    "wiki_url": "http://wiki.blender.org/index.php?title=Extensions:2.6/Py/"
+        "Scripts/Modeling/Geodesic_Domes",
+    "tracker_url": "https://developer.blender.org/T29609",
     "category": "Object"}
 
 """
@@ -36,10 +36,10 @@ Added one possible *.bak for GD_0.GD (one time) 17-12-2011
 if "bpy" in locals():
     import imp
     imp.reload(third_domes_panel)
-    
+
 else:
     from geodesic_domes import third_domes_panel
-   
+
 import bpy
 from bpy.props import *
 
index 788b170..1627250 100644 (file)
 #  First publication in Blender  : 2012-11-03
 #  Last modified                 : 2013-04-04
 #
-#  Acknowledgements 
+#  Acknowledgements
 #  ================
-#  Blender: ideasman_42, meta_androcto, truman, kilon, CoDEmanX, dairin0d, PKHG, 
+#  Blender: ideasman_42, meta_androcto, truman, kilon, CoDEmanX, dairin0d, PKHG,
 #           Valter, ...
 #  Other  : Frank Palmino
 #
 #
-#  To do: change radii also for the sticks represented by the skin modifier 
+#  To do: change radii also for the sticks represented by the skin modifier
 #
 
 bl_info = {
@@ -44,12 +44,11 @@ bl_info = {
     "blender": (2, 60, 0),
     "location": "Panel: View 3D - Tools",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/"
-                "Py/Scripts/Import-Export/PDB",
-    "tracker_url": "http://projects.blender.org/tracker/"
-                   "index.php?func=detail&aid=33071&group_id=153&atid=467",
-    "category": "Import-Export"
-}
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Import-Export/PDB",
+    "tracker_url": "https://developer.blender.org/T33071",
+    "category": "Import-Export"}
+
 
 import bpy
 from bpy.types import Operator, Panel
@@ -74,17 +73,17 @@ class PreparePanel(Panel):
         scn    = context.scene.atom_blend
 
         box = layout.box()
-        col = box.column(align=True) 
+        col = box.column(align=True)
         col.label(text="Custom data file")
         col.prop(scn, "datafile")
         col.operator("atom_blend.datafile_apply")
-        
-        box = layout.box()  
-        col = box.column(align=True)   
+
+        box = layout.box()
+        col = box.column(align=True)
         col.label(text="Measure distances")
         col.operator("atom_blend.button_distance")
-        col.prop(scn, "distance")      
-        
+        col.prop(scn, "distance")
+
         box = layout.box()
         col = box.column(align=True)
         col.label(text="All changes concern:")
@@ -97,7 +96,7 @@ class PreparePanel(Panel):
         col.prop(scn, "radius_type")
         col2 = col.column()
         col2.active = (scn.radius_type == '3')
-        col2.prop(scn, "radius_type_ionic")   
+        col2.prop(scn, "radius_type_ionic")
         col = box.column(align=True)
         col.label(text="2. Radii in pm")
         col.prop(scn, "radius_pm_name")
@@ -108,7 +107,7 @@ class PreparePanel(Panel):
         row = col.row()
         row.operator("atom_blend.radius_all_smaller")
         row.operator("atom_blend.radius_all_bigger")
-        
+
         box = layout.box()
         col = box.column(align=True)
         col.label(text="Change stick size")
@@ -125,41 +124,41 @@ class PreparePanel(Panel):
         col2.prop(scn, "replace_objs")
         col2.prop(scn, "replace_objs_material")
         col.prop(scn, "replace_objs_special")
-        col.operator("atom_blend.replace_atom")  
+        col.operator("atom_blend.replace_atom")
         col.label(text="Default values")
-        col.operator("atom_blend.default_atoms") 
+        col.operator("atom_blend.default_atoms")
 
         box = layout.box()
         col = box.column(align=True)
         col.label(text="Separate atoms")
         col3 = col.column()
-        col3.active = (bpy.context.mode == 'EDIT_MESH')    
+        col3.active = (bpy.context.mode == 'EDIT_MESH')
         col3.operator("atom_blend.separate_atom")
-        
+
 
 # The properties of buttons etc. in the panel.
 class PanelProperties(bpy.types.PropertyGroup):
 
     def Callback_radius_type(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("ATOM_RADIUS_TYPE", 
-                                              scn.action_type, 
+        io_atomblend_utilities.choose_objects("ATOM_RADIUS_TYPE",
+                                              scn.action_type,
                                               None,
                                               None,
                                               scn.radius_type,
                                               scn.radius_type_ionic,
-                                              None) 
+                                              None)
     def Callback_radius_pm(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("ATOM_RADIUS_PM", 
-                                              scn.action_type, 
+        io_atomblend_utilities.choose_objects("ATOM_RADIUS_PM",
+                                              scn.action_type,
                                               None,
                                               [scn.radius_pm_name,
                                               scn.radius_pm],
                                               None,
                                               None,
-                                              None) 
-        
+                                              None)
+
     datafile = StringProperty(
         name = "", description="Path to your custom data file",
         maxlen = 256, default = "", subtype='FILE_PATH')
@@ -177,22 +176,22 @@ class PanelProperties(bpy.types.PropertyGroup):
         description="Choose a different atom shape.",
         items=(('0',"Unchanged", "Do not change the shape"),
                ('1a',"Sphere (Mesh)", "Replace with a sphere (Mesh)"),
-               ('1b',"Sphere (NURBS)", "Replace with a sphere (NURBS)"),        
+               ('1b',"Sphere (NURBS)", "Replace with a sphere (NURBS)"),
                ('2',"Cube", "Replace with a cube"),
                ('3',"Plane", "Replace with a plane"),
                ('4a',"Circle (Mesh)", "Replace with a circle (Mesh)"),
-               ('4b',"Circle (NURBS)", "Replace with a circle (NURBS)"),               
-               ('5a',"Icosphere 1", "Replace with a icosphere, subd=1"),  
-               ('5b',"Icosphere 2", "Replace with a icosphere, subd=2"),  
-               ('5c',"Icosphere 3", "Replace with a icosphere, subd=3"),  
+               ('4b',"Circle (NURBS)", "Replace with a circle (NURBS)"),
+               ('5a',"Icosphere 1", "Replace with a icosphere, subd=1"),
+               ('5b',"Icosphere 2", "Replace with a icosphere, subd=2"),
+               ('5c',"Icosphere 3", "Replace with a icosphere, subd=3"),
                ('5d',"Icosphere 4", "Replace with a icosphere, subd=4"),
-               ('5e',"Icosphere 5", "Replace with a icosphere, subd=5"),                                                         
+               ('5e',"Icosphere 5", "Replace with a icosphere, subd=5"),
                ('6a',"Cylinder (Mesh)", "Replace with a cylinder (Mesh)"),
-               ('6b',"Cylinder (NURBS)", "Replace with a cylinder (NURBS)"),               
+               ('6b',"Cylinder (NURBS)", "Replace with a cylinder (NURBS)"),
                ('7',"Cone", "Replace with a cone"),
                ('8a',"Torus (Mesh)", "Replace with a torus (Mesh)"),
                ('8b',"Torus (NURBS)", "Replace with a torus (NURBS)")),
-               default='0',)                      
+               default='0',)
     replace_objs_material = EnumProperty(
         name="Material",
         description="Choose a different material.",
@@ -210,7 +209,7 @@ class PanelProperties(bpy.types.PropertyGroup):
                ('2',"F2+ center", "Replace with a F2+ center"),
                ('3',"F+ center", "Replace with a F+ center"),
                ('4',"F0 center", "Replace with a F0 center")),
-               default='0',)                                     
+               default='0',)
     action_type = EnumProperty(
         name="",
         description="Which objects shall be modified?",
@@ -233,7 +232,7 @@ class PanelProperties(bpy.types.PropertyGroup):
                ('1',"-3", "Charge state -3"),
                ('2',"-2", "Charge state -2"),
                ('3',"-1", "Charge state -1"),
-               ('4'," 0", "Charge state  0: nothing is done"),              
+               ('4'," 0", "Charge state  0: nothing is done"),
                ('5',"+1", "Charge state +1"),
                ('6',"+2", "Charge state +2"),
                ('7',"+3", "Charge state +3"),
@@ -241,7 +240,7 @@ class PanelProperties(bpy.types.PropertyGroup):
                ('9',"+5", "Charge state +5"),
                ('10',"+6", "Charge state +6"),
                ('11',"+7", "Charge state +7")),
-               default='4',update=Callback_radius_type)           
+               default='4',update=Callback_radius_type)
     radius_pm_name = StringProperty(
         name="", default="Atom name",
         description="Put in the name of the atom (e.g. Hydrogen)")
@@ -255,7 +254,7 @@ class PanelProperties(bpy.types.PropertyGroup):
     sticks_all = FloatProperty(
         name="Scale", default = 1.05, min=1.0, max=5.0,
         description="Put in the scale factor")
-        
+
 
 # Button loading a custom data file
 class DatafileApply(Operator):
@@ -291,13 +290,13 @@ class DefaultAtom(Operator):
 
     def execute(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("ATOM_DEFAULT_OBJ", 
-                                              scn.action_type, 
-                                              None, 
+        io_atomblend_utilities.choose_objects("ATOM_DEFAULT_OBJ",
+                                              scn.action_type,
                                               None,
                                               None,
                                               None,
-                                              None) 
+                                              None,
+                                              None)
         return {'FINISHED'}
 
 
@@ -317,13 +316,13 @@ class ReplaceAtom(Operator):
 
     def execute(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("ATOM_REPLACE_OBJ", 
-                                              scn.action_type, 
-                                              None, 
+        io_atomblend_utilities.choose_objects("ATOM_REPLACE_OBJ",
+                                              scn.action_type,
+                                              None,
                                               None,
                                               None,
                                               None,
-                                              None) 
+                                              None)
         return {'FINISHED'}
 
 
@@ -372,14 +371,14 @@ class RadiusAllBiggerButton(Operator):
     bl_description = "Increase the radii of selected atoms"
 
     def execute(self, context):
-        scn = bpy.context.scene.atom_blend     
-        io_atomblend_utilities.choose_objects("ATOM_RADIUS_ALL", 
-                                              scn.action_type, 
-                                              scn.radius_all, 
+        scn = bpy.context.scene.atom_blend
+        io_atomblend_utilities.choose_objects("ATOM_RADIUS_ALL",
+                                              scn.action_type,
+                                              scn.radius_all,
                                               None,
                                               None,
                                               None,
-                                              None)        
+                                              None)
         return {'FINISHED'}
 
 
@@ -391,13 +390,13 @@ class RadiusAllSmallerButton(Operator):
 
     def execute(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("ATOM_RADIUS_ALL", 
-                                              scn.action_type, 
-                                              1.0/scn.radius_all, 
+        io_atomblend_utilities.choose_objects("ATOM_RADIUS_ALL",
+                                              scn.action_type,
+                                              1.0/scn.radius_all,
                                               None,
                                               None,
                                               None,
-                                              None)                                     
+                                              None)
         return {'FINISHED'}
 
 
@@ -408,14 +407,14 @@ class SticksAllBiggerButton(Operator):
     bl_description = "Increase the radii of selected sticks"
 
     def execute(self, context):
-        scn = bpy.context.scene.atom_blend     
-        io_atomblend_utilities.choose_objects("STICKS_RADIUS_ALL", 
-                                              scn.action_type, 
-                                              None, 
+        scn = bpy.context.scene.atom_blend
+        io_atomblend_utilities.choose_objects("STICKS_RADIUS_ALL",
+                                              scn.action_type,
                                               None,
                                               None,
                                               None,
-                                              scn.sticks_all)        
+                                              None,
+                                              scn.sticks_all)
         return {'FINISHED'}
 
 
@@ -427,18 +426,18 @@ class SticksAllSmallerButton(Operator):
 
     def execute(self, context):
         scn = bpy.context.scene.atom_blend
-        io_atomblend_utilities.choose_objects("STICKS_RADIUS_ALL", 
-                                              scn.action_type, 
-                                              None, 
+        io_atomblend_utilities.choose_objects("STICKS_RADIUS_ALL",
+                                              scn.action_type,
+                                              None,
                                               None,
                                               None,
                                               None,
-                                              1.0/scn.sticks_all)                                     
+                                              1.0/scn.sticks_all)
         return {'FINISHED'}
 
 
 def register():
-    io_atomblend_utilities.read_elements()  
+    io_atomblend_utilities.read_elements()
     bpy.utils.register_module(__name__)
     bpy.types.Scene.atom_blend = bpy.props.PointerProperty(type=PanelProperties)
 
index 4e71ea9..8841e72 100644 (file)
@@ -5,7 +5,6 @@ bl_info = {
     "author": "Littleneo (Jerome Mahieux)",
     "version": (0, 18),
     "blender": (2, 63, 0),
-    "api": 42615,
     "location": "File > Import > DirectX (.x)",
     "warning": "",
     "wiki_url": "https://github.com/littleneo/directX_blender/wiki",
@@ -35,7 +34,7 @@ from bpy_extras.io_utils import (ExportHelper,
                                  )
 try : import bel
 except : import io_directx_bel.bel
-    
+
 class ImportX(bpy.types.Operator, ImportHelper):
     '''Load a Direct x File'''
     bl_idname = "import_scene.x"
@@ -62,19 +61,19 @@ class ImportX(bpy.types.Operator, ImportHelper):
             description="display details for each imported thing",
             default=False,
             )
-    
+
     quickmode = BoolProperty(
             name="Quick mode",
             description="only retrieve mesh basics",
             default=False,
             )
-    
+
     parented = BoolProperty(
             name="Object Relationships",
             description="import armatures, empties, rebuild parent-childs relations",
             default=True,
             )
-    
+
     bone_maxlength = FloatProperty(
             name="Bone length",
             description="Bones max length",
@@ -82,7 +81,7 @@ class ImportX(bpy.types.Operator, ImportHelper):
             soft_min=0.1, soft_max=10.0,
             default=1.0,
             )
-    
+
     chunksize = EnumProperty(
             name="Chunksize",
             items=(('0', "all", ""),
@@ -157,7 +156,7 @@ class ImportX(bpy.types.Operator, ImportHelper):
             soft_min=0.0, soft_max=1000.0,
             default=0.0,
             )
-    
+
     axis_forward = EnumProperty(
             name="Forward",
             items=(('X', "Left (x)", ""),
@@ -189,7 +188,7 @@ class ImportX(bpy.types.Operator, ImportHelper):
             self.use_split_groups = False
         else:
             self.use_groups_as_vgroups = False
-            
+
         keywords = self.as_keywords(ignore=("axis_forward",
                                             "axis_up",
                                             "filter_glob",
@@ -197,13 +196,13 @@ class ImportX(bpy.types.Operator, ImportHelper):
                                             ))
 
         keywords["naming_method"] = int(self.naming_method)
-        
+
         global_matrix = axis_conversion(from_forward=self.axis_forward,
                                         from_up=self.axis_up,
                                         ).to_4x4()
         keywords["global_matrix"] = global_matrix
 
-    
+
         bel.fs.saveOptions(self,'import_scene.x', self.as_keywords(ignore=(
                                             "filter_glob",
                                             "filepath",
@@ -212,11 +211,11 @@ class ImportX(bpy.types.Operator, ImportHelper):
 
     def draw(self, context):
         layout = self.layout
-        
+
         # import box
         box = layout.box()
         col = box.column(align=True)
-        col.label('Import Options :')  
+        col.label('Import Options :')
         col.prop(self, "chunksize")
         col.prop(self, "use_smooth_groups")
         actif = not(self.quickmode)
@@ -226,13 +225,13 @@ class ImportX(bpy.types.Operator, ImportHelper):
         if self.parented :
             row = col.row()
             row.enabled = actif
-            row.prop(self, "bone_maxlength")      
+            row.prop(self, "bone_maxlength")
         col.prop(self, "quickmode")
-        
+
         # source orientation box
         box = layout.box()
         col = box.column(align=True)
-        col.label('Source Orientation :')      
+        col.label('Source Orientation :')
         col.prop(self, "axis_forward")
         col.prop(self, "axis_up")
 
@@ -249,11 +248,11 @@ class ImportX(bpy.types.Operator, ImportHelper):
         col.prop(self, "show_tree")
         col.prop(self, "show_templates")
         col.prop(self, "show_geninfo")
-        
+
         #row = layout.row(align=True)
         #row.prop(self, "use_ngons")
         #row.prop(self, "use_edges")
-        
+
         '''
         box = layout.box()
         row = box.row()
index 401efe7..adf5448 100644 (file)
@@ -27,10 +27,9 @@ bl_info = {
     "location": "File > Export > Marmalade cross-platform Apps (.group)",
     "description": "Export Marmalade Format files (.group)",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Import-Export/Marmalade_Exporter",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "",
+    "tracker_url": "https://developer.blender.org",
     "category": "Import-Export"}
 
 import os
@@ -129,7 +128,7 @@ def ExportMadeWithMarmaladeGroup(Config):
         CurrentFrame = bpy.context.scene.frame_current
     if Config.Verbose:
         print("Done")
-    
+
     Config.ObjectList = []
     if Config.Verbose:
         print("Writing Objects...")
@@ -198,8 +197,8 @@ def WriteObjects(Config, ObjectList, geoFile=None, mtlFile=None, GeoModel=None,
     for Object in ObjectList:
         if Config.Verbose:
             print("  Writing Object: {}...".format(Object.name))
-        
-        if Config.ExportArmatures and Object.type == "ARMATURE":           
+
+        if Config.ExportArmatures and Object.type == "ARMATURE":
             Armature = Object.data
             ParentList = [Bone for Bone in Armature.bones if Bone.parent is None]
             if Config.Verbose:
@@ -211,7 +210,7 @@ def WriteObjects(Config, ObjectList, geoFile=None, mtlFile=None, GeoModel=None,
                 print("      Creating skel file %s" % (skelfullname))
 
             skelFile = open(skelfullname, "w")
-            skelFile.write('// skel file exported from : %r\n' % os.path.basename(bpy.data.filepath))   
+            skelFile.write('// skel file exported from : %r\n' % os.path.basename(bpy.data.filepath))
             skelFile.write("CIwAnimSkel\n")
             skelFile.write("{\n")
             skelFile.write("\tnumBones %d\n" % (len(Armature.bones)))
@@ -274,13 +273,13 @@ def WriteObjects(Config, ObjectList, geoFile=None, mtlFile=None, GeoModel=None,
                 Mesh.transform(SCALE_MAT * X_ROT * Object.matrix_world)
 
              # manage merge options
-   
+
             if Config.MergeModes == 0:
                 #one geo per Object, so use name of Object for the Geo file
                 geoFile, mtlFile = CreateGeoMtlFiles(Config, StripName(Object.name))
-                GeoModel = CGeoModel(StripName(Object.name))  
-                
-            # Write the Mesh in the Geo file   
+                GeoModel = CGeoModel(StripName(Object.name))
+
+            # Write the Mesh in the Geo file
             WriteMesh(Config, Object, Mesh, geoFile, mtlFile, GeoModel)
 
             if Config.MergeModes == 0:
@@ -291,7 +290,7 @@ def WriteObjects(Config, ObjectList, geoFile=None, mtlFile=None, GeoModel=None,
                 GeoModel = None
             elif Config.MergeModes == 1:
                 # merge in one Mesh, so keep the Geo class and prepare to change object
-                GeoModel.NewObject() 
+                GeoModel.NewObject()
             elif Config.MergeModes == 2:
                 # merge several Meshes in one file: so clear the mesh data that we just written in the file,
                 # but keep Materials info that need to be merged across objects
@@ -322,7 +321,7 @@ def WriteObjects(Config, ObjectList, geoFile=None, mtlFile=None, GeoModel=None,
                             GeoModel.skinnedVertices.append(i)
                             useBonesKey = pow(2, GeoModel.armatureRootBoneIndex)
                             vertexGroupIndices = list((GeoModel.armatureRootBoneIndex,))
-                            if useBonesKey not in GeoModel.useBonesDict:                          
+                            if useBonesKey not in GeoModel.useBonesDict:
                                 GeoModel.mapVertexGroupNames[GeoModel.armatureRootBoneIndex] = StripBoneName(GeoModel.armatureRootBone.name)
                                 VertexList = []
                                 VertexList.append("\t\tvertWeights { %d, 1.0}" % i)
@@ -346,7 +345,7 @@ def CreateGeoMtlFiles(Config, Name):
     geofullname = os.path.dirname(Config.FilePath) + os.sep + "models" + os.sep + "%s.geo" % Name
     ensure_dir(geofullname)
     if Config.Verbose:
-        print("      Creating geo file %s" % (geofullname))  
+        print("      Creating geo file %s" % (geofullname))
     geoFile = open(geofullname, "w")
     geoFile.write('// geo file exported from : %r\n' % os.path.basename(bpy.data.filepath))
     geoFile.write("CIwModel\n")
@@ -361,17 +360,17 @@ def CreateGeoMtlFiles(Config, Name):
     if Config.Verbose:
         print("      Creating mtl file %s" % (mtlfullname))
     mtlFile = open(mtlfullname, "w")
-    mtlFile.write('// mtl file exported from : %r\n' % os.path.basename(bpy.data.filepath))   
+    mtlFile.write('// mtl file exported from : %r\n' % os.path.basename(bpy.data.filepath))
     return geoFile, mtlFile
 
 
 def FinalizeGeoMtlFiles(Config, geoFile, mtlFile):
     if Config.Verbose:
-        print("      Closing geo file")  
+        print("      Closing geo file")
     geoFile.write("}\n")
     geoFile.close()
     if Config.Verbose:
-        print("      Closing mtl file")  
+        print("      Closing mtl file")
     mtlFile.close()
 
 
@@ -388,7 +387,7 @@ def WriteMesh(Config, Object, Mesh,  geoFile=None, mtlFile=None, GeoModel=None):
     if Config.MergeModes == 0 or Config.MergeModes == 2:
         #if we don't merge, or if we write several meshes into one file ... write the mesh everytime we do an object
         GeoModel.PrintGeoMesh(geoFile)
+
     if Config.Verbose:
         print("      Done\n      Writing Mesh Materials...")
 
@@ -398,7 +397,7 @@ def WriteMesh(Config, Object, Mesh,  geoFile=None, mtlFile=None, GeoModel=None):
 
     if Config.Verbose:
         print("      Done")
-  
+
     if Config.ExportArmatures:
         if Config.Verbose:
             print("      Writing Mesh Weights...")
@@ -424,10 +423,10 @@ def WriteMesh(Config, Object, Mesh,  geoFile=None, mtlFile=None, GeoModel=None):
 
 #############
 #Store one Point of a Quad or Tri in marmalade geo format: //index-list is: { <int> <int> <int> <int> <int> }   //v,vn,uv0,uv1,vc
-#############                           
+#############
 class CGeoIndexList:
     __slots__ = "v", "vn", "uv0", "uv1", "vc"
-    
+
     def __init__(self, v, vn, uv0, uv1, vc):
         self.v = v
         self.vn = vn
@@ -435,13 +434,13 @@ class CGeoIndexList:
         self.uv1 = uv1
         self.vc = vc
 
-        
+
 #############
 #Store a Quad or a Tri in marmalade geo format : 3 or 4 CIndexList depending it is a Tri or a Quad
-#############                        
+#############
 class CGeoPoly:
     __slots__ = "pointsList",
-    
+
     def __init__(self):
         self.pointsList = []
 
@@ -463,10 +462,10 @@ class CGeoPoly:
 
 #############
 #Store all the poly (tri or quad) assigned to a Material in marmalade geo format
-#############                        
+#############
 class CGeoMaterialPolys:
     __slots__ = "name", "material", "quadList", "triList", "currentPoly"
-    
+
     def __init__(self, name, material=None):
         self.name = name
         self.material = material
@@ -478,8 +477,8 @@ class CGeoMaterialPolys:
         self.currentPoly = CGeoPoly()
 
     def AddPoint(self, v, vn, uv0, uv1, vc):
-        self.currentPoly.AddPoint(v, vn, uv0, uv1, vc)       
-             
+        self.currentPoly.AddPoint(v, vn, uv0, uv1, vc)
+
     def EndPoly(self):
         if (self.currentPoly.PointsCount() == 3):
             self.triList.append(self.currentPoly)
@@ -516,12 +515,12 @@ class CGeoMaterialPolys:
 
 #############
 #Store all the information on a Model/Mesh (vertices, normal, certcies color, uv0, uv1, TRI, QUAD) in marmalade geo format
-#############  
+#############
 class CGeoModel:
     __slots__ = ("name", "MaterialsDict", "vList", "vnList", "vcList", "uv0List", "uv1List",
                 "currentMaterialPolys", "vbaseIndex","vnbaseIndex", "uv0baseIndex", "uv1baseIndex",
                 "armatureObjectName", "useBonesDict", "mapVertexGroupNames", "armatureRootBone", "armatureRootBoneIndex", "skinnedVertices")
-                
+
     def __init__(self, name):
         self.name = name
         self.MaterialsDict = {}
@@ -559,11 +558,11 @@ class CGeoModel:
     # add a uv coordiantes and return the current Index in the stream (index is local to the object, when we merge several object into a one Mesh)
     def AddVertexUV0(self, u, v):
         self.uv0List.append((u, v))
-        return len(self.uv0List) - 1 - self.uv0baseIndex 
+        return len(self.uv0List) - 1 - self.uv0baseIndex
 
     def AddVertexUV1(self, u, v):
         self.uv1List.append((u, v))
-        return len(self.uv1List) - 1 - self.uv1baseIndex 
+        return len(self.uv1List) - 1 - self.uv1baseIndex
 
     # add a vertexcolor if it doesn't already exist and return the current Index in the stream (index is global to all objects, when we merge several object into a one Mesh)
     def AddVertexColor(self, r, g, b, a):
@@ -591,9 +590,9 @@ class CGeoModel:
             uv0 += self.uv0baseIndex
         if uv1 != -1:
             uv1 += self.uv1baseIndex
-                
-        self.currentMaterialPolys.AddPoint(v, vn, uv0, uv1, vc)       
-                              
+
+        self.currentMaterialPolys.AddPoint(v, vn, uv0, uv1, vc)
+
     def EndPoly(self):
         self.currentMaterialPolys.EndPoly()
         self.MaterialsDict[self.currentMaterialPolys.name] = self.currentMaterialPolys
@@ -637,7 +636,7 @@ class CGeoModel:
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVerts %d\n" % len(self.vList))
             for vertex in self.vList:
-                geoFile.write("\t\t\tv { %.9f, %.9f, %.9f }\n" % (vertex[0], vertex[1], vertex[2]))                      
+                geoFile.write("\t\t\tv { %.9f, %.9f, %.9f }\n" % (vertex[0], vertex[1], vertex[2]))
             geoFile.write("\t\t}\n")
 
         if self.vnList:
@@ -645,7 +644,7 @@ class CGeoModel:
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVertNorms  %d\n" % len(self.vnList))
             for vertexn in self.vnList:
-                geoFile.write("\t\t\tvn { %.9f, %.9f, %.9f }\n" % (vertexn[0], vertexn[1], vertexn[2]))                      
+                geoFile.write("\t\t\tvn { %.9f, %.9f, %.9f }\n" % (vertexn[0], vertexn[1], vertexn[2]))
             geoFile.write("\t\t}\n")
 
         if self.vcList:
@@ -653,7 +652,7 @@ class CGeoModel:
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVertCols %d\n" % len(self.vcList))
             for color in self.vcList:
-                geoFile.write("\t\t\tcol { %.6f, %.6f, %.6f, %.6f }\n" % (color[0], color[1], color[2], color[3])) #alpha is not supported on blender for vertex colors           
+                geoFile.write("\t\t\tcol { %.6f, %.6f, %.6f, %.6f }\n" % (color[0], color[1], color[2], color[3])) #alpha is not supported on blender for vertex colors
             geoFile.write("\t\t}\n")
 
         if self.uv0List:
@@ -662,7 +661,7 @@ class CGeoModel:
             geoFile.write("\t\t\tsetID 0\n")
             geoFile.write("\t\t\tnumUVs %d\n" % len(self.uv0List))
             for uv in self.uv0List:
-                 geoFile.write("\t\t\tuv { %.9f, %.9f }\n" % (uv[0], uv[1]))                       
+                 geoFile.write("\t\t\tuv { %.9f, %.9f }\n" % (uv[0], uv[1]))
             geoFile.write("\t\t}\n")
 
         if self.uv1List:
@@ -671,7 +670,7 @@ class CGeoModel:
             geoFile.write("\t\t\tsetID 1\n")
             geoFile.write("\t\t\tnumUVs %d\n" % len(self.uv1List))
             for uv in self.uv1List:
-                 geoFile.write("\t\t\tuv { %.9f, %.9f }\n" % (uv[0], uv[1]))                       
+                 geoFile.write("\t\t\tuv { %.9f, %.9f }\n" % (uv[0], uv[1]))
             geoFile.write("\t\t}\n")
 
         for GeoMaterialPolys in self.MaterialsDict.values():
@@ -685,7 +684,7 @@ class CGeoModel:
         if name in self.MaterialsDict:
             return self.MaterialsDict[name].material
         else:
-            return None       
+            return None
 
 
 
@@ -697,7 +696,7 @@ def BuildOptimizedGeo(Config, Object, Mesh, GeoModel):
 
     #Ensure tessfaces data are here
     Mesh.update (calc_tessface=True)
-    
+
     #Store Vertex stream, and Normal stream (use directly the order from blender collection
     for Vertex in Mesh.vertices:
         GeoModel.AddVertex(Vertex.co)
@@ -750,7 +749,7 @@ def BuildOptimizedGeo(Config, Object, Mesh, GeoModel):
                 uvVertices = uvVertices[::-1]
             uv0Index = []
             for uvVertex in uvVertices:
-                index = GeoModel.AddVertexUV0(uvVertex[0], 1 - uvVertex[1]) 
+                index = GeoModel.AddVertexUV0(uvVertex[0], 1 - uvVertex[1])
                 uv0Index.append(index)
         else:
             uv0Index = list((-1, -1, -1, -1))
@@ -765,8 +764,8 @@ def BuildOptimizedGeo(Config, Object, Mesh, GeoModel):
         if mat:
             matName =  mat.name
         else:
-            matName = "NoMaterialAssigned"  # There is no material assigned in blender !!!, exporter have generated a default one          
-            
+            matName = "NoMaterialAssigned"  # There is no material assigned in blender !!!, exporter have generated a default one
+
         # now on the material, generates the tri/quad in v,vn,uv0,uv1,vc stream index
         GeoModel.BeginPoly(matName, mat)
 
@@ -776,7 +775,7 @@ def BuildOptimizedGeo(Config, Object, Mesh, GeoModel):
         GeoModel.EndPoly()
 
 
-                              
+
 #############
 # Get the list of Material in use by the CGeoModel
 def WriteMeshMaterialsForGeoModel(Config, mtlFile, GeoModel):
@@ -803,7 +802,7 @@ def WriteMaterial(Config, mtlFile, Material=None):
             MatSpecularColor = min((255, 255, 255)[:],MatSpecularColor[:])
             mtlFile.write("\tcolSpecular  {%.2f,%.2f,%.2f} \n" % (MatSpecularColor[:]))
             # EmitColor = Material.emit * Material.diffuse_color
-            # mtlFile.write("\tcolEmissive {%.2f,%.2f,%.2f} \n" % (EmitColor* 255)[:])    
+            # mtlFile.write("\tcolEmissive {%.2f,%.2f,%.2f} \n" % (EmitColor* 255)[:])
     else:
         mtlFile.write("\tname \"NoMaterialAssigned\" // There is no material assigned in blender !!!, exporter have generated a default one\n")
 
@@ -812,7 +811,7 @@ def WriteMaterial(Config, mtlFile, Material=None):
         Texture = GetMaterialTextureFullPath(Config, Material)
         if Texture:
             mtlFile.write("\ttexture0 .\\textures\\%s\n" % (bpy.path.basename(Texture)))
-            
+
             if Config.CopyTextureFiles:
                 if not os.path.exists(Texture):
                     #try relative path to the blend file
@@ -860,7 +859,7 @@ def FindUniqueIndexForRootBone(Object, RootVertexGroup):
         #so use the next available free index
         return len(Object.vertex_groups)
 
-         
+
 def WriteMeshSkinWeightsForGeoModel(Config, Object, Mesh, GeoModel):
     ArmatureList = [Modifier for Modifier in Object.modifiers if Modifier.type == "ARMATURE"]
     if ArmatureList:
@@ -879,7 +878,7 @@ def WriteMeshSkinWeightsForGeoModel(Config, Object, Mesh, GeoModel):
         # Marmalade need to declare a vertex per list of affected bones
         # so first we have to get all the combinations of affected bones that exist in the mesh
         # to build thoses groups, we build a unique key (like a bit field, where each bit is a VertexGroup.Index): Sum(2^VertGroupIndex)... so we have a unique Number per combinations
-        
+
         for Vertex in Mesh.vertices:
             VertexIndex = Vertex.index + GeoModel.vbaseIndex
             AddVertexToDicionarySkinWeights(Config, Object, Mesh, Vertex, GeoModel.useBonesDict, GeoModel.mapVertexGroupNames, VertexIndex, RootBone, RootVertexGroup, BoneNames)
@@ -890,14 +889,14 @@ def WriteMeshSkinWeightsForGeoModel(Config, Object, Mesh, GeoModel):
             PrintSkinWeights(Config, GeoModel.armatureObjectName, GeoModel.useBonesDict, GeoModel.mapVertexGroupNames, StripName(Object.name))
 
 
-def PrintSkinWeights(Config, ArmatureObjectName, useBonesDict, mapVertexGroupNames, GeoName):        
+def PrintSkinWeights(Config, ArmatureObjectName, useBonesDict, mapVertexGroupNames, GeoName):
         #Create the skin file
         skinfullname = os.path.dirname(Config.FilePath) + os.sep + "models" + os.sep + "%s.skin" % GeoName
         ensure_dir(skinfullname)
         if Config.Verbose:
             print("      Creating skin file %s" % (skinfullname))
         skinFile = open(skinfullname, "w")
-        skinFile.write('// skin file exported from : %r\n' % os.path.basename(bpy.data.filepath))   
+        skinFile.write('// skin file exported from : %r\n' % os.path.basename(bpy.data.filepath))
         skinFile.write("CIwAnimSkin\n")
         skinFile.write("{\n")
         skinFile.write("\tskeleton \"%s\"\n" % ArmatureObjectName)
@@ -951,10 +950,10 @@ def AddVertexToDicionarySkinWeights(Config, Object, Mesh, Vertex, useBonesDict,
             weightTotal = 1
     else:
         bWeightTotZero = False
-    
+
     if len(vertexGroupIndices) > 0:
         vertexGroupIndices.sort();
-           
+
         #build the vertex weight string: vertex indices, followed by influence weight for each bone
         VertexWeightString = "\t\tvertWeights { %d" % (VertexIndex)
         for vertexGroupIndex in vertexGroupIndices:
@@ -970,11 +969,11 @@ def AddVertexToDicionarySkinWeights(Config, Object, Mesh, Vertex, useBonesDict,
                 VertexWeightString += ", %.7f" % (1.0 / len(vertexGroupIndices))
         VertexWeightString += "}"
         if bWeightTotZero:
-            VertexWeightString += " // total weight was zero in blender , export assign it to the RootBone with weight 1." 
+            VertexWeightString += " // total weight was zero in blender , export assign it to the RootBone with weight 1."
         if (len(Vertex.groups)) > 4:
             VertexWeightString += " // vertex is associated to more than 4 bones in blender !! skip some bone association (was associated to %d bones)." % (len(Vertex.groups))
         VertexWeightString += "\n"
-           
+
         #store in dictionnary information
         if useBonesKey not in useBonesDict:
             VertexList = []
@@ -985,19 +984,19 @@ def AddVertexToDicionarySkinWeights(Config, Object, Mesh, Vertex, useBonesDict,
             pair_ListGroupIndices_ListAssignedVertices[1].append(VertexWeightString)
             useBonesDict[useBonesKey] = pair_ListGroupIndices_ListAssignedVertices
     else:
-        print ("ERROR Vertex %d is not skinned (it doesn't belong to any vertex group\n" % (VertexIndex)) 
+        print ("ERROR Vertex %d is not skinned (it doesn't belong to any vertex group\n" % (VertexIndex))
 
 
 
-############# ARMATURE: Bone export, and Bone animation export 
+############# ARMATURE: Bone export, and Bone animation export
+
 
-         
 def WriteArmatureParentRootBones(Config, Object, RootBonesList, skelFile):
 
     if len(RootBonesList) > 1:
         print(" /!\\  WARNING ,Marmelade need only one ROOT bone per armature, there is %d root bones " % len(RootBonesList))
         print(RootBonesList)
-        
+
     PoseBones = Object.pose.bones
     for Bone in RootBonesList:
         if Config.Verbose:
@@ -1009,7 +1008,7 @@ def WriteArmatureParentRootBones(Config, Object, RootBonesList, skelFile):
             print("      Done")
         WriteArmatureChildBones(Config, Object, Bone.children, skelFile)
 
-            
+
 def WriteArmatureChildBones(Config, Object, BonesList, skelFile):
     PoseBones = Object.pose.bones
     for Bone in BonesList:
@@ -1019,16 +1018,16 @@ def WriteArmatureChildBones(Config, Object, BonesList, skelFile):
         WriteBonePosition(Config, Object, Bone, PoseBones, PoseBone, skelFile, True)
         if Config.Verbose:
             print("      Done")
-            
+
         WriteArmatureChildBones(Config, Object, Bone.children, skelFile)
 
 
 def WriteBonePosition(Config, Object, Bone, PoseBones, PoseBone, File, isRestPoseNotAnimPose):
-    # Compute armature scale : 
+    # Compute armature scale :
     # Many others exporter require sthe user to do Apply Scale in Object Mode to have 1,1,1 scale and so that anim data are correctly scaled
     # Here we retreive the Scale of the Armture Object.matrix_world.to_scale() and we use it to scale the bones :-)
     # So new Blender user should not complain about bad animation export if they forgot to apply the Scale to 1,1,1
-    
+
     armScale = Object.matrix_world.to_scale()
     armRot = Object.matrix_world.to_quaternion()
     if isRestPoseNotAnimPose:
@@ -1064,7 +1063,7 @@ def WriteBonePosition(Config, Object, Bone, PoseBones, PoseBone, File, isRestPos
         else:
             localmat= X_ROT * armRot.to_matrix().to_4x4() * localmat #apply the armature rotation on the root bone
 
-    
+
     loc = localmat.to_translation()
     quat = localmat.to_quaternion()
 
@@ -1072,15 +1071,15 @@ def WriteBonePosition(Config, Object, Bone, PoseBones, PoseBone, File, isRestPos
     loc.x *= (armScale.x * Config.Scale)
     loc.y *= (armScale.y * Config.Scale)
     loc.z *= (armScale.z * Config.Scale)
-    
+
     File.write("\t\tpos { %.9f, %.9f, %.9f }\n" % (loc[0], loc[1], loc[2]))
     File.write("\t\trot { %.9f, %.9f, %.9f, %.9f }\n" % (quat.w, quat.x, quat.y, quat.z))
 
     if isRestPoseNotAnimPose:
         File.write("\t}\n")
 
-      
-def WriteKeyedAnimationSet(Config, Scene):  
+
+def WriteKeyedAnimationSet(Config, Scene):
     for Object in [Object for Object in Config.ObjectList if Object.animation_data]:
         if Config.Verbose:
             print("  Writing Animation Data for Object: {}".format(Object.name))
@@ -1088,16 +1087,16 @@ def WriteKeyedAnimationSet(Config, Scene):
         if Config.ExportAnimationActions == 0 and Object.animation_data.action:
             actions.append(Object.animation_data.action)
         else:
-            actions = bpy.data.actions[:]   
+            actions = bpy.data.actions[:]
             DefaultAction = Object.animation_data.action
-        
+
         for Action in actions:
             if Config.ExportAnimationActions == 0:
                 animFileName = StripName(Object.name)
             else:
                 Object.animation_data.action = Action
                 animFileName = "%s_%s" % (StripName(Object.name),StripName(Action.name))
-                          
+
             #Object animated (aka single bone object)
             #build key frame time list
 
@@ -1126,7 +1125,7 @@ def WriteKeyedAnimationSet(Config, Scene):
                 ##    if Config.Verbose:
                 ##        print("      Creating anim file (single bone animation) %s" % (animfullname))
                 ##    animFile = open(animfullname, "w")
-                ##    animFile.write('// anim file exported from : %r\n' % os.path.basename(bpy.data.filepath))   
+                ##    animFile.write('// anim file exported from : %r\n' % os.path.basename(bpy.data.filepath))
                 ##    animFile.write("CIwAnim\n")
                 ##    animFile.write("{\n")
                 ##    animFile.write("\tent \"%s\"\n" % (StripName(Object.name)))
@@ -1136,7 +1135,7 @@ def WriteKeyedAnimationSet(Config, Scene):
                 ##    Config.File.write("\t\".\\anims\\%s_offset.anim\"\n" % animFileName))
                 ##
                 ##    for KeyframeTime in keyframeTimes:
-                ##        #Scene.frame_set(KeyframeTime)    
+                ##        #Scene.frame_set(KeyframeTime)
                 ##        animFile.write("\tCIwAnimKeyFrame\n")
                 ##        animFile.write("\t{\n")
                 ##        animFile.write("\t\ttime %.2f // frame num %d \n" % (KeyframeTime/Config.AnimFPS, KeyframeTime))
@@ -1191,7 +1190,7 @@ def WriteKeyedAnimationSet(Config, Scene):
                     print("    Writing Armature Bone Animation Data...\n")
                 PoseBones = Object.pose.bones
                 Bones = Object.data.bones
-                #riged bones animated 
+                #riged bones animated
                 #build key frame time list
                 keyframeTimes = set()
                 if Config.ExportAnimationFrames == 1:
@@ -1207,7 +1206,7 @@ def WriteKeyedAnimationSet(Config, Scene):
                 else:
                     # Exports all frame
                     keyframeTimes.update(range(Scene.frame_start, Scene.frame_end + 1, 1))
-                   
+
                 keyframeTimes = list(keyframeTimes)
                 keyframeTimes.sort()
                 if Config.Verbose:
@@ -1226,7 +1225,7 @@ def WriteKeyedAnimationSet(Config, Scene):
                         print("      Creating anim file (bones animation) %s\n" % (animfullname))
                         print("      Frame count %d \n" % (len(keyframeTimes)))
                     animFile = open(animfullname, "w")
-                    animFile.write('// anim file exported from : %r\n' % os.path.basename(bpy.data.filepath))   
+                    animFile.write('// anim file exported from : %r\n' % os.path.basename(bpy.data.filepath))
                     animFile.write("CIwAnim\n")
                     animFile.write("{\n")
                     animFile.write("\tskeleton \"%s\"\n" % (StripName(Object.name)))
@@ -1261,25 +1260,25 @@ def WriteKeyedAnimationSet(Config, Scene):
             Object.animation_data.action = DefaultAction
         if Config.Verbose:
             print("  Done") #Done with Object
 
-                                
+
+
+
 ################## Utilities
-            
+
 def StripBoneName(name):
     return name.replace(" ", "")
 
 
 def StripName(Name):
-    
+
     def ReplaceSet(String, OldSet, NewChar):
         for OldChar in OldSet:
             String = String.replace(OldChar, NewChar)
         return String
-    
+
     import string
-    
+
     NewName = ReplaceSet(Name, string.punctuation + " ", "_")
     return NewName
 
@@ -1288,7 +1287,7 @@ def ensure_dir(f):
     d = os.path.dirname(f)
     if not os.path.exists(d):
         os.makedirs(d)
-        
+
 
 def CloseFile(Config):
     if Config.Verbose:
@@ -1351,13 +1350,13 @@ class MarmaladeExporter(bpy.types.Operator):
                     "Do not merge rigged character that have an armature.",
         items=MergeModes,
         default="0")
-    
+
     #General Options
     Scale = IntProperty(
         name="Scale Percent",
         description="Scale percentage applied for export",
         default=100, min=1, max=1000)
-    
+
     FlipNormals = BoolProperty(
         name="Flip Normals",
         description="",
@@ -1399,7 +1398,7 @@ class MarmaladeExporter(bpy.types.Operator):
                     "However if you have defined several animations on the same armature,"\
                     "you can select to export all animations. You can see the list of animation actions in the DopeSheet window.",
         items=AnimationActions,
-        default="0")           
+        default="0")
     AnimFPS = IntProperty(
         name="Animation FPS",
         description="Frame rate used to export animation in seconds (can be used to artficially slow down the exported animation, or to speed up it",
@@ -1411,7 +1410,7 @@ class MarmaladeExporter(bpy.types.Operator):
         description="Select a coordinate system to export to",
         items=CoordinateSystems,
         default="1")
-    
+
     Verbose = BoolProperty(
         name="Verbose",
         description="Run the exporter in debug mode. Check the console for output",
index 328cbc9..3315168 100644 (file)
@@ -24,10 +24,8 @@ bl_info = {
     "location": "File > Export",
     "description": "Save a Quake Model 3 File)",
     "warning": "", # used for warning icon and text in addons panel
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
-        "Scripts/",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=23160",
+    "wiki_url": "",
+    "tracker_url": "https://developer.blender.org/T23160",
     "category": "Import-Export"}
 
 
@@ -49,14 +47,14 @@ class md3Vert:
     xyz = []
     normal = 0
     binaryFormat = "<3hH"
-    
+
     def __init__(self):
         self.xyz = [0.0, 0.0, 0.0]
         self.normal = 0
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
-    
+
     # copied from PhaethonH <phaethon@linux.ucla.edu> md3.py
     def Decode(self, latlng):
         lat = (latlng >> 8) & 0xFF;
@@ -68,7 +66,7 @@ class md3Vert:
         z =                 math.cos(lng)
         retval = [ x, y, z ]
         return retval
-    
+
     # copied from PhaethonH <phaethon@linux.ucla.edu> md3.py
     def Encode(self, normal):
         x = normal[0]
@@ -81,18 +79,18 @@ class md3Vert:
         x = x/l
         y = y/l
         z = z/l
-        
+
         if (x == 0.0) & (y == 0.0) :
             if z > 0.0:
                 return 0
             else:
                 return (128 << 8)
-        
+
         lng = math.acos(z) * 255 / (2 * math.pi)
         lat = math.atan2(y, x) * 255 / (2 * math.pi)
         retval = ((int(lat) & 0xFF) << 8) | (int(lng) & 0xFF)
         return retval
-        
+
     def Save(self, file):
         tmpData = [0] * 4
         tmpData[0] = int(self.xyz[0] * MD3_XYZ_SCALE)
@@ -101,7 +99,7 @@ class md3Vert:
         tmpData[3] = self.normal
         data = struct.pack(self.binaryFormat, tmpData[0], tmpData[1], tmpData[2], tmpData[3])
         file.write(data)
-        
+
 class md3TexCoord:
     u = 0.0
     v = 0.0
@@ -111,7 +109,7 @@ class md3TexCoord:
     def __init__(self):
         self.u = 0.0
         self.v = 0.0
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
 
@@ -129,7 +127,7 @@ class md3Triangle:
 
     def __init__(self):
         self.indexes = [ 0, 0, 0 ]
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
 
@@ -144,13 +142,13 @@ class md3Triangle:
 class md3Shader:
     name = ""
     index = 0
-    
+
     binaryFormat = "<%dsi" % MAX_QPATH
 
     def __init__(self):
         self.name = ""
         self.index = 0
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
 
@@ -178,9 +176,9 @@ class md3Surface:
     triangles = []
     uv = []
     verts = []
-    
+
     binaryFormat = "<4s%ds10i" % MAX_QPATH  # 1 int, name, then 10 ints
-    
+
     def __init__(self):
         self.ident = ""
         self.name = ""
@@ -198,7 +196,7 @@ class md3Surface:
         self.triangles = []
         self.uv = []
         self.verts = []
-        
+
     def GetSize(self):
         sz = struct.calcsize(self.binaryFormat)
         self.ofsTriangles = sz
@@ -215,7 +213,7 @@ class md3Surface:
             sz += v.GetSize()
         self.ofsEnd = sz
         return self.ofsEnd
-    
+
     def Save(self, file):
         self.GetSize()
         tmpData = [0] * 12
@@ -254,17 +252,17 @@ class md3Tag:
     name = ""
     origin = []
     axis = []
-    
+
     binaryFormat="<%ds3f9f" % MAX_QPATH
-    
+
     def __init__(self):
         self.name = ""
         self.origin = [0, 0, 0]
         self.axis = [0, 0, 0, 0, 0, 0, 0, 0, 0]
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
-        
+
     def Save(self, file):
         tmpData = [0] * 13
         tmpData[0] = self.name
@@ -282,23 +280,23 @@ class md3Tag:
         tmpData[12] = float(self.axis[8])
         data = struct.pack(self.binaryFormat, tmpData[0],tmpData[1],tmpData[2],tmpData[3],tmpData[4],tmpData[5],tmpData[6], tmpData[7], tmpData[8], tmpData[9], tmpData[10], tmpData[11], tmpData[12])
         file.write(data)
-    
+
 class md3Frame:
     mins = 0
     maxs = 0
     localOrigin = 0
     radius = 0.0
     name = ""
-    
+
     binaryFormat="<3f3f3ff16s"
-    
+
     def __init__(self):
         self.mins = [0, 0, 0]
         self.maxs = [0, 0, 0]
         self.localOrigin = [0, 0, 0]
         self.radius = 0.0
         self.name = ""
-        
+
     def GetSize(self):
         return struct.calcsize(self.binaryFormat)
 
@@ -367,7 +365,7 @@ class md3Object:
         for s in self.surfaces:
             self.ofsEnd += s.GetSize()
         return self.ofsEnd
-        
+
     def Save(self, file):
         self.GetSize()
         tmpData = [0] * 12
@@ -389,10 +387,10 @@ class md3Object:
 
         for f in self.frames:
             f.Save(file)
-            
+
         for t in self.tags:
             t.Save(file)
-            
+
         for s in self.surfaces:
             s.Save(file)
 
@@ -480,7 +478,7 @@ def print_md3(log,md3,dumpall):
       message(log," UVs:")
       for uv in s.uv:
         message(log,"  U: " + str(uv.u))
-        message(log,"  V: " + str(uv.v)) 
+        message(log,"  V: " + str(uv.v))
       message(log," Verts:")
       for vert in s.verts:
         message(log,"  XYZ: " + str(vert.xyz[0]) + " " + str(vert.xyz[1]) + " " + str(vert.xyz[2]))
@@ -528,7 +526,7 @@ def save_md3(settings):
       nsurface = md3Surface()
       nsurface.name = obj.name
       nsurface.ident = MD3_IDENT
+
       vertlist = []
 
       for f,face in enumerate(obj.data.faces):
@@ -598,7 +596,7 @@ def save_md3(settings):
             minlength = math.sqrt(math.pow(nframe.mins[0],2) + math.pow(nframe.mins[1],2) + math.pow(nframe.mins[2],2))
             maxlength = math.sqrt(math.pow(nframe.maxs[0],2) + math.pow(nframe.maxs[1],2) + math.pow(nframe.maxs[2],2))
             nframe.radius = round(max(minlength,maxlength),5)
-            nsurface.verts.append(nvert) 
+            nsurface.verts.append(nvert)
         md3.frames.append(nframe)
         nsurface.numFrames += 1
         bpy.data.meshes.remove(fobj)
@@ -623,7 +621,7 @@ def save_md3(settings):
         ntag.axis[7] = obj.matrix_world[2][1]
         ntag.axis[8] = obj.matrix_world[2][2]
         md3.tags.append(ntag)
-  
+
   if md3.numSurfaces < 1:
     message(log,"Select a mesh to export!")
     if log:
@@ -682,7 +680,7 @@ class ExportMD3(bpy.types.Operator):
 
 def menu_func(self, context):
   newpath = os.path.splitext(bpy.context.blend_data.filepath)[0] + ".md3"
-  self.layout.operator(ExportMD3.bl_idname, text="Quake Model 3 (.md3)").filepath = newpath 
+  self.layout.operator(ExportMD3.bl_idname, text="Quake Model 3 (.md3)").filepath = newpath
 
 def register():
   bpy.types.INFO_MT_file_export.append(menu_func)
index 0f136d6..b19521c 100644 (file)
@@ -71,7 +71,7 @@ bl_info = {
     "description": "imports all image files from a folder",
     "warning": '', # used for warning icon and text in addons panel
     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/Import-Export/BrushSet",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=25702&group_id=153&atid=467",
+    "tracker_url": "https://developer.blender.org/T25702",
     }
 
 #---------------------------------------------#
index 98c5d1b..22cf926 100644 (file)
@@ -24,10 +24,9 @@ bl_info = {
     "location": "3D window > Tool Shelf",
     "description": "Import DTM from LRO Lola and MGS Mola",
     "warning": "May consume a lot of memory",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Import-Export/NASA_IMG_Importer",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=25462",
+    "tracker_url": "https://developer.blender.org/T25462",
     "category": "Import-Export"}
 
 
@@ -462,7 +461,7 @@ class Img_Importer(bpy.types.Panel):
     bl_space_type = "VIEW_3D"
     bl_region_type = "TOOL_PROPS"
     bl_label = "LRO Lola & MGS Mola IMG Importer"
-    
+
     def __init__(self):
         typ = bpy.types.Scene
         var = bpy.props
@@ -585,12 +584,12 @@ def initialize():
     OFFSET = SCALING_FACTOR = 0.0
     SAMPLE_TYPE = UNIT = TARGET_NAME = RadiusUM = Message = ""
     start_up=True
-            
+
     bpy.types.Scene.fpath = bpy.props.StringProperty(
-        name="Import File ", 
-        description="Select your img file", 
-        subtype="FILE_PATH", 
-        default="", 
+        name="Import File ",
+        description="Select your img file",
+        subtype="FILE_PATH",
+        default="",
         update=update_fpath)
 
 def clear_properties():
@@ -618,10 +617,10 @@ def clear_properties():
         if p in bpy.context.scene:
             del bpy.context.scene[p]
     bpy.types.Scene.fpath = bpy.props.StringProperty(
-        name="Import File ", 
-        description="Select your img file", 
-        subtype="FILE_PATH", 
-        default="", 
+        name="Import File ",
+        description="Select your img file",
+        subtype="FILE_PATH",
+        default="",
         update=update_fpath)
 
 
index 9626790..78eac7a 100644 (file)
@@ -22,10 +22,12 @@ bl_info = {
     "version": (0, 5, 1),
     "blender": (2, 65, 0),
     "location": "3D window > Tool Shelf",
-    "description": "Plot Moho (Papagayo, Jlipsync, Yolo) file to frames and adds automatic blinking",
+    "description": "Plot Moho (Papagayo, Jlipsync, Yolo) file "
+        "to frames and adds automatic blinking",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php?title=Extensions:2.6/Py/Scripts/Import-Export/Lipsync Importer",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=24080&group_id=153&atid=468",
+    "wiki_url": "http://wiki.blender.org/index.php?title=Extensions:2.6/Py/"
+        "Scripts/Import-Export/Lipsync Importer",
+    "tracker_url": "https://developer.blender.org/T24080",
     "category": "Import-Export"}
 
 
@@ -39,7 +41,7 @@ lastPhoneme="nothing"
 
 # add blinking
 def blinker():
-    
+
     scn = bpy.context.scene
     obj = bpy.context.object
 
@@ -47,7 +49,7 @@ def blinker():
         modifier = 0
     elif scn.regMenuTypes.enumBlinkTypes == '1':
         modifier = scn.blinkMod
-    
+
     #creating keys with blinkNm count
     for y in range(scn.blinkNm):
         frame = y * scn.blinkSp + int(random()*modifier)
@@ -73,20 +75,20 @@ def lipsyncerBone():
     object = bpy.context.object
     scene = bpy.context.scene
     bone = bpy.context.active_pose_bone
-    
+
     resetBoneScale(bone)
-    
+
     f=open(scene.fpath) # importing file
     f.readline() # reading the 1st line that we don"t need
-    
+
     for line in f:
         # removing new lines
         lsta = re.split("\n+", line)
 
         # building a list of frames & shapes indexes
-        lst = re.split(":? ", lsta[0])# making a list of a frame & number 
+        lst = re.split(":? ", lsta[0])# making a list of a frame & number
         frame = int(lst[0])
-        
+
         for key,attribute in bone_keys.items():
             if lst[1] == key:
                 createBoneKeys(key, bone, attribute, frame)
@@ -118,19 +120,19 @@ def addBoneKey(bone, data_path, index=-1, value=None, frame=0, group=""):
 # creating keys with offset and eases for a phonem @ the Skframe
 def createBoneKeys(phoneme, bone, attribute, frame):
     global lastPhoneme
-    
+
     scene = bpy.context.scene
     object = bpy.context.object
-    
+
     offst = scene.offset     # offset value
     skVlu = scene.skscale    # shape key value
-    
+
     #in case of Papagayo format
     if scene.regMenuTypes.enumFileTypes == '0' :
         frmIn = scene.easeIn     # ease in value
         frmOut = scene.easeOut   # ease out value
         hldIn = scene.holdGap    # holding time value
-        
+
     #in case of Jlipsync format or Yolo
     elif scene.regMenuTypes.enumFileTypes == '1' :
         frmIn = 1
@@ -144,51 +146,51 @@ def createBoneKeys(phoneme, bone, attribute, frame):
     addBoneKey(bone, attribute[0], attribute[1], skVlu, offst+frame, "Lipsync")
     addBoneKey(bone, attribute[0], attribute[1], skVlu, offst+frame+hldIn, "Lipsync")
     addBoneKey(bone, attribute[0], attribute[1], 0.0, offst+frame+hldIn+frmOut, "Lipsync")
-    
+
     lastPhoneme=phoneme
 
 # -------------------------------------------------------------------------------
 
 # reading imported file & creating keys
 def lipsyncer():
-    
+
     obj = bpy.context.object
     scn = bpy.context.scene
-    
+
     f=open(scn.fpath) # importing file
     f.readline() # reading the 1st line that we don"t need
-    
+
     for line in f:
 
         # removing new lines
         lsta = re.split("\n+", line)
 
         # building a list of frames & shapes indexes
-        lst = re.split(":? ", lsta[0])# making a list of a frame & number 
+        lst = re.split(":? ", lsta[0])# making a list of a frame & number
         frame = int(lst[0])
-        
+
         for key in obj.data.shape_keys.key_blocks:
             if lst[1] == key.name:
                 createShapekey(key.name, frame)
 
 # creating keys with offset and eases for a phonem @ the frame
 def createShapekey(phoneme, frame):
-    
+
     global lastPhoneme
-    
+
     scn = bpy.context.scene
     obj = bpy.context.object
     objSK = obj.data.shape_keys
-    
+
     offst = scn.offset     # offset value
     skVlu = scn.skscale    # shape key value
-    
+
     #in case of Papagayo format
     if scn.regMenuTypes.enumFileTypes == '0' :
         frmIn = scn.easeIn     # ease in value
         frmOut = scn.easeOut   # ease out value
         hldIn = scn.holdGap    # holding time value
-        
+
     #in case of Jlipsync format or Yolo
     elif scn.regMenuTypes.enumFileTypes == '1' :
         frmIn = 1
@@ -200,19 +202,19 @@ def createShapekey(phoneme, frame):
         objSK.key_blocks[phoneme].value=0.0
         objSK.key_blocks[phoneme].keyframe_insert("value",
             -1, offst+frame-frmIn, "Lipsync")
-            
+
     objSK.key_blocks[phoneme].value=skVlu
-    objSK.key_blocks[phoneme].keyframe_insert("value", 
+    objSK.key_blocks[phoneme].keyframe_insert("value",
         -1, offst+frame, "Lipsync")
-    
+
     objSK.key_blocks[phoneme].value=skVlu
-    objSK.key_blocks[phoneme].keyframe_insert("value", 
+    objSK.key_blocks[phoneme].keyframe_insert("value",
         -1, offst+frame+hldIn, "Lipsync")
-            
+
     objSK.key_blocks[phoneme].value=0.0
-    objSK.key_blocks[phoneme].keyframe_insert("value", 
+    objSK.key_blocks[phoneme].keyframe_insert("value",
     -1, offst+frame+hldIn+frmOut, "Lipsync")
-    
+
     lastPhoneme = phoneme
 
 # lipsyncer operation start
@@ -233,13 +235,13 @@ class btn_lipsyncer(bpy.types.Operator):
                     if scn.fpath!='': lipsyncer()
                     else: print ("select a Moho file")
                 else: print("No shape keys")
-    
+
             elif obj.type=="ARMATURE":
                 if 1:#XXX add prop test
                     if scn.fpath!='': lipsyncerBone()
                     else: print ("select a Moho file")
                 else: print("Create Pose properties")
-                
+
             else: print ("Object is not a mesh ot bone")
         else: print ("Select object")
         return {'FINISHED'}
@@ -251,7 +253,7 @@ class btn_blinker(bpy.types.Operator):
     bl_description = 'Add blinks at random or specifice frames'
 
     def execute(self, context):
-        
+
         scn = context.scene
         obj = context.object
 
@@ -272,7 +274,7 @@ class btn_blinker(bpy.types.Operator):
 #defining custom enumeratos
 class menuTypes(bpy.types.PropertyGroup):
 
-    enumFileTypes = EnumProperty(items =(('0', 'Papagayo', ''), 
+    enumFileTypes = EnumProperty(items =(('0', 'Papagayo', ''),
                                          ('1', 'Jlipsync Or Yolo', '')
                                        #,('2', 'Retarget', '')
                                          ),
@@ -288,19 +290,19 @@ class menuTypes(bpy.types.PropertyGroup):
                                          ('1', 'Blinker','')),
                                  name = 'Choose Mode',
                                  default = '0')
-                                 
+
 # drawing the user interface
 class LipSyncBoneUI(bpy.types.Panel):
     bl_space_type = "VIEW_3D"
     bl_region_type = "UI"
     bl_label = "Phonemes"
-    
+
     def draw(self, context):
         layout = self.layout
         col = layout.column()
 
         bone = bpy.context.active_pose_bone
-        
+
         #showing the current object type
         if bone: #and if scn.regMenuTypes.enumModeTypes == '0':
             col.prop(bone, "location", index=0, text="AI")
@@ -325,15 +327,15 @@ class LipSyncBoneUI(bpy.types.Panel):
             col.prop(bone, "scale", index=2, text="etc")
         else:
             layout.label(text="No good bone is selected")
-            
+
 # drawing the user interface
 class LipSyncUI(bpy.types.Panel):
     bl_space_type = "VIEW_3D"
     bl_region_type = "TOOL_PROPS"
     bl_label = "LipSync Importer & Blinker"
-    
+
     newType= bpy.types.Scene
-    
+
     newType.fpath = StringProperty(name="Import File ", description="Select your voice file", subtype="FILE_PATH")
     newType.skscale = FloatProperty(description="Smoothing shape key values", min=0.1, max=1.0, default=0.8)
     newType.offset = IntProperty(description="Offset your frames", default=0)
@@ -344,14 +346,14 @@ class LipSyncUI(bpy.types.Panel):
 
     newType.blinkSp = IntProperty(description="Space between blinks", min=1, default=100)
     newType.blinkNm = IntProperty(description="Number of blinks", min=1, default=10)
-    
+
     newType.blinkMod = IntProperty(description="Randomzing keyframe placment", min=1, default=10)
-    
+
     def draw(self, context):
-        
+
         obj = bpy.context.active_object
         scn = bpy.context.scene
-        
+
         layout = self.layout
         col = layout.column()
 
@@ -372,15 +374,15 @@ class LipSyncUI(bpy.types.Panel):
                 col.label(text="The active object is not a Mesh or Armature!", icon="OBJECT_DATA")
         else:
             layout.label(text="No object is selected", icon="OBJECT_DATA")
-            
+
         col.row().prop(scn.regMenuTypes, 'enumModeTypes')
         col.separator()
-        
-        # the lipsyncer panel 
+
+        # the lipsyncer panel
         if scn.regMenuTypes.enumModeTypes == '0':
             # choose the file format
             col.row().prop(scn.regMenuTypes, 'enumFileTypes', text = ' ', expand = True)
-                
+
             # Papagayo panel
             if scn.regMenuTypes.enumFileTypes == '0':
                 col.prop(context.scene, "fpath")
@@ -394,7 +396,7 @@ class LipSyncUI(bpy.types.Panel):
                 split.prop(context.scene, "easeIn", "Ease In")
                 split.prop(context.scene, "holdGap", "Hold Gap")
                 split.prop(context.scene, "easeOut", "Ease Out")
-                
+
                 col.operator('lipsync.go', text='Plot Keys to the Timeline')
 
             # Jlipsync & Yolo panel
@@ -406,14 +408,14 @@ class LipSyncUI(bpy.types.Panel):
                 split = col.split(align=True)
                 split.label("Frame Offset :")
                 split.prop(context.scene, "offset")
-                
+
                 col.operator('lipsync.go', text='Plot Keys to the Timeline')
-        
+
         # the blinker panel
         elif scn.regMenuTypes.enumModeTypes == '1':
             # choose blink type
             col.row().prop(scn.regMenuTypes, 'enumBlinkTypes', text = ' ', expand = True)
-            
+
             # specific panel
             if scn.regMenuTypes.enumBlinkTypes == '0':
                 split = col.split(align=True)
@@ -429,7 +431,7 @@ class LipSyncUI(bpy.types.Panel):
                 col.prop(context.scene, "blinkSp", "Spacing")
                 col.prop(context.scene, "blinkNm", "Times")
                 col.operator('blink.go', text='Add Keys to the Timeline')
-            
+
             # Random panel
             elif scn.regMenuTypes.enumBlinkTypes == '1':
                 split = col.split(align=True)
@@ -447,15 +449,15 @@ class LipSyncUI(bpy.types.Panel):
                 split.prop(context.scene, "blinkMod", "Random Modifier")
                 col.prop(context.scene, "blinkNm", "Times")
                 col.operator('blink.go', text='Add Keys to the Timeline')
-        
-        
+
+
 # clearing vars
 def clear_properties():
 
     # can happen on reload
     if bpy.context.scene is None:
         return
-     
+
     props = ["fpath", "skscale", "offset", "easeIn", "easeOut", "holdGap", "blinkSp", "blinkNm", "blinkMod"]
     for p in props:
         if p in bpy.types.Scene.bl_rna.properties:
index 9f0defd..f141736 100644 (file)
@@ -23,12 +23,13 @@ bl_info = {
     "author": "Vlassius",
     "version": (0, 70),
     "blender": (2, 64, 0),
-    "api": 52100,
-    "location": "Select a object -> go to the Object tab ->  Import Movement From Wav File",
-    "description": "Extract movement from sound file. See the Object Panel at the end.",
+    "location": "Select a object > Object tab > Import Movement From Wav File",
+    "description": "Extract movement from sound file. "
+        "See the Object Panel at the end.",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Import_Movement_From_Audio_File",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=23565&group_id=153&atid=467",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Import-Export/Import_Movement_From_Audio_File",
+    "tracker_url": "https://developer.blender.org/T23565",
     "category": "Import-Export"}
 
 """
index 3a45982..7f16185 100644 (file)
@@ -24,10 +24,9 @@ bl_info = {
     "location": "File > Import > Voodoo camera",
     "description": "Imports a Blender (2.4x or 2.5x) Python script from the Voodoo (version 1.1 or 1.2) camera tracker software.",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
         "Scripts/Import-Export/Voodoo_camera",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=22510",
+    "tracker_url": "https://developer.blender.org/T22510",
     "category": "Import-Export"}
 
 """
@@ -144,7 +143,7 @@ def voodoo_import(infile,ld_cam,ld_points):
                             scene.frame_current = fr
                             # for up to 2.55
                             # vcam.matrix_world = eval('mathutils.' + line.rstrip()[pos+21:-1])
-                            # for 2.56, from Michael (Meikel) Oetjen 
+                            # for 2.56, from Michael (Meikel) Oetjen
                             # vcam.matrix_world = eval('mathutils.Matrix(' + line.rstrip()[pos+28:-2].replace('[','(',4).replace(']',')',4) + ')')
                             # for 2.57
                             # vcam.matrix_world = eval('mathutils.Matrix([' + line.rstrip()[pos+28:-2] + '])')
index 1cb6fa9..f8de05a 100644 (file)
@@ -26,7 +26,7 @@
 #  First publication in Blender  : 2012-11-19
 #  Last modified                 : 2012-11-19
 #
-#  Acknowledgements 
+#  Acknowledgements
 #  ================
 #
 #  Other: Frank Palmino
@@ -38,20 +38,19 @@ bl_info = {
     "author": "Clemens Barth",
     "version": (0, 1),
     "blender": (2, 60, 0),
-    "location": "File -> Import -> Gwyddion (.gwy)",
+    "location": "File > Import > Gwyddion (.gwy)",
     "warning": "",
     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
-                "Scripts/Import-Export/Gwyddion",
-    "tracker_url": "http://projects.blender.org/tracker/"
-                   "index.php?func=detail&aid=33236&group_id=153&atid=469",
-    "category": "Import-Export"
-}
+        "Scripts/Import-Export/Gwyddion",
+    "tracker_url": "https://developer.blender.org/T33236",
+    "category": "Import-Export"}
+
 
 import bpy
 from bpy.types import Operator
 from bpy_extras.io_utils import ImportHelper
-from bpy.props import (BoolProperty, 
-                       StringProperty, 
+from bpy.props import (BoolProperty,
+                       StringProperty,
                        EnumProperty,
                        FloatProperty)
 
@@ -74,49 +73,49 @@ class ImportGwyddion(Operator, ImportHelper):
         description="Do you need a camera?")
     use_lamp = BoolProperty(
         name="Lamp", default=False,
-        description = "Do you need a lamp?")             
+        description = "Do you need a lamp?")
     use_smooth = BoolProperty(
         name="Smooth image data", default=False,
         description = "Smooth the images")
     scale_size = FloatProperty (
         name = "Scale xy", default=0.5,
-        description = "Scale the lateral size")    
+        description = "Scale the lateral size")
     scale_height = FloatProperty (
         name = "Scale h", default=3.0,
-        description = "Scale the height")    
+        description = "Scale the height")
     use_all_channels = BoolProperty(
         name="All channels", default=False,
-        description = "Load all images")        
+        description = "Load all images")
     use_c1 = BoolProperty(
         name="1", default=True,
         description = "Channel 1")
     use_c2 = BoolProperty(
         name="2", default=False,
-        description = "Channel 2")        
+        description = "Channel 2")
     use_c3 = BoolProperty(
         name="3", default=False,
         description = "Channel 3")
     use_c4 = BoolProperty(
         name="4", default=False,
-        description = "Channel 4")       
+        description = "Channel 4")
     use_c5 = BoolProperty(
         name="5", default=False,
         description = "Channel 5")
     use_c6 = BoolProperty(
         name="6", default=False,
-        description = "Channel 6")        
+        description = "Channel 6")
     use_c7 = BoolProperty(
         name="7", default=False,
         description = "Channel 7")
     use_c8 = BoolProperty(
         name="8", default=False,
-        description = "Channel 8")       
+        description = "Channel 8")
+
     def draw(self, context):
         layout = self.layout
         row = layout.row()
         row.prop(self, "use_camera")
-        row.prop(self, "use_lamp")   
+        row.prop(self, "use_lamp")
         row = layout.row()
         row.prop(self, "use_smooth")
         row = layout.row()
@@ -135,12 +134,12 @@ class ImportGwyddion(Operator, ImportHelper):
         row.prop(self, "use_c6")
         row.prop(self, "use_c7")
         row.prop(self, "use_c8")
-        
+
         if self.use_all_channels:
             self.use_c1, self.use_c2, self.use_c3, self.use_c4, \
             self.use_c5, self.use_c6, self.use_c7, self.use_c8  \
             = True, True, True, True, True, True, True, True
-        
+
     def execute(self, context):
         # This is in order to solve this strange 'relative path' thing.
         filepath_par = bpy.path.abspath(self.filepath)
@@ -148,21 +147,21 @@ class ImportGwyddion(Operator, ImportHelper):
         channels = [self.use_c1, self.use_c2, self.use_c3, self.use_c4,
                     self.use_c5, self.use_c6, self.use_c7, self.use_c8]
 
-        # Execute main routine   
+        # Execute main routine
         #print("passed - 1")
-        images, AFMdata = import_gwyddion.load_gwyddion_images(filepath_par, 
-                                                               channels) 
+        images, AFMdata = import_gwyddion.load_gwyddion_images(filepath_par,
+                                                               channels)
 
         #print("passed - 3")
-        import_gwyddion.create_mesh(images, 
+        import_gwyddion.create_mesh(images,
                                  AFMdata,
                                  self.use_smooth,
                                  self.scale_size,
                                  self.scale_height,
                                  self.use_camera,
-                                 self.use_lamp)  
+                                 self.use_lamp)
         #print("passed - 4")
-        
+
         return {'FINISHED'}
 
 
@@ -174,7 +173,7 @@ def menu_func_import(self, context):
 def register():
     bpy.utils.register_module(__name__)
     bpy.types.INFO_MT_file_import.append(menu_func_import)
-    
+
 def unregister():
     bpy.utils.unregister_module(__name__)
     bpy.types.INFO_MT_file_import.remove(menu_func_import)
index e425d89..1722b59 100644 (file)
 #  First publication in Blender  : 2011-12-18
 #  Last modified                 : 2012-11-10
 #
-#  Acknowledgements 
+#  Acknowledgements
 #  ================
 #
-#  Blender: ideasman, meta_androcto, truman, kilon, CoDEmanX, dairin0d, PKHG, 
+#  Blender: ideasman, meta_androcto, truman, kilon, CoDEmanX, dairin0d, PKHG,
 #           Valter, ...
 #  Other: Frank Palmino
 #
@@ -42,12 +42,11 @@ bl_info = {
     "blender": (2, 60, 0),
     "location": "File -> Import -> XYZ (.xyz)",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/"
-                "Import-Export/XYZ",
-    "tracker_url": "http://projects.blender.org/tracker/"
-                   "index.php?func=detail&aid=29646&group_id=153&atid=468",
-    "category": "Import-Export"
-}
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Import-Export/XYZ",
+    "tracker_url": "https://developer.blender.org/T29646",
+    "category": "Import-Export"}
+
 
 import bpy
 from bpy.types import Operator
@@ -70,7 +69,7 @@ class ImportXYZ(Operator, ImportHelper):
     bl_idname = "import_mesh.xyz"
     bl_label  = "Import XYZ (*.xyz)"
     bl_options = {'PRESET', 'UNDO'}
-    
+
     filename_ext = ".xyz"
     filter_glob  = StringProperty(default="*.xyz", options={'HIDDEN'},)
 
@@ -86,7 +85,7 @@ class ImportXYZ(Operator, ImportHelper):
         items=(('0', "NURBS", "NURBS balls"),
                ('1', "Mesh" , "Mesh balls"),
                ('2', "Meta" , "Metaballs")),
-               default='0',) 
+               default='0',)
     mesh_azimuth = IntProperty(
         name = "Azimuth", default=32, min=1,
         description = "Number of sectors (azimuth)")
@@ -105,19 +104,19 @@ class ImportXYZ(Operator, ImportHelper):
         items=(('0', "Pre-defined", "Use pre-defined radius"),
                ('1', "Atomic", "Use atomic radius"),
                ('2', "van der Waals", "Use van der Waals radius")),
-               default='0',)            
+               default='0',)
     use_center = BoolProperty(
         name = "Object to origin (first frames)", default=False,
-        description = "Put the object into the global origin, the first frame only")           
+        description = "Put the object into the global origin, the first frame only")
     use_center_all = BoolProperty(
         name = "Object to origin (all frames)", default=True,
-        description = "Put the object into the global origin, all frames") 
+        description = "Put the object into the global origin, all frames")
     datafile = StringProperty(
         name = "", description="Path to your custom data file",
-        maxlen = 256, default = "", subtype='FILE_PATH')    
+        maxlen = 256, default = "", subtype='FILE_PATH')
     use_frames = BoolProperty(
         name = "Load all frames?", default=False,
-        description = "Do you want to load all frames?") 
+        description = "Do you want to load all frames?")
     skip_frames = IntProperty(
         name="", default=0, min=0,
         description="Number of frames you want to skip.")
@@ -135,7 +134,7 @@ class ImportXYZ(Operator, ImportHelper):
         col.prop(self, "ball")
         row = layout.row()
         row.active = (self.ball == "1")
-        col = row.column(align=True)        
+        col = row.column(align=True)
         col.prop(self, "mesh_azimuth")
         col.prop(self, "mesh_zenith")
         row = layout.row()
@@ -150,11 +149,11 @@ class ImportXYZ(Operator, ImportHelper):
         row.prop(self, "use_center_all")
         row = layout.row()
         row.prop(self, "atomradius")
-        
+
+        row = layout.row()
+        row.prop(self, "use_frames")
         row = layout.row()
-        row.prop(self, "use_frames")        
-        row = layout.row()        
-        row.active = self.use_frames        
+        row.active = self.use_frames
         col = row.column()
         col.label(text="Skip frames")
         col = row.column()
@@ -164,8 +163,8 @@ class ImportXYZ(Operator, ImportHelper):
         col = row.column()
         col.label(text="Frames/key")
         col = row.column()
-        col.prop(self, "images_per_key")            
-        
+        col.prop(self, "images_per_key")
+
     def execute(self, context):
 
         del import_xyz.ALL_FRAMES[:]
@@ -187,16 +186,16 @@ class ImportXYZ(Operator, ImportHelper):
                       self.use_center_all,
                       self.use_camera,
                       self.use_lamp,
-                      filepath_xyz)   
+                      filepath_xyz)
+
+        # Load frames
+        if len(import_xyz.ALL_FRAMES) > 1 and self.use_frames:
 
-        # Load frames                  
-        if len(import_xyz.ALL_FRAMES) > 1 and self.use_frames:  
-                  
-            import_xyz.build_frames(self.images_per_key, 
+            import_xyz.build_frames(self.images_per_key,
                                     self.skip_frames)
-        
+
         return {'FINISHED'}
-        
+
 
 # This is the class for the file dialog of the exporter.
 class ExportXYZ(Operator, ExportHelper):
@@ -213,7 +212,7 @@ class ExportXYZ(Operator, ExportHelper):
         items=(('0', "All", "Export all active objects"),
                ('1', "Elements", "Export only those active objects which have"
                                  " a proper element name")),
-               default='1',) 
+               default='1',)
 
     def draw(self, context):
         layout = self.layout
@@ -221,7 +220,7 @@ class ExportXYZ(Operator, ExportHelper):
         row.prop(self, "atom_xyz_export_type")
 
     def execute(self, context):
-        export_xyz.export_xyz(self.atom_xyz_export_type, 
+        export_xyz.export_xyz(self.atom_xyz_export_type,
                               bpy.path.abspath(self.filepath))
 
         return {'FINISHED'}
@@ -238,8 +237,8 @@ def menu_func_export(self, context):
 def register():
     bpy.utils.register_module(__name__)
     bpy.types.INFO_MT_file_import.append(menu_func)
-    bpy.types.INFO_MT_file_export.append(menu_func_export) 
-    
+    bpy.types.INFO_MT_file_export.append(menu_func_export)
+
 def unregister():
     bpy.utils.unregister_module(__name__)
     bpy.types.INFO_MT_file_import.remove(menu_func)
index 1cab6f0..0ecbb97 100644 (file)
@@ -39,8 +39,9 @@ bl_info = {
     "location": "File > Import  |  File > Export",
     "description": "Export models to *.XMODEL_EXPORT and animations to *.XANIM_EXPORT",
     "warning": "Alpha version, please report any bugs!",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Call_of_Duty_IO",
-    "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=30482",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Import-Export/Call_of_Duty_IO",
+    "tracker_url": "https://developer.blender.org/T30482",
     "support": "TESTING",
     "category": "Import-Export"
 }
index 1817f96..08ffab5 100644 (file)
@@ -38,11 +38,10 @@ bl_info = {
     'blender': (2, 68, 0),
     'location': "File > Import",
     'warning': "",
-    'wiki_url': "http://wiki.blender.org/index.php/Extensions:2.6/"\
-            "Py/Scripts/Import-Export/FuturePinball_FPx",
-    'tracker_url': "https://projects.blender.org/tracker/index.php?func=detail&aid=36215",
-    'category': "Import-Export",
-    }
+    'wiki_url': "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Import-Export/FuturePinball_FPx",
+    'tracker_url': "https://developer.blender.org/T36215",
+    'category': "Import-Export"}
 
 
 # KNOWN ISSUES & TODOs & MAYBEs (in a random order):
index da70fc5..f9351db 100644 (file)
@@ -2091,7 +2091,7 @@ class FptImporter():
                 pass
             else:
                 """
-                there are problems, see [#36007] http://projects.blender.org/tracker/index.php?func=detail&aid=36007&group_id=9&atid=498
+                there are problems, see [#36007] https://developer.blender.org/T36007
                 """
                 if index:
                     if last_fpx_point.get_value("left_guide"):
index ea50729..41eb76f 100644 (file)
@@ -25,8 +25,7 @@ bl_info = {
     "location": "Spacebar > Discombobulate",
     "warning": 'Beta',
     'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts',
-    'tracker_url': 'https://projects.blender.org/tracker/index.php?'\
-                   'func=detail&aid=31390',
+    'tracker_url': 'https://developer.blender.org/T31390',
     "category": "Mesh"}
  
 import bpy
index ea9e4ac..7e98a95 100644 (file)
 
 
 bl_info = {
-            "name": "Easy Lattice Object",
-            "author": "Kursad Karatas",
-            "version": ( 0, 5 ),
-            "blender": ( 2, 66, 0 ),
-            "location": "View3D > Easy Lattice",
-            "description": "Create a lattice for shape editing",
-            "warning": "",
-            "wiki_url": "http://wiki.blender.org/index.php/Easy_Lattice_Editing_Addon",
-            "tracker_url": "https://bitbucket.org/kursad/blender_addons_easylattice/src",
-            "category": "Mesh"}
+    "name": "Easy Lattice Object",
+    "author": "Kursad Karatas",
+    "version": (0, 5),
+    "blender": (2, 66, 0),
+    "location": "View3D > Easy Lattice",
+    "description": "Create a lattice for shape editing",
+    "warning": "",
+    "wiki_url": "http://wiki.blender.org/index.php/Easy_Lattice_Editing_Addon",
+    "tracker_url": "https://bitbucket.org/kursad/blender_addons_easylattice/src",
+    "category": "Mesh"}
+
 
 import bpy
 import mathutils
 import math
+
 # Cleanup
 def modifiersDelete( obj ):
-    
+
     for mod in obj.modifiers:
         print(mod)
         if mod.name == "latticeeasytemp":
@@ -43,20 +44,20 @@ def modifiersDelete( obj ):
                 if mod.object == bpy.data.objects['LatticeEasytTemp']:
                     print("applying modifier")
                     bpy.ops.object.modifier_apply( apply_as = 'DATA', modifier = mod.name )
-                    
+
             except:
                 bpy.ops.object.modifier_remove( modifier = mod.name )
-        
+
 # Cleanup
 def modifiersApplyRemove( obj ):
-    
+
 #     print("passed object is", obj)
 #     print("current object is", bpy.context.active_object)
-    
+
     bpy.ops.object.select_all( action = 'DESELECT' )
     bpy.ops.object.select_pattern(pattern=obj.name, extend=False)
     bpy.context.scene.objects.active=obj
-    
+
     for mod in obj.modifiers:
 #         print("modifier is ", mod)
         if mod.name == "latticeeasytemp":
@@ -64,24 +65,24 @@ def modifiersApplyRemove( obj ):
             if mod.object == bpy.data.objects['LatticeEasytTemp']:
 #                 print("mod object is ", mod.object)
 #                 print("applying modifier", mod," - ", mod.name)
-                
+
                 #obj.select= True
 #                 print("current object is", bpy.context.active_object)
                 bpy.ops.object.modifier_apply( apply_as = 'DATA', modifier = mod.name )
                 #obj.modifiers.remove(mod)
-                    
+
 #             except:
 #                 bpy.ops.object.modifier_remove( modifier = mod.name )
-                
-       
+
+
 # Cleanup
 def latticeDelete(obj):
     bpy.ops.object.select_all( action = 'DESELECT' )
     for ob in bpy.context.scene.objects:
          if "LatticeEasytTemp" in ob.name:
              ob.select = True
-    bpy.ops.object.delete( use_global = False )        
-    
+    bpy.ops.object.delete( use_global = False )
+
     #select the original object back
     obj.select=True
 
@@ -89,37 +90,37 @@ def createLattice( obj, size, pos, props ):
     # Create lattice and object
     lat = bpy.data.lattices.new( 'LatticeEasytTemp' )
     ob = bpy.data.objects.new( 'LatticeEasytTemp', lat )
-    
+
     loc,rot,scl = getTransformations( obj )
+
     #get the combined rotation matrix and apply to the lattice
     #ob.matrix_world=buildRot_WorldMat(obj)*ob.matrix_world
-    
-    #the position comes from the bbox 
+
+    #the position comes from the bbox
     ob.location = pos
         #ob.location=(pos.x+loc.x,pos.y+loc.y,pos.z+loc.z)
-    
-    #the size  from bbox 
+
+    #the size  from bbox
     ob.scale = size
         #ob.scale=(size.x*scl.x, size.y*scl.y,size.z*scl.z)
-    
-    #the rotation comes from the combined obj world matrix which was converted to euler pairs.    
+
+    #the rotation comes from the combined obj world matrix which was converted to euler pairs.
     ob.rotation_euler = buildRot_World(obj)
-    
+
     ob.show_x_ray = True
     # Link object to scene
     scn = bpy.context.scene
     scn.objects.link( ob )
     scn.objects.active = ob
     scn.update()
+
     # Set lattice attributes
     lat.interpolation_type_u = props[3]
     lat.interpolation_type_v = props[3]
     lat.interpolation_type_w = props[3]
+
     lat.use_outside = False
-    
+
     lat.points_u = props[0]
     lat.points_v = props[1]
     lat.points_w = props[2]
@@ -134,35 +135,35 @@ def createLattice( obj, size, pos, props ):
         for k in range(3):
             #pt.co[k] = points[n][k]
     '''
-    
+
     return ob
 
 
 def selectedVerts_Grp( obj ):
 #     vertices=bpy.context.active_object.data.vertices
     vertices = obj.data.vertices
-    
+
     selverts = []
-    
+
     if obj.mode == "EDIT":
         bpy.ops.object.editmode_toggle()
 
     for grp in obj.vertex_groups:
-        
+
         if "templatticegrp" in grp.name:
             bpy.ops.object.vertex_group_set_active( group = grp.name )
             bpy.ops.object.vertex_group_remove()
-        
+
     tempgroup = obj.vertex_groups.new( "templatticegrp" )
-    
+
     # selverts=[vert for vert in vertices if vert.select==True]
     for vert in vertices:
         if vert.select == True:
             selverts.append( vert )
             tempgroup.add( [vert.index], 1.0, "REPLACE" )
-    
+
     # print(selverts)
-    
+
     return selverts
 
 def getTransformations( obj ):
@@ -173,23 +174,23 @@ def getTransformations( obj ):
     return [loc, rot, size]
 
 def findBBox( obj, selvertsarray ):
-    
+
 #     mat = buildTrnSclMat( obj )
     mat =buildTrnScl_WorldMat(obj)
-    
+
     mat_world = obj.matrix_world
-    
+
     minx, miny, minz = selvertsarray[0].co
     maxx, maxy, maxz = selvertsarray[0].co
-    
+
     c = 1
 #     for vert in selvertsarray:
     for c in range( len( selvertsarray ) ):
         # co=obj.matrix_world*vert.co.to_4d()
-        
+
 #         co = vert.co
         co = selvertsarray[c].co
-        
+
         if co.x < minx: minx = co.x
         if co.y < miny: miny = co.y
         if co.z < minz: minz = co.z
@@ -197,21 +198,21 @@ def findBBox( obj, selvertsarray ):
         if co.x > maxx: maxx = co.x
         if co.y > maxy: maxy = co.y
         if co.z > maxz: maxz = co.z
-        
+
 #         print("local cord", selvertsarray[c].co)
 #         print("world cord", co)
         c += 1
-        
+
 #     print("total verts", len(selvertsarray))
 #     print("counted verts",c)
-    
+
     # Based on world coords
 #     print("-> minx miny minz",minx, miny, minz )
 #     print("-> maxx maxy maxz",maxx, maxy, maxz )
-    
+
     minpoint = mathutils.Vector( ( minx, miny, minz ) )
     maxpoint = mathutils.Vector( ( maxx, maxy, maxz ) )
-    
+
     # middle point has to be calculated based on the real world matrix
     #middle = mat_world * mathutils.Vector((x_sum, y_sum, z_sum))/float(c)
     middle = ( ( minpoint + maxpoint ) / 2 )
@@ -219,11 +220,11 @@ def findBBox( obj, selvertsarray ):
     minpoint = mat * minpoint  # Calculate only based on loc/scale
     maxpoint = mat * maxpoint  # Calculate only based on loc/scale
     middle = mat_world * middle  # the middle has to be calculated based on the real world matrix
-    
+
     size = maxpoint - minpoint
     size = mathutils.Vector( ( abs( size.x ), abs( size.y ), abs( size.z ) ) )
-    
-    # local coords   
+
+    # local coords
     #####################################################
     '''minpoint=mathutils.Vector((minx,miny,minz))
     maxpoint=mathutils.Vector((maxx,maxy,maxz))
@@ -232,7 +233,7 @@ def findBBox( obj, selvertsarray ):
     size=mathutils.Vector((abs(size.x),abs(size.y),abs(size.z)))
     '''
     #####################################################
-    
+
 
     return [minpoint, maxpoint, size, middle  ]
 
@@ -244,34 +245,34 @@ def buildTrnSclMat( obj ):
     mat_scale = mathutils.Matrix.Scale( obj.scale[0], 4, ( 1, 0, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( obj.scale[1], 4, ( 0, 1, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( obj.scale[2], 4, ( 0, 0, 1 ) )
-    
+
     mat_final = mat_trans * mat_scale
-    
-    
+
+
     return mat_final
-    
+
 def buildTrnScl_WorldMat( obj ):
     # This function builds a real world matrix that encodes translation and scale and it leaves out the rotation matrix
     # The rotation is applied at obejct level if there is any
     loc,rot,scl=obj.matrix_world.decompose()
     mat_trans = mathutils.Matrix.Translation( loc)
-    
+
     mat_scale = mathutils.Matrix.Scale( scl[0], 4, ( 1, 0, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( scl[1], 4, ( 0, 1, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( scl[2], 4, ( 0, 0, 1 ) )
-    
+
     mat_final = mat_trans * mat_scale
-    
-    
+
+
     return mat_final
 
-#Feature use    
+#Feature use
 def buildRot_WorldMat( obj ):
     # This function builds a real world matrix that encodes rotation and it leaves out translation and scale matrices
     loc,rot,scl=obj.matrix_world.decompose()
     rot=rot.to_euler()
-    
-    mat_rot = mathutils.Matrix.Rotation(rot[0], 4,'X') 
+
+    mat_rot = mathutils.Matrix.Rotation(rot[0], 4,'X')
     mat_rot *= mathutils.Matrix.Rotation(rot[1],4,'Z')
     mat_rot *= mathutils.Matrix.Rotation(rot[2], 4,'Y')
     return mat_rot
@@ -282,7 +283,7 @@ def buildTrn_WorldMat( obj ):
     # The rotation is applied at obejct level if there is any
     loc,rot,scl=obj.matrix_world.decompose()
     mat_trans = mathutils.Matrix.Translation( loc)
-    
+
     return mat_trans
 
 #Feature use
@@ -290,65 +291,65 @@ def buildScl_WorldMat( obj ):
     # This function builds a real world matrix that encodes translation and scale and it leaves out the rotation matrix
     # The rotation is applied at obejct level if there is any
     loc,rot,scl=obj.matrix_world.decompose()
-    
+
     mat_scale = mathutils.Matrix.Scale( scl[0], 4, ( 1, 0, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( scl[1], 4, ( 0, 1, 0 ) )
     mat_scale *= mathutils.Matrix.Scale( scl[2], 4, ( 0, 0, 1 ) )
-    
+
     return mat_scale
-    
+
 def buildRot_World( obj ):
     # This function builds a real world rotation values
     loc,rot,scl=obj.matrix_world.decompose()
     rot=rot.to_euler()
-    
+
     return rot
 
 def run( lat_props ):
-    
+
 #     print("<-------------------------------->")
     #obj = bpy.context.active_object
     obj = bpy.context.object
-    
+
     if obj.type == "MESH":
         # set global property for the currently active latticed object
         bpy.types.Scene.activelatticeobject = bpy.props.StringProperty( name = "currentlatticeobject", default = "" )
         bpy.types.Scene.activelatticeobject = obj.name
-    
+
         modifiersDelete( obj )
         selvertsarray = selectedVerts_Grp( obj )
         bbox = findBBox( obj, selvertsarray )
-        
+
         size = bbox[2]
         pos = bbox[3]
-        
+
 #         print("lattce size, pos", size, " ", pos)
         latticeDelete(obj)
         lat = createLattice( obj, size, pos, lat_props )
-        
+
         modif = obj.modifiers.new( "latticeeasytemp", "LATTICE" )
         modif.object = lat
         modif.vertex_group = "templatticegrp"
-        
-        
+
+
         bpy.ops.object.select_all( action = 'DESELECT' )
         bpy.ops.object.select_pattern(pattern=lat.name, extend=False)
         bpy.context.scene.objects.active=lat
-        
+
         bpy.context.scene.update()
         bpy.ops.object.mode_set( mode = 'EDIT' )
-    
+
     if obj.type == "LATTICE":
-        
-        
+
+
         if bpy.types.Scene.activelatticeobject:
             name = bpy.types.Scene.activelatticeobject
             print("last active latticed object", name)
-        
+
             #Are we in edit lattice mode? If so move on to object mode
             if obj.mode=="EDIT":
                 bpy.ops.object.editmode_toggle()
-                    
+
             for ob in bpy.context.scene.objects:
                 if ob.name == name:  # found the object with the lattice mod
                     print("apply mod on", ob)
@@ -356,7 +357,7 @@ def run( lat_props ):
                     modifiersApplyRemove(object)
                     #modifiersDelete( object )  # apply the modifier and delete the lattice
                     latticeDelete(obj)
-    
+
     return
 
 
@@ -369,25 +370,25 @@ class EasyLattice( bpy.types.Operator ):
     bl_label = "Easy Lattice Creator"
     bl_space_type = "VIEW_3D"
     bl_region_type = "TOOLS"
-    
+
     lat_u = bpy.props.IntProperty( name = "Lattice u", default = 3 )
     lat_w = bpy.props.IntProperty( name = "Lattice w", default = 3 )
     lat_m = bpy.props.IntProperty( name = "Lattice m", default = 3 )
-    
+
     lat_types = ( ( '0', 'KEY_LINEAR', '0' ), ( '1', 'KEY_CARDINAL', '1' ), ( '2', 'KEY_BSPLINE', '2' ) )
     lat_type = bpy.props.EnumProperty( name = "Lattice Type", items = lat_types, default = '0' )
-    
-    
+
+
     @classmethod
     def poll( cls, context ):
         return context.active_object is not None
 
     def execute( self, context ):
-        
+
         lat_u = self.lat_u
         lat_w = self.lat_w
         lat_m = self.lat_m
-        
+
         # this is a reference to the "items" used to generate the
         # enum property.
         lat_type = self.lat_types[int( self.lat_type )][1]
@@ -400,22 +401,22 @@ class EasyLattice( bpy.types.Operator ):
         wm = context.window_manager
         return wm.invoke_props_dialog( self )
 
-def menu_draw( self, context ): 
-    self.layout.operator_context = 'INVOKE_REGION_WIN' 
-    self.layout.operator( EasyLattice.bl_idname, "Easy Lattice" ) 
+def menu_draw( self, context ):
+    self.layout.operator_context = 'INVOKE_REGION_WIN'
+    self.layout.operator( EasyLattice.bl_idname, "Easy Lattice" )
 
 def register():
     bpy.utils.register_class( EasyLattice )
     # bpy.utils.register
     # menu_func = (lambda self, context: self.layout.operator('EasyLattice'))
     # bpy.types.VIEW3D_PT_tools_objectmode.append(menu_draw)
-    bpy.types.VIEW3D_MT_edit_mesh_specials.append( menu_draw ) 
+    bpy.types.VIEW3D_MT_edit_mesh_specials.append( menu_draw )
 
 
 def unregister():
     bpy.utils.unregister_class( EasyLattice )
     # bpy.types.VIEW3D_PT_tools_objectmode.remove(menu_draw)
-    bpy.types.VIEW3D_MT_edit_mesh_specials.remove( menu_draw ) 
+    bpy.types.VIEW3D_MT_edit_mesh_specials.remove( menu_draw )
 
 if __name__ == "__main__":
     register()
index 389bfdb..d8b8bca 100644 (file)
@@ -26,11 +26,9 @@ bl_info = {
     "category": "Mesh",
     "location": "View3D > EditMode > (w) Specials",
     "warning": "Still under development",
-    "wiki_url": "http://wiki.blender.org/index.php/"\
-        "Extensions:2.6/Py/Scripts/Modeling/Edge_Slice",
-    "tracker_url": "http://projects.blender.org/tracker/"\
-        "?func=detail&aid=25227"
-   }
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Modeling/Edge_Slice",
+    "tracker_url": "https://developer.blender.org/T25227"}
 
 """
 parts based on Keith (Wahooney) Boshoff, cursor to intersection script and
@@ -73,7 +71,7 @@ def CountPointOnEdges(point, outer_points):
     return count
 
 
-#   takes Vector List and returns tuple of points in expected order. 
+#   takes Vector List and returns tuple of points in expected order.
 def edges_to_points(edges):
     (vp1, vp2) = (Vector((edges[0][0])), Vector((edges[0][1])))
     (vp3, vp4) = (Vector((edges[1][0])), Vector((edges[1][1])))
@@ -151,7 +149,7 @@ def ExtendEdge(vX, outer_points, count):
     if isPointOnEdge(vX, vC, vD):
         oe[edge_count].vertices = [vert_count, vert_count+3]
         oe[edge_count+1].vertices = [vert_count, vert_count+4]
-        # find which of A and B is farthest away from X 
+        # find which of A and B is farthest away from X
         if mDist(vB, vX) > mDist(vA, vX):
             oe[edge_count+2].vertices = [vert_count, vert_count+1]
             oe[edge_count+3].vertices = [vert_count+1, vert_count+2]
@@ -226,13 +224,13 @@ def initScriptV(context, self):
     (vert_count, edge_count) = getVertEdgeCount()
 
     #need 2 edges to be of any use.
-    if len(meshMatrix) < 2: 
+    if len(meshMatrix) < 2:
         print(str(len(meshMatrix)) +" select, make sure (only) 2 are selected")
         return
 
     #dont go any further if the verts are not coplanar
     if checkIsMatrixCoplanar(meshMatrix): print("seems within tolerance, proceed")
-    else: 
+    else:
         print("check your geometry, or decrease tolerance value")
         return
 
@@ -281,7 +279,7 @@ def initScriptX(context, self):
     else:
         if checkEdges(meshMatrix, obj) == None:
             print("lines dont intersect")
-        else: 
+        else:
             count = CountPointOnEdges(checkEdges(meshMatrix, obj), meshMatrix)
             if count == 2:
                 makeGeometryWeld(checkEdges(meshMatrix, obj), meshMatrix)
index 7f364cd..e3bc3a3 100644 (file)
@@ -76,10 +76,12 @@ bl_info = {
     "location": "View3D > Toolbar and View3D > Specials (W-key)",
     "warning": "",
     "description": "CAD style edge manipulation tools",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Modeling/EdgeTools",
-    "tracker_url": "https://svn.blender.org/svnroot/bf-extensions/contrib/py/scripts/addons/mesh_edgetools.py",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Modeling/EdgeTools",
+    "tracker_url": "",
     "category": "Mesh"}
 
+
 import bpy, bmesh, mathutils
 from math import acos, pi, radians, sqrt, tan
 from mathutils import Matrix, Vector
@@ -105,7 +107,7 @@ def sign(number):
 #
 # Checks to see if two lines are parallel
 def is_parallel(v1, v2, v3, v4):
-    result = intersect_line_line(v1, v2, v3, v4) 
+    result = intersect_line_line(v1, v2, v3, v4)
     return result == None
 
 
@@ -288,7 +290,7 @@ def interpolate_line_line(p1_co, p1_dir, p2_co, p2_dir, segments, tension = 1,
 # A quad may not be planar.  Therefore the treated definition of the surface is
 # that the surface is composed of all lines bridging two other lines defined by
 # the given four points.  The lines do not "cross".
-# 
+#
 # The two lines in 3-space can defined as:
 #   ┌  ┐         ┌   ┐     ┌   ┐  ┌  ┐         ┌   ┐     ┌   ┐
 #   │x1│         │a11│     │b11│  │x2│         │a21│     │b21│
@@ -514,7 +516,7 @@ def intersect_line_face(edge, face, is_infinite = False, error = 0.000002):
         y = (1 - t3) * a32 + t3 * b32
         z = (1 - t3) * a33 + t3 * b33
         int_co = Vector((x, y, z))
-        
+
         if bpy.app.debug:
             print(int_co)
 
@@ -561,7 +563,7 @@ def project_point_plane(pt, plane_co, plane_no):
     proj_co = intersect_line_plane(pt, pt + plane_no, plane_co, plane_no)
     proj_ve = proj_co - pt
     return (proj_ve, proj_co)
-    
+
 
 # ------------ FILLET/CHAMPHER HELPER METHODS -------------
 
@@ -604,7 +606,7 @@ def is_planar_edge(edge, error = 0.000002):
 # debuged.
 def fillet_axis(edge, radius):
     vectors = [None, None, None, None]
-    
+
     origin = Vector((0, 0, 0))
     axis = edge.verts[1].co - edge.verts[0].co
 
@@ -637,10 +639,10 @@ def fillet_axis(edge, radius):
     # Get the normal for face 0 and face 1:
     norm1 = edge.link_faces[0].normal
     norm2 = edge.link_faces[1].normal
-    
+
     # We need to find the angle between the two faces, then bisect it:
     theda = (pi - edge.calc_face_angle()) / 2
-    
+
     # We are dealing with a triangle here, and we will need the length
     # of its adjacent side.  The opposite is the radius:
     adj_len = radius / tan(theda)
@@ -653,7 +655,7 @@ def fillet_axis(edge, radius):
         vectors[i] = project_point_plane(vectors[i], origin, axis)[1]
         vectors[i].length = adj_len
         vectors[i] = vectors[i] + edge.verts[i % 2].co
-    
+
     # Compute fillet axis end points:
     v1 = intersect_line_line(vectors[0], vectors[0] + norm1, vectors[2], vectors[2] + norm2)[0]
     v2 = intersect_line_line(vectors[1], vectors[1] + norm1, vectors[3], vectors[3] + norm2)[0]
@@ -691,7 +693,7 @@ class Extend(bpy.types.Operator):
         layout.prop(self, "di1")
         layout.prop(self, "di2")
         layout.prop(self, "length")
-    
+
 
     @classmethod
     def poll(cls, context):
@@ -702,7 +704,7 @@ class Extend(bpy.types.Operator):
     def invoke(self, context, event):
         return self.execute(context)
 
-    
+
     def execute(self, context):
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
@@ -719,7 +721,7 @@ class Extend(bpy.types.Operator):
             for e in edges:
                 vector = e.verts[0].co - e.verts[1].co
                 vector.length = self.length
-                
+
                 if self.di1:
                     v = bVerts.new()
                     if (vector[0] + vector[1] + vector[2]) < 0:
@@ -774,7 +776,7 @@ class Spline(bpy.types.Operator):
     bl_label = "Spline"
     bl_description = "Create a spline interplopation between two edges"
     bl_options = {'REGISTER', 'UNDO'}
-    
+
     alg = EnumProperty(name = "Spline Algorithm",
                        items = [('Blender', 'Blender', 'Interpolation provided through \"mathutils.geometry\"'),
                                 ('Hermite', 'C-Spline', 'C-spline interpolation'),
@@ -825,7 +827,7 @@ class Spline(bpy.types.Operator):
     def invoke(self, context, event):
         return self.execute(context)
 
-    
+
     def execute(self, context):
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
@@ -834,7 +836,7 @@ class Spline(bpy.types.Operator):
 
         bEdges = bm.edges
         bVerts = bm.verts
-        
+
         seg = self.segments
         edges = [e for e in bEdges if e.select]
         verts = [edges[v // 2].verts[v % 2] for v in range(4)]
@@ -860,7 +862,7 @@ class Spline(bpy.types.Operator):
         else:
             v2 = verts[2]
             p2_co = verts[2].co
-            p2_dir = verts[3].co - verts[2].co 
+            p2_dir = verts[3].co - verts[2].co
         if self.ten2 < 0:
             p2_dir = -1 * p2_dir
             p2_dir.length = -self.ten2
@@ -960,7 +962,7 @@ class Ortho(bpy.types.Operator):
         row.prop(self, "neg")
         layout.prop(self, "angle")
         layout.prop(self, "length")
-    
+
     @classmethod
     def poll(cls, context):
         ob = context.active_object
@@ -970,7 +972,7 @@ class Ortho(bpy.types.Operator):
     def invoke(self, context, event):
         return self.execute(context)
 
-    
+
     def execute(self, context):
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
@@ -1019,7 +1021,7 @@ class Ortho(bpy.types.Operator):
 
             vectors.append(verts[0].co - verts[1].co)
             vectors.append(verts[2].co - verts[3].co)
-            
+
             # Normal of the plane formed by vector1 and vector2:
             vectors.append(vectors[0].cross(vectors[1]))
 
@@ -1086,7 +1088,7 @@ class Shaft(bpy.types.Operator):
                             min = 0, max = 1,
                             default = 0)
     last_flip = False
-    
+
     edge = IntProperty(name = "Edge",
                        description = "Edge to shaft around.",
                        min = 0, max = 1,
@@ -1139,7 +1141,7 @@ class Shaft(bpy.types.Operator):
 
         return self.execute(context)
 
-    
+
     def execute(self, context):
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
@@ -1202,7 +1204,7 @@ class Shaft(bpy.types.Operator):
                     return {'CANCELLED'}
             elif self.edge == 1:
                 edge = [1, 0]
-                    
+
             verts.append(edges[edge[0]].verts[0])
             verts.append(edges[edge[0]].verts[1])
 
@@ -1279,7 +1281,7 @@ class Shaft(bpy.types.Operator):
                 # These will be rotated about the orgin so will need to be shifted:
                 for j in range(numV):
                     verts_out.append(co - (matrices[j] * init_vec))
-        # Else if a line and a point was selected:    
+        # Else if a line and a point was selected:
         elif self.shaftType == 2:
             init_vec = distance_point_line(verts[2].co, verts[0].co, verts[1].co)
             # These will be rotated about the orgin so will need to be shifted:
@@ -1403,7 +1405,7 @@ class Slice(bpy.types.Operator):
     def invoke(self, context, event):
         return self.execute(context)
 
-    
+
     def execute(self, context):
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
@@ -1464,7 +1466,7 @@ class Slice(bpy.types.Operator):
             # Get the end verts on the edge:
             v1 = e.verts[0]
             v2 = e.verts[1]
-            
+
             # Make sure that verts are not a part of the cutting plane:
             if e.select and (v1 not in face.verts and v2 not in face.verts):
                 if len(face.verts) < 5:  # Not an n-gon
@@ -1783,7 +1785,7 @@ class Fillet(bpy.types.Operator):
         layout.prop(self, "deg_seg")
         layout.prop(self, "res")
 
-    
+
     @classmethod
     def poll(cls, context):
         ob = context.active_object
@@ -1825,7 +1827,7 @@ class Fillet(bpy.types.Operator):
 
         for e in edges:
             axis_points = fillet_axis(e, self.radius)
-            
+
 
         bm.to_mesh(bpy.context.active_object.data)
         bpy.ops.object.editmode_toggle()
@@ -1858,7 +1860,7 @@ class Intersect_Line_Face(bpy.types.Operator):
             self.report({'ERROR_INVALID_INPUT'},
                         "This is for debugging only: you should not be able to run this!")
             return {'CANCELLED'}
-        
+
         bpy.ops.object.editmode_toggle()
         bm = bmesh.new()
         bm.from_mesh(bpy.context.active_object.data)
@@ -1897,11 +1899,11 @@ class Intersect_Line_Face(bpy.types.Operator):
 
 class VIEW3D_MT_edit_mesh_edgetools(bpy.types.Menu):
     bl_label = "EdgeTools"
-    
+
     def draw(self, context):
         global integrated
         layout = self.layout
-        
+
         layout.operator("mesh.edgetools_extend")
         layout.operator("mesh.edgetools_spline")
         layout.operator("mesh.edgetools_ortho")
@@ -1957,7 +1959,7 @@ def register():
     if os.path.isfile(path + "\mesh_edge_intersection_tools.py"):
         print("EdgeTools UI integration test - TinyCAD VTX Found")
         integrated = True
-    
+
     bpy.types.VIEW3D_MT_edit_mesh_specials.prepend(menu_func)
 
 
@@ -1971,4 +1973,4 @@ def unregister():
 
 if __name__ == "__main__":
     register()
-    
+
index b2fb9c2..15c059c 100644 (file)
@@ -26,10 +26,8 @@ bl_info = {
     "location": "View3D > Toolbar and View3D > Specials (W-key)",
     "description": "Add extra mesh edit tools",
     "warning": "",
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
-        "Scripts",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=32711",
+    "wiki_url": "",
+    "tracker_url": "https://developer.blender.org/T32711",
     "category": "Mesh"}
 
 
index 01b0f95..8b4bf13 100644 (file)
@@ -24,7 +24,6 @@ bl_info = {
     "author": "Witold Jaworski",
     "version": (1, 2, 0),
     "blender": (2, 57, 0),
-    "api": 36147,
     "location": "View3D >Specials (W-key)",
     "category": "Mesh",
     "description": "Bevels selected edges",
@@ -45,12 +44,12 @@ DEBUG = 0 #Debug flag - just some text printed on the console...
 def bevel(obj, width, use_vertices):
     """Bevels selected edges of the mesh
        Arguments:
-            @obj (Object):         an object with a mesh. 
+            @obj (Object):         an object with a mesh.
                                    It should have some edges selected
             @width (float):        width of the bevel
             @use_vertices (bool):  True, when bevel only vertices. False otherwise
        This function should be called in the Edit Mode, only!
-    """    
+    """
     #
     #edge = bpy.types.MeshEdge
     #obj = bpy.types.Object
@@ -58,7 +57,7 @@ def bevel(obj, width, use_vertices):
 
     bpy.ops.object.editmode_toggle() #switch into OBJECT mode
     #adding the Bevel modifier
-    bpy.ops.object.modifier_add(type = 'BEVEL')  
+    bpy.ops.object.modifier_add(type = 'BEVEL')
     bevel = obj.modifiers[-1] #the new modifier is always added at the end
     bevel.limit_method = 'WEIGHT'
     bevel.edge_weight_method = 'LARGEST'
@@ -67,18 +66,18 @@ def bevel(obj, width, use_vertices):
     #moving it up, to the first position on the modifier stack:
     while obj.modifiers[0] != bevel:
         bpy.ops.object.modifier_move_up(modifier = bevel.name)
-        
+
     for elm in (obj.data.vertices if use_vertices else obj.data.edges):
         if elm.select:
-            elm.bevel_weight = 1.0 
-    
+            elm.bevel_weight = 1.0
+
     bpy.ops.object.modifier_apply(apply_as = 'DATA', modifier = bevel.name)
-    
+
     #clean up after applying our modifier: remove bevel weights:
     for elm in (obj.data.vertices if use_vertices else obj.data.edges):
         if elm.select:
-            elm.bevel_weight = 0.0 
-            
+            elm.bevel_weight = 0.0
+
     bpy.ops.object.editmode_toggle() #switch back into EDIT_MESH mode
 
 class bevel_help(bpy.types.Operator):
@@ -93,7 +92,7 @@ class bevel_help(bpy.types.Operator):
                layout.label('To Help:')
                layout.label('best used on flat edges & simple edgeflow')
                layout.label('may error if vert joins multiple edges/complex edge selection')
-       
+
        def execute(self, context):
                return {'FINISHED'}
 
@@ -105,31 +104,31 @@ class Bevel(bpy.types.Operator):
     bl_idname = "mesh.mbevel" #it is not named mesh.bevel, to not confuse with the standard bevel in the future...
     bl_label = "Bevel Selected"
     bl_description = "Bevels selected edges"
-    bl_options = {'REGISTER', 'UNDO'} #Set this options, if you want to update  
-    #                                  parameters of this operator interactively 
-    #                                  (in the Tools pane) 
+    bl_options = {'REGISTER', 'UNDO'} #Set this options, if you want to update
+    #                                  parameters of this operator interactively
+    #                                  (in the Tools pane)
     #--- parameters
     use_vertices = BoolProperty(name="Only Vertices", description="Bevel vertices (corners), not edges", default = False)
-    
-    width = FloatProperty(name="Width", description="Bevel width value (it is multiplied by 10^Exponent)", 
-                          subtype = 'DISTANCE', default = 0.1, min = 0.0, 
+
+    width = FloatProperty(name="Width", description="Bevel width value (it is multiplied by 10^Exponent)",
+                          subtype = 'DISTANCE', default = 0.1, min = 0.0,
                                                     step = 1, precision = 2)
 #    exponent = IntProperty(name="Exponent", description="Order of magnitude of the bevel width (the power of 10)", default = 0)
-    
+
     use_scale = BoolProperty(name="Use object scale", description="Multiply bevel width by the scale of this object", default = False)
 
     #--- other fields
-    LAST_VERT_NAME = "mesh.mbevel.last_vert" #the name of the custom scene property 
-    LAST_WIDTH_NAME = "mesh.mbevel.last_width" #the name of the custom scene property 
-    LAST_EXP_NAME = "mesh.mbevel.last_exponent" #the name of the custom scene property 
-    LAST_SCALE_NAME = "mesh.mbevel.last_scale" #scale Bevel width by the object scale 
+    LAST_VERT_NAME = "mesh.mbevel.last_vert" #the name of the custom scene property
+    LAST_WIDTH_NAME = "mesh.mbevel.last_width" #the name of the custom scene property
+    LAST_EXP_NAME = "mesh.mbevel.last_exponent" #the name of the custom scene property
+    LAST_SCALE_NAME = "mesh.mbevel.last_scale" #scale Bevel width by the object scale
     #--- Blender interface methods
     @classmethod
     def poll(cls,context):
         return (context.mode == 'EDIT_MESH')
 
     def invoke(self, context, event):
-        #input validation: 
+        #input validation:
         # 1. Require single-user mesh (modifiers cannot be applied to the multi-user ones):
         obj = context.object
         if obj.data.users > 1:
@@ -139,17 +138,17 @@ class Bevel(bpy.types.Operator):
         self.use_vertices = context.scene.get(self.LAST_VERT_NAME, self.use_vertices)
 
         bpy.ops.object.editmode_toggle()
-        
+
         if self.use_vertices :
             selected = list(filter(lambda e: e.select, context.object.data.vertices))
         else:
             selected = list(filter(lambda e: e.select, context.object.data.edges))
-            
+
         bpy.ops.object.editmode_toggle()
-            
+
         if len(selected) > 0:
             self.use_scale = context.object.get(self.LAST_SCALE_NAME, self.use_scale)
-            
+
             #setup the default width, to avoid user surprises :)
             def_exp = floor(log10(obj.dimensions.length)) #heuristic: default width exponent is derived from the object size...
             self.exponent = context.scene.get(self.LAST_EXP_NAME, def_exp) #Let's read the last used value, stored in the scene...
@@ -159,12 +158,12 @@ class Bevel(bpy.types.Operator):
             else: #the previous bevel size would be too small or too large - revert to defaults:
                 self.width = 0.1 #10% of the object order of magnitude
                 self.exponent = def_exp #the order of magnitude
-            #parameters adjusted, run the command!    
+            #parameters adjusted, run the command!
             return self.execute(context)
         else:
             self.report(type='ERROR', message="Nothing is selected")
             return {'CANCELLED'}
-        
+
     def execute(self,context):
         #calculate the bevel width, for this object size and scale
         width = self.width*pow(10,self.exponent)
@@ -181,18 +180,18 @@ class Bevel(bpy.types.Operator):
 def menu_draw(self, context):
     self.layout.operator_context = 'INVOKE_REGION_WIN'
     self.layout.operator(Bevel.bl_idname, "Bevel_Witold")
-    
+
 #--- ### Register
 def register():
     register_module(__name__)
     bpy.types.VIEW3D_MT_edit_mesh_specials.prepend(menu_draw)
-    
+
 def unregister():
     bpy.types.VIEW3D_MT_edit_mesh_specials.remove(menu_draw)
     unregister_module(__name__)
-    
-#--- ### Main code    
+
+#--- ### Main code
 if __name__ == '__main__':
     register()
-    
+
 if DEBUG > 0: print("mesh_bevel.py loaded!")
index 94f12cb..f07fda2 100644 (file)
@@ -26,7 +26,6 @@ bl_info = {
     "author": "Dolf Veenvliet",
     "version": 1,
     "blender": (2, 56, 0),
-    "api": 31847,
     "location": "View3D > Specials > Bump",
     "description": "Extrude and translate/rotate/scale multiple times",
     "warning": "",
@@ -53,106 +52,106 @@ class Bump():
 
        # Initialise the class
        def __init__(self, context, type, scale, steps):
-       
+
                self.ob = context.active_object
                bpy.ops.object.mode_set(mode='OBJECT')
-               
+
                translate = mesh_extras.get_average_outer_edge_length()
                #inset = mesh_extras.get_shortest_outer_edge_length() * 0.25
-               
+
                translate *= scale
-               
+
                bpy.ops.object.mode_set(mode='EDIT')
-               
+
                stepped = 0
-       
+
                # Simple... we just do a bunch of steps... set in stone... easy!
                if type == 'BUM':
-               
+
                        self.extrude()
-                       
+
                        bpy.ops.object.mode_set(mode='OBJECT')
                        bpy.ops.object.mode_set(mode='EDIT')
-                       
+
                        self.shrink(-translate)
                        self.shrink(translate*0.3)
-                       
+
                        stepped += 1
-               
+
                # Spike!
                elif type == 'SPI':
-               
+
                        for i in range(3):
-               
+
                                self.extrude()
-                               
+
                                bpy.ops.object.mode_set(mode='OBJECT')
                                bpy.ops.object.mode_set(mode='EDIT')
-                               
+
                                if not i:
                                        f = 0.5
                                elif i == 1:
                                        f = 0.3
                                elif i == 2:
                                        f = 0.2
-                               
+
                                t = translate * f
-                               
+
                                self.shrink(-t)
                                self.shrink(t * (2 * f))
-                               
+
                                stepped += 1
-                               
+
                # Dimple!
                elif type == 'DIM' or type == 'PIM':
-               
+
                        self.extrude()
                        bpy.ops.object.mode_set(mode='OBJECT')
                        bpy.ops.object.mode_set(mode='EDIT')
-                       
+
                        self.shrink(-translate * 0.2)
-                       
+
                        self.extrude()
                        bpy.ops.object.mode_set(mode='OBJECT')
                        bpy.ops.object.mode_set(mode='EDIT')
-                       
+
                        self.shrink(translate * 0.2)
                        self.shrink(-translate * 0.2)
-                       
+
                        if type == 'PIM':
                                self.extrude()
                                bpy.ops.object.mode_set(mode='OBJECT')
                                bpy.ops.object.mode_set(mode='EDIT')
-                       
+
                                self.shrink(-translate * 0.2)
                                stepped = 3
                        else:
                                stepped = 2
-                       
-                       
-                       
+
+
+<