1
function [x,y,typ]=VariableResistor(job,arg1,arg2)
3
// exemple d'un bloc implicit,
4
// - sans entree ni sortie de conditionnement
5
// - avec une entree et une sortie de type implicit et de dimension 1
6
// - avec un dialogue de saisie de parametre
10
R=arg1.graphics.exprs;
11
standard_draw(arg1,%f,VR_draw_ports)
13
[x,y,typ]=VR_inputs(arg1)
14
case 'getoutputs' then
15
[x,y,typ]=standard_outputs(arg1)
17
[x,y]=standard_origin(arg1)
22
model.sim='VariableResistor'
26
mo.model='VariableResistor'
30
model.in=ones(size(mo.inputs,'*'),1)
31
model.out=ones(size(mo.outputs,'*'),1)
33
gr_i=[ 'xx=[0,1,1,7,7,8,7,7,1,1]/8;';
34
'yy=[1,1,0,0,1,1,1,2,2,1]/2;';
35
'xpoly(orig(1)+xx*sz(1),orig(2)+yy*sz(2)); ']
36
x=standard_define([2 0.18],model,exprs,list(gr_i,0))
37
x.graphics.in_implicit=['I','E']
38
x.graphics.out_implicit=['I']
41
function VR_draw_ports(o)
42
[orig,sz,orient]=(o.graphics.orig,o.graphics.sz,o.graphics.flip)
43
xset('pattern',default_color(0))
45
// draw input/output ports
46
//------------------------
47
xset('pattern',default_color(1))
48
if orient then //standard orientation
53
0 1]*diag([xf/7,yf/14])
58
-1 1]*diag([xf/7,yf/14])
61
xpoly(out2(:,1)+(orig(1)+sz(1)),..
62
out2(:,2)+(orig(2)+sz(2)-dy),"lines",1)
64
xfpoly(in2(:,1)+orig(1),..
65
in2(:,2)+(orig(2)+sz(2)-dy),1)
66
else //tilded orientation
70
0 1]*diag([xf/7,yf/14])
75
1 1]*diag([xf/7,yf/14])
78
xset('pattern',default_color(1))
79
xpoly(out2(:,1)+ones(4,1)*orig(1)-1,..
80
out2(:,2)+ones(4,1)*(orig(2)+sz(2)-dy),"lines",1)
82
xfpoly(in2(:,1)+ones(4,1)*(orig(1)+sz(1))+1,..
83
in2(:,2)+ones(4,1)*(orig(2)+sz(2)-dy),1)
91
-1/14 1/7]*diag([xf,yf])
95
xfpoly(in(:,1)+ones(4,1)*(orig(1)+dx),..
96
in(:,2)+ones(4,1)*(orig(2)+sz(2)),1)
101
function [x,y,typ]=VR_inputs(o)
104
orig=graphics.orig;sz=graphics.sz;
105
if graphics.flip then
108
xo=orig(1)+sz(1);dx=yf/7
113
x=[x,orig(1)+(sz(1)/2)]
114
y=[y,orig(2)+yf/7+sz(2)]