ansys / ansys/pyprimemesh

Add Feature to generate Part Summary

Open
#406 2 comments 0 reactions 1 assignee Claimed by @prajaktmahajan View on GitHub
enhancement
Dominant language
Python
Stars
35
Forks
14
Avg merge
3d 5h
Merged PRs (30d)
11

Description

### 📝 Description of the feature

We should have an API capable of generating the part summary .

### 💡 Steps for implementing the feature

` def part_summary(
self,
part_expression: str = "*",
):
"""Generate Part Summary for given scope.

This method generates Part Summary for given part scope.

Parameters
----------
part_expression: str
Name pattern of parts used for connecting.

"""
part_ids=[]
for part in self._model.parts:
if check_name_pattern(part_expression, part.get_name()):
part_ids.append(part.id)
for part_id in part_ids:
part=self._model.get_part(part_id)
paramsSum=prime.PartSummaryParams(self._model, print_id = False, print_mesh = True)
summary=part.get_summary(paramsSum)
if summary.n_cell_zonelets :
diag =prime.VolumeSearch(self._model)
volQualParams=prime.VolumeQualitySummaryParams(self._model,scope = prime.ScopeDefinition(model=self._model, part_expression=part.name),quality_limit=[0.9], cell_quality_measures=[prime.CellQualityMeasure.SKEWNESS])
diag_qual_summary=diag.get_volume_quality_summary(volQualParams)
print("\n----Part Statistics----")
print("Part name :", part.name)
print("Number of Cell elements : ", summary.n_cells)
print("Number of Face elements : ", summary.n_faces)
print("----Volume Mesh Statistics----")
print("Number of Cell Zones :" , summary.n_cell_zonelets)
print("Max Cell skewness : ", round(diag_qual_summary.quality_results_part[0].max_quality,ndigits=3))
print("Number of Cells above 0.9 : ", diag_qual_summary.quality_results_part[0].n_found )
else:
diag =prime.SurfaceSearch(self._model)
diag_params = prime.SurfaceDiagnosticSummaryParams(self._model, scope = prime.ScopeDefinition(model=self._model, part_expression=part.name), compute_free_edges= True, compute_multi_edges= True, compute_self_intersections=True,compute_duplicate_faces=True)
surfQualParams=prime.SurfaceQualitySummaryParams(self._model,scope = prime.ScopeDefinition(model=self._model, part_expression=part.name),quality_limit=[0.9], face_quality_measures=[prime.FaceQualityMeasure.SKEWNESS])
diag_qual_summary=diag.get_surface_quality_summary(surfQualParams)
diag_res = diag.get_surface_diagnostic_summary(diag_params)
print("\n----Part Statistics----")
print("Part name :", part.name)
print("Number of faces : ", summary.n_faces)
print("----Surface Mesh Statistics----")
print("Max surface skewness : ", round(diag_qual_summary.quality_results[0].max_quality,ndigits=3))
print("Number of faces above 0.9 : ", diag_qual_summary.quality_results[0].n_found )
print('Number of free edges : ', diag_res.n_free_edges)
print('Number of multi edges :', diag_res.n_multi_edges)
print('Number of duplicate faces :', diag_res.n_duplicate_faces)
print('Number of self inter faces :', diag_res.n_self_intersections)
`

### 🔗 Useful links and references

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.