def from_obj(cls, filepath, precision=None): """Construct a network from the data contained in an OBJ file. Parameters ---------- filepath : path string, file-like object or URL string A path, a file-like object or a URL pointing to a file. precision: str, optional The precision of the geometric map that is used to connect the lines. Returns ------- Network A network object. Examples -------- >>> """ network = cls() obj = OBJ(filepath, precision) obj.read() nodes = obj.vertices edges = obj.lines for i, (x, y, z) in enumerate(nodes): network.add_node(i, x=x, y=y, z=z) for u, v in edges: network.add_edge(u, v) return network
def from_obj(cls, filepath, precision=None): """Construct a network from the data contained in an OBJ file. Parameters ---------- filepath : str Path to the OBJ file. precision: str, optional The precision of the geometric map that is used to connect the lines. Returns ------- Network A network object. Note ---- There are a few sample files available for testing and debugging: * lines.obj Examples -------- .. code-block:: python import compas from compas.datastructures import Network network = Network.from_obj(compas.get('lines.obj')) """ network = cls() obj = OBJ(filepath, precision) obj.read() vertices = obj.vertices edges = obj.lines for i, (x, y, z) in enumerate(vertices): network.add_vertex(i, x=x, y=y, z=z) for u, v in edges: network.add_edge(u, v) return network
def from_obj(cls, filepath, precision=None): """Construct a mesh object from the data described in an OBJ file. Parameters ---------- filepath : str The path to the file. precision: str, optional The precision of the geometric map that is used to connect the lines. Returns ------- Mesh A mesh object. Note ---- There are a few sample files available for testing and debugging: * faces.obj * faces_big.obj * faces_reversed.obj * hypar.obj * mesh.obj * quadmesh.obj Examples -------- >>> """ obj = OBJ(filepath, precision) obj.read() vertices = obj.vertices faces = obj.faces edges = obj.lines if faces: return cls.from_vertices_and_faces(vertices, faces) if edges: lines = [(vertices[u], vertices[v], 0) for u, v in edges] return cls.from_lines(lines)