how to save each array's results in dependent blank in GUI program base code?

I have some arrays that would change their number by user inputs.
now assume 24 arrays we have, for each one , I have 2 results by pushing calculate button.
the result of all arrays are like the first one. while I expect the results of others change by changing its value of its pop up menu.
I dont know how give tag or index in program base GUI matlab?
other question is how could I revese the y direction , as you can see from pic my lamina 24 is on top of paper while lamina1 is at the end.
function laminate
f1 = figure('Name','GUI','Menubar','none','Unit','normal','Position',[0.2 0.3 0.5 0.5])
e = uicontrol('Style','Edit','Units','Normalized','Position',[.4 .5 .2 .1]);
l = uicontrol('Style','text','Units','Normalized','Position',[.2 .45 .2 .1],'String','Number of laminas');
m = uicontrol('Style','PushButton','Units','Normalized','Position',[.4 .3 .2 .1],'String','Create','Callback',@b_clbck);
function b_clbck(hObject,eventdata)
n = str2double(get(e,'String'));
create_figure(n)
end
function create_figure(n)
f2 = figure('Name','Mechanical properties','Menubar','none','Unit','normal','Position',[0.1 0.1 0.85 0.85]);
up = uipanel('Title','laminates','Unit','normal','Position',[0.05 0.05 0.9 0.9]);
for k=1:n;
lam = uicontrol('Style','Edit','Units','Normalized','Position',[0.01 k/n-.75/n .1 .75/n],'String',sprintf('Lamina %#d',k),'parent',up);
pop = uicontrol('Style','popupmenu','String',{'Graphite','Boron'},'Units','Normalized','Position',[.1 k/n-.75/n .1 .75/n],'Callback',{@popupmenu_callback},'parent',up);
con1 = uicontrol('Style','text','Units','Normalized','Position',[.2 (k/n)-.75/n .03 .75/n],'String','Qx=','parent',up)
res1 = uicontrol('Style','Edit','Units','Normalized', 'Position',[.22 k/n-.75/n .05 .75/n],'Callback',{@ans_callback},'parent',up);
con2 = uicontrol('Style','text','Units','Normalized','Position',[.27 (k/n)-.75/n .03 .75/n],'String','Qy=','parent',up)
res2 = uicontrol('Style','Edit','Units','Normalized', 'Position',[.30 k/n-.75/n .05 .75/n],'Callback',{@ans_callback},'parent',up);
Cal = uicontrol('Style','pushbutton','Units','Normalized','Position',[0.7 k/n-.75/n .08 .75/n],'string','Calculate','Callback',{@Calc_callback},'parent',up);
end
function popupmenu_callback(hObject,eventdata)
for k=1:n;
idx = get(hObject,'value');
setappdata(0,'evalue',idx);
end
end
function Calc_callback(hObject,eventdata)%pushbutton
for k=1:n;
idx = getappdata(0,'evalue');
switch idx;
case 1 % User selects Peaks.
ex=5;
ey=20;
Qx=ey/ex;
Qy=ey*ex;
set(res1,'string',Qx)
set(res2,'string',Qy)
case 2 % User selects Membrane.
ex=5;
ey=30;
Qx=ey/ex;
Qy=ey*ex;
set(res1,'string',Qx)
set(res2,'string',Qy)
otherwise
end
end
end
end
end

3 Comments

This time I edited your question for you. Next time, please use the tools explained on this page to make your question more readable.
It is also not clear to me what your question is exactly. It is also difficult to understand your code, which is not helped by the lack of comments in your code.
From your edit I get the feeling you are not the original author of this code. Did you contact the original author? You should keep your usage in the back of your mind when writting the code that generates fields with callbacks. Your code has several loops where data is getting overwritten and you do not seem to use object tags at all.
I have written it by myself and help of internet and videos. but now I am reallt struggling with it as , I dont know how to stop this overwrittening. I dont know how to use tags in program base GUI.

Sign in to comment.

 Accepted Answer

For general advice and examples for how to create a GUI (and avoid using GUIDE), have look at this thread. Below I show you some edits to make your code more parametric and readable.
lamina_handles=struct('lam',cell(0,n));
for k=1:n
vert_pos=[k/n-0.75/n 0.75/n];
lamina_handles(k).lam = uicontrol('Style','Edit','Parent',up,...
'Units','Normalized','Position',[0.01 vert_pos(1) .1 vert_pos(2)],...
'String',sprintf('Lamina %#d',k));
lamina_handles(k).pop = uicontrol('Style','popupmenu','Parent',up,...
'String',{'Graphite','Boron'},...
'Units','Normalized','Position',[0.10 vert_pos(1) 0.10 vert_pos(2)],...
'Callback',@popupmenu_callback,...
'Tag',num2str(k));
lamina_handles(k).con1 = uicontrol('Style','text','Parent',up,...
'Units','Normalized','Position',[0.20 vert_pos(1) 0.03 vert_pos(2)],...
'String','Qx=');
lamina_handles(k).res1 = uicontrol('Style','Edit','Parent',up,...
'Units','Normalized','Position',[0.22 vert_pos(1) 0.05 vert_pos(2)],...
'Callback',@ans_callback,...
'Tag',num2str(k));
lamina_handles(k).con2 = uicontrol('Style','text','Parent',up,...
'Units','Normalized','Position',[0.27 vert_pos(1) 0.03 vert_pos(2)],...
'String','Qy=');
lamina_handles(k).res2 = uicontrol('Style','Edit','Parent',up,...
'Units','Normalized','Position',[0.30 vert_pos(1) 0.05 vert_pos(2)],...
'Callback',@ans_callback,...
'Tag',num2str(k));
lamina_handles(k).Cal = uicontrol('Style','pushbutton','Parent',up,...
'Units','Normalized','Position',[0.70 vert_pos(1) 0.08 vert_pos(2)],...
'String','Calculate',...
'Callback',@Calc_callback,...
'Tag',num2str(k));
end
With this layout it is easy to see all properties of your uicontrol objects. I prefer to put the style and parent on the first line, put Units and Position on the same line, and to write the rest of the properties each on their own line.
I also changed the positions parameter to a variable, so you can adapt it in one place. That will allow you to flip the direction.
Every object with a callback now also has the Tag property set. That means you can do this in the callback function to retrieve all objects on that line:
k=str2double(get(gcbo,'Tag'));
h=lamina_handles(k);

10 Comments

@Rik I have a lot of edit box, text box , and just one figure is not enough to show all parameters so If another GUI figure open automaticaly beside the first list.woud be great. could you tell me how?
You can simply open a new figure. You do need to make sure that if are using guidata, you will have to be careful with passing around the handles. In principle it isn't much different from what you already have.
If you want an example: my PhotoAnnotation tool on the FileExchange has a settings window that is a second figure. You might be able to adapt some of that code to your needs.
Thank you Rik, which set up do you mean in PhotoAnnotation tool on the FileExchange ?
Did you look at the code for that submission? I meant the way in which I create a second figure and deal with passing around the data.
it is too long , I dont know which part I should look at?
When you see a very long code file, the first thing to do is to collapse all functions (or to put a breakpoint on the first code line and step in to functions). If you do that, you will notice that one of the first functions is called start_GUI. There you can see I store the handle to the figure in the fig_option field. Now you can use the normal search tools (ctrl+f) to find other occurences of this field name. Skipping a few occurences ahead, you see the OptionCallback function. That is probably the most useful to you.
Thank you Rik. this is my final code. please run it. I have a problem with it. for the third fig I dont want to choose material again as fig two from pop up menu, I want it to know which lamina is and give me the result.
function laminate
f1 = figure('Name','GUI','Menubar','none','Unit','normal','Position',[0.2 0.3 0.5 0.5]);
up3 = uipanel('Title','laminate','Unit','normal','Position',[0.25 0.25 0.5 0.5]);
e = uicontrol('Style','Edit','Units','Normalized','Position',[.5 .5 .1 .1]);
l = uicontrol('Style','text','Units','Normalized','Position',[.3 .49 .2 .1],'String','Please Enter Number of Laminas','FontWeight','bold');
m = uicontrol('Style','PushButton','Units','Normalized','Position',[.5 .3 .1 .1],'String','Create','backgroundColor','r','Callback',@b_clbck);
function b_clbck(hObject,eventdata)
n = str2double(get(e,'String'));
create_figure(n)
end
function create_figure(n)
f2 = figure('Name','Mechanical properties','Menubar','none','Unit','normal','Position',[0.1 0.1 0.85 0.85]);
up = uipanel('Title','Mechanical properties','Unit','normal','Position',[0.01 0.01 0.98 0.98]);
for k=1:n;
lamina_handles(k).lam = uicontrol('Style','Edit','Units','Normalized','Position',[0 k/n-.75/n .06 .75/n],'String',sprintf('Lamina %#d',k),'parent',up,'backgroundColor','y','FontWeight','bold');
lamina_handles(k).pop = uicontrol('Style','popupmenu','String',{'Graphit/T300/5208','Boron/B4/5505','Graphite/As/3501','Glass/Scotchply1002','Aramid/kevlar49/Epoxy'},'Units','Normalized','Position',[.060 k/n-.75/n .08 .75/n],'Callback',{@popupmenu_callback},'parent',up,'Tag',num2str(k),'FontWeight','bold');
lamina_handles(k).Th1 = uicontrol('Style','text','Units','Normalized','Position',[.1410 (k/n)-.75/n .045 .75/n],'String','Th(mm)','parent',up,'backgroundColor','[0.3010 0.7450 0.9330]','FontWeight','bold');
lamina_handles(k).Thinput = uicontrol('Style','edit','Units','Normalized','Position',[.1800 (k/n)-.75/n .030 .75/n],'String','','parent',up);
lamina_handles(k).An1 = uicontrol('Style','text','Units','Normalized','Position',[.2100 (k/n)-.75/n .047 .75/n],'String','An(deg)','parent',up,'backgroundColor','[0.3010 0.7450 0.9330]','FontWeight','bold');
lamina_handles(k).Aninput = uicontrol('Style','edit','Units','Normalized','Position',[.2520 (k/n)-.75/n .020 .75/n],'String','','parent',up);
lamina_handles(k).Emx = uicontrol('Style','text','Units','Normalized','Position',[.2720 (k/n)-.75/n .04 .75/n],'String','Ex(GPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Emxans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.3100 k/n-.75/n .025 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Emy = uicontrol('Style','text','Units','Normalized','Position',[.3370 (k/n)-.75/n .04 .75/n],'String','Ey(GPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Emyans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.3750 k/n-.75/n .025 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Ems = uicontrol('Style','text','Units','Normalized','Position',[.4020 (k/n)-.75/n .04 .75/n],'String','Es(GPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Emsans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.4400 k/n-.75/n .025 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Vx = uicontrol('Style','text','Units','Normalized','Position',[.4650 (k/n)-.75/n .015 .75/n],'String','vx','parent',up,'FontWeight','bold');
lamina_handles(k).Vxans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.4770 k/n-.75/n .025 0.75/n],'Callback',{@ans_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Vf = uicontrol('Style','text','Units','Normalized','Position',[.5025 (k/n)-.75/n .020 .75/n],'String','vf','parent',up,'FontWeight','bold');
lamina_handles(k).Vfans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.5180 k/n-.75/n .025 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).SG = uicontrol('Style','text','Units','Normalized','Position',[.5430 (k/n)-.75/n .020 .75/n],'String','SG','parent',up,'FontWeight','bold');
lamina_handles(k).SGans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.5580 k/n-.75/n .025 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).X = uicontrol('Style','text','Units','Normalized','Position',[.5850 (k/n)-.75/n .038 .75/n],'String','X(MPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Xans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.6200 k/n-.75/n .028 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Xp = uicontrol('Style','text','Units','Normalized','Position',[.6480 (k/n)-.75/n .045 .75/n],'String','X"(MPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Xpans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.6880 k/n-.75/n .03 0.75/n],'Callback',{@ans_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Y = uicontrol('Style','text','Units','Normalized','Position',[.7200 (k/n)-.75/n .038 .75/n],'String','Y(MPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Yans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.7550 k/n-.75/n .028 0.75/n],'Callback',{@Calc_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).Yp = uicontrol('Style','text','Units','Normalized','Position',[.7830 (k/n)-.75/n .045 .75/n],'String','Y"(MPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Ypans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.8230 k/n-.75/n .03 0.75/n],'Callback',{@ans_callback},'parent',up,'Tag',num2str(k));
lamina_handles(k).S = uicontrol('Style','text','Units','Normalized','Position',[.8530 (k/n)-.75/n .04 .75/n],'String','S(MPa)','parent',up,'FontWeight','bold');
lamina_handles(k).Sans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.8880 k/n-.75/n .03 0.75/n],'Callback',{@ans_callback},'parent',up,'Tag',num2str(k));
Cal = uicontrol('Style','pushbutton','Units','Normalized','Position',[0.92 0.5 .07 0.1],'string','Calculate','Callback',{@Calc_callback},'parent',up,'Tag',num2str(k),'backgroundColor','[0.6350 0.0780 0.1840]','FontWeight','bold');
sec = uicontrol('Style','pushbutton','Units','Normalized','Position',[0.92 0.3 .07 0.1],'string','second page','Callback',{@second_callback},'parent',up,'Tag',num2str(k),'backgroundColor','[0.4940 0.1840 0.5560]','FontWeight','bold');
end
function popupmenu_callback(hObject,eventdata)
for k=1:n
idx(k) =get(hObject,'value');
setappdata(0,'evalue',idx(k));
end
end
function Calc_callback(hObject,eventdata)%pushbutton
for k=1:n
idx(k)=get(lamina_handles(k).pop,'value');
switch idx(k);
case 1 % User selects Peaks.
Ex=181;
Ey=10.3;
Es=7.17;
Vx=0.28;
Vy=0.28;
Vf=0.7;
SG=1.6;
X=1500
Xp=1500
Y=40
Yp=246
S=68
set(lamina_handles(k).Emxans,'string',Ex);
set(lamina_handles(k).Emyans,'string',Ey);
set(lamina_handles(k).Emsans,'string',Es);
set(lamina_handles(k).Vxans,'string',Vx);
set(lamina_handles(k).SGans,'string',SG);
set(lamina_handles(k).Xans,'string',X);
set(lamina_handles(k).Xpans,'string',Xp);
set(lamina_handles(k).Yans,'string',Y);
set(lamina_handles(k).Ypans,'string',Yp);
set(lamina_handles(k).Vfans,'string',Vf);
set(lamina_handles(k).Sans,'string',S);
case 2 % User selects Membrane.
Ex=204;
Ey=18.5;
Es=5.59;
Vx=0.23;
Vy=0.23;
Vf=0.5;
SG=2;
X=1260;
Xp=2500;
Y=61;
Yp=202;
S=67;
set(lamina_handles(k).Emxans,'string',Ex);
set(lamina_handles(k).Emyans,'string',Ey);
set(lamina_handles(k).Emsans,'string',Es);
set(lamina_handles(k).Vxans,'string',Vx);
set(lamina_handles(k).SGans,'string',SG);
set(lamina_handles(k).Xans,'string',X);
set(lamina_handles(k).Xpans,'string',Xp);
set(lamina_handles(k).Yans,'string',Y);
set(lamina_handles(k).Ypans,'string',Yp);
set(lamina_handles(k).Vfans,'string',Vf);
set(lamina_handles(k).Sans,'string',S);
case 3 % User selects Membrane.
Ex=138;
Ey=8.96;
Es=7.1;
Vx=0.3;
Vy=0.3;
Vf=0.66;
SG=1.6;
X=1447;
Xp=1447;
Y=51.7;
Yp=206;
S=93;
set(lamina_handles(k).Emxans,'string',Ex);
set(lamina_handles(k).Emyans,'string',Ey);
set(lamina_handles(k).Emsans,'string',Es);
set(lamina_handles(k).Vxans,'string',Vx);
set(lamina_handles(k).SGans,'string',SG);
set(lamina_handles(k).Xans,'string',X);
set(lamina_handles(k).Xpans,'string',Xp);
set(lamina_handles(k).Yans,'string',Y);
set(lamina_handles(k).Ypans,'string',Yp);
set(lamina_handles(k).Vfans,'string',Vf);
set(lamina_handles(k).Sans,'string',S);
case 4 % User selects Membrane.
Ex=38.6;
Ey=8.27;
Es=4.14;
Vx=0.26;
Vy=0.26;
Vf=0.45;
SG=1.8;
X=1062;
Xp=610;
Y=31;
Yp=118;
S=72;
set(lamina_handles(k).Emxans,'string',Ex);
set(lamina_handles(k).Emyans,'string',Ey);
set(lamina_handles(k).Emsans,'string',Es);
set(lamina_handles(k).Vxans,'string',Vx);
set(lamina_handles(k).SGans,'string',SG);
set(lamina_handles(k).Xans,'string',X);
set(lamina_handles(k).Xpans,'string',Xp);
set(lamina_handles(k).Yans,'string',Y);
set(lamina_handles(k).Ypans,'string',Yp);
set(lamina_handles(k).Vfans,'string',Vf);
set(lamina_handles(k).Sans,'string',S);
case 5 % User selects Membrane.
Ex=76;
Ey=5.5;
Es=2.3;
Vx=0.34;
Vy=0.34;
Vf=0.6;
SG=1.46;
X=1400;
Xp=235;
Y=12;
Yp=53;
S=34;
set(lamina_handles(k).Emxans,'string',Ex);
set(lamina_handles(k).Emyans,'string',Ey);
set(lamina_handles(k).Emsans,'string',Es);
set(lamina_handles(k).Vxans,'string',Vx);
set(lamina_handles(k).SGans,'string',SG);
set(lamina_handles(k).Xans,'string',X);
set(lamina_handles(k).Xpans,'string',Xp);
set(lamina_handles(k).Yans,'string',Y);
set(lamina_handles(k).Ypans,'string',Yp);
set(lamina_handles(k).Vfans,'string',Vf);
set(lamina_handles(k).Sans,'string',S);
otherwise
end
end
end
end
function second_callback(hObject,eventdata)%pushbutton
n = str2double(get(e,'String'));
creat_nested(n)
end
function creat_nested(n)
f3 = figure('Name','Mechanical properties2','Menubar','none','Unit','normal','Position',[0.1 0.1 0.85 0.85]);
up2 = uipanel('Title','Stiffness $ compliance ','Unit','normal','Position',[0.01 0.01 0.98 0.98]);
for k=1:n;
lami_handles(k).lam = uicontrol('Style','Edit','Units','Normalized','Position',[0 k/n-.75/n .06 .75/n],'String',sprintf('Lamina %#d',k),'parent',up2,'backgroundColor','y','FontWeight','bold');
lami_handles(k).pop = uicontrol('Style','popupmenu','String',{'Graphit/T300/5208','Boron/B4/5505','Graphite/As/3501','Glass/Scotchply1002','Aramid/kevlar49/Epoxy'},'Units','Normalized','Position',[.060 k/n-.75/n .08 .75/n],'Callback',{@popupmenu_callback},'parent',up2,'Tag',num2str(k),'FontWeight','bold');
lami_handles(k).Sx = uicontrol('Style','text','Units','Normalized','Position',[.1410 (k/n)-.75/n .055 .75/n],'String','Sx(TPa^-1)','parent',up2,'FontWeight','bold');
lami_handles(k).Sxans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.1925 k/n-.75/n .055 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Sy = uicontrol('Style','text','Units','Normalized','Position',[.2480 (k/n)-.75/n .055 .75/n],'String','Sy(TPa^-1)','parent',up2,'FontWeight','bold');
lami_handles(k).Syans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.2995 k/n-.75/n .055 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Sxy = uicontrol('Style','text','Units','Normalized','Position',[.3540 (k/n)-.75/n .058 .75/n],'String','Sxy(TPa^-1)','parent',up2,'FontWeight','bold');
lami_handles(k).Sxyans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.4100 k/n-.75/n .058 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Ss = uicontrol('Style','text','Units','Normalized','Position',[.4670 (k/n)-.75/n .055 .75/n],'String','Ss(TPa^-1)','parent',up2,'FontWeight','bold');
lami_handles(k).Ssans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.5200 k/n-.75/n .045 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Qx = uicontrol('Style','text','Units','Normalized','Position',[.5650 (k/n)-.75/n .045 .75/n],'String','Qx(GPa)','parent',up2,'FontWeight','bold');
lami_handles(k).Qxans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.6080 k/n-.75/n .045 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Qy = uicontrol('Style','text','Units','Normalized','Position',[.6530 (k/n)-.75/n .045 .75/n],'String','Qy(GPa)','parent',up2,'FontWeight','bold');
lami_handles(k).Qyans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.6950 k/n-.75/n .045 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Qxy = uicontrol('Style','text','Units','Normalized','Position',[.74 (k/n)-.75/n .048 .75/n],'String','Qxy(GPa)','parent',up2,'FontWeight','bold');
lami_handles(k).Qxyans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.7850 k/n-.75/n .045 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
lami_handles(k).Qs = uicontrol('Style','text','Units','Normalized','Position',[.83 (k/n)-.75/n .045 .75/n],'String','Qs(GPa)','parent',up2,'FontWeight','bold');
lami_handles(k).Qsans = uicontrol('Style','Edit','Units','Normalized', 'Position',[.875 k/n-.75/n .035 0.75/n],'Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k));
Cal2 = uicontrol('Style','pushbutton','Units','Normalized','Position',[0.92 0.5 .07 0.1],'string','Calculate','Callback',{@Calc2_callback},'parent',up2,'Tag',num2str(k),'FontWeight','bold','backgroundColor','[0.4940 0.1840 0.5560]');
end
function popupmenu_callback(hObject,eventdata)
for k=1:n
idx(k) =get(hObject,'value');
%setappdata(0,'evalue',idx(k));
end
end
function Calc2_callback(hObject,eventdata)%pushbutton
for k=1:n
idx(k)=getappdata(0,evalue)
%idx(k)=get(lamina_handles(k).pop,'value');
switch idx(k);
case 1 % User selects Peaks.
Ex=181;
Ey=10.3;
Es=7.17;
Vx=0.28;
Vy=0.28;
Vf=0.7;
SG=1.6;
X=1500
Xp=1500
Y=40
Yp=246
S=68
Sx=(1/Ex)*1000;
Sy=(1/Ey)*1000;
Sxy=(Vx/Ex)*(-1000);
Ss=(1/Es)*1000;
mm=1/(1-Vx*Vy)
Qx=mm*Ex;
Qy=mm*Ey;
Qxy=mm*Vx*Ey;
Qs=Es;
set(lami_handles(k).Sxans,'string',Sx);
set(lami_handles(k).Syans,'string',Sy);
set(lami_handles(k).Sxyans,'string',Sxy);
set(lami_handles(k).Ssans,'string',Ss);
set(lami_handles(k).Qxans,'string',Qx);
set(lami_handles(k).Qyans,'string',Qy);
set(lami_handles(k).Qxyans,'string',Qxy);
set(lami_handles(k).Qsans,'string',Qs);
case 2 % User selects Membrane.
Ex=204;
Ey=18.5;
Es=5.59;
Vx=0.23;
Vy=0.23;
Vf=0.5;
SG=2;
X=1260;
Xp=2500;
Y=61;
Yp=202;
S=67;
Sx=1/Ex;
Sy=1/Ey;
Sxy=(Vx/Ex)*(-1);
Ss=1/Es;
mm=1/(1-Vx*Vy);
Qx=mm*Ex;
Qy=mm*Ey;
Qxy=mm*Vx*Ey;
Qs=Es;
set(lami_handles(k).Sxans,'string',Sx);
set(lami_handles(k).Syans,'string',Sy);
set(lami_handles(k).Sxyans,'string',Sxy);
set(lami_handles(k).Ssans,'string',Ss);
set(lami_handles(k).Qxans,'string',Qx);
set(lami_handles(k).Qyans,'string',Qy);
set(lami_handles(k).Qxyans,'string',Qxy);
set(lami_handles(k).Qsans,'string',Qs);
case 3 % User selects Membrane.
Ex=138;
Ey=8.96;
Es=7.1;
Vx=0.3;
Vy=0.3;
Vf=0.66;
SG=1.6;
X=1447;
Xp=1447;
Y=51.7;
Yp=206;
S=93;
Sx=1/Ex;
Sy=1/Ey;
Sxy=(Vx/Ex)*(-1);
Ss=1/Es;
mm=1/(1-Vx*Vy);
Qx=mm*Ex;
Qy=mm*Ey;
Qxy=mm*Vx*Ey;
Qs=Es;
set(lami_handles(k).Sxans,'string',Sx);
set(lami_handles(k).Syans,'string',Sy);
set(lami_handles(k).Sxyans,'string',Sxy);
set(lami_handles(k).Ssans,'string',Ss);
set(lami_handles(k).Qxans,'string',Qx);
set(lami_handles(k).Qyans,'string',Qy);
set(lami_handles(k).Qxyans,'string',Qxy);
set(lami_handles(k).Qsans,'string',Qs);
case 4 % User selects Membrane.
Ex=38.6;
Ey=8.27;
Es=4.14;
Vx=0.26;
Vy=0.26;
Vf=0.45;
SG=1.8;
X=1062;
Xp=610;
Y=31;
Yp=118;
S=72;
Sx=1/Ex;
Sy=1/Ey;
Sxy=(Vx/Ex)*(-1);
Ss=1/Es;
mm=1/(1-Vx*Vy);
Qx=mm*Ex;
Qy=mm*Ey;
Qxy=mm*Vx*Ey;
Qs=Es;
set(lami_handles(k).Sxans,'string',Sx);
set(lami_handles(k).Syans,'string',Sy);
set(lami_handles(k).Sxyans,'string',Sxy);
set(lami_handles(k).Ssans,'string',Ss);
set(lami_handles(k).Qxans,'string',Qx);
set(lami_handles(k).Qyans,'string',Qy);
set(lami_handles(k).Qxyans,'string',Qxy);
set(lami_handles(k).Qsans,'string',Qs);
case 5 % User selects Membrane.
Ex=76;
Ey=5.5;
Es=2.3;
Vx=0.34;
Vy=0.34;
Vf=0.6;
SG=1.46;
X=1400;
Xp=235;
Y=12;
Yp=53;
S=34;
Sx=1/Ex;
Sy=1/Ey;
Sxy=(Vx/Ex)*(-1);
Ss=1/Es;
mm=1/(1-Vx*Vy);
Qx=mm*Ex;
Qy=mm*Ey;
Qxy=mm*Vx*Ey;
Qs=Es;
set(lami_handles(k).Sxans,'string',Sx);
set(lami_handles(k).Syans,'string',Sy);
set(lami_handles(k).Sxyans,'string',Sxy);
set(lami_handles(k).Ssans,'string',Ss);
set(lami_handles(k).Qxans,'string',Qx);
set(lami_handles(k).Qyans,'string',Qy);
set(lami_handles(k).Qxyans,'string',Qxy);
set(lami_handles(k).Qsans,'string',Qs);
otherwise
end
end
end
end
end
If you want to have the same material selected, why provide the dropdown menu again? You might also consider closing the first figure once the user has entered the number of lamina.

Sign in to comment.

More Answers (0)

Tags

Asked:

on 19 Feb 2021

Commented:

on 21 Feb 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!