Line
Módulo: digi21.base
Una polilínea, abierta o cerrada. Hereda de Geometry.
Line(codes, coordinates=[])
| Argumento |
Tipo |
Descripción |
codes |
iterable |
Códigos (FeatureCode o str). |
coordinates |
list[tuple] |
Lista de vértices (x, y, z). |
Propiedades
| Propiedad |
Tipo |
Descripción |
closed |
bool |
Indica si la línea está cerrada. |
closed_2d |
bool |
Indica si está cerrada en planta (2D). |
area |
float |
Área de la línea. |
perimeter_2d |
float |
Perímetro en planta (2D). |
perimeter_3d |
float |
Perímetro en el espacio (3D). |
calculate_interior_point |
tuple |
Coordenadas (x, y, z) de un punto interior. |
length_and_width |
tuple |
(largo, ancho) de la línea. |
tangent_first |
tuple |
Vector tangente en el primer punto. |
tangent_last |
tuple |
Vector tangente en el último punto. |
Métodos de construcción y edición
| Método |
Devuelve |
Descripción |
add_point(coordinates) |
int |
Añade un vértice al final; devuelve el número de vértices resultante. |
add_points(coordinates) |
— |
Añade varios vértices al final. |
close() |
— |
Cierra la línea. |
reverse() |
— |
Invierte el sentido de la línea. |
smooth(increment) |
— |
Suaviza la línea. |
generalize(tolerance, angular_tolerance) |
bool |
Generaliza la línea; devuelve True si la modificó. |
parallelize(distance) |
— |
Desplaza/paraleliza la línea la distancia indicada. |
generate_spline() |
— |
Genera una spline a partir de los vértices. |
remove_duplicate_points(in_2d=False) |
— |
Elimina vértices duplicados consecutivos. |
remove_loops() |
— |
Elimina lazos de la línea. |
add_arc_3points(origin, middle, end, min_points, max_points) |
bool |
Añade un arco definido por 3 puntos. |
add_circle(a, b, c, max_points) |
— |
Añade un círculo que pasa por los 3 puntos dados. |
add_circle_xy(center, radius, max_points) |
— |
Añade un círculo en el plano XY (centro y radio). |
Métodos de consulta
| Método |
Devuelve |
Descripción |
calculate_position_point(coordinates) |
PointLineRelativePosition |
Posición de unas coordenadas (o de un point) respecto a la línea. |
search_segment(coordinates) |
tuple |
Segmento más próximo: (distancia, (x,y,z) del corte, nº de segmento). Acepta también un point. |
search_vertex(coordinates) |
tuple |
Vértice más próximo: (distancia, (x,y,z) del corte, nº de vértice). Acepta también un point. |
search_vertex(coordinates, first_vertex, last_vertex=-1) |
int |
Vértice más próximo entre dos índices; devuelve el nº de vértice. |
project_origin_or_end(limit, origin, infinite_limit_extremes=True, allow_cut=True, allow_stretch=True) |
tuple |
Proyecta el origen/final contra un límite: (¿estirada?, (x,y,z) del corte, nº de segmento). |
line_cross_line(line) |
bool |
Verdadero si las dos líneas se cortan. |
calculate_cross_coordinates(other) |
tuple |
(¿se cortan?, segmento_self, segmento_other, (x,y,z) del corte). |
direction_vector(index) |
tuple |
Vector director del segmento que arranca en el vértice indicado. |
distance_to_vertex(coordinates, vertex) |
float |
Distancia de unas coordenadas a un vértice concreto. |
has_repeated_points(distance) |
bool |
Verdadero si hay vértices repetidos dentro de la distancia dada. |
bounds_between_vertices(first_vertex, last_vertex) |
tuple |
Caja envolvente entre dos vértices: ((xmin,ymin,zmin),(xmax,ymax,zmax)). |
Hereda además las propiedades, los métodos y las relaciones espaciales de
Geometry.
Ejemplo
from digi21.base import Line, PointLineRelativePosition
linea = Line(["CARR"])
linea.add_point((0, 0, 0))
linea.add_point((10, 0, 0))
linea.add_point((10, 10, 0))
if linea.calculate_position_point((5, 5, 0)) == PointLineRelativePosition.Inside:
print("dentro")
Véase también