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
xand return them.
-
-
if you return the
ptsfromdump_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)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login