Joining Mesh in c#(Mesh.Append method)



I am doing a mesh window component, when I use a mesh as Input it joines well, but with polylines as input it gives me single faces instead of a joined mesh.

  protected override void SolveInstance(IGH_DataAccess DA)
            //Get geo an initialize 
                     GeometryBase geometryBase =null;   
                     if ((!DA.GetData(0,ref geometryBase)))

                  object someGeometry = geometryBase;                        
                  double factor = double.NaN;
                  DA.GetData(1, ref factor);
                  Mesh outMsh = new Mesh();
                  var curves = new List<Polyline>();

            //get Plines from mesh if mesh is the input
                  if (someGeometry is Mesh)
                      Mesh msh = someGeometry as Mesh;                                           

                        for (int f = 0; f < msh.Faces.Count; f++)
                            var pts = new List<Point3d>(3);

                            Polyline polyline = new Polyline(pts);


                            var pts = new List<Point3d>(3);

                            Polyline polyline = new Polyline(pts);


                //put Polylines in list

                  else if (someGeometry is Curve)
                      Polyline polyline;
                      Curve curve = (Curve)someGeometry;
                      if (!curve.TryGetPolyline(out polyline))
                          throw new ArgumentException("Only polylines and meshes are allowed as inputs");

            //Make mesh window
                  for (int i = 0; i < curves.Count; i++)
                      var ptsO = curves[i];
                      Polyline polylineCopy = new Polyline(curves[i]);
                      Point3d center = curves[i].CenterPoint();
                      Transform xform = Transform.Scale(center, factor);

                      var ptsS = polylineCopy;
                      Mesh m = new Mesh();
                      for (int j = 0; j < ptsO.Count - 1; j++)
                          var pts = new List<Point3d>();
                          pts.Add(ptsO[j + 1]);
                          pts.Add(ptsS[j + 1]);
                          m.Faces.AddFace(new MeshFace(j * 4, j * 4 + 1, j * 4 + 2, j * 4 + 3));                                          

            //assign joined mesh
                      Message = "Mesh";
                      outMsh.Vertices.CombineIdentical(true, true);

                      DA.SetData(0, outMsh);

I have a list of Polylines, once it is generated from the vertices of a mesh and once I import it from Curves, so the error just can come from the las part of the code I think:


Thanks for anybody looking at it!

(Pfotiad0) #2

See attached (227.8 KB)

(Pfotiad0) #3

Added some stuff more (in the name of science, what else?) (227.4 KB)


Hi Peter!
thanks for the examples, I cant use the Mesh.CreateFromClosedPolyline Method cause it creates triangulated meshes in case of 4edges:

My intention is doing a mesh scale component which can output single faces or a mesh, which works if I feed a mesh in, but fails with polylines as input.

(Pfotiad0) #5

My dear Watson … that’s the easiest of things to implement: just a simple question more (if poly.Count == 5 > do a quad mesh).

I’ll add that in the trad V1B update


it already works for 4+ edges

, its just not joining together.

(Pfotiad0) #7

V1B would do anything (still WIP with regard some minor things [ closed mesh orientation and the likes]).


Good morning Sherlock,

I think you forgot the file :wink:
By the way, a maybe a hint why the mesh out of pLines dont joines?
If I join it afterwards it works:

I do the same in VS and dont get a joined one without success:vslop

(Pfotiad0) #9

Er … hmm … indeed, But the ugly news are that I’m far and away from home right now.

Moral: Porca Miseria.

(Michael Pryor) #10

Check out Mesh+ It has this as well as 23 other aparature component types for meshes or polyines in the subdivision panel. Also, @DavidMans was nice enough to leave all the components open so you can look at the code (is in VB tho).

(Pfotiad0) #11

Well … hope dies last. I have a stupid Laptop with me (we are in some sort of w/e break in the mountains BUT there’s F1 (Valencia) and WSB (Assen) races this w/e) and guess what?

Found that def: (127.9 KB)

BTW: Use the facet demo and observe that the offset inwards is far more challenging than it appears on first sight (I have some C#'s that do that properly on any polyline imaginable) … but anyway.



thanks Michael,
they are indeed really nice, I opened them once, its a lot of code, but definetly helps to understand the manner and its a nice ressource.


Thanks Peter,

looks nice and as always freaky :slight_smile: will look closer at the weekend!

Enjoy the mountains!