Surgical fixation plate

The purpose of this notebook is to illustrate the usage of the OpenCascadeLink to create a surgical fixation plate based on a parametric design.

A surgical fixation plate is a medical device used to stabilize and support broken bones during the healing process. Titanium fixation plates, particularly those designed for the forearm, are favored for their strength, biocompatibility, and resistance to corrosion. These plates are surgically attached to the fractured bones using screws, ensuring proper alignment and promoting effective recovery. The usage of a parametric design allows for optimization procedures and easy personalization of the devices based on the patients needs.

The fixation plate design is based on an analytical description that leads to a parametric geometry function of the fixation plate's side length and the width. The creation procedure in OpenCascade starts with the description of the planar face which is then extruded to form the 3D object.

4.gif

Surgical fixation plate (in brown) placed over the Radius in the forearm.

Load the packages:

Geometry

The fixation plate is divided into a central section and two fixation sections at the sides. Both the fixation sections and the central section have three holes each.

Two dimensional technical diagram of the planar surgical fixation plate with sizes expressed as a function of the desired length and width. The fixation plate is divided into three sections, each with a length of length/3.

To create the 3D geometry a 2D draft will be made that then can be extruded to 3D. To make this 2D draft, all edges will be parameterized and connected to form a planar 2D face. From that face the holes can be removed and in the last step the perforated face will be extruded to 3D.

The first step is to create the top edge of the 2D plate. This long edge can be split in three regions represented by a sine function scaled to fit the desired numbers of holes in each semi-period. The geometric properties are expressed in centimeters.

Specify geometric parameters:
Specify the holes properties:

A sine function is used to house the holes of the fixation plate within each positive wave cycle of the period. The period is determined by dividing the available length by twice the number of fixation holes.

Compute the scale factor ϕ for the fixation edge period:
Create an auxiliary parametric function for the fixation holes section of the edge:
Create a scaled auxiliary function for the central holes section of the edge:
Assemble the auxiliary function representing half of the top edge:
Visualize the top edge:

The next step is to convert this plot of the edge into a spline. For that the edge is discretized and downsampled and converted to a BSplineCurve.

Discretize the edge:
Reduce the number of coordinates by choosing every 15th coordinate:
Make sure the rightmost point is on the axis of symmetry at :
Create and visualize the spline to represent half of the top edge:

The next step is to create left edge of the geometry, which can be represented by a circular sector. The challenge is to find the exact size of the sector. To help in the process it is convenient to visualize a half circle and the top edge and an extension of the top edge that intersects with the half circle.

Define the center of the circle for the left edge:
Define a circle between π/2 and 3π/2:
Define an extension line from the top edge through the half circle:
Visualizing the top edge, the extension line and the half circle:

Once the intersection of the extension line and the half circle is computed the left edge sector can be established.

Compute the intersection of the extension of the top edge and the right edge:
Extract the intersection coordinate:
Compute the angle of the left circular sector:
Visualizing the top edge, the extension edge and the left edge:
Create a reflection transform with respect to the y axis:
Transform and visualize the edges:
Convert the edges to OpenCascade:
Combine the edges into a single wire:

Next, the entire top half will be reflected to the bottom.

Create a reflection transform for the top half to the bottom:
Visualize the transformation of the top half to the bottom half:

The actual transformation will operate on the entire top edge.

Reflect the entire top shape to the bottom:
Create a face from the top and bottom shapes:
Visualize the boundary mesh:

The next step is to introduce the holes in the fixation plate. There are three group of holes: two groups of fixation holes and the central holes. The fixation holes are described by circles aligned with the sine spatial period , while the central holes are represented by an hyperelliptic boundary described below.

Compute the distance of the holes based on the sine period:
Add the other three holes using symmetry condition:
Define the fixation holes shape:

The hyperellipse is expressed by the equation: , where and represent the semidiameters. In addition, the are also rotated by 45°.

Define the hyperellipse parameters:
Define the hyperellipse function:
Discretize the hyperellipse:
Extract the coordinates of the hyperellipse:
Define an auxiliary function to properly center the hyperellipse points:
Define the central holes shape:
Join the lateral and central holes into a single shape:

Then it is possible to cut the holes shape from the face.

Cut the holes from the planar surface:
Visualize the planar shape with the holes:

Mesh

Finally it is possible to convert the planar surface into a 3D object using a linear sweep. Then the OpenCascade shape can be converted into a boundary mesh and into a solid mesh representing the desired geometry with appropriate dimensions.

Extrude the 3D object using a linear sweep:
Create the boundary mesh:
Create the solid element mesh:
Update the unit as centimeters:
Rescale the plate in standard unit of measure:
Visualize the final meshed plate: