Skip to content

Commit 0f314c4

Browse files
committed
get weight of ribs & diagonals
1 parent 4b347bb commit 0f314c4

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

openglider/glider/cell/diagonals.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,18 @@ def get_flattened(self, cell: Cell, ribs_flattened: Any=None) -> tuple[euklid.ve
327327
inner, outer = self.get_3d(cell)
328328

329329
return flatten_list(inner, outer)
330+
331+
def get_area(self, cell: Cell) -> float:
332+
inner, outer = self.get_flattened(cell)
333+
334+
inner_offset = inner.offset(-cell.rib1.seam_allowance.si)
335+
outer_offset = outer.offset(cell.rib2.seam_allowance.si)
336+
337+
outline = (inner_offset + outer_offset.reverse()).close()
338+
339+
area = outline.get_area() - sum([hole.get_area() for hole in self.get_holes(cell)[0]])
340+
341+
return area
330342

331343
def get_average_x(self) -> Percentage:
332344
"""

openglider/glider/rib/rib.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,16 @@ def get_hull(self) -> pyfoil.Airfoil:
191191
return self.sharknose.get_modified_airfoil(self)
192192

193193
return self.profile_2d
194+
195+
def get_weight(self):
196+
outline = self.get_hull().curve * self.chord
197+
crossports = [hole.get_flattened(self, layer_name="cuts") for hole in self.holes]
198+
199+
area = outline.get_area() - sum([
200+
sum([line.get_area() for line in crossport.layers["cuts"].polylines]) for crossport in crossports
201+
])
202+
203+
return area * self.material.weight
194204

195205
@property
196206
def normalized_normale(self) -> euklid.vector.Vector3D:

openglider/plots/spreadsheets/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
if TYPE_CHECKING:
1515
from openglider.glider import GliderProject
1616

17-
def get_glider_data(project: GliderProject, consumption: dict[str, MaterialUsage]=None) -> ezodf.document.PackagedDocument:
17+
def get_glider_data(project: GliderProject, consumption: dict[str, MaterialUsage] | None=None) -> ezodf.document.PackagedDocument:
1818
specsheet = project.get_data_table()
1919
glider = project.get_glider_3d()
2020
#specsheet = get_specs(glider)

0 commit comments

Comments
 (0)