[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3949] trunk/py/scripts/addons/ io_mesh_pdb: 1. New: NURBS, mesh and meta balls can now be chosen as atoms.

Clemens Barth barth at root-1.de
Sat Nov 10 17:36:32 CET 2012


Revision: 3949
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3949
Author:   blendphys
Date:     2012-11-10 16:36:31 +0000 (Sat, 10 Nov 2012)
Log Message:
-----------
1. New: NURBS, mesh and meta balls can now be chosen as atoms.
   I also updated the Wiki page.
2. There was a small mistake introduced by the last commits. This has been 
   fixed.
3. Code cleaning

Blendphys

Modified Paths:
--------------
    trunk/py/scripts/addons/io_mesh_pdb/__init__.py
    trunk/py/scripts/addons/io_mesh_pdb/export_pdb.py
    trunk/py/scripts/addons/io_mesh_pdb/import_pdb.py

Modified: trunk/py/scripts/addons/io_mesh_pdb/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_mesh_pdb/__init__.py	2012-11-10 16:35:51 UTC (rev 3948)
+++ trunk/py/scripts/addons/io_mesh_pdb/__init__.py	2012-11-10 16:36:31 UTC (rev 3949)
@@ -50,7 +50,7 @@
 }
 
 import bpy
-from bpy.types import Operator, Panel
+from bpy.types import Operator
 from bpy_extras.io_utils import ImportHelper, ExportHelper
 from bpy.props import (StringProperty,
                        BoolProperty,
@@ -79,9 +79,13 @@
     use_lamp = BoolProperty(
         name="Lamp", default=False,
         description = "Do you need a lamp?")
-    use_mesh = BoolProperty(
-        name = "Mesh balls", default=False,
-        description = "Use mesh balls instead of NURBS")
+    ball = EnumProperty(
+        name="Type of ball",
+        description="Choose ball",
+        items=(('0', "NURBS", "NURBS balls"),
+               ('1', "Mesh" , "Mesh balls"),
+               ('2', "Meta" , "Metaballs")),
+               default='0',) 
     mesh_azimuth = IntProperty(
         name = "Azimuth", default=32, min=1,
         description = "Number of sectors (azimuth)")
@@ -139,9 +143,10 @@
         row.prop(self, "use_lamp")
         row = layout.row()
         col = row.column()
-        col.prop(self, "use_mesh")
-        col = row.column(align=True)
-        col.active = self.use_mesh
+        col.prop(self, "ball")
+        row = layout.row()
+        row.active = (self.ball == "1")
+        col = row.column(align=True)             
         col.prop(self, "mesh_azimuth")
         col.prop(self, "mesh_zenith")
         row = layout.row()
@@ -179,8 +184,8 @@
         filepath_pdb = bpy.path.abspath(self.filepath)
 
         # Execute main routine                
-        atom_number = import_pdb.import_pdb(
-                      self.use_mesh,
+        import_pdb.import_pdb(
+                      self.ball,
                       self.mesh_azimuth,
                       self.mesh_zenith,
                       self.scale_ballradius,

Modified: trunk/py/scripts/addons/io_mesh_pdb/export_pdb.py
===================================================================
--- trunk/py/scripts/addons/io_mesh_pdb/export_pdb.py	2012-11-10 16:35:51 UTC (rev 3948)
+++ trunk/py/scripts/addons/io_mesh_pdb/export_pdb.py	2012-11-10 16:36:31 UTC (rev 3949)
@@ -35,7 +35,7 @@
         if "Stick" in obj.name:
             continue
             
-        if obj.type != "SURFACE" and obj.type != "MESH":
+        if obj.type not in {'MESH', 'SURFACE', 'META'}:
             continue 
        
         name = ""

Modified: trunk/py/scripts/addons/io_mesh_pdb/import_pdb.py
===================================================================
--- trunk/py/scripts/addons/io_mesh_pdb/import_pdb.py	2012-11-10 16:35:51 UTC (rev 3948)
+++ trunk/py/scripts/addons/io_mesh_pdb/import_pdb.py	2012-11-10 16:36:31 UTC (rev 3949)
@@ -17,7 +17,6 @@
 # ##### END GPL LICENSE BLOCK #####
 
 import bpy
-import os
 from math import pi, cos, sin, sqrt, ceil
 from mathutils import Vector, Matrix
 from copy import copy
@@ -245,11 +244,12 @@
             color = [0,0,0]
             location = Vector((0,0,0))
             # Append the TER into the list. Material remains empty so far.
-            all_atoms.append(AtomProp(short_name,
-                                                 name,
-                                                 location,
-                                                 radius,
-                                                 color,[]))
+            all_atoms.append(AtomProp(short_name, 
+                                      name, 
+                                      location, 
+                                      radius,
+                                      color,[]))
+                                      
         # If 'ATOM or 'HETATM' appears in the line then do ...
         elif "ATOM" in line or "HETATM" in line:
 
@@ -345,7 +345,7 @@
     return (Number_of_total_atoms, all_atoms)
     
 
-def read_pdb_file_sticks(filepath_pdb, use_sticks_bonds):
+def read_pdb_file_sticks(filepath_pdb, use_sticks_bonds, all_atoms):
 
     # The list of all sticks.
     all_sticks = []
@@ -529,7 +529,7 @@
 # -----------------------------------------------------------------------------
 #                                                            The main routine
 
-def import_pdb(use_mesh,
+def import_pdb(Ball_type,
                Ball_azimuth,
                Ball_zenith,
                Ball_radius_factor,
@@ -623,7 +623,9 @@
     # ------------------------------------------------------------------------
     # READING DATA OF STICKS
 
-    all_sticks = read_pdb_file_sticks(filepath_pdb, use_sticks_bonds)
+    all_sticks = read_pdb_file_sticks(filepath_pdb, 
+                                      use_sticks_bonds, 
+                                      all_atoms)
 
     # So far, all atoms, sticks and materials have been registered.
 
@@ -828,18 +830,23 @@
                             layers=current_layers)
         else:
             # NURBS balls
-            if use_mesh == False:
+            if Ball_type == "0":
                 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),
                             layers=current_layers)
             # UV balls
-            else:
+            elif Ball_type == "1":
                 bpy.ops.mesh.primitive_uv_sphere_add(
                             segments=Ball_azimuth, ring_count=Ball_zenith,
                             size=1, view_align=False, enter_editmode=False,
                             location=(0,0,0), rotation=(0, 0, 0),
                             layers=current_layers)
+            # Meta balls
+            elif Ball_type == "2":
+                bpy.ops.object.metaball_add(type='BALL', view_align=False, 
+                            enter_editmode=False, location=(0, 0, 0), 
+                            rotation=(0, 0, 0), layers=current_layers)
 
         ball = bpy.context.scene.objects.active
         ball.scale  = (atom[3]*Ball_radius_factor,) * 3



More information about the Bf-extensions-cvs mailing list