Add Feature to generate Part Summary
- 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
Assessment
This issue has not been assessed yet.