Create groups from vertices on semi circles (top bottom face of half cylinders)

Member, Moderator, Employee Posts: 323
50 Answers 100 Comments Second Anniversary 25 Likes
✭✭✭✭
edited May 2024 in 3D Design

Say we have a half cylindrical body, with semi circle like faces on the top and bottom.
How can we then create a group of the center vertex (so vertex existing in the center of the straight line of the semi circle, as shown below)?

Answers

  • Member, Moderator, Employee Posts: 323
    50 Answers 100 Comments Second Anniversary 25 Likes
    ✭✭✭✭
    edited May 2024

    One of many possible ways is to loop through a named selection containing planar faces (e.g., semi circle capping plane/face of the half cylinder(s)), and create a group out of that center vertex.

    1. import math
    2. group = GetActiveWindow().ActiveWindow.Groups[0]
    3. cx=[]
    4. cy=[]
    5. cz=[]
    6. myv=[]
    7. myvIds=[]
    8. dist=1E12
    9.  
    10. me=group.Members
    11. for mem in me:
    12. if str(mem.Shape.Geometry.GetType())=="SpaceClaim.Api.V232.Geometry.Plane":
    13. nwedges=mem.Edges
    14. for nedge in nwedges:
    15. if str(nedge.Shape.Geometry.GetType())=='SpaceClaim.Api.V232.Geometry.Line':
    16. selections = EdgeSelection.Create(nedge)
    17. a=nedge.EvalMid().Point.Position
    18. cx=(a[0])
    19. cy=(a[1])
    20. cz=(a[2])
    21. ep=nedge.GetChildren[CurvePoint]()
    22. for e in ep:
    23. ex=e.Position[0]
    24. ey=e.Position[1]
    25. ez=e.Position[2]
    26. dists=math.sqrt((float(cx)-ex)**2+(float(cy)-ey)**2+(float(cz)-ez)**2)
    27. if dists<dist:
    28. myvs=(e)
    29. dist=dists
    30. primarySelection = Selection.Create(myvs)
    31. secondarySelection = Selection.Empty()
    32. result = NamedSelection.Create(primarySelection, secondarySelection)
    33. dist=1E12
    34.  
This discussion has been closed.