Scripted Structures
This chapter describes the in-built design scripts provided with the VCG. Each of them allows to build a specific structure with voxels ready to be exported as a .csv file and printed. They are configurable via a list of parameters. For any script selected:
The Parameters
button opens a table and a preview figure to modify the default values of the highlighted script.
After the parameters have been modified, Preview
updates the plot for the new values and OK
saves them and exits back to the main VCG window. Parameters are only saved as long as the script is selected. Selection of any other script in the list causes default values to be loaded for each script.
Use Set as default
to retain current parameter settings permanently.
Scripts are a powerful way to create parametrized design. At the bottom of this page, a tutorial featuring a script template shows how to create new scripts.
Box
The Box
script is used to generate simple cuboids.
Parameters | Info |
---|---|
Width x | Width of the box in number of voxels along x direction. |
Width y | Width of the box in number of voxels along y direction. |
Pitch x | Spacing in µm between two voxels along x direction. |
Pitch y | Spacing in µm between two voxels along y direction. |
Voxel height | Spacing in µm between two horizontal layers of voxels. |
Total height | Height of the cuboid in µm. |
Flag: alternate in x | If set to 1 (yes), each even layer is shifted by ½ a pitch x along x. |
Flag, alternate in y | If set to 1 (yes), each even layer is shifted by ½ a pitch y along y. |
Pressure | Mbar applied for each voxel. |
Note
If width x = width y = 1, the box script gives a pillar. If Total height = Voxel height, the box script gives a plane of 1 layer.
Calibration Array
This script prints an array of pillars with each pillar printed at one of the pressures specified in the Pressure List. This array of pillars is the most accurate way to calibrate an iontip (obtain pressure - diameter curve in the Iontip Calibrator). The pressure list can be adapted to get enough points for the fit in the calibration workflow.
Parameters | Info |
---|---|
Voxel height | Spacing in µm between two subsequent voxels. Recommended 0.5 µm |
Pillar height | Height of each pillar. Recommended 40 or 50 voxels. |
Pressure list | List of pressure [p1,...,pn] in mbar, one pillar is created per value. Recommended range: 20 to 120 mbar for a 300-nm-diameter iontip. |
Pillar pitch in x | Pitch in µm between the pillars in x direction. Recommended 20 to 30 µm. |
Pillar pitch in y | Pitch in µm between the pillars in y direction. Recommended 20 to 30 µm. |
Number of pillars in x | Number of pillars that will be created in x direction in the array. No recommendation. |
Note
Accepted separators for the pressure list are commas and spaces.
Note
Certain combination of parameters lead to collisions. Use the Check function in the Routing panel in case of high pillars and / or small pitches.
Calibration Pillar
This pillar with sections printed at different pressures is a fast way to calibrate the iontip (obtain the pressure - diameter curve). The pressure list can be adapted to get enough points for the fit in the calibration workflow.
Parameters | Info |
---|---|
Voxel height | Spacing in µm between two subsequent voxels |
Section height | Number of voxels to print for each pressure in the list |
Pressure list | List of pressure [p1,...,pn] in mbar, one section is created per value. Recommended range: 15 to 100 mbar for a 300-nm-diameter iontip. |
Note
Accepted separators for the pressure list are commas and spaces.
CSV
This script loads a .csv file into the VCG rather than building it with scripts. The loaded .csv file must be in the right file format.
Parameters | Info |
---|---|
Use CSV pressure flag | Default value (0) means the pressure parameter below will be used instead of the file’s pressure value(s) for all voxels. If set to 1, the pressure list is kept as loaded from the .csv file. |
Pressure | Pressure in mbar replacing the loaded .csv pressure(s) when the flag above is set to 1. Multiple pressure values are lost. |
Note
The .csv file is kept in memory until another script is selected. To load a new .csv file, use the load new csv
button in the parameter editor or change the selected script in the VCG list and select CSV again.
Helix
The Helix script is used to create stranded spirals, helixes, coils or arcs of circles, cylinders, cones or discs.
Parameters | Info |
---|---|
Number of turns | Turns printed between the start and finish point. |
Initial height | Height in µm of the starting point. |
Vertical separation | Height Δz in µm between two voxels separated by one turn. |
Initial radius | Distance r in µm between the starting point to the axis of the coil. |
Radial separation | Radius increment Δr in µm between two points separated by one turn. |
Phase | Starting angle φ of the helix structure with respect to the x axis. |
Voxel distance | Spacing in µm between two subsequent voxels. |
Radial smoothing | Yes/no (1/0) option to smooth out the curvature when using non-null radial and vertical separation. |
Starting pillar flag | If yes (1), a pillar is added below the starting voxel. |
Final pillar flag | If yes (1), a pillar is added below the last voxel. |
Support pillars flag | If yes (1), a pillar is added regularly to support the beam, defined by the support spacing parameter. |
Support spacing | Spacing in µm between pillars if support pillars are used. |
Pillar Z gap | Spacing between the pillar last voxel and the coil strand. |
Pressure | mbar applied for each voxel. |
Note
If both vertical and radial separation are set to 0, the structure becomes a circle in the horizontal plane. A number of turns in [0,1]
should then be used to avoid redundancy and collisions.
Coils use a radial separation of 0. Planar spirals use a vertical separation of 0.
If the vertical and radial separation are small enough, voxels can merge and create revolution surfaces like cones and cylinders. Resulting structures have the advantage to be seamless contrary to layer-by-layer approach, where a seam is usually observed between the first and last voxel of each layer.
Ladder
A ladder structure is composed of two vertical pillars linked by horizontal beams at a regular spacing.
Parameters | Info |
---|---|
Voxel distance | Spacing in µm between two subsequent voxels. |
Intersection distance | Spacing in µm between the last voxel of the horizontal beam and the last voxel of the pillar below. |
Number of steps | Number of horizontal beams. |
Step height | Distance in µm between two horizontal beams. |
Step width | Width in µm of the ladder. |
Pressure | mbar applied for each voxel. |
LogViewer
The LogViewer script contains an object if it was added from the LogViewer tab.
Parameters | Info |
---|---|
Use LogViewer file pressure flag | Default value (0) means the pressure parameter below will be used instead of the file’s pressure value(s) for all voxels. If set to 1, the pressure list is kept as loaded from the LogViewer file. |
Pressure | Pressure in mbar replacing the loaded LogViewer file’s pressure(s) when the flag above is set to 1. Multiple pressure values are lost. |
Note
The LogViewer file is kept in memory until another script is selected.
Multirings
This structure features two concentric rings rotated by 90° around the vertical axis.
Parameters | Info |
---|---|
Outer ring radius | Radius in µm. |
Inner ring radius | Radius in µm. |
Bottom pillar height | Length in µm of the pillar below the largest ring. |
Top pillar height | Length in µm of the pillar above the largest ring. |
Voxel pitch | Spacing in µm between two subsequent voxels. |
Pressure | mbar applied for each voxel. |
Needle
The needle script creates a hollow cylinder, beveled to obtain a sharp, thin tip.
Parameters | Info |
---|---|
Needle radius | Radius in µm of the base cylinder. |
Voxel pitch | Spacing in µm between two subsequent voxels in the same layer. |
Voxel height | Spacing in µm between horizontal layers. |
Height of the needle | Total height in µm of the needle. |
Alternate flag | If set to 1 (yes), each odd layer is rotated to offset each voxel by ½ voxel pitch between each layer. |
Bevel angle to vertical | Angle in degree, in the range ]0,90] . |
Pressure | mbar applied for each voxel. |
Plane
The plane script creates a flat, monolayered structure supported by beams in each corners of the plane and merging in a single base.
Parameters | Info |
---|---|
Size X | Length in µm of the plane along the X direction. |
Size Y | Length in µm of the plane along the Y direction. |
Plane Z level | Height in µm of the plane. |
Z Gap | Spacing in µm between the plane and the last voxels of the beams. |
Voxel pitch | Spacing in µm between two subsequent voxels (spacing in the X direction). |
Strand pitch | Spacing in µm between two strands (spacing in the Y direction). |
Beams Flag | If set to 0 (no), no beams are added to the structure. |
Pressure | mbar applied for each voxel. |
Voxelizer
This script is not yet in use. It is there for testing purposes only and can be ignored.
Demo structure script
Scripting a new structure design can be done in MATLAB. A template called DemoStructScript.m
is provided in the /script
subfolder of the the VCG main directory.
A script has 2 main components: the main function, providing the interface to the VCG and functions to generate the voxels.
Preparing the template
The DemoStructScript.m
file must first be copied to the /script
directory and renamed (no spaces allowed).
The name given to the script will be the name displayed in the VCG scripts list. The name will automatically appear in the list upon restarting the VCG.
MATLAB requires the first function (main function) to have the same name as the file. Remember that MATLAB is case sensitive.
For example, if the copied script template file was renamed AbC.m
change the first line:
function PD = DemoStructScript(parameters, CreateDefaultFlag, app)
into :
function PD = AbC(parameters, CreateDefaultFlag, app)
Locate the variable cells:
Variable = {'var1';'var2';'pr'};
Description = {'Variable 1';'Variable 2';'Pressure'};
Value = {'1 0';0;60};
Unit = {'1';'um';'mbar'};
The Variable
string cells contain the names of the variables used in the script generation function(s). Use ''
to create strings.
The Description
string cells contain a description for each variable and are displayed in the parameters table of the VCG. Units of the variables have their dedicated cells, omit them here.
The Value
cells contain the initial values of each variable defined in the Variable
cells. They are used when the default parameter file in the /Standard_Structure_Folder
subfolder is created. If the default parameter file does not exist, it is automatically created by the script when its main function is called.
This default parameter file is initially always created with the Value
cells, but the numbers in the file can be overwritten with the Set as default
button in the VCG.
Note
If changes are made to the script that require changes in the default parameter file, the default parameter file has to be manually deleted.
The Unit
string cells contain information on the unit of each variable. They are displayed between parenthesis in the parameters table of the VCG.
Enter the input variables used to generate the scripted structure. Change or add Variables
and their corresponding Descriptions
, Values
and Units
depending on what is needed to build a new scripted structure.
Note
The script supports multiple values for each variable, used for example in the calibration pillar with the pressure list.
For any variable, instead of entering a single value value{i}=x
, a string can be used instead with space or comma separators between each value for this single variable.
Value{i}='x1 x2,x3'
.
In this example, the variable will be interpreted as an array of 3 values:
obj.variable{i} = [x1, x2, x3]
;
Since strings are interpreted as list of numbers, only numbers are supported as Values
.
Note
Debugging: When trying to add a script to the VCG, the script is called by the function PF_GenObject.m
inside a try-catch block. To help debug while coding scripts it is very useful to see the error message, despite the error being caught by the try-catch block. Therefore, the try-catch block is set up to display the error message encountered in the Matlab command window.
Generating the voxels
The function called that should contain the voxels generation is:
PD=MakeStruct(obj);
When the function is called, variables defined above are stored in the obj
structure. To access them in sub-functions, the obj
structure must be passed as an argument.
To access the value of a variable, use obj.VariableName
. If the variable is an array, you can access its value using obj.VariableName(i)
, where i represents the index.
The output is a PD
struct containing 4 arrays of dimension 1*n, for the X, Y, Z coordinates and the pressure value of each n voxels forming the struct:
PD.x = [vx1;...;vxn]; % use semicolon separator to get the array in n*1 dimension
PD.y = [vy1;...;vyn];
PD.z = [vz1;...;vzn];
PD.pr= [pr1;...;prn];
Subfunctions may be used to fill the PD
structure with desired values.
The voxels should be generated in the order of printing to spare an additional routing step.
As a last step, test the script and verify the routing of its output. The routing can be simulated using the Show
function of the VCG.