Using the Ansys Discovery Combine tool via scripting
The combine tool in Discovery allows you to do various merge/combine actions with bodies in your model. You can get started by checking out the AIS regarding Discovery and Combine: https://courses.ansys.com/index.php/courses/geometry-prep-for-cfd-using-ansys-discovery/lessons/how-to-use-combine-tool-in-ansys-discovery-lesson-4/
But what you do via the GUI you can usually do with scripting also.
The example below is just a demo how to combine/merge two bodies in Discovery. The first part of the script just generates the bodies. These end up in one component to avoid Discovery automatically merging them.
the second part uses the names of the bodies (that ended up in a component) to merge.
Note that Discovery will automatically merge bodies which is why I moved them to a component to avoid this (until the script merges them).
- # Python Script, API Version = V232
- ## 2 body problem
- ClearAll()
- Selection.Clear()
- # Set up some python names/lists/dicts
- p1 = 'board'
- p2 = 'comp1'
- part_dict = {}
- part_list = [p1,p2]
- # Create some geometry
- part1_dim = [100,50,10] # length, width and height of part 1
- part2_dim = [50,25,10] # length, width and height of part 2
- # For a 2 body demo with all bodies centered on 0,0
- # Body 1, create, select, rename, move to component
- x1 = part1_dim[0]/2
- y1 = part1_dim[1]/2
- z1 = part1_dim[2]
- P0 = Point.Create(MM(-x1),MM(-y1),MM(0))
- P1 = Point.Create(MM(x1),MM(y1),MM(z1))
- part_1 = BlockBody.Create(P0,P1)
- selection1 = Selection.Create(part_1.CreatedBody)
- result = RenameObject.Execute(selection1,p1)
- #Discovery will automatically merge bodies if they are not created in different components.
- ComponentHelper.MoveBodiesToComponent(selection1)
- # Body 2 create, select, rename, move to component
- x2 = part2_dim[0]/2
- y2 = part2_dim[1]/2
- z2 = part1_dim[2] + part2_dim[2]
- P0 = Point.Create(MM(-x2),MM(-y2),MM(z1))
- P1 = Point.Create(MM(x2),MM(y2),MM(z2))
- part_2 = BlockBody.Create(P0,P1)
- selection2 = Selection.Create(part_2.CreatedBody)
- result = RenameObject.Execute(selection2,p2)
- selections = selection2
- component = GetRootPart().Components[0]
- result = ComponentHelper.MoveBodiesToComponent(selections, component, False)
- # All bodies are now in the component named component...
- for body in component.GetAllBodies():
- if body.GetName() in part_list:
- part_dict[body.GetName()] = body
- print(body.GetName())
- # The last two lines uses the dictionary to combine (combine tool) the two bodies in the component
- targets = BodySelection.Create(part_dict[p1], part_dict[p2])
- result = Combine.Merge(targets)
A much more comprehensive introduction to scripting in Discovery can be found at: https://courses.ansys.com/index.php/courses/scripting-in-ansys-discovery/