Dump2CGO
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Overview
Dumps a PyMOL object to a CGO object.
The Code
from pymol import cmd
from pymol.cgo import *
def dump2surfaceCGO():
CGOobj = []
dumpedFile = open("dump.tmp").read()
for block in dumpedFile.split('\n\n'):
CGOobj.append(BEGIN)
CGOobj.append(TRIANGLES)
for line in block.split('\n'):
if line == '':
continue
vals = line.split()
CGOobj.append(NORMAL)
CGOobj.append(float(vals[3]))
CGOobj.append(float(vals[4]))
CGOobj.append(float(vals[5]))
CGOobj.append(VERTEX)
CGOobj.append(float(vals[0]))
CGOobj.append(float(vals[1]))
CGOobj.append(float(vals[2]))
CGOobj.append(END)
return CGOobj
def dump2meshCGO():
CGOobj = []
dumpedFile = open("dump.tmp").read()
for block in dumpedFile.split('\n\n'):
CGOobj.append(BEGIN)
CGOobj.append(LINE_STRIP)
for line in block.split('\n'):
if line == '':
continue
CGOobj.append(VERTEX)
vals = line.split()
CGOobj.append(float(vals[0]))
CGOobj.append(float(vals[1]))
CGOobj.append(float(vals[2]))
CGOobj.append(END)
return CGOobj
def getType(objname):
session = cmd.get_session()['names']
for obj in session:
if obj == None:
continue
if obj[0] != objname:
continue
return obj[4]
return -1
def dump2CGO(obj):
cmd.dump("dump.tmp", obj)
type = getType(obj)
cgo = []
if (type == 3): # Mesh
cgo = dump2meshCGO()
elif (type == 7): #Surface
cgo = dump2surfaceCGO()
else:
print("Unknown type")
return
cmd.load_cgo(cgo, "CGO " + obj)
cmd.extend('dump2CGO', dump2CGO)
cmd.auto_arg[0]['dump2CGO'] = [cmd.object_sc, 'object', '']