diff --git a/src/Meshing/Internal.py b/src/Meshing/Internal.py index d30b2309..016688ed 100644 --- a/src/Meshing/Internal.py +++ b/src/Meshing/Internal.py @@ -63,38 +63,29 @@ class InternalMeshing(AMeshingTool): def st_to_m(self, profiles, guide_list): - gl1 = [""] + guide_list - gl2 = guide_list + [""] - max_values = [0] * (len(guide_list) + 1) - max_values_index = [0] * (len(guide_list) + 1) + guide_list = ["un"] + guide_list + ["np"] + max_values = [0] * (len(guide_list) - 1) + max_values_index = [0] * (len(guide_list) - 1) # we work between each couple of guidelines for j, p in enumerate(profiles): - index1 = 0 - index2 = p.named_point_index(guide_list[0]) - if index2 - index1 > max_values[0]: - max_values[0] = index2 - index1 - max_values_index[0] = j for i in range(len(guide_list) - 1): index1 = p.named_point_index(guide_list[i]) index2 = p.named_point_index(guide_list[i+1]) - if index2 - index1 > max_values[i+1]: - max_values[i+1] = index2 - index1 - max_values_index[i+1] = j - index1 = p.named_point_index(guide_list[-1]) - index2 = len(p) - 1 - if index2 - index1 > max_values[-1]: - max_values[-1] = index2 - index1 - max_values_index[-1] = j + if index2 - index1 > max_values[i]: + max_values[i] = index2 - index1 + max_values_index[i] = j for i in range(len(max_values)): for isect in range(max_values_index[i], len(profiles)-1): self.compl_sect(profiles[isect], profiles[isect+1], - gl1[i], gl2[i]) + guide_list[i], + guide_list[i+1]) for isect in reversed(range(0, max_values_index[i])): self.compl_sect(profiles[isect+1], profiles[isect], - gl1[i], gl2[i]) + guide_list[i], + guide_list[i+1]) return profiles def interpolate_transversal_step(self, @@ -294,6 +285,8 @@ class InternalMeshing(AMeshingTool): sgn = -1.0 else: sgn = old_orientation + if abs(sgn) < 0.5: + sgn = 1.0 new_rk = [0.0]*nprof new_rk[origin] = origin_value diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py index 04310d8c..462e3467 100644 --- a/src/Model/Geometry/Profile.py +++ b/src/Model/Geometry/Profile.py @@ -76,12 +76,23 @@ class Profile(object): return self.points[index] def named_point(self, name): - return next((p for p in self.points if p.name == name), None) + if name == "un": + return self.points[0] + elif name == "np": + return self.points[-1] + else: + return next((p for p in self.points if p.name == name), None) def named_point_index(self, name): - return next( - (p for p in enumerate(self.points) if p[1].name == name), None - )[0] + if name == "un": + return 0 + elif name == "np": + return len(self.points) - 1 + else: + return next( + (p for p in enumerate(self.points) if p[1].name == name), + None + )[0] @property def reach(self):