Skip to content

geometry_controller

get beam points and vetors

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import cadwork  # import module
import element_controller as ec
import geometry_controller as gc

# get active element_ids
element_ids = ec.get_active_identifiable_element_ids()

for element_id in element_ids:
    vector_x = gc.get_xl(element_id)  # returns local vector
    vector_y = gc.get_yl(element_id)  # returns local vector
    vector_z = gc.get_zl(element_id)  # returns local vector
    get_p1 = gc.get_p1(element_id)  # returns cartesian point
    get_p2 = gc.get_p2(element_id)  # returns cartesian point
    get_p3 = gc.get_p3(element_id)  # returns cartesian point

    print(f"""the elements local vecotr z is: {vector_z} \n'
            the coordinates of the point_3 are {get_p3}""")

filter elements according to a limit value

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import attribute_controller as ac
import element_controller as ec
import cadwork
import geometry_controller as gc

element_ids = ec.get_active_identifiable_element_ids()

# max area
area = 1500000.0

# list comprehension
filtered_ids = [
    element for element in element_ids if ac.is_panel(element) and gc.get_element_reference_face_area(element) < area
]

value = 'area smaller than '

ac.set_user_attribute(filtered_ids, 10, f'{value, area} mm2')