Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

From In the entry that is placed at the bottom of the main GiD window , can invoke Tcl code writing can be executed by adding the prefix -np- followed some by a space and then some the desired tcl code an press and pressing <Return> .

Note: -np- mean ‘No'No-Process’ Process' (that is, the words are not GiD known process keywords) and instead the next command is expected to be Tcl code. It is used as a fast way to run a simple procedure or to re-define code.

Use copy/paste code after -np-

In particular there are some predefined Tcl procs that run python code, like GiD_Python_Execthat which expects the python code to be evaluated.

Since GiD version 17, matplotlib modules does not come with GiD.

Install matplotlib Python module with:

-np- GiD_Python_PipInstallMissingPackages [list matplotlib]

From now on you can use the matplot module.

Example: matplotlib graph of a line

This is a simple example of call from Tcl calls a Python code that from Tcl and uses the matplotlib module to show draw a graph (in a new Tk window opened by tkinter):

Code Block
languagepy
GiD_Python_Exec {
    import matplotlib.pyplot as plt
    plt.plot([1, 2, 3, 4])
    plt.ylabel('some numbers')
    plt.show()
}

GiD_Python_Execdo does an implicit package require tohil that load it and then calls tohil::execCan invoke this with the provided script.

This Tcl code can be executed, for example, by pasting it after -np- in the command line (with one or more spaces separating the code pasted), and press <return>pressing the <Return> key.

...

 then will appear Then a window like this will appear:

...

There are other procs similar to GiD_Python_Exec, like GiD_Python_Eval (for to evaluate a single instruction and value is returned) which will return a value, or GiD_Python_Call( to invoke a function that must be has been previously defined).

Source a file with the code

The normal way to write long Python code is to write it in a .py file.

Note: Visual Studio Code is our recommended editor , installing accompanied by the MS Python extension for this language.

GiD_Python_Source is a Tcl proc that expects the name of a python file with the code to be sourced, i.e. loaded and executed.

Example: matplotlib graph of two curves

The file <GiD><GiDdirectory>/scripts/tohil/doc/demo_matplotlib.py contain contains a code like the one of the image:

...

and can source this file This demo file can be sourced ( loaded and executed ) writing this (<GiD> must be replaced by the true pathcommand ( GIDDEFAULT is a Tcl global variable with the path to the GiD directory)
-np- GiD_Python_Source {<GiD>/[file join $GIDDEFAULT scripts/tohil/doc/demo_matplotlib.py}]
and then this window will appear:

...

...

Force reload of a Python file

Other Tcl procs related to source Python code are GiD_Python_Import_File and GiD_Python_Import.

Using our Our Tcl command GiD_Python_Import (that do does tohil::import) will import a module in Python from its tail name without .py extension, and . The module to import must be found based on the path environment variablevariables.

GiD_Python_Import_File is similar to GiD_Python_Import but expects the full path.

But if we are developing and modify the .py file doing a new import won’t won't refresh the code in the interpreter.

A trick to do it it this ‘reload’ is to use the Tcl command GiD_Python_Source. Using this, then the new code of the file is used, reloaded, without the need to restart GiD.

In fact it seems that this is similar to use , in Python, to the function reload of the importlib module:

Code Block
languagepy
import importlib
importlib.reload( module)