Source code for trusspy.handlers.handler_node
# -*- coding: utf-8 -*-
"""
title: TrussPy - Truss Solver for Python
author: Andreas Dutzler
year: 2023
"""
import numpy as np
from ..core.node import Node
[docs]class NodeHandler:
"Handler for Nodes"
def __init__(self):
self.labels = None
self.coords = None
def __enter__(self):
return self
def __exit__(self, H_type, H_value, H_traceback):
pass
[docs] def add_node(self, N, *args, **kwargs):
# raw node
if "Node" not in str(type(N)):
N = Node(N, *args, **kwargs)
if self.labels is None:
self.labels = np.array([N.label])
self.coords = np.array([N.coord])
else:
self.labels = np.append(self.labels, N.label)
self.coords = np.vstack((self.coords, N.coord))
[docs] def del_node(self, label):
idx = np.where(self.labels == label)[0]
self.labels = np.delete(self.labels, idx, axis=0)
self.coords = np.delete(self.coords, idx, axis=0)
[docs] def add_nodes(self, NN):
for N in NN:
self.add_node(N)
[docs] def fix_nodes(self):
indices = np.argsort(self.labels)
self.labels = self.labels.take(indices)
self.coords = self.coords.take(indices, axis=0)