def volmesh_draw_edges(volmesh, keys=None, color=None, layer=None, clear_layer=False, redraw=True): """Draw the edges of a volmesh. Parameters ---------- volmesh : compas.datastructures.VolMesh A volmesh object. keys : list (None) A list of edge keys identifying which edges to draw. Default is to draw all edges. color : str, tuple, dict (None) The color specififcation for the edges. Colors should be specified in the form of a string (hex colors) or as a tuple of RGB components. To apply the same color to all edges, provide a single color specification. Individual colors can be assigned using a dictionary of key-color pairs. Missing keys will be assigned the default vertex color (``self.defaults['vertex.color']``). Default is use the color of the parent layer. layer : str (None) The layer in which the edges are drawn. Default is to draw in the current layer. clear_layer : bool (False) Clear the drawing layer. redraw : bool (True) Redraw the view after adding the edges. Examples -------- >>> volmesh_draw_edges(volmesh) >>> volmesh_draw_edges(volmesh, keys=volmesh.edges_on_boundary()) >>> volmesh_draw_edges(volmesh, color='#00ff00') >>> color = {key: (('#ff0000') if volmesh.vertex_is_on_boundary(key) else ('#00ff00')) for key in volmesh.edges()} >>> volmesh_draw_edges(volmesh, color=color) See Also -------- * compas_rhino.VolMeshArtist """ artist = VolMeshArtist(volmesh) artist.layer = layer if clear_layer: artist.clear_layer() artist.clear_edges() artist.draw_edges(color=color) if redraw: artist.redraw()
def volmesh_draw(volmesh, layer=None, clear_layer=False, vertexcolor=None, edgecolor=None, facecolor=None): """Draw a volmesh. Parameters ---------- volmesh : compas.datastructures.VolMesh A volmesh object. layer : str (None) The layer to draw in. Default is to draw in the current layer. clear_layer : bool (False) Clear the current layer. vertexcolor : str, tuple, list, dict (None) The vertex color specification. Default is to use the color of the parent layer. edgecolor : str, tuple, list, dict (None) The edge color specification. Default is to use the color of the parent layer. facecolor : str, tuple, list, dict (None) The face color specification. Default is to use the color of the parent layer. Examples -------- >>> volmesh_draw(volmesh) >>> volmesh_draw(volmesh, layer='SomeLayer') >>> volmesh_draw(volmesh, clear_layer=True) >>> volmesh_draw(volmesh, vertexcolor='#ff0000') >>> volmesh_draw(volmesh, edgecolor=(0, 255, 0)) >>> volmesh_draw(volmesh, facecolor={key: (0.0, 0.0, 0.5) for key in volmesh.faces()}) See Also -------- * compas_rhino.VolMeshArtist """ artist = VolMeshArtist(volmesh) artist.layer = layer if clear_layer: artist.clear_layer() artist.clear() artist.draw_vertices(color=vertexcolor) artist.draw_edges(color=edgecolor) artist.draw_faces(color=facecolor) artist.redraw()
def draw_edges(self, **kwattr): artist = VolMeshArtist(self, **kwattr) artist.draw_edges(**kwattr)
if __name__ == "__main__": import compas from compas.datastructures import VolMesh from compas_rhino.artists import VolMeshArtist volmesh = VolMesh.from_obj(compas.get('boxes.obj')) artist = VolMeshArtist(volmesh, layer='VolMeshArtist') artist.clear_layer() artist.draw_vertices() artist.redraw(0.0) artist.draw_vertexlabels() artist.redraw(1.0) artist.draw_faces() artist.redraw(1.0) artist.draw_facelabels() artist.redraw(1.0) artist.draw_edges() artist.redraw(1.0) artist.draw_edgelabels() artist.redraw(1.0)
width = dual_volmesh.bounding_box()[1][0] - dual_volmesh.bounding_box()[0][0] for vkey in dual_volmesh.vertices(): x = dual_volmesh.vertex_attribute(vkey, 'x') dual_volmesh.vertex_attribute(vkey, 'x', x + width * offset) # ------------------------------------------------------------------------------ # 3. visualise diagrams # ------------------------------------------------------------------------------ force_artist = VolMeshArtist(volmesh) form_artist = VolMeshArtist(dual_volmesh) # draw volmesh cell labels and dual_volmesh vertex labels cell_c_dict = get_index_colordict(list(volmesh.cells())) # draw volmesh force_artist.draw_edges() force_artist.draw_celllabels(color=cell_c_dict) # draw dual volmesh form_artist.draw_faces() form_artist.draw_vertexlabels(color=cell_c_dict) # draw directed volmesh halffaces and directed dual_volmesh edges uv_c_dict = get_index_colordict(list(dual_volmesh.edges())) face_normal_scale = 1.0 draw_directed_hf_and_uv(volmesh, dual_volmesh, uv_color=uv_c_dict, scale=face_normal_scale)