[Gmsh] Can you delete the variables created in the GUI menu?

Marco Antolovic marco_antolovic at yahoo.it
Fri Nov 6 19:19:48 CET 2020

 Hi Christophe,
thanks for the answer, that's exactly what I was looking for.
I've tried to use the Visible parameter before but could not figure out how to implement it but yesterday the penny finally dropped :-)
PS: If someone is interested below is an example of how you could do it

// Set the number of maximum dielectric groups//============================================nr_dielectric_groups_max =10;
// Check the number of dielectric group variables present in ONELAB database// If there is none no action is taken// old_nr_dg represent the nr. of dielect. groups available from previous script run//==================================================================================old_nr_dg=0;For i In {1:nr_dielectric_groups_max}  seekZero = GetNumber(Sprintf(" Dielectric parameters/ Dielectric thickness %g", i));  If (seekZero!=0)    old_nr_dg +=1;  EndIfEndFor
// Define the new nr. of dielect. groups//======================================DefineConstant[ nr_dielectric_groups = {1, Min 1, Max nr_dielectric_groups_max, Step 1, Name " Dielectric parameters/Nr. of dielectric groups"} ];
// Chose which variables will be hidden/shown//===========================================If (old_nr_dg>=nr_dielectric_groups)  nr_count=old_nr_dg;Else  nr_count=nr_dielectric_groups;EndIf
For i In {0:nr_count-1}  visi_flag(i)=0;EndForFor i In {0:nr_dielectric_groups-1}  visi_flag(i)=1;EndFor
// Create variables and update menu view//======================================For i In {0:nr_count-1}  dielectric_thickness(i) = DefineNumber[ 550, Min 1, Max 2000, Step 1, Name Sprintf(" Dielectric parameters/ Dielectric thickness %g", i+1), Visible visi_flag(i) ];  dielectric_thickness(i) = dielectric_thickness(i)/1e6;EndFor
    Il mercoledì 4 novembre 2020, 08:59:12 CET, Christophe Geuzaine <cgeuzaine at uliege.be> ha scritto:  

> On 30 Oct 2020, at 15:28, Marco Antolovic <marco_antolovic at yahoo.it> wrote:
> Hi all,
> Is there a way to delete a variable that you created in the GUI menu when you reload the script?
> I'll try to explain my question with this example:
>  nr_dielectric_groups = DefineNumber[ 4, Min 1, Max 2000, Step 1, Name " Dielectric parameters/Nr. of dielectric groups" ];
> For i In {0:nr_dielectric_groups-1}
>    dielectric_thickness(i) = DefineNumber[ 550, Min 1, Max 2000, Step 1, Name Sprintf(" Dielectric parameters/ Dielectric thickness %g", i+1) ];
> EndFor
> when you first start the script dielectric_thickness() will be a vector of dimension four and you will see four dielectric_thickness variables in the menu.
> However if I set nr_dielectric_groups=2 the menu will still show four dielectric_thickness variables. Is there a way to delete excess variables from the menu?

You can "undefine" them using "UndefineConstant[]". But in practice we usually simply hide them (with the "Visible" attribute) : this way if you change your mind and later re-increase "nr_dielectric_groups", you will still have the value that you might have selected before.


> Many thanks,
> Marco
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh

Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20201106/283f11a6/attachment.html>

More information about the gmsh mailing list