Ejemplo n.º 1
0
def find_beams_connected_to_plate(pl: Plate, beams: List[Beam]) -> List[Beam]:
    """Return all beams with their midpoints inside a specified plate for a given list of beams"""
    from ada.concepts.containers import Nodes

    nid = Counter(1)
    nodes = Nodes(
        [Node((bm.n2.p + bm.n1.p) / 2, next(nid), refs=[bm]) for bm in beams])
    res = nodes.get_by_volume(pl.bbox.p1, pl.bbox.p2)

    all_beams_within = list(chain.from_iterable([r.refs for r in res]))
    return all_beams_within
Ejemplo n.º 2
0
def test_in_between():
    p1 = 284.651885, 130.233454, 553.35
    p2 = 284.651885, 130.233454, 553.425
    p3 = 284.651885, 130.233454, 553.5
    p4 = 284.651885, 130.233454, 554.5
    n1 = Node(p1, 1)
    n2 = Node(p2, 2)
    n3 = Node(p3, 3)
    n4 = Node(p4, 4)
    nodes = Nodes([n1, n2, n3, n4])
    res = Nodes(nodes.get_by_volume(p=p1))
    assert len(res) == 1
Ejemplo n.º 3
0
def get_singular_node_by_volume(nodes: Nodes,
                                p: np.ndarray,
                                tol=Settings.point_tol) -> Node:
    """Returns existing node within the volume, or creates and returns a new Node at the point"""
    nds = nodes.get_by_volume(p, tol=tol)
    if len(nds) > 0:
        node, *other_nodes = nds
        if len(other_nodes) > 0:
            logging.warning(
                f"More than 1 node within point {p}, other nodes: {other_nodes}. Returns node {node}"
            )
        return node
    else:
        return Node(p)
Ejemplo n.º 4
0
def test_get_by_volume_point(nodes):
    n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 = nodes
    s = Nodes(nodes)
    c = Nodes(s.get_by_volume(p=(4.0, 5.0, 1.0)))
    assert c == Nodes([n7])
Ejemplo n.º 5
0
def test_get_by_volume_cylinder(nodes):
    n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 = nodes
    s = Nodes(nodes)
    c = Nodes(s.get_by_volume(p=(1.0, 1.0, 0.5), vol_cyl=(0.2, 4, 0.2)))
    assert c == Nodes([n2, n6, n9])
Ejemplo n.º 6
0
def test_get_by_volume_box(nodes):
    n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 = nodes
    s = Nodes(nodes)
    c = Nodes(s.get_by_volume(p=(1.5, 0.5, 0.5), vol_box=(4.5, 5.5, 8.5)))
    assert c == Nodes([n3, n7, n8])