From 578f87b7fe2c0dc5a203d1feda45a8d76200cae9 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Wed, 29 Nov 2017 11:09:23 +0100 Subject: [PATCH] FEM: mesh tools, make retrieving group data ids useable for all element types --- src/Mod/Fem/FemMeshTools.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Mod/Fem/FemMeshTools.py b/src/Mod/Fem/FemMeshTools.py index 21c4b56824..68142483b7 100644 --- a/src/Mod/Fem/FemMeshTools.py +++ b/src/Mod/Fem/FemMeshTools.py @@ -33,7 +33,7 @@ import FreeCAD def get_femnodes_by_femobj_with_references(femmesh, femobj): node_set = [] if femmesh.GroupCount: - node_set = get_femnode_set_from_group_data(femmesh, femobj) + node_set = get_femmesh_groupdata_sets_by_name(femmesh, femobj, 'Node') # print('node_set_group: ', node_set) if not node_set: node_set = get_femnodes_by_references(femmesh, femobj['Object'].References) @@ -357,20 +357,22 @@ def get_femelement_sets(femmesh, femelement_table, fem_objects, femnodes_ele_tab FreeCAD.Console.PrintError('Error in get_femelement_sets -- > femelements_count_ok() failed!\n') -def get_femnode_set_from_group_data(femmesh, fem_object): - # get femnodes from femmesh groupdata for reference shapes of each obj.References +def get_femmesh_groupdata_sets_by_name(femmesh, fem_object, group_data_type): + # get ids from femmesh groupdata for reference shapes of each obj.References # we assume the mesh group data fits with the reference shapes, no check is done in this regard !!! + # we just check for the group name and the group data type # what happens if a reference shape was changed, but the mesh and the mesh groups were not created new !?! obj = fem_object['Object'] - group_nodes = () # empty tuple + groupElementIDs = () # empty tuple if femmesh.GroupCount: for g in femmesh.Groups: grp_name = femmesh.getGroupName(g) if grp_name.startswith(obj.Name + "_"): - if femmesh.getGroupElementType(g) == "Node": - print("Constraint: " + obj.Name + " --> " + "nodes are in mesh group: " + grp_name) - group_nodes = femmesh.getGroupElements(g) # == ref_shape_femelements - return group_nodes # an empty tuple is returned if no femelements where found + if femmesh.getGroupElementType(g) == group_data_type: + print(" found mesh group for the IDs: " + grp_name + ', Type: ' + group_data_type) + # print("Constraint: " + obj.Name + " --> " + "IDs are in mesh group: " + grp_name) + group_data_IDs = femmesh.getGroupElements(g) # == ref_shape_femelements + return group_data_IDs # an empty tuple is returned if no group data IDs where found def get_femelementface_sets_from_group_data(femmesh, fem_object):