Thank you very much for your reply @bryn! I appreciate the help.
Importing and exporting coordinates for an array of points
@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.
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 entities
if isinstance(e, XCoreModeling.Vertex):will filter out any non-Vertex entities, like groups, meshes, etc.
Thanks @bryn! That will dump them all points in a single file and I want the points in each group to be saved in a separate file. What I would like to do is carry out the same operation but for a certain group name rather than through selection.
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, x, x))
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.
os.path.join(dir, entity.Name + ".txt")is a file path inside the directory
dir. 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.
Thanks! This what I did when adding elements to a single list:
pts = 
for e in sel:
if isinstance(e, xcm.Vertex):
x = e.Position
I'm not sure how to append to different lists.
I appreciate the help!
if you return the
dump_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)
The code runs and 'txt' files are saved with the point coordinate, but 'list_of_pts' comes back empty for some odd reason.
@mkn how about you post your code. maybe somebody will show you where the bug is