Ansys Learning Forum Forums Discuss Simulation 3D Design SpaceClaim Script: Selection by FilterByBoundingBox Reply To: SpaceClaim Script: Selection by FilterByBoundingBox

Christian Scheffler
Subscriber

 

 

Hi Aniket,

unfortunately the FilterByBoundingBox method is not working for me in V23. But I agree with you, the x, y, z order is correct for your example above.

public static Box Create(
	double minX,
	double minY,
	double minZ,
	double maxX,
	double maxY,
	double maxZ
)

Please find a MWE below.
Probelm: In my case this does not limit the total set to the subset of faces.

Best regards
Christian

###

 

# Python Script, API Version = V23
#*************************************
# Geometry definition (dimensions in mm)
#*************************************

width= 2
length= 100
number_of_arms = 3


#*********************************
#Part2: Geometry generation
#*********************************

# 3 Arms

# Set Sketch Plane
sectionPlane = Plane.PlaneXY
result = ViewHelper.SetSketchPlane(sectionPlane, None)
# EndBlock

# Sketch Rectangle
point1 = Point2D.Create(MM(width/2),MM(0))
point2 = Point2D.Create(MM(-width/2),MM(0))
point3 = Point2D.Create(MM(-width/2),MM(length))
result = SketchRectangle.Create(point1, point2, point3)
# EndBlock

# Solidify Sketch
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, Info4)
# EndBlock

# Rotieren über Z-Griff
selection = BodySelection.Create(GetRootPart().Bodies[:])
anchor = CoordinateSystem1
axis = Move.GetAxis(anchor)
options = MoveOptions()
options.CreatePatterns = True
angle=360/number_of_arms
result = Move.Rotate(selection, axis, DEG(angle), options, Info13)
# EndBlock

# Circle

# Set Sketch Plane
sectionPlane = Plane.PlaneXY
result = ViewHelper.SetSketchPlane(sectionPlane, Info6)
# EndBlock

# Sketch Circle
origin = Point2D.Create(0,0)
result = SketchCircle.Create(origin, MM(10))
# EndBlock

# Solidify Sketch
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, Info7)
# EndBlock

# Copy Elements out of Components (Pattern)
selection = BodySelection.Create(GetRootPart().Components[0].Components[0].Content.Bodies[0])
result = Copy.Execute(selection)
selection = BodySelection.Create(GetRootPart().Components[0].Components[1].Content.Bodies[0])
result = Copy.Execute(selection)
selection = BodySelection.Create(GetRootPart().Components[0].Components[2].Content.Bodies[0])
result = Copy.Execute(selection)
# EndBlock

# Delete Objects (Components)
selection = ComponentSelection.Create(GetRootPart().Components[:])
result = Delete.Execute(selection)
# EndBlock

# Rename
GetRootPart().Bodies[0].SetName("Circle")
GetRootPart().Bodies[1].SetName("Arm1")
GetRootPart().Bodies[2].SetName("Arm2")
GetRootPart().Bodies[3].SetName("Arm3")
# EndBlock


# Project to solid
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[:])
target = FaceSelection.Create(GetRootPart().Bodies[1].Faces[:])
direction = Selection.Create(GetRootPart())
result = ProjectToSolid.Execute(selection, target, direction)
# EndBlock

# Project to solid
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[:])
target = FaceSelection.Create(GetRootPart().Bodies[2].Faces[:])
direction = Selection.Create(GetRootPart())
result = ProjectToSolid.Execute(selection, target, direction)
# EndBlock

# Project to solid
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[:])
target = FaceSelection.Create(GetRootPart().Bodies[3].Faces[:])
direction = Selection.Create(GetRootPart())
result = ProjectToSolid.Execute(selection, target, direction)
# EndBlock


#************************************************
#Part 3: Selection of faces by different methods
#*************************************************

PartSel1 = Selection.Create(GetRootPart())
Faces1 = PartSel1.ConvertToFaces()
PartSel2 = Selection.Create(GetRootPart().Bodies[0])
Faces2 = PartSel2.ConvertToFaces()
Faces = Selection.Difference(Faces1,Faces2)
BoundingBox = Box.Create(MM(-20),MM(-20),MM(-2),MM(20),MM(20),MM(2))
FacesInBoundingBox = Faces.FilterByBoundingBox(BoundingBox)

# FacesInBoundingBox contains all the faces of the 3 arms.
# Expected was a selection of the 3 faces underneath the circle ONLY
result = Delete.Execute(FacesInBoundingBox)