Annotated Code:

List pt = new List (); // original mesh point list

List ns = new List (); // original mesh vectors list

List newfaces = new List (); // list of new faces which will be created as aesthically driven
panels

List newpoints = new List (); // list of new points used as vertices to create new
faces

Mesh newMesh = new Mesh(); // as these new panels are of a different material, they are added to
the design as a new mesh rather than to the original mesh

for (int i = 0; i < mesh.Faces.Count; ++i)

{

int V1 = mesh.Faces[i].A;

int V2 = mesh.Faces[i].B;

int V3 = mesh.Faces[i].C;

Point3d p1 = mesh.Vertices[V1];

Point3d p2 = mesh.Vertices[V2];

Point3d p3 = mesh.Vertices[V3];

Point3d pcen = (p1 + p2 + p3) / 3.0;

// the vertices are defined as points, which allows those points to be used to create an average to find a
center point of each face

Point3d pcenoffset = (pcen * proximitytopcen + interestpt) / (1 + proximitytopcen);

// a new point type is created, based on the center point of each face as well as the interest point.

// a new variable "proximitytopcen" controls the distance of the new point from the face by adjusting
the averaging proportion (giving the original face center point a greater percentage impact than the
interest point on the new point

if (pcen.X > 3)

// this condition ensures the deletion will only occur on faces with a central coordinate value greater
than 3 in the X direction as to not interfere with the neighboring building

{

double dist = pcenoffset.DistanceTo(interestpt);

if (dist < 100 && dist > 0.1 && mesh.Faces[i].IsTriangle)

// here the offset point is simply required to be off the face by 0.1 mm but less than 100 (values that are
somewhat arbitrary) and the faces must be triangles as the presence of rectangular faces creates issues
as we only define 3 points

{

newpoints.Add(p1);

newpoints.Add(p2);

newpoints.Add(p3);

newpoints.Add(pcenoffset)

}

// the new point list is created out of the original face points as well as the new offset point.

}

}

for (int i = 0; i < newpoints.Count - 3; i = i + 4){

newMesh.Vertices.Add(newpoints[i]);

newMesh.Vertices.Add(newpoints[i + 1]);

newMesh.Vertices.Add(newpoints[i + 2]);

newMesh.Vertices.Add(newpoints[i + 3]);

// In order of how the point types were added to the list, the new point list is separated into 4 categories

newMesh.Faces.AddFace(i, i + 1, i + 3);

newMesh.Faces.AddFace(i + 1, i + 2, i + 3);

// those categories are connected in groups of 3 to define new 3 point faces on the new mesh.
Specifically I only wanted 2 2 specific faces from each original face, to allow for a small opening

}

A = mesh;

// I still export the original mesh for reference

B = newMesh;

// The new mesh consists only of the additional faces created in this script