-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimportGDS.m
81 lines (72 loc) · 1.79 KB
/
importGDS.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function importGDS(session, file_name, cell_name, varargin)
length_coef = 1e-6; % [um]
layer = 1;
material = [];
zmin =[];
zmax = [];
z_span = [];
x = [];
y = [];
z = [];
name = [];
dirrectory = [];
while ~isempty(varargin)
switch lower(varargin{1})
case 'layer'
layer = varargin{2};
case 'name'
name = varargin{2};
case 'dir'
dirrectory = varargin{2};
case 'material'
material = varargin{2};
case 'zmin'
zmin = varargin{2};
case 'zmax'
zmax = varargin{2};
case {'z_span', 'z span'}
z_span = varargin{2};
case 'x'
x = varargin{2};
case 'y'
y = varargin{2};
case 'z'
z = varargin{2};
otherwise
error(['undefined paramiter' varargin{1}])
end
varargin(1:2) = [];
end
if isempty(dirrectory)
path1 = dir;
dirrectory = path1.folder;
end
other_params = [];
if ~isempty(material)
other_params = [',"' material '"'];
if ~isempty(zmin)
other_params = [ other_params ',' num2str(zmin * length_coef) ',' num2str(zmax * length_coef)];
end
end
session.SendComand(['n = gdsimport(' char("'") dirrectory '\' file_name char("'") ','...
' "' cell_name '",'...
' ' num2str(layer)...
other_params ...
');']);
if ~isempty(z_span)
session.Set('z span', z_span * length_coef);
end
if ~isempty(x)
session.Set('x', x * length_coef);
end
if ~isempty(y)
session.Set('y', y * length_coef);
end
if ~isempty(z)
session.Set('z', z * length_coef);
end
if ~isempty(name)
session.Set('name', name);
end
end
% n = gdsimport("filename", "cellname", layer, "material", zmin, zmax);