Spaces:
Sleeping
Sleeping
| """ | |
| MLSTRUCT-FP - DB - CPOINT | |
| Point component (wall joints). | |
| """ | |
| __all__ = ['Point'] | |
| from MLStructFP.db._c import BasePolyComponent | |
| from MLStructFP._types import List, TYPE_CHECKING, NumberType | |
| import matplotlib.pyplot as plt | |
| import plotly.graph_objects as go | |
| if TYPE_CHECKING: | |
| from MLStructFP.db._floor import Floor | |
| class Point(BasePolyComponent): | |
| """ | |
| FP Point. | |
| """ | |
| topo: int # Topological order | |
| wall_id: int # Wall ID | |
| def __init__( | |
| self, | |
| point_id: int, | |
| wall_id: int, | |
| floor: 'Floor', | |
| x: List[float], | |
| y: List[float], | |
| topo: int | |
| ) -> None: | |
| """ | |
| Constructor. | |
| :param point_id: ID of the point | |
| :param wall_id: ID of the wall | |
| :param floor: Floor object | |
| :param x: List of coordinates within x-axis | |
| :param y: List of coordinates within y-axis | |
| :param topo: Topological order | |
| """ | |
| BasePolyComponent.__init__(self, point_id, x, y, floor) | |
| self.topo = topo | |
| self.wall_id = wall_id | |
| # noinspection PyProtectedMember | |
| self.floor._point[point_id] = self | |
| def __color(self) -> str: | |
| """ | |
| :return: Color based on topological order | |
| """ | |
| if self.topo == 1: | |
| color = '#ff0000' | |
| elif self.topo == 2: | |
| color = '#00ff00' | |
| elif self.topo == 3: | |
| color = '#0000ff' | |
| elif self.topo == 4: | |
| color = '#ff00ff' | |
| else: | |
| color = '#00ffff' | |
| return color | |
| # noinspection PyUnusedLocal | |
| def plot_plotly( | |
| self, | |
| fig: 'go.Figure', | |
| dx: NumberType = 0, | |
| dy: NumberType = 0, | |
| postname: str = '', | |
| opacity: NumberType = 0.2, | |
| color: str = '', | |
| name: str = '', | |
| **kwargs | |
| ) -> None: | |
| if name != '': | |
| name = f'{name} ' | |
| super().plot_plotly(fig, dx, dy, opacity, self.__color() if color == '' else color, | |
| f'Point {name}ID{self.id}{postname} Wall {self.wall_id} TOPO-{self.topo}', **kwargs) | |
| def plot_matplotlib( | |
| self, | |
| ax: 'plt.Axes', | |
| linewidth: NumberType = 2.0, | |
| alpha: NumberType = 1.0, | |
| color: str = '', | |
| fill: bool = False | |
| ) -> None: | |
| super().plot_matplotlib(ax, linewidth, alpha, self.__color() if color == '' else color, fill) | |