-
-def extract_groups_for_field(proxy, field_name, field_entity, force=False):
- """Exctract only groups which have the field.
-
- Arguments:
- proxy: the pipeline object, containig data
- field_name: the field name
- field_entity: the field entity
- force: if True - ExtractGroup object will be created in any case
-
- Returns:
- ExtractGroup object: if not all groups have the field or
- the force argument is true
- The initial proxy: if no groups had been filtered.
-
- """
- source = proxy
-
- # Remember the state
- initial_groups = list(proxy.Groups)
-
- # Get data information for the field entity
- entity_data_info = None
- field_data = proxy.GetFieldDataInformation()
-
- if field_name in field_data.keys():
- entity_data_info = field_data
- elif field_entity == EntityType.CELL:
- entity_data_info = proxy.GetCellDataInformation()
- elif field_entity == EntityType.NODE:
- entity_data_info = proxy.GetPointDataInformation()
-
- # Collect groups for extraction
- groups_to_extract = []
-
- for group in initial_groups:
- proxy.Groups = [group]
- proxy.UpdatePipeline()
- if field_name in entity_data_info.keys():
- groups_to_extract.append(group)
-
- # Restore state
- proxy.Groups = initial_groups
- proxy.UpdatePipeline()
-
- # Extract groups if necessary
- if force or (len(groups_to_extract) < len(initial_groups)):
- extract_group = pvs.ExtractGroup(proxy)
- extract_group.Groups = groups_to_extract
- extract_group.UpdatePipeline()
- source = extract_group
-
- return source
-
-
-def if_possible(proxy, field_name, entity, prs_type):