3434
3535import ansys .dpf .core as dpf
3636from ansys .dpf .core import DataSources , Model , TimeFreqSupport , errors
37- from ansys .dpf .core .available_result import _result_properties
3837from ansys .dpf .core .common import elemental_properties
3938from ansys .dpf .core .plotter import DpfPlotter
4039from ansys .dpf .core .server_types import BaseServer
@@ -600,14 +599,14 @@ def _build_selection(
600599 ] = None ,
601600 all_sets : bool = False ,
602601 named_selections : Union [List [str ], str , None ] = None ,
603- element_ids : Union [List [int ], None ] = None ,
602+ element_ids : Union [List [int ], dpf . Scoping , None ] = None ,
604603 node_ids : Union [List [int ], None ] = None ,
605604 location : Union [locations , str ] = locations .nodal ,
606605 external_layer : bool = False ,
607606 skin : Union [bool , List [int ]] = False ,
608607 expand_cyclic : Union [bool , List [Union [int , List [int ]]]] = True ,
609608 average_per_body : Optional [bool ] = False ,
610- ) -> ( Selection , Optional [_Rescoping ]) :
609+ ) -> Tuple [ Selection , Optional [_Rescoping ]] :
611610 tot = (
612611 (node_ids is not None )
613612 + (element_ids is not None )
@@ -659,26 +658,26 @@ def _build_selection(
659658 if requires_manual_averaging and location != locations .elemental_nodal :
660659 location = locations .elemental_nodal
661660
661+ available_results = self ._model .metadata .result_info .available_results
662+ result_info = next (
663+ (r for r in available_results if r .operator_name == base_name ), None
664+ )
665+ result_native_location = None
666+ if result_info is not None :
667+ result_native_location = result_info .native_location
668+
662669 # Create the SpatialSelection
663670
664671 # First: the skin and the external layer to be able to have both a mesh scoping and
665672 # the skin/external layer
666673 if (skin is not None and skin is not False ) or (
667674 external_layer is not None and external_layer is not False
668675 ):
669- res = (
670- _result_properties [base_name ]
671- if base_name in _result_properties
672- else None
673- )
674-
675676 if external_layer not in [None , False ]:
676677 selection .select_external_layer (
677678 elements = external_layer if external_layer is not True else None ,
678679 location = location ,
679- result_native_location = res ["location" ]
680- if res is not None
681- else location ,
680+ result_native_location = result_native_location or location ,
682681 is_model_cyclic = self ._model .operator ("is_cyclic" ).eval ()
683682 if expand_cyclic is not False
684683 else "not_cyclic" ,
@@ -687,9 +686,7 @@ def _build_selection(
687686 selection .select_skin (
688687 elements = skin if skin is not True else None ,
689688 location = location ,
690- result_native_location = res ["location" ]
691- if res is not None
692- else location ,
689+ result_native_location = result_native_location or location ,
693690 is_model_cyclic = self ._model .operator ("is_cyclic" ).eval ()
694691 if expand_cyclic is not False
695692 else "not_cyclic" ,
@@ -701,7 +698,7 @@ def _build_selection(
701698 inclusive = requires_manual_averaging ,
702699 )
703700 elif element_ids is not None :
704- if location == locations .nodal :
701+ if result_native_location == locations .nodal :
705702 selection .select_nodes_of_elements (elements = element_ids , mesh = self .mesh )
706703 else :
707704 selection .select_elements (elements = element_ids )
0 commit comments