Replies: 9 comments
|
Hi @loicseg you could do something like this def calculate_perimeter(element_id: int) -> float:
vertices_reference_face = geometry_controller.get_element_reference_face_vertices(element_id)
perimeter = 0.0
num_vertices = len(vertices_reference_face)
for i in range(num_vertices):
start_vertex = vertices_reference_face[i]
end_vertex = vertices_reference_face[(i + 1) % num_vertices]
edge_length = start_vertex.distance(end_vertex)
perimeter += edge_length
return perimeter |
|
thanks but I tried it from now and it doesn't seems to work, i'll try to modify to get it work |
|
Could you give us an example of what doesn't work? |
|
success import cadwork import tkinter as tk def calculer_perimetres_panneaux(): def afficher_tableau(resultats): if name == "main": but problem when there's holes, perimeter goes wrong |
|
It seems like |
|
there are also functions on the class class facet_list:
# .......
def get_vertices_for_reference_face(self) -> vertex_list:
"""get vertices for reference face
Returns:
vertex_list
"""
def get_external_polygon_for_reference_face(self) -> vertex_list:
"""get external polygon for reference face
Returns:
vertex_list
"""
def get_internal_polygons_for_reference_face(self) -> polygon_list:
"""get internal polygons for reference face
Returns:
polygon_list
"""import element_controller
import geometry_controller
[element] = element_controller.get_active_identifiable_element_ids()
facets = geometry_controller.get_element_facets(element)
polygon_vertices = facets.get_external_polygon_for_reference_face()
for vertice in polygon_vertices:
print(vertice)
>>> [598.000000, -2.000000, 1269.333333]
>>> [2.000000, -2.000000, 1269.333333]
>>> [2.000000, -2.000000, 1520.000000]
>>> [598.000000, -2.000000, 1520.000000] |
|
Convex hull would ignore "inner corners" though, so it might not be accurate if you have concave cuts on your panel. Alternatively, you could retrieve all panel faces with Once you calculate the perimeter for all faces, keep the largest value and use it as the panel perimeter. Let us know if that works :) edit : michi beat me to it 😆 I didn't realize |
|
hum, dont see how to adapt to my code |
|
go step by step :
good luck! |
Uh oh!
There was an error while loading. Please reload this page.
I'd like to get or find if there's a function to get the perimeter for panels ?
Thanks !
All reactions