Protocol Citation: Betty Cai, daniel Ramos Mejia, Sean Chryz Iranzo, Andy Perez, Yee Lin Tan, Seungheon Lee, Sarah C. Heilshorn 2026. A diffusion-based 3D printing strategy to fabricate self-supporting, perfusable networks. protocols.io https://dx.doi.org/10.17504/protocols.io.5qpvowjx9l4o/v1
License: This is an open access protocol distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited
Protocol status: Working
We use this protocol and it's working
Created: June 20, 2025
Last Modified: March 14, 2026
Protocol Integer ID: 220616
Keywords: Bioprinting, Vascular Mimics, Biofabrication, 3d printing of perfusable structure, 3d printing approach, embedded 3d printing, 3d printing, 3d printing strategy, based 3d printing strategy, based 3d printing approach, sacrificial ink preparation, perfusable structure, printed structure, structures with endothelial cell, perfusable structures with complex branching geometry, methods for freeform print path design, freeform print path design, perfusable network, endothelial cell, gelation of uniform interfacial diffusant, perfusable networks in this protocol, material extrusion, fabricating self
Funders Acknowledgements:
National Science Foundation
Grant ID: DMR 2103812
National Science Foundation
Grant ID: CBET 2033302
Advanced Research Projects Agency for Health
Grant ID: AY1AX000002
National Institutes of Health
Grant ID: R01 EB027171
National Institutes of Health
Grant ID: R01 HL142718
National Institutes of Health
Grant ID: R01 HL151997
National Institutes of Health
Grant ID: R01 EB027666
Abstract
In this protocol, we present the procedure for fabricating self-supporting vascular-like networks using a diffusion-based 3D printing approach, termed Gelation of Uniform Interfacial Diffusant in Embedded 3D Printing (GUIDE-3DP). We describe methods for freeform print path design, support bath and sacrificial ink preparation, 3D printing of perfusable structures with single- and dual-material extrusion, and seeding of printed structures with endothelial cells. Through this protocol, perfusable structures with complex branching geometries can be designed, fabricated, and endothelialized.
Fluorescent microparticles - for ink visualization
Supplies:
Synthesis of Gelatin Methacryloyl (GelMA)
300 mL & 1 L glass beakers
50 mL centrifuge tubes
4 L bucket
Aluminum foil
Spatulas
Weigh boats
Parafilm or plastic wrap
3D Printing of Perfusable Structures
6-well plates
Petri dishes (35, 60, and/or 100 mm)
5 and 15 mL centrifuge tubes
1 mL positive displacement pipette
2.5 mL Hamilton Gastight syringe
Syringe holders for 3D bioprinter
27G x ½” blunt-tip needles
White-light gooseneck microscope illuminator (for photocrosslinking using Eosin Y)
365 or 405 nm ultraviolet (UV) lamp (for photocrosslinking using LAP)
Equipment:
Fume hood
Heating/stirring plate
Analytical balance
3D bioprinter with two Replistruder 4 syringe extruders [1, 2]
Biosafety cabinet - for sterile printing
Ember Prototypes Camera Assisted XY Calibration Tool - for dual-extruder printing
1. Tashman JW, Shiwarski DJ, Feinberg AW. A high performance open-source syringe extruder optimized for extrusion and retraction during FRESH 3D bioprinting. HardwareX. 2021;9:e00170.
2. Tashman JW, Shiwarski DJ, Feinberg AW. Development of a high-performance open-source 3D bioprinter. Sci Rep. 2022;12:22652.
Software:
Rhinoceros 3D
CAMotics
Microsoft Excel
Troubleshooting
Modeling and g-code design
For reference, select images or 3D models from available databases such as NIH3D, BioRender, and Vascular Model Repository. Import the desired reference into Rhinoceros 3D (Rhino3D) or an equivalent modeling software.
To model the structure, draw shapes or line segments as necessary for the desired geometry, such as using the ‘Control Point Curve’ feature in Rhino3D.
After finishing the drawing, select the starting segment of the print path and divide the segment into points with set spacing (e.g., 0.5 mm intervals) using the “Divide” command in Rhino3D (Figure 1).
Figure 1. Division of print path segment into points with set spacing. Direction of divided path is indicated as a white arrow.
For each segment, select all points and export as a .txt file. In Rhino3D, go to File > Export Selected > Save as type: Points (*.txt).
Copy the XYZ coordinates to Excel and add G-code syntax for each set of coordinates (“G1 X(#) Y(#) Z(#) E(#)”). See template spreadsheet (Additional_File_1.xlsx469KB ) for more details.
Note
Generally, extrusion values of 0.005–0.02 mm per step are suitable with a point spacing of 0.5 mm.
Paste G-code lines into G-code editing software, such as CAMotics.
Add required syntax to run the G-code (see example below).
Define the extrusion mode by adding “M83” (relative extrusion) at the start of the G-code.
Define the starting position of the G-code by adding “G92 X(#) Y(#) Z(#) E0” to the start of the G-code, where “X(#) Y(#) Z(#)” is the starting coordinate.
Add the print speed (F value) to the first line of the print path G-code.
Note
Print speeds of 100–300 mm/min (i.e., F100-300) are typically appropriate.
Repeat steps 4–7 for all segments of the print path.
Note
To avoid extrusion between segments, it is ideal to re-trace along the print path to start another segment, rather than directly translating the nozzle across. This may require tracing along already printed segments with zero extrusion.
Test run the G-code with the addition of each segment to visualize the print path.
The direction of some segments may need to be reversed. This can be performed using the Sort function in Excel.
Program in an upward movement (e.g., 20 mm) if desired at the end of the G-code to lift the nozzle from the support bath.
Synthesis of gelatin methacryloyl (GelMA)
5h 40m
Prepare 0.1 Molarity (M) carbonate-bicarbonate (CB) buffer: For a 300 mL reaction scale, add 0.954 g sodium carbonate and 1.758 g sodium bicarbonate. Place on a stir plate to dissolve.
30m
Add cold water fish (CWF) gelatin to 20 mass/volume % in CB buffer: For a 300 mL reaction scale, add 60 g.
15m
Fully dissolve the gelatin by preparing the solution in a glass bottle, then placing the sealed bottle into a bacterial shaker at 200 rpm, 37°C. Alternatively, heat the mixture by uncapping the bottle and microwaving for several seconds at a time until warm, then stir the mixture on a hot plate set to 37 °C until fully dissolved.
2h
Pour the gelatin solution into a glass beaker.
Note
A large volume (e.g., 1 L beaker for 300 mL solution) is important for containing the subsequent reaction.
5m
Adjust the pH to 10 using 5 Molarity (M) sodium hydroxide.
15m
Heat the mixture to 70 °C on a hot plate in the fume hood while stirring at 200 rpm.
30m
When the temperature is stable at 70 °C, add MAA dropwise to the stirring gelatin in the fume hood at ~0.0833 mL MAA per gram gelatin (Figure 2, left). For a 300 mL reaction scale, add 5 mL MAA.
Figure 2. Preparation of cold water GelMA. Left: Addition of MAA to gelatin solution. Center: Ethanol precipitation of GelMA reaction mixture. Right: Final GelMA stock solution.
5m
Immediately after MAA addition, cover the beaker with aluminum foil to prevent evaporation.
Allow the reaction to run for 02:00:00 at 70 °C while stirring at 200 rpm.
2h
Purify the GelMA by either ethanol precipitation or dialysis. Select the purification method based on the desired level of purity: Dialysis results in a higher degree of MAA removal, but requires more time to perform than ethanol precipitation.
For dialysis, dilute the GelMA solution to 5 mass/volume % (i.e., 1:4 ratio) using ultrapure water. Dialyze using a 10 kDa molecular weight cutoff (MWCO) membrane against >2 L of ultrapure water for 5 days at room temperature. Change the water twice a day for the first 2 days and once a day for the subsequent 3 days. The dialyzed GelMA solution is then sterile filtered through a 0.22 μm membrane, frozen, and lyophilized.
For precipitation, fill a bucket with 3x reaction volume of ethanol in the fume hood. Pour the GelMA reaction mixture into the ethanol slowly whilst mixing with a spatula (Figure 2, center). The GelMA will crash out of solution and form a gummy ball. Add fresh ethanol when the GelMA is not sufficiently solid to lift with the spatula.
30m
Transfer the precipitated GelMA into a beaker. Cover the beaker partially with plastic wrap to protect from debris. Let dry for at least 24:00:00 in the fume hood.
1d
Mix dried GelMA in a 1:1–1:2 ratio by weight with ultrapure water. The ratio can be adjusted according to the desired final GelMA concentration.
10m
Place the beaker on a hot plate set to 85-90 °C while stirring to redissolve the dried GelMA and boil off residual ethanol (the ethanol boiling point is 37 °C). Continue this process until the boiling ceases (at least01:00:00).
1h
Aliquot the produced GelMA into 50 mL conical tubes (Figure 2, right).
10m
To measure the concentration of the prepared GelMA solution, aliquot a small amount (e.g., 50-200 mgeach) into 3–4 weigh boats and immediately measure the wet mass of each aliquot.
15m
Allow the aliquots to dry, covered, for ~24:00:00 at room temperature.
1d
Calculate the GelMA concentration using the following formula: , where is the initial wet mass and is the final dry mass.
Store the prepared GelMA at 4 °C until use.
Support bath preparation
4h 5m
Calculate the amount of each support bath and stock solution needed. For a 6-well plate, approximately 8 g of support bath per well is used.
Note
Prepare extra volume to account for multiple constructs per well, considering that constructs in the same well will be crosslinked together.
15m
Weigh the required mass of CWF GelMA and dilute in PBS to obtain a 40 Mass Percent stock solution. Allow the solution to dissolve while stirring.
If using alginate, weigh the required mass of alginic acid sodium salt and dilute in PBS to obtain a 4 mass/volume % stock solution.
15m
In an autoclavable glass bottle, prepare a 4 mass/volume % Aristoflex AVC stock solution by dissolving AVC powder in PBS (Figure 3, left). Place the sealed bottle into a bacterial shaker at 200 rpm, 37°C or on a stir plate to fully dissolve the AVC stock solution.
Figure 3. Support bath preparation for GUIDE-3DP. Left: Aristoflex AVC (4 wt%) stock solution. Center: GelMA (60 wt%) stock solution (left) and GelMA (20 wt%) + AVC (2 wt%) support material (right). Right: Support bath loaded into 6-well plate for printing.
Note
Wear a mask and goggles while handling AVC powder.
1h
If used for sterile printing, autoclave GelMA and AVC stock solutions on a liquid cycle.
2h
Prior to mixing of support bath components, allow the GelMA solution to come to room temperature and liquefy. To accelerate this process, the GelMA solution can optionally be heated briefly using a hot plate or briefly in a microwave until liquefied.
Mix the 40 mass/volume % GelMA and 4 mass/volume % AVC stock solutions in a 1:1 ratio to prepare the support bath (Figure 3, center).
If using alginate, mix the 4 mass/volume % alginate and 4 mass/volume % AVC stock solutions in a 1:1 ratio.
Note
Stir the mixture thoroughly with a spatula to ensure that no AVC aggregates remain. The support bath will thicken as it becomes more homogeneous.
15m
If Eosin Y were to be used as the crosslinking initiator, add the co-initiators triethanolamine (TEA) and N-vinylpyrrolidone (NVP) at 0.5 mass/volume % and 0.2 mass/volume %, respectively.
If cell seeding is to be performed,0.5-1 mass/volume % fibrinogen can be added to enhance cell adhesion.
Prepare printing dishes by scooping 8 g of support material into each required well of a 6-well plate (Figure 3, right).
15m
Centrifuge the plates at 4000 rpm, Room temperature, 00:05:00 using a swinging bucket rotor to remove air bubbles and level the surface.
5m
Seal the plates with Parafilm and store at 4 °C until use.
Sacrificial ink preparation
1h 10m
Gather required equipment, including print syringes, 27G × ½” blunt-tip needles, spatulas, Eppendorf tubes, and syringe holders for the 3D bioprinter (Figure 4, left).
Figure 4. Sacrificial ink preparation for GUIDE-3DP. Left: Supplies needed for sacrificial ink preparation. Center: Crosslinking initiator solutions composed of LAP (50 mM; left) and Eosin Y disodium salt (2 mM; right). Right: Resuspended gelatin microparticle slurry (100 mg/mL).
15m
Sterilize supplies by autoclaving or by heavily coating with 70% ethanol, then allowing to dry completely in the TC hood, ensuring the inside of the Luer lock fittings is dry.
Prepare crosslinking initiator solutions: e.g., 50 millimolar (mM) LAP or 2 millimolar (mM) Eosin Y disodium salt in PBS (Figure 4, center). For printing using alginate, prepare a solution of 1 Molarity (M) calcium chloride in PBS.
15m
If sterile printing is to be performed, filter the solutions through a 0.22 μm syringe filter.
For the desired volume of sacrificial ink, calculate the weight of gelatin microparticles necessary for a concentration of 100 mg/mL (i.e., 10 mass/volume %).
5m
Weigh out an aliquot of gelatin microparticles into a 5 mL Eppendorf tube and resuspend to 100 mg/mL in cold PBS or media (Figure 4, right). Mix gently with a narrow spatula to rehydrate, being careful to only hold the rim of the tube.
Note
Avoid holding the sides of the tube to prevent gelatin melting.
15m
Add the crosslinking initiator (e.g., LAP or Eosin Y disodium salt) to the desired concentration to the gelatin microparticles. In addition, fluorescent beads can be included to aid visualization.
Note
Crosslinking initiator concentrations of 1–5 mM for LAP or 0.025–0.1 mM for Eosin Y disodium salt are typically appropriate.
5m
Transfer the sacrificial ink into a print syringe using a 1 mL positive displacement pipette. Attach a 27G × ½” blunt-tip needle to the syringe (Figure 5).
Figure 5. Loading of sacrificial ink into print syringe. Left: As-prepared ink comprising gelatin microparticles (100 mg/mL), Eosin Y disodium salt (0.1 mM), and pink fluorescent beads. Center: Addition of sacrificial ink to syringe using a positive displacement pipette. Right: Sacrificial ink loaded into syringe fitted with a 27G × ½” needle.
15m
Dual-material nozzle calibration (optional)
Secure a calibration camera onto the print bed using laboratory tape or double-sided tape. Ensure that the camera is positioned in a location where both extruder needles can be moved into its field of view.
Move the needle of Tool 0 to the center of the camera’s field of view. Adjust the Z position until the needle is in focus, ensuring it is far enough from the bed to match the focal distance of the camera lens (Figure 6).
Figure 6. Alignment of Tool 0 in the X and Y axes using a calibration camera.
Open the printer console and define Tool 0’s X and Y position and offset as zero. This is done by selecting Tool 0 (“T0”), setting the current X and Y positions to absolute zero (“G92 X0” and “G92 Y0”), and clearing any offset (“G10 P0 X0” and “G10 P0 Y0”).
Command
X & Y Axis Zeroing for Tool 0
T0 ; select tool 0
G92 X0 ; set X position of Tool 0 to absolute 0
G10 P0 X0 ; set Tool 0 (P0) X offset to 0
G92 Y0 ; set Y position of Tool 0 to absolute 0
G10 P0 Y0 ; set Tool 0 (P0) Y offset to 0
Move Tool 1 into the center of the camera’s field of view (Figure 7). In the console, retrieve Tool 1’s current position relative to Tool 0 using the “M114” command. Use the X and Y displacements displayed in the console to define Tool 1’s offset relative to Tool 0 by entering “G10 P1 X(-#)” and “G10 P1 Y(-#)”, where # is the corresponding output coordinate from the ‘M114” command.
Figure 7. Alignment of Tool 1 in the X and Y axes using a calibration camera.
Command
X & Y Offset Specification for Tool 1
M114 ; return the current position of the selected tool (Tool 0). Use the X and Y displacements below (#).
G10 P1 X(- #) ; set the X displacement for Tool 1 to the negative X position for Tool 0
G10 P1 Y(- #) ; set the Y displacement for Tool 1 to the negative Y position for Tool 0
To calibrate the Z axis, place a steel alignment block on the print bed at a location accessible by both tools. Begin by lowering Tool 0 until the needle just touches the top of the block (Figure 8). Lightly tap the needle tip with forceps to confirm contact — If there is resistance but no bending, the needle is correctly positioned.
Figure 8. Alignment of print nozzle in the Z axis using a calibration cube.
In the console, set Tool 0’s Z position and offset to zero using “G92 Z0” and “G10 P0 Z0”.
Command
Z Axis Zeroing for Tool 0
G92 Z0 ; set Z position of Tool 0 to absolute 0
G10 P0 Z0 ; set Tool 0 (P0) Z offset to 0
Move Tool 1 to the same block surface and carefully lower it until it is flush with the top of the block. Retrieve the current position relative to Tool 0 using the “M114” command and define Tool 1’s Z offset using “G10 P1 Z(-#)”, where # is the Z coordinate from the “M114” command.
Command
new command name
M114 ; return the current position of the selected tool (Tool 0). Use the Z displacement below (#).
G10 P1 Z(- #) ; set the Z displacement for Tool 1 to the negative Z position for Tool 0.
As an alternative method, calibration of all axes can be performed using a precision-machined reference block.
Carefully move Tool 0 so that its tip is aligned to each face of the calibration block.
Once its tip is flush with the X face of the block, assign Tool 0 as the absolute origin in the X axis using the command “G92 X0”, then clear any offsets using the command “G10 P0 X0”.
Repeat the alignment process for Tool 0 with the Y and Z axes, aligning the nozzle and setting the Y and Z positions to zero using the corresponding “G92” and “G10” commands in the same way as the X axis.
Repeat the alignment procedure for Tool 1. Using the “M114” command, determine the offsets in X, Y, and Z relative to Tool 0 while Tool 1 is flush with the X, Y, and Z faces of the calibration cube, respectively. Enter the offsets as “G10 P1 X(-#)”, “G10 P1 Y(-#)”, and “G10 P1 Z(-#)”, where # is the output coordinate for the axis being aligned from the “M114” command.
Move both extruders to the center of the print bed near the bottom, within range of the support bath if applicable, and reset the absolute origin by selecting Tool 0 and entering “G92 X0 Y0 Z0”.
Use the “M114” command to verify that the origin has been correctly set to (0, 0, 0). Then, to confirm alignment, move both Tool 0 and Tool 1 to X = 0, Y = 0 using “G1 X0 Y0” and check that Tool 1 moves precisely to the same central position. If discrepancies are present, reset the tool offsets using the “G10 P0” or “G10 P1” commands as necessary.
Insert a custom tool-change G-code into each process to safely raise and lower the extruder needles. Define start and end G-codes as needed.
Calibration should be repeated any time needles or syringes are replaced. Calibration steps can be executed using Pronterface, Duet Web Control, or other G-code-compatible interfaces.
If different needle gauges are used, offsets may need to be adjusted to account for differences in tip geometry. In such cases, a camera-based calibration method is preferable for maximizing precision.
3D printing of perfusable constructs
2h 5m
Gather all printing equipment and materials, including the 3D bioprinter, syringes, nozzles, screwdrivers, DPBS, and UV lamp (if LAP is used as the crosslinking initiator) or white light lamp (if Eosin Y is used as the crosslinking initiator).
15m
Retrieve support baths from 4℃ and allow them to reach room temperature.
15m
Load the .gcode file to the 3D bioprinter and mount the print syringe.
15m
Position the nozzle within the support bath at a location suitable as the start point of the print. Execute the G-code file (Figure 9).
Figure 9. Printing of a representative retinal vasculature structure (derived from NIH3D).
10m
Incubate the printed constructs at room temperature to allow diffusion of crosslinking initiators for a specified time based on the desired wall thickness.
Note
A diffusion time of 5–15 minutes is typically used, although longer and shorter times can also be appropriate.
15m
When LAP is used as the crosslinking initiator, crosslink the constructs using a UV lamp for 5 minutes. When Eosin Y is used, crosslink the constructs using a white-light lamp for 10 minutes (Figure 10).
For printing using alginate, skip this step and directly remove the crosslinked construct from the support bath (Figure 11).
Figure 10. Photocrosslinking of representative GelMA structure.
Figure 11. Representative alginate structure before and after extraction from the support bath.
10m
After crosslinking, gently remove the constructs from the support bath and wash them in DPBS (for GelMA) or HBSS (for alginate) to remove uncrosslinked support material. Transfer the construct to a fresh dish and further clean with gentle pipetting (Figure 12).
Figure 12. Self-supporting construct obtained after extraction from the support bath.
15m
Transfer the cleaned constructs to fresh medium and incubate at 37℃ to melt the gelatin microparticle sacrificial ink.
15m
Cut open the closed ends of the lumen, wash out residual gelatin, and transfer the constructs to fresh dishes.
15m
Endothelialization and culture of printed constructs (optional)
3h
After preparing the sacrificial ink, adjust the pH to ~7 using 1 Molarity (M) sodium hydroxide.
10m
Add a suspension of endothelial cells to the ink to yield a cell density of 107 mL-1.
10m
After the printing, diffusion, and crosslinking steps, extract the resulting construct from the uncrosslinked support bath and gently wash with prewarmed culture medium. Incubate the construct at 37 °C for 00:10:00 to allow cell sedimentation and adhesion to the lumen surface.
10m
Flip the construct and incubate for an additional 00:10:00 to allow cell attachment to the opposite side of the print lumen.
10m
Cut open the ends of the structure to remove the melted sacrificial ink, further wash with gentle pipetting, and transfer the construct to fresh culture medium. For fibrinogen-containing constructs, thrombin can be added to the culture medium at 5 U mL-1 for at least 02:00:00 to allow fibrin crosslinking.
2h
Alternatively, introduce endothelial cells after print fabrication by injecting the lumen with a cell suspension with a cell density of 107 mL-1. Incubate the construct for 00:10:00, then flip and incubate for an additional 00:10:00 to allow cell attachment to the opposite surface.
20m
Protocol references
1. Shin S, Brunel LG, Cai B, Kilian D, Roth JG, Seymour AJ, et al. Gelation of Uniform Interfacial Diffusant in Embedded 3D Printing. Adv Funct Mater. 2023;33:2307435.
2. Cai B, Kilian D, Ghorbani S, Roth JG, Seymour AJ, Brunel LG, et al. One-step bioprinting of endothelialized, self-supporting arterial and venous networks. Biofabrication. 2025;17.
Acknowledgements
We thank Dr. Alexis J. Seymour, Prof. Sungchul Shin, and Prof. David Kilian for helpful discussions and guidance about the protocols described.