Importing and exporting coordinates for an array of points
-
hi @mkn
here is some example code that exports the currently selected points as a csv file:def dump_selected_points(fname): sel = XCoreModeling.GetActiveModel().SelectedEntities sel = XCoreModeling.CollectEntities(sel) with open(fname, "w") as file: for e in sel: if isinstance(e, XCoreModeling.Vertex): x = e.Position file.write("%g, %g, %g\n" % (x[0], x[1], x[2]))
-
@bryn I am wondering if it is possible to specify groups of points rather than having to select the points manually. I have a large number of groups with points that I want to export to separate files, and selecting each and executing the code can be quite time consuming.
Thanks again!
-
the code will dump all points in a single file. this will work also if you select multiple groups.
sel = XCoreModeling.CollectEntities(sel)
will recursively add all children of selected entitiesif isinstance(e, XCoreModeling.Vertex):
will filter out any non-Vertex entities, like groups, meshes, etc.
-
@mkn
this could be done in different ways, but how about the following:import os def dump_selected_points(dir): for e in XCoreModeling.GetActiveModel().SelectedEntities: dump_recursively(e, dir) def dump_recursively(entity, dir): sel = XCoreModeling.CollectEntities([entity]) with open(os.path.join(dir, entity.Name + ".txt"), "w") as file: for e in sel: if isinstance(e, XCoreModeling.Vertex): x = e.Position file.write("%g, %g, %g\n" % (x[0], x[1], x[2]))
-
Thanks @bryn! Just to confirm directory here would be a list of text file names, correct?
Also, would it be possible to add the points from each group to a list while saving them to file? Sometimes I would need to do this to create splines or polylines using those point groups.
Thanks again!
-
-
os.path.join(dir, entity.Name + ".txt")
is a file path inside the directorydir
. since the file name is taken from the entity name (depending on selection a group or some other entity), you should take care to assign unique names to the entities. -
yes, just collect the points
x
and return them.
-
-
if you return the
pts
fromdump_recursively
, you can collect a list of list of points like so:list_of_pts = [] for e in XCoreModeling.GetActiveModel().SelectedEntities: pts = dump_recursively(e) # returns the points list from inside a group list_of_pts.append(pts)