예제 #1
0
    def performAction(self, action, glwidget):

        for i, engine in enumerate(glwidget.engines):
            if engine.name == "Surfaces":
                surfaceEngine = engine  # This should work...
            print "Name", engine.name  # Bug, it gives nothing intelligible
            print "Alias", engine.alias  # Bug, same as before
            print "Primitives", engine.primitiveTypes  # Gives Surface, 3, Atoms etc...
            print "index", i

        cube = glwidget.molecule.addCube()

        dim = array([5, 5, 5])
        min = -array([10.0, 10.0, 10.0])
        max = array([10.0, 10.0, 10.0])
        cube.setLimits(min, max, dim)

        data = []
        for i in range(125):
            data.append(sin(i / 5.0))
        cube.setData(data)

        mesh = glwidget.molecule.addMesh()
        ID = mesh.id

        mesh.cube = cube.id

        iso = 1.0
        mesh_gen = Avogadro.MeshGenerator()
        initialized = mesh_gen.initialize(cube, mesh, iso)
        mesh_gen.run()

        Avogadro.toPyQt(mesh_gen).wait()

        print "finished"

        #settings = QSettings("mesh1Id", ID)   This doesn't set values!!
        settings = QSettings()
        settings.setValue("mesh1Id", ID)
        surfaceEngine.readSettings(settings)

        surfaceEngine.enabled = True
        glwidget.molecule.update()