1010class BlenderMesh (BlenderGeometry ):
1111 """Wrapper for Blender meshes.
1212
13+ Attributes
14+ ----------
15+ object : :blender:`bpy.types.Object`
16+ The Blender scene object.
17+ geometry : :blender:`bpy.types.Mesh`
18+ The mesh data block.
19+ bmesh : :blender:`bpy.types.BMesh`
20+ The mesh data structure.
21+ location : :class:`~compas.geometry.Point`
22+ The location of the object in the scene.
23+ vertices : List[:class:`~compas.geometry.Point`]
24+ The mesh vertex locations.
25+ faces : List[List[:obj:`int`]]
26+ The mesh face vertices.
27+
1328 Examples
1429 --------
1530 .. code-block:: python
1631
17- pass
32+ import os
33+ import compas
34+ from compas_blender.conversions import BlenderMesh
35+
36+ mesh = BlenderMesh.from_monkey().to_compas()
37+ mesh = mesh.subdivide(k=2)
38+
39+ path = os.path.join(os.path.expanduser(~), 'Desktop', 'monkey.json')
40+
41+ compas.json_dump(mesh, path)
42+
1843 """
1944
2045 @property
2146 def object (self ):
22- """:blender:`bpy.types.Object` - The Blender scene object."""
2347 return self ._object
2448
2549 @object .setter
@@ -30,7 +54,6 @@ def object(self, obj):
3054
3155 @property
3256 def geometry (self ):
33- """:blender:`bpy.types.Mesh` - The mesh data block."""
3457 return self ._geometry
3558
3659 @geometry .setter
@@ -40,23 +63,21 @@ def geometry(self, data):
4063
4164 @property
4265 def bmesh (self ):
43- """:blender:`bpy.types.BMesh` - The mesh data structure."""
4466 return bmesh .from_edit_mesh (self .mesh )
4567
4668 @property
4769 def location (self ):
48- """:class:`~compas.geometry.Point` - The location of the object in the scene."""
49- return Point (self .geometry .location )
70+ if self .object :
71+ return Point (self .object .location )
72+ return Point (0 , 0 , 0 )
5073
5174 @property
5275 def vertices (self ):
53- """List[:class:`~compas.geometry.Point`] - The mesh vertex locations."""
5476 point = self .location
5577 return [point + list (vertex .co ) for vertex in self .geometry .vertices ]
5678
5779 @property
5880 def faces (self ):
59- """List[List[:obj:`int`]] - The mesh face vertices."""
6081 return [list (face .vertices ) for face in self .geometry .polygons ]
6182
6283 @classmethod
@@ -75,6 +96,7 @@ def from_bmesh(cls, bm, name=None, free=True):
7596 Returns
7697 -------
7798 :class:`~compas_blender.conversions.BlenderMesh`
99+
78100 """
79101 data = bpy .data .meshes .new (name or 'Mesh' )
80102 bm .to_mesh (data )
@@ -96,6 +118,7 @@ def from_monkey(cls, name=None):
96118 Returns
97119 -------
98120 :class:`~compas_blender.conversions.BlenderMesh`
121+
99122 """
100123 bm = bmesh .new ()
101124 bmesh .ops .create_monkey (bm )
@@ -117,6 +140,7 @@ def to_compas(self, cls=None):
117140 Returns
118141 -------
119142 :class:`~compas.datastructure.Mesh`
143+
120144 """
121145 cls = cls or Mesh
122146 return cls .from_vertices_and_faces (self .vertices , self .faces )
0 commit comments