private static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine($"Usage: {args[0]} file"); return; } Gmsh.Initialize(); Gmsh.Option.SetNumber("General.Terminal", 1); //in the MSH format: `t1.exe file.msh' Gmsh.Open(args[0]); var name = Gmsh.Model.GetCurrent(); Console.WriteLine($"Model {name} ({Gmsh.Model.GetDimension()}D)"); var entities = Gmsh.Model.GetEntities(); for (int i = 0; i < entities.Length; i++) { int dim = entities[i].Item1, tag = entities[i].Item2; Gmsh.Model.Mesh.GetNodes(out var nodeTags, out var nodeCoords, out var nodeParams, dim, tag); Gmsh.Model.Mesh.GetElements(out var elemTypes, out var elemTags, out var elemNodeTags, dim, tag); var type = Gmsh.Model.GetType(dim, tag); name = Gmsh.Model.GetEntitiesName(dim, tag); Console.WriteLine($"Entity {name} ({dim},{tag}) of type {type}"); var boundary = Gmsh.Model.GetBoundary(new[] { (dim, tag) });