File: gfx_symmetry.py

package info (click to toggle)
openstructure 2.11.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 206,240 kB
  • sloc: cpp: 188,571; python: 36,686; ansic: 34,298; fortran: 3,275; sh: 312; xml: 146; makefile: 29
file content (24 lines) | stat: -rw-r--r-- 525 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import math
from ost import geom

filename='fragment.pdb'
if len(sys.argv)>1:
  filename=sys.argv[1]
ent=io.LoadEntity(filename)

edi=ent.EditXCS()
m=geom.Mat4()
m.PasteTranslation(-ent.bounds.min)
edi.ApplyTransform(m)
edi.UpdateICS()
frag=gfx.Entity('frag', ent)
sym_ops=gfx.SymmetryOpList()
for i in range(12):
  m=geom.EulerTransformation(0, i*2.0*math.pi/12.0, 0)
  sym_ops.append(gfx.SymmetryOp(m, geom.Vec3(0, 0, 10)))
  
sym=gfx.SymmetryNode('sym', sym_ops)
scene.Add(sym)
sym.Add(frag)

scene.SetCenter(geom.Vec3())