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_File (that do does tohil::import) will import a module in Python from its tail name without .py extension. The module to import must be found based on the path environment variables.

And GiD_Python_Import_File is similar to GiD_Python_Import_File but instead of a but expects the full path expects the module name (without .py extension), and must be found based on the path environment variablebut

But if we are developing and modify the .py file doing a new import don’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)