How can I can create a named selection of spheres of certain volume?

Erik Kostson
Erik Kostson Member, Employee Posts: 200
50 Answers 100 Comments Photogenic 5 Likes
✭✭✭✭
edited June 14 in 3D Design

Say we have a group of spheres and other parts (say enclosure). How can one create a named selection of spheres of certain volume using scripting?

Best Answer

  • Erik Kostson
    Erik Kostson Member, Employee Posts: 200
    50 Answers 100 Comments Photogenic 5 Likes
    ✭✭✭✭
    edited June 14 Answer ✓

    Probably many ways of doing this, but below is one sample script that does that (modify as needed) - minimum volume and maximum needs to be adjusted to capture the sphere size needed.

    mys=[]
    mye=[]
    vmin= 4.e-06 # min. volume of spheres in m3
    vmax = 4.4e-06 # max. volume of spheres in m3
    assembly = GetRootPart() 
    bodies=assembly.Bodies
    
    for body in bodies:
        if body.GetMaster().Shape.IsClosed==True: # check it is a solid body and not surface body
            s=body.Shape
            vol=s.Volume
            if vol >=vmin and vol <=vmax:
                print('sphere found : ' + str(body.GetName()))
                mys.append(body)
            else:
                mye.append(body)
                print('sphere not found : ' + str(body.GetName()))
    
    
    
    
    primarySelection = Selection.Create(mys)
    secondarySelection = Selection.Empty()
    resultmys = NamedSelection.Create(primarySelection, secondarySelection)
    NamedSelection.Rename("Group1", "Spheres")
    Selection.Clear()
    primarySelection = Selection.Create(mye)
    secondarySelection = Selection.Empty()
    resultmye = NamedSelection.Create(primarySelection, secondarySelection) 
    NamedSelection.Rename("Group1", "Rest")
    

    One can also look at how many faces the parts have (say a sphere might have only one and that can be then used as a criteria to find all spheres)

This discussion has been closed.