Extract normal vector data at boundary in dolfinx

I see. I tested a few other tags, I guess the OP gets his answer.

However, I see in the gist the line print(np.unique(nh.vector[:])) where nh comes from dfx.fem.Function(V) rather than n = ufl.FacetNormal(V.mesh).

I do not understand why n = ufl.FacetNormal(V.mesh) and n.vector[:] would not give what the OP is after.

If it’s a mesh question, why is there a need to invoke dolfinx and a FE space rather than just dealing with ufl/gmsh for example?