Created
May 1, 2020 00:00
-
-
Save m2wasabi/25684223ceea867855b6824e3b4b1c54 to your computer and use it in GitHub Desktop.
blender 2.9 -> 2.8 patch from https://blenderartists.org/t/2-80-cheat-sheet-for-updating-add-ons/1148974
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Blender 2.80 add-on update cheat sheet | |
| ??? = not verified or not correct in many cases, but may work | |
| *** = verified to work in most or all cases | |
| ??? alpha needed | |
| -mat.diffuse_color = (red_v, grn_v, blu_v) # viewport color | |
| +mat.diffuse_color = (red_v, grn_v, blu_v, alpha_v) # viewport color | |
| ??? viewnumpad | |
| -col.operator("view3d.viewnumpad", text="View Camera", icon='CAMERA_DATA').type = 'CAMERA' | |
| +col.operator("view3d.view_camera", text="View Camera", icon='CAMERA_DATA') | |
| ??? viewnumpad > view_axis | |
| -bpy.ops.view3d.viewnumpad(type='BOTTOM') | |
| +bpy.ops.view3d.view_axis(type='BOTTOM') | |
| ??? get_rna | |
| -properties = op.get_rna().bl_rna.properties.items() | |
| +properties = op.get_rna_type().properties.items() | |
| ??? viewport_shade > shading.type | |
| -pie.prop(context.space_data, "viewport_shade", expand=True) | |
| +pie.prop(context.space_data.shading, "type", expand=True) | |
| -if context.space_data.viewport_shade == 'RENDERED': | |
| +if context.space_data.shading.type == 'RENDERED': | |
| ??? TOOLS > UI (Tools panel > N panel) | |
| -bl_region_type = "TOOLS" | |
| +bl_region_type = "UI" | |
| ??? View | |
| -bl_region_type = 'View' | |
| -bl_category = 'Tools' | |
| +bl_region_type = 'UI' | |
| +bl_category = 'View' | |
| otherwise... | |
| RuntimeError: Error: Registering panel class: 'view3d.blah' has category 'View' | |
| ??? Lamp > Light | |
| -"OUTPUT_LAMP" | |
| -"ShaderNodeOutputLamp" | |
| +"OUTPUT_LIGHT" | |
| +"ShaderNodeOutputLight" | |
| ??? lamps > lights | |
| -bpy.data.lamps | |
| +bpy.data.lights | |
| *** select > select_set (only changed for objects, not verts/edges/faces) | |
| -obj.select = False | |
| +obj.select_set(False) | |
| otherwise... | |
| AttributeError: 'Object' object has no attribute 'select' | |
| possible regex: | |
| find: (\.select\s*=\s*)(True|False) | |
| repl: .select_set\(\2\) | |
| *** select > select_get (only changed for objects, not verts/edges/faces) | |
| -if o.select: | |
| +if o.select_get(): | |
| -if not obj.select: | |
| +if not obj.select_get(): | |
| -if o.select is True: | |
| +if o.select_get() is True: | |
| possible regex: | |
| find: (\.select)(\s*)(is|==)(\s*)(True|False) | |
| repl: .select_get\(\)(\2)(\3)(\4)(\5) | |
| ??? backdrop_x / backdrop_y > backdrop_offset[0] / backdrop_offset[1] | |
| -context.space_data.backdrop_x = 0 | |
| -context.space_data.backdrop_y = 0 | |
| +context.space_data.backdrop_offset[0] = 0 | |
| +context.space_data.backdrop_offset[1] = 0 | |
| ??? ops.delete context (int > string) | |
| -bmesh.ops.delete(bm, geom=edges, context=1) | |
| -bmesh.ops.delete(bm, geom=edges, context=2) | |
| -bmesh.ops.delete(bm, geom=edges, context=3) | |
| +bmesh.ops.delete(bm, geom=edges, context="VERTS") | |
| +bmesh.ops.delete(bm, geom=edges, context="EDGES") | |
| +bmesh.ops.delete(bm, geom=edges, context="FACES") | |
| otherwise... | |
| TypeError: delete: keyword "context" expected a string, not int | |
| ??? tessface > loop_triangles | |
| -bmesh.update_edit_mesh(object.data, tessface=True, destructive=True) | |
| +bmesh.update_edit_mesh(object.data, loop_triangles=True, destructive=True) | |
| ??? to_mesh | |
| ob = bpy.context.active_object | |
| depsgraph = bpy.context.evaluated_depsgraph_get() | |
| -mesh = ob.evaluated_get(depsgraph).to_mesh() | |
| +ob_eval = ob.evaluated_get(depsgraph) | |
| +mesh = ob_eval.to_mesh() | |
| ??? to_mesh (2) | |
| obj = bpy.context.active_object | |
| -mesh = obj.to_mesh(context.scene, True, 'PREVIEW') | |
| +depsgraph = context.evaluated_depsgraph_get() | |
| +mesh = obj.evaluated_get(depsgraph).to_mesh() | |
| ??? meshes.remove | |
| -bpy.data.meshes.remove(mesh) | |
| +ob_eval.to_mesh_clear() | |
| ??? active | |
| -plane = context.scene.objects.active | |
| +plane = context.active_object | |
| ??? active (2) | |
| -bpy.context.scene.objects.active = obj | |
| +bpy.context.view_layer.objects.active = obj | |
| otherwise... | |
| AttributeError: bpy_prop_collection: attribute "active" not found | |
| #bpy.context.view_layer.objects.active = bpy.data.objects['Light'] ?? | |
| #bpy.context.view_layer.objects.active = None ?? | |
| #bpy.context.active_object ? | |
| ??? object_bases | |
| -context.scene.object_bases | |
| +obj = context.view_layer.objects.active ??? | |
| ??? keymaps: name, space_type, region_type (keyword) | |
| -def keymap(self, name="Window", space_type='EMPTY', region_type='WINDOW'): | |
| +def keymap(self, name_="Window", space_type_='EMPTY', region_type_='WINDOW'): | |
| self.km = bpy.context.window_manager.keyconfigs.addon.keymaps.new( | |
| - name, space_type, region_type) | |
| + name=name_, space_type=space_type_, region_type=region_type_) | |
| otherwise... | |
| TypeError: KeyMaps.new(): required parameter "space_type" to be a keyword argument! | |
| ??? frame_set subframe (keyword) | |
| -context.scene.frame_set(int(frame[1]), frame[0]) | |
| +context.scene.frame_set(int(frame[1]), subframe=frame[0]) | |
| ??? prop text (keyword) | |
| -row.prop(self, "filter_auto_focus", "", icon='VIEWZOOM') | |
| +row.prop(self, "filter_auto_focus", text="", icon='VIEWZOOM') | |
| ??? label text (keyword) | |
| -row.label(context.object.name) | |
| +row.label(text=context.object.name) | |
| -box.label("From curve") | |
| +box.label(text="From curve") | |
| *** label text | |
| -col.label("Sharpness") | |
| +col.label(text="Sharpness") | |
| otherwise... | |
| TypeError: UILayout.label(): required parameter "text" to be a keyword argument! | |
| ??? popup_menu title (keyword) | |
| -context.window_manager.popup_menu(self.menu, "Icon Viewer") | |
| +context.window_manager.popup_menu(self.menu, title="Icon Viewer") | |
| ??? operator text (keyword) | |
| -row.operator(IV_OT_panel_menu_call.bl_idname, "", icon='COLLAPSEMENU') | |
| +row.operator(IV_OT_panel_menu_call.bl_idname, text="", icon='COLLAPSEMENU') | |
| *** operator text (keyword) | |
| -row.operator("wm.url_open", "Google", icon='SOLO_ON' | |
| - ).url = "https://www.google.com" | |
| +row.operator("wm.url_open", text="Google", icon='SOLO_ON' | |
| + ).url = "https://www.google.com" | |
| *** prop text (keyword) | |
| -row.prop(self, "ctrl", "Ctrl", toggle=True) | |
| +row.prop(self, "ctrl", text="Ctrl", toggle=True) | |
| *** prop text (keyword) | |
| -col.prop(self.overlay, "alignment", "") | |
| +col.prop(self.overlay, "alignment", text="") | |
| ??? show_x_ray > show_in_front | |
| -col.prop(context.active_object, 'show_x_ray', toggle=False, text='X Ray') | |
| +col.prop(context.active_object, 'show_in_front', toggle=False, text='X Ray') | |
| ??? hide > hide_viewport | |
| -bpy.context.object.hide | |
| +bpy.context.object.hide_viewport | |
| ??? Group > Collection | |
| -bpy.types.Group() | |
| +bpy.types.Collection() | |
| ??? groups > collections | |
| -bpy.data.groups | |
| +bpy.data.collections | |
| ??? dupli_group > instance_collection | |
| -context.active_object.dupli_group | |
| +context.active_object.instance_collection | |
| ??? link | |
| -scene.objects.link(newCurve) | |
| +coll = context.view_layer.active_layer_collection.collection | |
| +coll.objects.link(newCurve) | |
| ??? link | |
| -bpy.context.scene.objects.link(newCurve) | |
| +bpy.context.collection.objects.link(newCurve) | |
| otherwise... | |
| AttributeError: 'bpy_prop_collection' object has no attribute 'link' | |
| ??? unlink | |
| -bpy.context.scene.objects.unlink(obj) | |
| +bpy.context.collection.objects.unlink(obj) | |
| ??? draw_type > display_type | |
| -bpy.context.object.data.draw_type = 'BBONE' | |
| +bpy.context.object.data.display_type = 'BBONE' | |
| ??? draw_size > display_size | |
| -bpy.data.cameras[cam_data_name].draw_size = 1.0 | |
| +bpy.data.cameras[cam_data_name].display_size = 1.0 | |
| ??? uv_textures name | |
| -me.uv_textures.new("Leaves") | |
| +me.uv_layers.new(name="Leaves") | |
| ??? transform_apply location rotation scale | |
| -bpy.ops.object.transform_apply(rotation=True, scale=True) | |
| +bpy.ops.object.transform_apply(location=False, rotation=True, scale=True) | |
| ??? ops _add layers | |
| -bpy.ops.mesh.primitive_cube_add(view_align=False, enter_editmode=False, | |
| - location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0), layers=current_layers) | |
| +bpy.ops.mesh.primitive_cube_add(view_align=False, enter_editmode=False, | |
| + location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0)) | |
| ??? view_align | |
| bpy.ops.curve.primitive_nurbs_path_add( | |
| - view_align=False, enter_editmode=False, location=(0, 0, 0) | |
| + align='WORLD', enter_editmode=False, location=(0, 0, 0) | |
| ) | |
| ??? mesh.primitive: radius > size | |
| -bpy.ops.mesh.primitive_ico_sphere_add(size=0.2) | |
| +bpy.ops.mesh.primitive_ico_sphere_add(radius=0.4) | |
| ??? space_data transform_orientation | |
| -orientation = bpy.context.space_data.transform_orientation | |
| -custom = bpy.context.space_data.current_orientation | |
| -bpy.context.space_data.transform_orientation = 'GLOBAL' | |
| +orient_slot = bpy.context.scene.transform_orientation_slots[0] | |
| +custom = orient_slot.custom_orientation | |
| +bpy.context.scene.transform_orientation_slots[0].type = 'GLOBAL' | |
| otherwise... | |
| AttributeError: 'SpaceView3D' object has no attribute 'transform_orientation' | |
| ??? show_manipulator > show_gizmo | |
| -bpy.context.space_data.show_manipulator = False | |
| +bpy.context.space_data.show_gizmo = True | |
| otherwise... | |
| AttributeError: 'SpaceView3D' object has no attribute 'show_manipulator' | |
| ??? translate proportional (str) > use_proportional_edit (bool) | |
| -bpy.ops.transform.translate(proportional='DISABLED') | |
| +bpy.ops.transform.translate(use_proportional_edit=False) | |
| ??? constraint_orientation > orient_type | |
| -bpy.ops.transform.resize('INVOKE_DEFAULT', constraint_axis=axis, constraint_orientation='GLOBAL') | |
| +bpy.ops.transform.resize('INVOKE_DEFAULT', constraint_axis=axis, orient_type='GLOBAL') | |
| *** user_preferences > preferences | |
| -addons = bpy.context.user_preferences.addons | |
| +addons = bpy.context.preferences.addons | |
| ??? user_preferences | |
| -bpy.context.user_preferences.system.use_weight_color_range | |
| +bpy.context.preferences.view.use_weight_color_range | |
| "input.active_keyconfig", "keymap.active_keyconfig" | |
| "input.show_ui_keyconfig", "keymap.show_ui_keyconfig" | |
| "system.author", "filepaths.author" | |
| "system.color_picker_type", "view.color_picker_type" | |
| "system.font_path_ui", "view.font_path_ui" | |
| "system.font_path_ui_mono", "view.font_path_ui_mono" | |
| "system.language", "view.language" | |
| "system.text_hinting", "view.text_hinting" | |
| "system.use_international_fonts", "view.use_international_fonts" | |
| "system.use_scripts_auto_execute", "filepaths.use_scripts_auto_execute" | |
| "system.use_tabs_as_spaces", "filepaths.use_tabs_as_spaces" | |
| "system.use_text_antialiasing", "view.use_text_antialiasing" | |
| "system.use_translate_interface", "view.use_translate_interface" | |
| "system.use_translate_new_dataname", "view.use_translate_new_dataname" | |
| "system.use_translate_tooltips", "view.use_translate_tooltips" | |
| "system.use_weight_color_range", "view.use_weight_color_range" | |
| "system.weight_color_range", "view.weight_color_range" | |
| "view.use_auto_perspective", "input.use_auto_perspective" | |
| "view.use_camera_lock_parent", "input.use_camera_lock_parent" | |
| "view.use_cursor_lock_adjust", "input.use_cursor_lock_adjust" | |
| "view.use_mouse_depth_cursor", "input.use_mouse_depth_cursor" | |
| "view.use_mouse_depth_navigate", "input.use_mouse_depth_navigate" | |
| "view.use_quit_dialog", "view.use_save_prompt" | |
| "view.use_rotate_around_active", "input.use_rotate_around_active" | |
| "view.use_zoom_to_mouse", "input.use_zoom_to_mouse" | |
| ??? wm.addon_enable > preferences.addon_enable | |
| -bpy.ops.wm.addon_enable(module=module) | |
| +bpy.ops.preferences.addon_enable(module=module) | |
| ??? wm.addon_userpref_show > preferences.addon_show | |
| -layout.operator("wm.addon_userpref_show", | |
| +layout.operator("preferences.addon_show", | |
| ??? select_mouse | |
| -mouse_right = context.user_preferences.inputs.select_mouse | |
| +wm = context.window_manager | |
| +keyconfig = wm.keyconfigs.active | |
| +mouse_right = getattr(keyconfig.preferences, "select_mouse", "LEFT") | |
| *** split: percentage > factor | |
| -split = row.split(percentage=0.10, align=True) | |
| +split = row.split(factor=0.10, align=True) | |
| *** row: align (keyword) | |
| -row = col.row(True) | |
| +row = col.row(align=True) | |
| otherwise... | |
| TypeError: UILayout.row(): required parameter "align" to be a keyword argument! | |
| *** scene_update_pre > depsgraph_update_pre | |
| -bpy.app.handlers.scene_update_pre | |
| +bpy.app.handlers.depsgraph_update_pre | |
| *** scene_update_post > depsgraph_update_post | |
| -bpy.app.handlers.scene_update_post.append(check_drivers) | |
| +bpy.app.handlers.depsgraph_update_post.append(check_drivers) | |
| ??? scene.update > view_layer.update | |
| -bpy.context.scene.update() | |
| +bpy.context.view_layer.update() | |
| ??? use_occlude_geometry > shading.show_xray | |
| -space_data.use_occlude_geometry | |
| +space_data.shading.show_xray | |
| otherwise... | |
| AttributeError: 'SpaceView3D' object has no attribute 'use_occlude_geometry' | |
| ??? Matrix Multiplication: * > @ | |
| -normal = rotation * mathutils.Vector((0.0, 0.0, 1.0)) | |
| +normal = rotation @ mathutils.Vector((0.0, 0.0, 1.0)) | |
| ??? viewport_shade > space_data.shading | |
| -self.snap_face = context.space_data.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'} | |
| -self.sctx.set_snap_mode(True, True, self.snap_face) | |
| +shading = context.space_data.shading | |
| +self.snap_face = not (snap_edge_and_vert and | |
| + (shading.show_xray or shading.type == 'WIREFRAME')) | |
| *** Property (annotations, class def only, not in methods) | |
| -b_prop = bpy.props.BoolProperty(name="Prop Name", default=True) | |
| +b_prop: bpy.props.BoolProperty(name="Prop Name", default=True) | |
| "BoolProperty", "BoolVectorProperty", "CollectionProperty", | |
| "EnumProperty", "FloatProperty", "FloatVectorProperty", | |
| "IntProperty", "IntVectorProperty", | |
| "PointerProperty", "StringProperty" | |
| otherwise... | |
| Warning: class FOO_OT_bar contains a properties which should be an annotation! | |
| make annotation: FOO_OT_bar.the_int_prop | |
| ??? .order | |
| -for k in cls.order: | |
| if k.startswith(some_str): | |
| - func, data = getattr(cls, k) | |
| +for k in cls.__annotations__: | |
| if k.startswith(some_str): | |
| + func, data = cls.__annotations__[k] | |
| otherwise... | |
| AttributeError: type object 'FOO_OT_bar' has no attribute 'the_int_prop' | |
| ??? event_timer_add: time_step (keyword) | |
| -self.timer = wm.event_timer_add(0.05, bpy.context.window) | |
| +self.timer = wm.event_timer_add(time_step=0.05, window=bpy.context.window) | |
| ??? frame_set: subframe (keyword) | |
| -context.scene.frame_set(10, 0.25) | |
| +context.scene.frame_set(10, subframe=0.25) | |
| ??? INFO_MT_ > TOPBAR_MT_ | |
| -box.menu("INFO_MT_file_import", icon='IMPORT') | |
| +box.menu("TOPBAR_MT_file_import", icon='IMPORT') | |
| ??? _specials > _context_menu | |
| -scene = context.scene.mat_specials | |
| +scene = context.scene.mat_context_menu | |
| -bpy.types.VIEW3D_MT_edit_mesh_specials.prepend(menu_func) | |
| +bpy.types.VIEW3D_MT_edit_mesh_context_menu.prepend(menu_func) | |
| ??? tweak_threshold > drag_threshold | |
| -tt = context.preferences.inputs.tweak_threshold | |
| +tt = context.preferences.inputs.drag_threshold | |
| otherwise... | |
| rna_uiItemR: property not found: PreferencesInput.tweak_threshold | |
| ??? cursor_location > cursor.location | |
| -endvertex = bpy.context.scene.cursor_location | |
| +endvertex = bpy.context.scene.cursor.location | |
| ??? snap_element (str) > snap_elements (set) | |
| -bpy.context.tool_settings.snap_element = 'VERTEX' | |
| +bpy.context.tool_settings.snap_elements = {'VERTEX'} | |
| otherwise... | |
| AttributeError: 'ToolSettings' object has no attribute 'snap_element' | |
| ??? pivot_point | |
| -pivot = bpy.context.space_data.pivot_point | |
| +pivot = bpy.context.tool_settings.transform_pivot_point | |
| otherwise... | |
| AttributeError: 'SpaceView3D' object has no attribute 'pivot_point' | |
| ??? proportional_edit | |
| ts = context.tool_settings | |
| -ts.proportional_edit = 'ENABLED' | |
| +ts.use_proportional_edit = True | |
| ??? resetting header_text_set | |
| -bpy.context.area.header_text_set(text='') | |
| +bpy.context.area.header_text_set(None) | |
| ??? register_module > register_class | |
| -bpy.utils.register_module(__name__) | |
| +for cls in classes: | |
| + bpy.utils.register_class(cls) | |
| ??? icon | |
| -row.label(text="Use Properties panel", icon='CURSOR') | |
| +row.label(text="Use Properties panel", icon='PIVOT_CURSOR') | |
| "BUTS", "PROPERTIES" | |
| "CURSOR", "PIVOT_CURSOR" | |
| "FULLSCREEN", "WINDOW" | |
| "IMAGE_COL", "IMAGE" | |
| "IPO", "GRAPH" | |
| "LAMP", "LIGHT" | |
| "LAMP_AREA", "LIGHT_AREA" | |
| "LAMP_DATA", "LIGHT_DATA" | |
| "LAMP_HEMI", "LIGHT_HEMI" | |
| "LAMP_POINT", "LIGHT_POINT" | |
| "LAMP_SPOT", "LIGHT_SPOT" | |
| "LAMP_SUN", "LIGHT_SUN" | |
| "LINK", # (maybe use DOT, LAYER_ACTIVE or LAYER_USED) | |
| "LINK_AREA", "LINKED" | |
| "OOPS", "OUTLINER" | |
| "ORTHO", "XRAY" | |
| "OUTLINER_DATA_LAMP", "OUTLINER_DATA_LIGHT" | |
| "OUTLINER_OB_LAMP", "OUTLINER_OB_LIGHT" | |
| "PLUG", "PLUGIN" | |
| "ROTACTIVE", "PIVOT_ACTIVE" | |
| "ROTATECENTER", "PIVOT_MEDIAN" | |
| "ROTATECOLLECTION", "PIVOT_INDIVIDUAL" | |
| "SCRIPTWIN", "PREFERENCES" | |
| "SMOOTH", "SHADING_RENDERED" | |
| "SOLID", "SHADING_SOLID" | |
| "WIRE", "SHADING_WIRE" | |
| "ALIGN", ?? | |
| "BBOX", ?? | |
| "BORDER_LASSO", ?? | |
| "BORDER_RECT", ?? | |
| "DOTSDOWN", ?? | |
| "DOTSUP", ?? | |
| "EDIT", ?? | |
| "GAME", ?? | |
| "GO_LEFT", ?? | |
| "INLINK", ?? | |
| "MANIPUL", ?? | |
| "MAN_ROT", ?? | |
| "MAN_SCALE", ?? | |
| "MAN_TRANS", ?? | |
| "OOPS", ?? | |
| "OPEN_RECENT", ?? | |
| "ORTHO", ?? | |
| "RADIO", ?? | |
| "RECOVER_AUTO", ?? | |
| "RENDER_REGION", ?? | |
| "ROTACTIVE", ?? | |
| "ROTATE", ?? | |
| "SAVE_AS", ?? | |
| "SAVE_COPY", ?? | |
| "SNAP_SURFACE", ?? | |
| "SPACE2", ?? | |
| "TEMPERATURE", ?? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment