Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-10-01 10:03:26 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-10-01 10:03:26 +0300
commit351dbd03d484c7487e83e3f2e6045fe9bd0fdb8e (patch)
tree8334601903243900e7f016309dd1b48f623eddcb /object_print3d_utils/mesh_helpers.py
parent0ac377d853b84c83c4701be58d8870803ecaaa9c (diff)
Update for 2.8
TODO: - Ray-cast for thickness doesn't have access to an evaluated mesh. - Exporters such as PLY need updating too.
Diffstat (limited to 'object_print3d_utils/mesh_helpers.py')
-rw-r--r--object_print3d_utils/mesh_helpers.py53
1 files changed, 37 insertions, 16 deletions
diff --git a/object_print3d_utils/mesh_helpers.py b/object_print3d_utils/mesh_helpers.py
index a5d5f74f..7f595c1b 100644
--- a/object_print3d_utils/mesh_helpers.py
+++ b/object_print3d_utils/mesh_helpers.py
@@ -157,19 +157,31 @@ def bmesh_check_thick_object(obj, thickness):
# Create a real mesh (lame!)
context = bpy.context
scene = context.scene
+ layer = context.view_layer
+ layer_collection = context.layer_collection
+ if layer_collection is None:
+ scene_collection = scene.master_collection.collections.new("")
+ layer_collection = layer.collections.link(scene_collection)
+ else:
+ scene_collection = layer_collection.collection
+
me_tmp = bpy.data.meshes.new(name="~temp~")
bm.to_mesh(me_tmp)
# bm.free() # delay free
obj_tmp = bpy.data.objects.new(name=me_tmp.name, object_data=me_tmp)
- base = scene.objects.link(obj_tmp)
+ # base = scene.objects.link(obj_tmp)
+ scene_collection.objects.link(obj_tmp)
# Add new object to local view layer
+ # XXX28
+ '''
v3d = None
if context.space_data and context.space_data.type == 'VIEW_3D':
v3d = context.space_data
if v3d and v3d.local_view:
base.layers_from_view(context.space_data)
+ '''
scene.update()
ray_cast = obj_tmp.ray_cast
@@ -190,7 +202,7 @@ def bmesh_check_thick_object(obj, thickness):
p_b = p - no_end
p_dir = p_b - p_a
- ok, co, no, index = ray_cast(p_a, p_dir, p_dir.length)
+ ok, co, no, index = ray_cast(p_a, p_dir, distance=p_dir.length)
if ok:
# Add the face we hit
@@ -203,7 +215,7 @@ def bmesh_check_thick_object(obj, thickness):
# finished with bm
bm.free()
- scene.objects.unlink(obj_tmp)
+ scene_collection.objects.unlink(obj_tmp)
bpy.data.objects.remove(obj_tmp)
bpy.data.meshes.remove(me_tmp)
@@ -228,17 +240,24 @@ def object_merge(context, objects):
seq.remove(seq[i])
scene = context.scene
+ layer = context.view_layer
+ layer_collection = context.layer_collection
+ if layer_collection is None:
+ scene_collection = scene.master_collection.collections.new("")
+ layer_collection = layer.collections.link(scene_collection)
+ else:
+ scene_collection = layer_collection.collection
# deselect all
for obj in scene.objects:
- obj.select = False
+ obj.select_set('DESELECT')
# add empty object
mesh_base = bpy.data.meshes.new(name="~tmp~")
obj_base = bpy.data.objects.new(name="~tmp~", object_data=mesh_base)
- base_base = scene.objects.link(obj_base)
- scene.objects.active = obj_base
- obj_base.select = True
+ scene_collection.objects.link(obj_base)
+ layer.objects.active = obj_base
+ obj_base.select_set('SELECT')
# loop over all meshes
for obj in objects:
@@ -246,29 +265,30 @@ def object_merge(context, objects):
continue
# convert each to a mesh
- mesh_new = obj.to_mesh(scene=scene,
- apply_modifiers=True,
- settings='PREVIEW',
- calc_tessface=False)
+ mesh_new = obj.to_mesh(
+ depsgraph=context.depsgraph,
+ apply_modifiers=True,
+ calc_tessface=False,
+ )
# remove non-active uvs/vcols
cd_remove_all_but_active(mesh_new.vertex_colors)
- cd_remove_all_but_active(mesh_new.uv_textures)
+ cd_remove_all_but_active(mesh_new.uv_layers)
# join into base mesh
obj_new = bpy.data.objects.new(name="~tmp-new~", object_data=mesh_new)
- base_new = scene.objects.link(obj_new)
+ base_new = scene_collection.objects.link(obj_new)
obj_new.matrix_world = obj.matrix_world
fake_context = context.copy()
fake_context["active_object"] = obj_base
- fake_context["selected_editable_bases"] = [base_base, base_new]
+ fake_context["selected_editable_objects"] = [obj_base, obj_new]
bpy.ops.object.join(fake_context)
del base_new, obj_new
# remove object and its mesh, join does this
- # scene.objects.unlink(obj_new)
+ # scene_collection.objects.unlink(obj_new)
# bpy.data.objects.remove(obj_new)
bpy.data.meshes.remove(mesh_new)
@@ -276,7 +296,8 @@ def object_merge(context, objects):
scene.update()
# return new object
- return base_base
+ return obj_base
+
def face_is_distorted(ele, angle_distort):