fake-bge-module 20250312__py3-none-any.whl → 20260203__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {animsys_refactor → _animsys_refactor}/__init__.pyi +7 -6
- {bl_console_utils → _bl_console_utils}/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/__init__.pyi +1 -0
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_calltip/__init__.pyi +1 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_import/__init__.pyi +1 -5
- {bl_console_utils → _bl_console_utils}/autocomplete/complete_namespace/__init__.pyi +3 -13
- {bl_console_utils → _bl_console_utils}/autocomplete/intellisense/__init__.pyi +1 -10
- {bl_i18n_utils → _bl_i18n_utils}/__init__.pyi +2 -0
- _bl_i18n_utils/bl_extract_messages/__init__.pyi +28 -0
- {bl_i18n_utils → _bl_i18n_utils}/merge_po/__init__.pyi +2 -1
- {bl_i18n_utils → _bl_i18n_utils}/settings/__init__.pyi +10 -7
- {bl_i18n_utils → _bl_i18n_utils}/utils/__init__.pyi +53 -50
- _bl_i18n_utils/utils_cli/__init__.pyi +11 -0
- _bl_i18n_utils/utils_languages_menu/__init__.pyi +6 -0
- {bl_i18n_utils → _bl_i18n_utils}/utils_rtl/__init__.pyi +3 -2
- _bl_i18n_utils/utils_spell_check/__init__.pyi +22 -0
- {bl_previews_utils → _bl_previews_utils}/__init__.pyi +1 -0
- _bl_previews_utils/bl_previews_render/__init__.pyi +14 -0
- {bl_rna_utils → _bl_rna_utils}/__init__.pyi +1 -0
- {bl_rna_utils → _bl_rna_utils}/data_path/__init__.pyi +3 -2
- {bl_text_utils → _bl_text_utils}/__init__.pyi +1 -0
- _bl_text_utils/external_editor/__init__.pyi +6 -0
- {bl_ui_utils → _bl_ui_utils}/__init__.pyi +1 -0
- {bl_ui_utils → _bl_ui_utils}/layout/__init__.pyi +2 -1
- _blendfile_header/__init__.pyi +48 -0
- _bpy_internal/__init__.pyi +5 -1
- _bpy_internal/addons/__init__.pyi +1 -0
- _bpy_internal/addons/cli/__init__.pyi +2 -1
- _bpy_internal/assets/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/__init__.pyi +5 -0
- _bpy_internal/assets/remote_library_listing/blender_asset_library_openapi/__init__.pyi +13 -0
- _bpy_internal/disk_file_hash_service/__init__.pyi +19 -0
- _bpy_internal/disk_file_hash_service/backend_sqlite/__init__.pyi +48 -0
- _bpy_internal/disk_file_hash_service/hash_service/__init__.pyi +64 -0
- _bpy_internal/disk_file_hash_service/types/__init__.pyi +53 -0
- _bpy_internal/extensions/__init__.pyi +1 -0
- _bpy_internal/extensions/junction_module/__init__.pyi +8 -7
- _bpy_internal/extensions/stale_file_manager/__init__.pyi +9 -8
- _bpy_internal/extensions/wheel_manager/__init__.pyi +6 -5
- {bl_i18n_utils/utils_languages_menu → _bpy_internal/filesystem}/__init__.pyi +2 -2
- _bpy_internal/filesystem/locking/__init__.pyi +28 -0
- _bpy_internal/grease_pencil/__init__.pyi +1 -0
- _bpy_internal/grease_pencil/stroke/__init__.pyi +22 -6
- _bpy_internal/platform/__init__.pyi +5 -0
- _bpy_internal/platform/freedesktop/__init__.pyi +21 -0
- _bpy_internal/system_info/__init__.pyi +1 -0
- _bpy_internal/system_info/text_generate_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_runtime/__init__.pyi +2 -1
- _bpy_internal/system_info/url_prefill_startup/__init__.pyi +3 -2
- {bpy_restrict_state → _bpy_restrict_state}/__init__.pyi +1 -0
- _bpy_types/__init__.pyi +1635 -0
- {console_python → _console_python}/__init__.pyi +8 -7
- _console_shell/__init__.pyi +10 -0
- {graphviz_export → _graphviz_export}/__init__.pyi +3 -2
- _keyingsets_utils/__init__.pyi +21 -0
- {rna_info → _rna_info}/__init__.pyi +32 -27
- {rna_xml → _rna_xml}/__init__.pyi +7 -6
- addon_utils/__init__.pyi +13 -25
- aud/__init__.pyi +133 -155
- bge/__init__.pyi +1 -0
- bge/app/__init__.pyi +1 -0
- bge/constraints/__init__.pyi +22 -51
- bge/types/__init__.pyi +618 -1913
- bge_extras/__init__.pyi +1 -0
- bge_extras/logger/__init__.pyi +4 -3
- bgui/__init__.pyi +1 -0
- bgui/frame/__init__.pyi +1 -0
- bgui/frame_button/__init__.pyi +1 -0
- bgui/image/__init__.pyi +1 -1
- bgui/image_button/__init__.pyi +1 -0
- bgui/label/__init__.pyi +1 -0
- bgui/list_box/__init__.pyi +1 -1
- bgui/progress_bar/__init__.pyi +2 -1
- bgui/system/__init__.pyi +3 -5
- bgui/text_block/__init__.pyi +1 -0
- bgui/text_input/__init__.pyi +9 -8
- bgui/theme/__init__.pyi +4 -3
- bgui/widget/__init__.pyi +5 -4
- bl_app_override/__init__.pyi +4 -3
- bl_app_override/helpers/__init__.pyi +3 -2
- bl_app_template_utils/__init__.pyi +5 -4
- bl_app_templates_system/Game_Engine/__init__.pyi +5 -4
- bl_app_templates_system/Storyboarding/__init__.pyi +11 -0
- bl_app_templates_system/__init__.pyi +2 -0
- bl_keymap_utils/__init__.pyi +1 -0
- bl_keymap_utils/io/__init__.pyi +10 -9
- bl_keymap_utils/keymap_from_toolbar/__init__.pyi +2 -1
- bl_keymap_utils/keymap_hierarchy/__init__.pyi +2 -1
- bl_keymap_utils/platform_helpers/__init__.pyi +3 -2
- bl_keymap_utils/versioning/__init__.pyi +2 -1
- bl_math/__init__.pyi +4 -13
- bl_operators/__init__.pyi +4 -2
- bl_operators/add_mesh_torus/__init__.pyi +9 -9
- bl_operators/anim/__init__.pyi +90 -62
- bl_operators/assets/__init__.pyi +14 -18
- bl_operators/bmesh/__init__.pyi +1 -0
- bl_operators/bmesh/find_adjacent/__init__.pyi +12 -9
- bl_operators/bone_selection_sets/__init__.pyi +34 -60
- bl_operators/clip/__init__.pyi +39 -57
- bl_operators/connect_to_output/__init__.pyi +20 -18
- bl_operators/console/__init__.pyi +17 -25
- bl_operators/constraint/__init__.pyi +15 -21
- bl_operators/copy_global_transform/__init__.pyi +261 -0
- bl_operators/file/__init__.pyi +13 -17
- bl_operators/freestyle/__init__.pyi +15 -21
- bl_operators/geometry_nodes/__init__.pyi +30 -36
- bl_operators/grease_pencil/__init__.pyi +5 -5
- bl_operators/image/__init__.pyi +14 -22
- bl_operators/image_as_planes/__init__.pyi +36 -42
- bl_operators/mesh/__init__.pyi +8 -53
- bl_operators/node/__init__.pyi +375 -92
- bl_operators/node_editor/__init__.pyi +1 -0
- bl_operators/node_editor/node_functions/__init__.pyi +10 -9
- bl_operators/object/__init__.pyi +57 -98
- bl_operators/object_align/__init__.pyi +8 -8
- bl_operators/object_quick_effects/__init__.pyi +15 -21
- bl_operators/object_randomize_transform/__init__.pyi +6 -6
- bl_operators/presets/__init__.pyi +46 -94
- bl_operators/rigidbody/__init__.pyi +12 -16
- bl_operators/screen_play_rendered_anim/__init__.pyi +5 -5
- bl_operators/sequencer/__init__.pyi +40 -54
- bl_operators/spreadsheet/__init__.pyi +7 -7
- bl_operators/userpref/__init__.pyi +69 -117
- bl_operators/uvcalc_follow_active/__init__.pyi +8 -8
- bl_operators/uvcalc_lightmap/__init__.pyi +12 -12
- bl_operators/uvcalc_transform/__init__.pyi +39 -28
- bl_operators/vertexpaint_dirt/__init__.pyi +7 -7
- bl_operators/view3d/__init__.pyi +31 -43
- bl_operators/wm/__init__.pyi +139 -231
- bl_operators/world/__init__.pyi +6 -6
- bl_ui/__init__.pyi +18 -17
- bl_ui/anim/__init__.pyi +5 -5
- bl_ui/asset_shelf/__init__.pyi +5 -5
- bl_ui/generic_ui_list/__init__.pyi +12 -26
- bl_ui/node_add_menu/__init__.pyi +281 -12
- bl_ui/node_add_menu_compositor/__init__.pyi +135 -91
- bl_ui/node_add_menu_geometry/__init__.pyi +407 -263
- bl_ui/node_add_menu_shader/__init__.pyi +67 -67
- bl_ui/node_add_menu_texture/__init__.pyi +25 -69
- bl_ui/properties_animviz/__init__.pyi +3 -2
- bl_ui/properties_collection/__init__.pyi +20 -30
- bl_ui/properties_constraint/__init__.pyi +228 -450
- bl_ui/properties_data_armature/__init__.pyi +45 -79
- bl_ui/properties_data_bone/__init__.pyi +33 -51
- bl_ui/properties_data_camera/__init__.pyi +43 -75
- bl_ui/properties_data_curve/__init__.pyi +42 -101
- bl_ui/properties_data_curves/__init__.pyi +21 -35
- bl_ui/properties_data_empty/__init__.pyi +8 -10
- bl_ui/properties_data_grease_pencil/__init__.pyi +49 -87
- bl_ui/properties_data_lattice/__init__.pyi +12 -18
- bl_ui/properties_data_light/__init__.pyi +28 -46
- bl_ui/properties_data_lightprobe/__init__.pyi +35 -61
- bl_ui/properties_data_mesh/__init__.pyi +73 -120
- bl_ui/properties_data_metaball/__init__.pyi +16 -26
- bl_ui/properties_data_modifier/__init__.pyi +34 -39
- bl_ui/properties_data_pointcloud/__init__.pyi +17 -27
- bl_ui/properties_data_shaderfx/__init__.pyi +4 -4
- bl_ui/properties_data_speaker/__init__.pyi +15 -25
- bl_ui/properties_data_volume/__init__.pyi +22 -38
- bl_ui/properties_freestyle/__init__.pyi +79 -127
- bl_ui/properties_game/__init__.pyi +88 -84
- bl_ui/properties_grease_pencil_common/__init__.pyi +33 -190
- bl_ui/properties_mask_common/__init__.pyi +33 -45
- bl_ui/properties_material/__init__.pyi +52 -111
- bl_ui/properties_material_gpencil/__init__.pyi +48 -68
- bl_ui/properties_object/__init__.pyi +123 -93
- bl_ui/properties_output/__init__.pyi +103 -81
- bl_ui/properties_paint_common/__init__.pyi +78 -59
- bl_ui/properties_particle/__init__.pyi +160 -262
- bl_ui/properties_physics_cloth/__init__.pyi +36 -62
- bl_ui/properties_physics_common/__init__.pyi +11 -11
- bl_ui/properties_physics_dynamicpaint/__init__.pyi +81 -123
- bl_ui/properties_physics_field/__init__.pyi +35 -53
- bl_ui/properties_physics_fluid/__init__.pyi +106 -160
- bl_ui/properties_physics_geometry_nodes/__init__.pyi +6 -6
- bl_ui/properties_physics_rigidbody/__init__.pyi +28 -42
- bl_ui/properties_physics_rigidbody_constraint/__init__.pyi +44 -68
- bl_ui/properties_physics_softbody/__init__.pyi +38 -66
- bl_ui/properties_render/__init__.pyi +267 -259
- bl_ui/properties_scene/__init__.pyi +69 -72
- bl_ui/properties_strip/__init__.pyi +744 -0
- bl_ui/properties_strip_modifier/__init__.pyi +45 -0
- bl_ui/properties_texture/__init__.pyi +69 -122
- bl_ui/properties_view_layer/__init__.pyi +97 -51
- bl_ui/properties_workspace/__init__.pyi +12 -18
- bl_ui/properties_world/__init__.pyi +33 -53
- bl_ui/space_clip/__init__.pyi +231 -311
- bl_ui/space_console/__init__.pyi +14 -24
- bl_ui/space_dopesheet/__init__.pyi +193 -125
- bl_ui/space_filebrowser/__init__.pyi +107 -131
- bl_ui/space_graph/__init__.pyi +93 -80
- bl_ui/space_image/__init__.pyi +207 -291
- bl_ui/space_info/__init__.pyi +14 -24
- bl_ui/space_logic/__init__.pyi +14 -22
- bl_ui/space_nla/__init__.pyi +63 -69
- bl_ui/space_node/__init__.pyi +215 -154
- bl_ui/space_outliner/__init__.pyi +65 -61
- bl_ui/space_properties/__init__.pyi +41 -16
- bl_ui/space_sequencer/__init__.pyi +276 -979
- bl_ui/space_spreadsheet/__init__.pyi +27 -23
- bl_ui/space_statusbar/__init__.pyi +4 -4
- bl_ui/space_text/__init__.pyi +39 -73
- bl_ui/space_time/__init__.pyi +33 -78
- bl_ui/space_toolsystem_common/__init__.pyi +31 -28
- bl_ui/space_toolsystem_toolbar/__init__.pyi +67 -43
- bl_ui/space_topbar/__init__.pyi +68 -111
- bl_ui/space_userpref/__init__.pyi +310 -445
- bl_ui/space_view3d/__init__.pyi +667 -1122
- bl_ui/space_view3d_sidebar/__init__.pyi +127 -0
- bl_ui/space_view3d_toolbar/__init__.pyi +237 -966
- bl_ui/utils/__init__.pyi +4 -3
- blend_render_info/__init__.pyi +4 -2
- blf/__init__.pyi +92 -59
- bmesh/__init__.pyi +4 -10
- bmesh/geometry/__init__.pyi +2 -4
- bmesh/ops/__init__.pyi +442 -815
- bmesh/types/__init__.pyi +377 -720
- bmesh/utils/__init__.pyi +20 -45
- bpy/__init__.pyi +2 -1
- bpy/app/__init__.pyi +96 -90
- bpy/app/handlers/__init__.pyi +24 -19
- bpy/app/icons/__init__.pyi +2 -7
- bpy/app/timers/__init__.pyi +5 -18
- bpy/app/translations/__init__.pyi +21 -35
- bpy/msgbus/__init__.pyi +20 -9
- bpy/ops/__init__.pyi +21 -3
- bpy/ops/action/__init__.pyi +121 -226
- bpy/ops/anim/__init__.pyi +204 -358
- bpy/ops/armature/__init__.pyi +129 -249
- bpy/ops/asset/__init__.pyi +82 -111
- bpy/ops/bge_bricknodes/__init__.pyi +61 -0
- bpy/ops/boid/__init__.pyi +44 -50
- bpy/ops/bricknodes/__init__.pyi +37 -0
- bpy/ops/brush/__init__.pyi +33 -120
- bpy/ops/buttons/__init__.pyi +27 -83
- bpy/ops/cachefile/__init__.pyi +16 -74
- bpy/ops/camera/__init__.pyi +3 -13
- bpy/ops/clip/__init__.pyi +278 -558
- bpy/ops/cloth/__init__.pyi +2 -6
- bpy/ops/collection/__init__.pyi +34 -44
- bpy/ops/console/__init__.pyi +70 -111
- bpy/ops/constraint/__init__.pyi +34 -102
- bpy/ops/curve/__init__.pyi +163 -315
- bpy/ops/curves/__init__.pyi +163 -189
- bpy/ops/cycles/__init__.pyi +8 -18
- bpy/ops/dpaint/__init__.pyi +21 -30
- bpy/ops/ed/__init__.pyi +59 -103
- bpy/ops/export_anim/__init__.pyi +4 -11
- bpy/ops/export_scene/__init__.pyi +29 -174
- bpy/ops/extensions/__init__.pyi +102 -194
- bpy/ops/file/__init__.pyi +166 -272
- bpy/ops/fluid/__init__.pyi +78 -86
- bpy/ops/font/__init__.pyi +73 -164
- bpy/ops/geometry/__init__.pyi +33 -144
- bpy/ops/gizmogroup/__init__.pyi +8 -14
- bpy/ops/gpencil/__init__.pyi +31 -58
- bpy/ops/graph/__init__.pyi +176 -411
- bpy/ops/grease_pencil/__init__.pyi +416 -639
- bpy/ops/image/__init__.pyi +148 -492
- bpy/ops/import_anim/__init__.pyi +5 -18
- bpy/ops/import_curve/__init__.pyi +4 -6
- bpy/ops/import_scene/__init__.pyi +22 -49
- bpy/ops/info/__init__.pyi +27 -43
- bpy/ops/lattice/__init__.pyi +26 -43
- bpy/ops/logic/__init__.pyi +49 -122
- bpy/ops/logic_nodes/__init__.pyi +461 -0
- bpy/ops/marker/__init__.pyi +24 -60
- bpy/ops/mask/__init__.pyi +118 -222
- bpy/ops/material/__init__.pyi +19 -18
- bpy/ops/mball/__init__.pyi +13 -39
- bpy/ops/mesh/__init__.pyi +409 -1264
- bpy/ops/nla/__init__.pyi +140 -232
- bpy/ops/node/__init__.pyi +1189 -807
- bpy/ops/object/__init__.pyi +806 -1659
- bpy/ops/outliner/__init__.pyi +284 -432
- bpy/ops/paint/__init__.pyi +189 -381
- bpy/ops/paintcurve/__init__.pyi +29 -44
- bpy/ops/palette/__init__.pyi +23 -34
- bpy/ops/particle/__init__.pyi +135 -201
- bpy/ops/pointcloud/__init__.pyi +23 -42
- bpy/ops/pose/__init__.pyi +195 -310
- bpy/ops/poselib/__init__.pyi +45 -73
- bpy/ops/preferences/__init__.pyi +89 -221
- bpy/ops/ptcache/__init__.pyi +32 -39
- bpy/ops/render/__init__.pyi +36 -83
- bpy/ops/rigidbody/__init__.pyi +47 -78
- bpy/ops/scene/__init__.pyi +169 -222
- bpy/ops/screen/__init__.pyi +146 -259
- bpy/ops/script/__init__.pyi +9 -15
- bpy/ops/sculpt/__init__.pyi +194 -354
- bpy/ops/sculpt_curves/__init__.pyi +21 -29
- bpy/ops/sequencer/__init__.pyi +586 -836
- bpy/ops/sound/__init__.pyi +25 -131
- bpy/ops/spreadsheet/__init__.pyi +34 -21
- bpy/ops/surface/__init__.pyi +7 -54
- bpy/ops/text/__init__.pyi +166 -281
- bpy/ops/text_editor/__init__.pyi +2 -6
- bpy/ops/texture/__init__.pyi +20 -22
- bpy/ops/transform/__init__.pyi +108 -445
- bpy/ops/ui/__init__.pyi +157 -219
- bpy/ops/uilist/__init__.pyi +4 -16
- bpy/ops/uv/__init__.pyi +291 -347
- bpy/ops/view2d/__init__.pyi +29 -88
- bpy/ops/view3d/__init__.pyi +238 -438
- bpy/ops/wm/__init__.pyi +651 -1510
- bpy/ops/workspace/__init__.pyi +42 -44
- bpy/ops/world/__init__.pyi +12 -13
- bpy/path/__init__.pyi +6 -37
- bpy/props/__init__.pyi +395 -259
- bpy/{_typing → stub_internal}/__init__.pyi +1 -0
- bpy/{_typing → stub_internal}/rna_enums/__init__.pyi +214 -114
- bpy/types/__init__.pyi +93286 -103826
- bpy/utils/__init__.pyi +46 -104
- bpy/utils/previews/__init__.pyi +7 -15
- bpy/utils/units/__init__.pyi +6 -15
- bpy_extras/__init__.pyi +1 -0
- bpy_extras/anim_utils/__init__.pyi +32 -23
- bpy_extras/asset_utils/__init__.pyi +1 -0
- bpy_extras/bmesh_utils/__init__.pyi +2 -2
- bpy_extras/id_map_utils/__init__.pyi +15 -6
- bpy_extras/image_utils/__init__.pyi +3 -11
- bpy_extras/io_utils/__init__.pyi +22 -38
- bpy_extras/keyconfig_utils/__init__.pyi +5 -4
- bpy_extras/mesh_utils/__init__.pyi +3 -14
- bpy_extras/node_shader_utils/__init__.pyi +63 -70
- bpy_extras/node_utils/__init__.pyi +4 -3
- bpy_extras/object_utils/__init__.pyi +6 -19
- bpy_extras/view3d_utils/__init__.pyi +1 -18
- bpy_extras/wm_utils/__init__.pyi +1 -0
- bpy_extras/wm_utils/progress_report/__init__.pyi +12 -11
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/METADATA +9 -3
- fake_bge_module-20260203.dist-info/RECORD +414 -0
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/WHEEL +1 -1
- {fake_bge_module-20250312.dist-info → fake_bge_module-20260203.dist-info}/top_level.txt +16 -16
- freestyle/__init__.pyi +1 -0
- freestyle/chainingiterators/__init__.pyi +41 -60
- freestyle/functions/__init__.pyi +56 -194
- freestyle/predicates/__init__.pyi +11 -61
- freestyle/shaders/__init__.pyi +95 -156
- freestyle/types/__init__.pyi +306 -941
- freestyle/utils/ContextFunctions/__init__.pyi +4 -24
- freestyle/utils/__init__.pyi +46 -36
- gpu/__init__.pyi +84 -5
- gpu/capabilities/__init__.pyi +1 -21
- gpu/matrix/__init__.pyi +16 -24
- gpu/platform/__init__.pyi +3 -7
- gpu/select/__init__.pyi +2 -1
- gpu/shader/__init__.pyi +43 -9
- gpu/state/__init__.pyi +66 -44
- gpu/texture/__init__.pyi +4 -5
- gpu/types/__init__.pyi +216 -216
- gpu_extras/__init__.pyi +1 -0
- gpu_extras/batch/__init__.pyi +2 -5
- gpu_extras/presets/__init__.pyi +9 -10
- idprop/__init__.pyi +17 -0
- idprop/types/__init__.pyi +18 -17
- imbuf/__init__.pyi +13 -9
- imbuf/types/__init__.pyi +10 -23
- keyingsets_builtins/__init__.pyi +51 -93
- mathutils/__init__.pyi +296 -2255
- mathutils/bvhtree/__init__.pyi +24 -30
- mathutils/geometry/__init__.pyi +83 -132
- mathutils/interpolate/__init__.pyi +7 -5
- mathutils/kdtree/__init__.pyi +5 -14
- mathutils/noise/__init__.pyi +62 -106
- nodeitems_builtins/__init__.pyi +5 -4
- nodeitems_utils/__init__.pyi +10 -9
- rna_keymap_ui/__init__.pyi +7 -6
- rna_prop_ui/__init__.pyi +14 -13
- _bpy_internal/freedesktop/__init__.pyi +0 -20
- bgl/__init__.pyi +0 -4235
- bl_i18n_utils/bl_extract_messages/__init__.pyi +0 -24
- bl_i18n_utils/utils_cli/__init__.pyi +0 -10
- bl_previews_utils/bl_previews_render/__init__.pyi +0 -11
- bl_text_utils/external_editor/__init__.pyi +0 -5
- bpy_types/__init__.pyi +0 -29
- console_shell/__init__.pyi +0 -9
- fake_bge_module-20250312.dist-info/RECORD +0 -395
- keyingsets_utils/__init__.pyi +0 -18
- {animsys_refactor → _animsys_refactor}/py.typed +0 -0
- {bgl → _bl_console_utils}/py.typed +0 -0
- {bl_console_utils → _bl_i18n_utils}/py.typed +0 -0
- {bl_i18n_utils → _bl_previews_utils}/py.typed +0 -0
- {bl_previews_utils → _bl_rna_utils}/py.typed +0 -0
- {bl_rna_utils → _bl_text_utils}/py.typed +0 -0
- {bl_text_utils → _bl_ui_utils}/py.typed +0 -0
- {bl_ui_utils → _blendfile_header}/py.typed +0 -0
- {bpy_restrict_state → _bpy_restrict_state}/py.typed +0 -0
- {bpy_types → _bpy_types}/py.typed +0 -0
- {console_python → _console_python}/py.typed +0 -0
- {console_shell → _console_shell}/py.typed +0 -0
- {graphviz_export → _graphviz_export}/py.typed +0 -0
- {keyingsets_utils → _keyingsets_utils}/py.typed +0 -0
- {rna_info → _rna_info}/py.typed +0 -0
- {rna_xml → _rna_xml}/py.typed +0 -0
bmesh/types/__init__.pyi
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"""
|
|
2
|
+
SUBSTITUTION REPLACEMENT 'UV_STICKY_SELECT_MODE_REF':
|
|
3
|
+
(bpy.types.ToolSettings.uv_sticky_select_mode which may be passed in directly).
|
|
4
|
+
|
|
5
|
+
SUBSTITUTION REPLACEMENT 'UV_STICKY_SELECT_MODE_TYPE':
|
|
6
|
+
Literal['SHARED_LOCATION', 'DISABLED', 'SHARED_VERTEX']
|
|
7
|
+
|
|
8
|
+
SUBSTITUTION REPLACEMENT 'UV_SELECT_FLUSH_MODE_NEEDED':
|
|
9
|
+
This function selection-mode independent, typically bmesh.types.BMesh.uv_select_flush_mode should be called afterwards.
|
|
10
|
+
|
|
11
|
+
SUBSTITUTION REPLACEMENT 'UV_SELECT_SYNC_TO_MESH_NEEDED':
|
|
12
|
+
This function doesn't flush the selection to the mesh, typically bmesh.types.BMesh.uv_select_sync_to_mesh should be called afterwards.
|
|
13
|
+
|
|
2
14
|
|
|
3
15
|
--------------------
|
|
4
16
|
|
|
@@ -22,166 +34,112 @@
|
|
|
22
34
|
import typing
|
|
23
35
|
import collections.abc
|
|
24
36
|
import typing_extensions
|
|
37
|
+
import numpy.typing as npt
|
|
25
38
|
import bpy.types
|
|
26
39
|
import mathutils
|
|
27
40
|
|
|
28
41
|
class BMDeformVert:
|
|
29
|
-
def clear(self):
|
|
42
|
+
def clear(self) -> None:
|
|
30
43
|
"""Clears all weights."""
|
|
31
44
|
|
|
32
|
-
def get(self, key: int, default: typing.Any | None = None):
|
|
45
|
+
def get(self, key: int, default: typing.Any | None = None) -> None:
|
|
33
46
|
"""Returns the deform weight matching the key or default
|
|
34
|
-
when not found (matches
|
|
47
|
+
when not found (matches Pythons dictionary function of the same name).
|
|
35
48
|
|
|
36
49
|
:param key: The key associated with deform weight.
|
|
37
|
-
:type key: int
|
|
38
50
|
:param default: Optional argument for the value to return if
|
|
39
51
|
key is not found.
|
|
40
|
-
:type default: typing.Any | None
|
|
41
52
|
"""
|
|
42
53
|
|
|
43
54
|
def items(self) -> list[tuple[int, float]]:
|
|
44
55
|
"""Return (group, weight) pairs for this vertex
|
|
45
|
-
(matching
|
|
56
|
+
(matching Pythons dict.items() functionality).
|
|
46
57
|
|
|
47
58
|
:return: (key, value) pairs for each deform weight of this vertex.
|
|
48
|
-
:rtype: list[tuple[int, float]]
|
|
49
59
|
"""
|
|
50
60
|
|
|
51
61
|
def keys(self) -> list[int]:
|
|
52
62
|
"""Return the group indices used by this vertex
|
|
53
|
-
(matching
|
|
63
|
+
(matching Pythons dict.keys() functionality).
|
|
54
64
|
|
|
55
65
|
:return: the deform group this vertex uses
|
|
56
|
-
:rtype: list[int]
|
|
57
66
|
"""
|
|
58
67
|
|
|
59
68
|
def values(self) -> list[float]:
|
|
60
69
|
"""Return the weights of the deform vertex
|
|
61
|
-
(matching
|
|
70
|
+
(matching Pythons dict.values() functionality).
|
|
62
71
|
|
|
63
72
|
:return: The weights that influence this vertex
|
|
64
|
-
:rtype: list[float]
|
|
65
73
|
"""
|
|
66
74
|
|
|
67
75
|
class BMEdge:
|
|
68
76
|
"""The BMesh edge connecting 2 verts"""
|
|
69
77
|
|
|
70
78
|
hide: bool
|
|
71
|
-
""" Hidden state of this element.
|
|
72
|
-
|
|
73
|
-
:type: bool
|
|
74
|
-
"""
|
|
79
|
+
""" Hidden state of this element."""
|
|
75
80
|
|
|
76
81
|
index: int
|
|
77
|
-
""" Index of this element.
|
|
78
|
-
|
|
79
|
-
:type: int
|
|
80
|
-
"""
|
|
82
|
+
""" Index of this element."""
|
|
81
83
|
|
|
82
84
|
is_boundary: bool
|
|
83
|
-
""" True when this edge is at the boundary of a face (read-only).
|
|
84
|
-
|
|
85
|
-
:type: bool
|
|
86
|
-
"""
|
|
85
|
+
""" True when this edge is at the boundary of a face (read-only)."""
|
|
87
86
|
|
|
88
87
|
is_contiguous: bool
|
|
89
|
-
""" True when this edge is manifold, between two faces with the same winding (read-only).
|
|
90
|
-
|
|
91
|
-
:type: bool
|
|
92
|
-
"""
|
|
88
|
+
""" True when this edge is manifold, between two faces with the same winding (read-only)."""
|
|
93
89
|
|
|
94
90
|
is_convex: bool
|
|
95
|
-
""" True when this edge joins two convex faces, depends on a valid face normal (read-only).
|
|
96
|
-
|
|
97
|
-
:type: bool
|
|
98
|
-
"""
|
|
91
|
+
""" True when this edge joins two convex faces, depends on a valid face normal (read-only)."""
|
|
99
92
|
|
|
100
93
|
is_manifold: bool
|
|
101
|
-
""" True when this edge is manifold (read-only).
|
|
102
|
-
|
|
103
|
-
:type: bool
|
|
104
|
-
"""
|
|
94
|
+
""" True when this edge is manifold (read-only)."""
|
|
105
95
|
|
|
106
96
|
is_valid: bool
|
|
107
|
-
""" True when this element is valid (hasn't been removed).
|
|
108
|
-
|
|
109
|
-
:type: bool
|
|
110
|
-
"""
|
|
97
|
+
""" True when this element is valid (hasn't been removed)."""
|
|
111
98
|
|
|
112
99
|
is_wire: bool
|
|
113
|
-
""" True when this edge is not connected to any faces (read-only).
|
|
114
|
-
|
|
115
|
-
:type: bool
|
|
116
|
-
"""
|
|
100
|
+
""" True when this edge is not connected to any faces (read-only)."""
|
|
117
101
|
|
|
118
|
-
link_faces:
|
|
119
|
-
""" Faces connected to this edge, (read-only).
|
|
102
|
+
link_faces: typing.Any
|
|
103
|
+
""" Faces connected to this edge, (read-only)."""
|
|
120
104
|
|
|
121
|
-
:
|
|
122
|
-
"""
|
|
123
|
-
|
|
124
|
-
link_loops: BMElemSeq[BMLoop]
|
|
125
|
-
""" Loops connected to this edge, (read-only).
|
|
126
|
-
|
|
127
|
-
:type: BMElemSeq[BMLoop]
|
|
128
|
-
"""
|
|
105
|
+
link_loops: typing.Any
|
|
106
|
+
""" Loops connected to this edge, (read-only)."""
|
|
129
107
|
|
|
130
108
|
seam: bool
|
|
131
|
-
""" Seam for UV unwrapping.
|
|
132
|
-
|
|
133
|
-
:type: bool
|
|
134
|
-
"""
|
|
109
|
+
""" Seam for UV unwrapping."""
|
|
135
110
|
|
|
136
111
|
select: bool
|
|
137
|
-
""" Selected state of this element.
|
|
138
|
-
|
|
139
|
-
:type: bool
|
|
140
|
-
"""
|
|
112
|
+
""" Selected state of this element."""
|
|
141
113
|
|
|
142
114
|
smooth: bool
|
|
143
|
-
""" Smooth state of this element.
|
|
144
|
-
|
|
145
|
-
:type: bool
|
|
146
|
-
"""
|
|
115
|
+
""" Smooth state of this element."""
|
|
147
116
|
|
|
148
117
|
tag: bool
|
|
149
|
-
""" Generic attribute scripts can use for own logic
|
|
150
|
-
|
|
151
|
-
:type: bool
|
|
152
|
-
"""
|
|
118
|
+
""" Generic attribute scripts can use for own logic"""
|
|
153
119
|
|
|
154
|
-
verts:
|
|
155
|
-
""" Verts this edge uses (always 2), (read-only).
|
|
156
|
-
|
|
157
|
-
:type: BMElemSeq[BMVert]
|
|
158
|
-
"""
|
|
120
|
+
verts: typing.Any
|
|
121
|
+
""" Verts this edge uses (always 2), (read-only)."""
|
|
159
122
|
|
|
160
123
|
def calc_face_angle(self, fallback: typing.Any | None = None) -> float:
|
|
161
124
|
"""
|
|
162
125
|
|
|
163
|
-
:param fallback: return this when the edge
|
|
126
|
+
:param fallback: return this when the edge doesnt have 2 faces
|
|
164
127
|
(instead of raising a `ValueError`).
|
|
165
|
-
:type fallback: typing.Any | None
|
|
166
128
|
:return: The angle between 2 connected faces in radians.
|
|
167
|
-
:rtype: float
|
|
168
129
|
"""
|
|
169
130
|
|
|
170
131
|
def calc_face_angle_signed(self, fallback: typing.Any | None = None) -> float:
|
|
171
132
|
"""
|
|
172
133
|
|
|
173
|
-
:param fallback: return this when the edge
|
|
134
|
+
:param fallback: return this when the edge doesnt have 2 faces
|
|
174
135
|
(instead of raising a `ValueError`).
|
|
175
|
-
:type fallback: typing.Any | None
|
|
176
136
|
:return: The angle between 2 connected faces in radians (negative for concave join).
|
|
177
|
-
:rtype: float
|
|
178
137
|
"""
|
|
179
138
|
|
|
180
139
|
def calc_length(self) -> float:
|
|
181
140
|
"""
|
|
182
141
|
|
|
183
142
|
:return: The length between both verts.
|
|
184
|
-
:rtype: float
|
|
185
143
|
"""
|
|
186
144
|
|
|
187
145
|
def calc_tangent(self, loop: BMLoop) -> mathutils.Vector:
|
|
@@ -189,44 +147,37 @@ class BMEdge:
|
|
|
189
147
|
This uses the face normal for calculation.
|
|
190
148
|
|
|
191
149
|
:param loop: The loop used for tangent calculation.
|
|
192
|
-
:type loop: BMLoop
|
|
193
150
|
:return: a normalized vector.
|
|
194
|
-
:rtype: mathutils.Vector
|
|
195
151
|
"""
|
|
196
152
|
|
|
197
|
-
def copy_from(self, other: typing_extensions.Self):
|
|
153
|
+
def copy_from(self, other: typing_extensions.Self) -> None:
|
|
198
154
|
"""Copy values from another element of matching type.
|
|
199
155
|
|
|
200
156
|
:param other:
|
|
201
|
-
:type other: typing_extensions.Self
|
|
202
157
|
"""
|
|
203
158
|
|
|
204
|
-
def hide_set(self, hide: bool):
|
|
159
|
+
def hide_set(self, hide: bool) -> None:
|
|
205
160
|
"""Set the hide state.
|
|
206
161
|
This is different from the hide attribute because it updates the selection and hide state of associated geometry.
|
|
207
162
|
|
|
208
163
|
:param hide: Hidden or visible.
|
|
209
|
-
:type hide: bool
|
|
210
164
|
"""
|
|
211
165
|
|
|
212
|
-
def normal_update(self):
|
|
166
|
+
def normal_update(self) -> None:
|
|
213
167
|
"""Update normals of all connected faces and the edge verts."""
|
|
214
168
|
|
|
215
169
|
def other_vert(self, vert: BMVert) -> BMVert | None:
|
|
216
170
|
"""Return the other vertex on this edge or None if the vertex is not used by this edge.
|
|
217
171
|
|
|
218
172
|
:param vert: a vert in this edge.
|
|
219
|
-
:type vert: BMVert
|
|
220
173
|
:return: The edges other vert.
|
|
221
|
-
:rtype: BMVert | None
|
|
222
174
|
"""
|
|
223
175
|
|
|
224
|
-
def select_set(self, select: bool):
|
|
176
|
+
def select_set(self, select: bool) -> None:
|
|
225
177
|
"""Set the selection.
|
|
226
178
|
This is different from the select attribute because it updates the selection state of associated geometry.
|
|
227
179
|
|
|
228
180
|
:param select: Select or de-select.
|
|
229
|
-
:type select: bool
|
|
230
181
|
"""
|
|
231
182
|
|
|
232
183
|
def __getitem__[_GenericType1](
|
|
@@ -235,50 +186,44 @@ class BMEdge:
|
|
|
235
186
|
"""
|
|
236
187
|
|
|
237
188
|
:param key:
|
|
238
|
-
:type key: BMLayerItem[_GenericType1]
|
|
239
189
|
:return:
|
|
240
|
-
:rtype: _GenericType1
|
|
241
190
|
"""
|
|
242
191
|
|
|
243
192
|
def __setitem__[_GenericType1](
|
|
244
193
|
self, key: BMLayerItem[_GenericType1], value: _GenericType1
|
|
245
|
-
):
|
|
194
|
+
) -> None:
|
|
246
195
|
"""
|
|
247
196
|
|
|
248
197
|
:param key:
|
|
249
|
-
:type key: BMLayerItem[_GenericType1]
|
|
250
198
|
:param value:
|
|
251
|
-
:type value: _GenericType1
|
|
252
199
|
"""
|
|
253
200
|
|
|
254
|
-
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]):
|
|
201
|
+
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]) -> None:
|
|
255
202
|
"""
|
|
256
203
|
|
|
257
204
|
:param key:
|
|
258
|
-
:type key: BMLayerItem[_GenericType1]
|
|
259
205
|
"""
|
|
260
206
|
|
|
261
207
|
class BMEdgeSeq:
|
|
262
208
|
layers: BMLayerAccessEdge
|
|
263
|
-
""" custom-data layers (read-only).
|
|
264
|
-
|
|
265
|
-
:type: BMLayerAccessEdge
|
|
266
|
-
"""
|
|
209
|
+
""" custom-data layers (read-only)."""
|
|
267
210
|
|
|
268
|
-
def ensure_lookup_table(self):
|
|
211
|
+
def ensure_lookup_table(self) -> None:
|
|
269
212
|
"""Ensure internal data needed for int subscription is initialized with verts/edges/faces, eg bm.verts[index].This needs to be called again after adding/removing data in this sequence."""
|
|
270
213
|
|
|
271
|
-
def get(
|
|
214
|
+
def get(
|
|
215
|
+
self,
|
|
216
|
+
verts: collections.abc.Sequence[BMVert],
|
|
217
|
+
fallback: typing.Any | None = None,
|
|
218
|
+
) -> BMEdge:
|
|
272
219
|
"""Return an edge which uses the verts passed.
|
|
273
220
|
|
|
274
221
|
:param verts: Sequence of verts.
|
|
275
|
-
:type verts: collections.abc.Sequence[BMVert]
|
|
276
222
|
:param fallback: Return this value if nothing is found.
|
|
277
223
|
:return: The edge found or None
|
|
278
|
-
:rtype: BMEdge
|
|
279
224
|
"""
|
|
280
225
|
|
|
281
|
-
def index_update(self):
|
|
226
|
+
def index_update(self) -> None:
|
|
282
227
|
"""Initialize the index values of this sequence.This is the equivalent of looping over all elements and assigning the index values."""
|
|
283
228
|
|
|
284
229
|
def new(
|
|
@@ -287,34 +232,29 @@ class BMEdgeSeq:
|
|
|
287
232
|
"""Create a new edge from a given pair of verts.
|
|
288
233
|
|
|
289
234
|
:param verts: Vertex pair.
|
|
290
|
-
:type verts: collections.abc.Sequence[BMVert]
|
|
291
235
|
:param example: Existing edge to initialize settings (optional argument).
|
|
292
|
-
:type example: BMEdge | None
|
|
293
236
|
:return: The newly created edge.
|
|
294
|
-
:rtype: BMEdge
|
|
295
237
|
"""
|
|
296
238
|
|
|
297
|
-
def remove(self, edge: BMEdge):
|
|
239
|
+
def remove(self, edge: BMEdge) -> None:
|
|
298
240
|
"""Remove an edge.
|
|
299
241
|
|
|
300
|
-
:param edge:
|
|
301
|
-
:type edge: BMEdge
|
|
242
|
+
:param edge: The edge to remove.
|
|
302
243
|
"""
|
|
303
244
|
|
|
304
245
|
def sort(
|
|
305
246
|
self,
|
|
247
|
+
*,
|
|
306
248
|
key: None
|
|
307
249
|
| collections.abc.Callable[[BMVert | BMEdge | BMFace], int]
|
|
308
250
|
| None = None,
|
|
309
251
|
reverse: bool = False,
|
|
310
|
-
):
|
|
252
|
+
) -> None:
|
|
311
253
|
"""Sort the elements of this sequence, using an optional custom sort key.
|
|
312
|
-
Indices of elements are not changed, `BMElemSeq.index_update` can be used for that.
|
|
254
|
+
Indices of elements are not changed, `bmesh.types.BMElemSeq.index_update` can be used for that.
|
|
313
255
|
|
|
314
256
|
:param key: The key that sets the ordering of the elements.
|
|
315
|
-
:type key: None | collections.abc.Callable[[BMVert | BMEdge | BMFace], int] | None
|
|
316
257
|
:param reverse: Reverse the order of the elements
|
|
317
|
-
:type reverse: bool
|
|
318
258
|
"""
|
|
319
259
|
|
|
320
260
|
@typing.overload
|
|
@@ -322,75 +262,66 @@ class BMEdgeSeq:
|
|
|
322
262
|
"""
|
|
323
263
|
|
|
324
264
|
:param key:
|
|
325
|
-
:type key: int
|
|
326
265
|
:return:
|
|
327
|
-
:rtype: BMEdge
|
|
328
266
|
"""
|
|
329
267
|
|
|
330
268
|
@typing.overload
|
|
331
|
-
def __getitem__(self, key: slice) -> list[BMEdge
|
|
269
|
+
def __getitem__(self, key: slice) -> list[BMEdge]:
|
|
332
270
|
"""
|
|
333
271
|
|
|
334
272
|
:param key:
|
|
335
|
-
:type key: slice
|
|
336
273
|
:return:
|
|
337
|
-
:rtype: list[BMEdge, ...]
|
|
338
274
|
"""
|
|
339
275
|
|
|
340
276
|
def __iter__(self) -> BMIter[BMEdge]:
|
|
341
277
|
"""
|
|
342
278
|
|
|
343
279
|
:return:
|
|
344
|
-
:rtype: BMIter[BMEdge]
|
|
345
280
|
"""
|
|
346
281
|
|
|
347
282
|
def __len__(self) -> int:
|
|
348
283
|
"""
|
|
349
284
|
|
|
350
285
|
:return:
|
|
351
|
-
:rtype: int
|
|
352
286
|
"""
|
|
353
287
|
|
|
354
288
|
class BMEditSelIter: ...
|
|
355
289
|
|
|
356
290
|
class BMEditSelSeq:
|
|
357
291
|
active: BMEdge | BMFace | BMVert
|
|
358
|
-
""" The last selected element or None (read-only).
|
|
359
|
-
|
|
360
|
-
:type: BMEdge | BMFace | BMVert
|
|
361
|
-
"""
|
|
292
|
+
""" The last selected element or None (read-only)."""
|
|
362
293
|
|
|
363
|
-
def add(self, element):
|
|
294
|
+
def add(self, element) -> None:
|
|
364
295
|
"""Add an element to the selection history (no action taken if its already added).
|
|
365
296
|
|
|
366
297
|
:param element:
|
|
367
298
|
"""
|
|
368
299
|
|
|
369
|
-
def clear(self):
|
|
300
|
+
def clear(self) -> None:
|
|
370
301
|
"""Empties the selection history."""
|
|
371
302
|
|
|
372
|
-
def discard(self, element):
|
|
373
|
-
"""Discard an element from the selection history.Like remove but
|
|
303
|
+
def discard(self, element) -> None:
|
|
304
|
+
"""Discard an element from the selection history.Like remove but doesnt raise an error when the elements not in the selection list.
|
|
374
305
|
|
|
375
306
|
:param element:
|
|
376
307
|
"""
|
|
377
308
|
|
|
378
|
-
def remove(self, element):
|
|
309
|
+
def remove(self, element) -> None:
|
|
379
310
|
"""Remove an element from the selection history.
|
|
380
311
|
|
|
381
312
|
:param element:
|
|
382
313
|
"""
|
|
383
314
|
|
|
384
|
-
def validate(self):
|
|
315
|
+
def validate(self) -> None:
|
|
385
316
|
"""Ensures all elements in the selection history are selected."""
|
|
386
317
|
|
|
387
318
|
class BMElemSeq[_GenericType1]:
|
|
388
319
|
"""General sequence type used for accessing any sequence of
|
|
389
|
-
`BMVert`, `BMEdge`, `BMFace`, `BMLoop`.When accessed via `BMesh.verts`, `BMesh.edges`, `BMesh.faces`
|
|
320
|
+
`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`, `bmesh.types.BMLoop`.When accessed via `bmesh.types.BMesh.verts`, `bmesh.types.BMesh.edges`, `bmesh.types.BMesh.faces`
|
|
390
321
|
there are also functions to create/remove items.
|
|
391
322
|
"""
|
|
392
323
|
|
|
393
|
-
def index_update(self):
|
|
324
|
+
def index_update(self) -> None:
|
|
394
325
|
"""Initialize the index values of this sequence.This is the equivalent of looping over all elements and assigning the index values."""
|
|
395
326
|
|
|
396
327
|
@typing.overload
|
|
@@ -398,217 +329,172 @@ class BMElemSeq[_GenericType1]:
|
|
|
398
329
|
"""
|
|
399
330
|
|
|
400
331
|
:param key:
|
|
401
|
-
:type key: int
|
|
402
332
|
:return:
|
|
403
|
-
:rtype: _GenericType1
|
|
404
333
|
"""
|
|
405
334
|
|
|
406
335
|
@typing.overload
|
|
407
|
-
def __getitem__(self, key: slice) -> list[_GenericType1
|
|
336
|
+
def __getitem__(self, key: slice) -> list[_GenericType1]:
|
|
408
337
|
"""
|
|
409
338
|
|
|
410
339
|
:param key:
|
|
411
|
-
:type key: slice
|
|
412
340
|
:return:
|
|
413
|
-
:rtype: list[_GenericType1, ...]
|
|
414
341
|
"""
|
|
415
342
|
|
|
416
343
|
def __iter__(self) -> BMIter[_GenericType1]:
|
|
417
344
|
"""
|
|
418
345
|
|
|
419
346
|
:return:
|
|
420
|
-
:rtype: BMIter[_GenericType1]
|
|
421
347
|
"""
|
|
422
348
|
|
|
423
349
|
def __len__(self) -> int:
|
|
424
350
|
"""
|
|
425
351
|
|
|
426
352
|
:return:
|
|
427
|
-
:rtype: int
|
|
428
353
|
"""
|
|
429
354
|
|
|
430
355
|
class BMFace:
|
|
431
356
|
"""The BMesh face with 3 or more sides"""
|
|
432
357
|
|
|
433
|
-
edges:
|
|
434
|
-
""" Edges of this face, (read-only).
|
|
435
|
-
|
|
436
|
-
:type: BMElemSeq[BMEdge]
|
|
437
|
-
"""
|
|
358
|
+
edges: typing.Any
|
|
359
|
+
""" Edges of this face, (read-only)."""
|
|
438
360
|
|
|
439
361
|
hide: bool
|
|
440
|
-
""" Hidden state of this element.
|
|
441
|
-
|
|
442
|
-
:type: bool
|
|
443
|
-
"""
|
|
362
|
+
""" Hidden state of this element."""
|
|
444
363
|
|
|
445
364
|
index: int
|
|
446
|
-
""" Index of this element.
|
|
447
|
-
|
|
448
|
-
:type: int
|
|
449
|
-
"""
|
|
365
|
+
""" Index of this element."""
|
|
450
366
|
|
|
451
367
|
is_valid: bool
|
|
452
|
-
""" True when this element is valid (hasn't been removed).
|
|
453
|
-
|
|
454
|
-
:type: bool
|
|
455
|
-
"""
|
|
368
|
+
""" True when this element is valid (hasn't been removed)."""
|
|
456
369
|
|
|
457
|
-
loops:
|
|
458
|
-
""" Loops of this face, (read-only).
|
|
459
|
-
|
|
460
|
-
:type: BMElemSeq[BMLoop]
|
|
461
|
-
"""
|
|
370
|
+
loops: typing.Any
|
|
371
|
+
""" Loops of this face, (read-only)."""
|
|
462
372
|
|
|
463
373
|
material_index: int
|
|
464
|
-
""" The face's material index.
|
|
465
|
-
|
|
466
|
-
:type: int
|
|
467
|
-
"""
|
|
374
|
+
""" The face's material index."""
|
|
468
375
|
|
|
469
376
|
normal: mathutils.Vector
|
|
470
|
-
""" The normal for this face as a 3D, wrapped vector.
|
|
471
|
-
|
|
472
|
-
:type: mathutils.Vector
|
|
473
|
-
"""
|
|
377
|
+
""" The normal for this face as a 3D, wrapped vector."""
|
|
474
378
|
|
|
475
379
|
select: bool
|
|
476
|
-
""" Selected state of this element.
|
|
477
|
-
|
|
478
|
-
:type: bool
|
|
479
|
-
"""
|
|
380
|
+
""" Selected state of this element."""
|
|
480
381
|
|
|
481
382
|
smooth: bool
|
|
482
|
-
""" Smooth state of this element.
|
|
483
|
-
|
|
484
|
-
:type: bool
|
|
485
|
-
"""
|
|
383
|
+
""" Smooth state of this element."""
|
|
486
384
|
|
|
487
385
|
tag: bool
|
|
488
|
-
""" Generic attribute scripts can use for own logic
|
|
489
|
-
|
|
490
|
-
:type: bool
|
|
491
|
-
"""
|
|
386
|
+
""" Generic attribute scripts can use for own logic"""
|
|
492
387
|
|
|
493
|
-
|
|
494
|
-
"""
|
|
388
|
+
uv_select: bool
|
|
389
|
+
""" UV selected state of this element."""
|
|
495
390
|
|
|
496
|
-
:
|
|
497
|
-
"""
|
|
391
|
+
verts: typing.Any
|
|
392
|
+
""" Verts of this face, (read-only)."""
|
|
498
393
|
|
|
499
394
|
def calc_area(self) -> float:
|
|
500
395
|
"""Return the area of the face.
|
|
501
396
|
|
|
502
397
|
:return: Return the area of the face.
|
|
503
|
-
:rtype: float
|
|
504
398
|
"""
|
|
505
399
|
|
|
506
400
|
def calc_center_bounds(self) -> mathutils.Vector:
|
|
507
401
|
"""Return bounds center of the face.
|
|
508
402
|
|
|
509
403
|
:return: a 3D vector.
|
|
510
|
-
:rtype: mathutils.Vector
|
|
511
404
|
"""
|
|
512
405
|
|
|
513
406
|
def calc_center_median(self) -> mathutils.Vector:
|
|
514
407
|
"""Return median center of the face.
|
|
515
408
|
|
|
516
409
|
:return: a 3D vector.
|
|
517
|
-
:rtype: mathutils.Vector
|
|
518
410
|
"""
|
|
519
411
|
|
|
520
412
|
def calc_center_median_weighted(self) -> mathutils.Vector:
|
|
521
413
|
"""Return median center of the face weighted by edge lengths.
|
|
522
414
|
|
|
523
415
|
:return: a 3D vector.
|
|
524
|
-
:rtype: mathutils.Vector
|
|
525
416
|
"""
|
|
526
417
|
|
|
527
418
|
def calc_perimeter(self) -> float:
|
|
528
419
|
"""Return the perimeter of the face.
|
|
529
420
|
|
|
530
421
|
:return: Return the perimeter of the face.
|
|
531
|
-
:rtype: float
|
|
532
422
|
"""
|
|
533
423
|
|
|
534
424
|
def calc_tangent_edge(self) -> mathutils.Vector:
|
|
535
425
|
"""Return face tangent based on longest edge.
|
|
536
426
|
|
|
537
427
|
:return: a normalized vector.
|
|
538
|
-
:rtype: mathutils.Vector
|
|
539
428
|
"""
|
|
540
429
|
|
|
541
430
|
def calc_tangent_edge_diagonal(self) -> mathutils.Vector:
|
|
542
431
|
"""Return face tangent based on the edge farthest from any vertex.
|
|
543
432
|
|
|
544
433
|
:return: a normalized vector.
|
|
545
|
-
:rtype: mathutils.Vector
|
|
546
434
|
"""
|
|
547
435
|
|
|
548
436
|
def calc_tangent_edge_pair(self) -> mathutils.Vector:
|
|
549
437
|
"""Return face tangent based on the two longest disconnected edges.
|
|
550
438
|
|
|
551
439
|
:return: a normalized vector.
|
|
552
|
-
:rtype: mathutils.Vector
|
|
553
440
|
"""
|
|
554
441
|
|
|
555
442
|
def calc_tangent_vert_diagonal(self) -> mathutils.Vector:
|
|
556
443
|
"""Return face tangent based on the two most distant vertices.
|
|
557
444
|
|
|
558
445
|
:return: a normalized vector.
|
|
559
|
-
:rtype: mathutils.Vector
|
|
560
446
|
"""
|
|
561
447
|
|
|
562
|
-
def copy(self, verts: bool = True, edges: bool = True) -> typing_extensions.Self:
|
|
448
|
+
def copy(self, *, verts: bool = True, edges: bool = True) -> typing_extensions.Self:
|
|
563
449
|
"""Make a copy of this face.
|
|
564
450
|
|
|
565
451
|
:param verts: When set, the faces verts will be duplicated too.
|
|
566
|
-
:type verts: bool
|
|
567
452
|
:param edges: When set, the faces edges will be duplicated too.
|
|
568
|
-
:type edges: bool
|
|
569
453
|
:return: The newly created face.
|
|
570
|
-
:rtype: typing_extensions.Self
|
|
571
454
|
"""
|
|
572
455
|
|
|
573
|
-
def copy_from(self, other: typing_extensions.Self):
|
|
456
|
+
def copy_from(self, other: typing_extensions.Self) -> None:
|
|
574
457
|
"""Copy values from another element of matching type.
|
|
575
458
|
|
|
576
459
|
:param other:
|
|
577
|
-
:type other: typing_extensions.Self
|
|
578
460
|
"""
|
|
579
461
|
|
|
580
|
-
def copy_from_face_interp(
|
|
462
|
+
def copy_from_face_interp(
|
|
463
|
+
self, face: typing_extensions.Self, vert: bool = True
|
|
464
|
+
) -> None:
|
|
581
465
|
"""Interpolate the customdata from another face onto this one (faces should overlap).
|
|
582
466
|
|
|
583
467
|
:param face: The face to interpolate data from.
|
|
584
|
-
:type face: typing_extensions.Self
|
|
585
468
|
:param vert: When True, also copy vertex data.
|
|
586
|
-
:type vert: bool
|
|
587
469
|
"""
|
|
588
470
|
|
|
589
|
-
def hide_set(self, hide: bool):
|
|
471
|
+
def hide_set(self, hide: bool) -> None:
|
|
590
472
|
"""Set the hide state.
|
|
591
473
|
This is different from the hide attribute because it updates the selection and hide state of associated geometry.
|
|
592
474
|
|
|
593
475
|
:param hide: Hidden or visible.
|
|
594
|
-
:type hide: bool
|
|
595
476
|
"""
|
|
596
477
|
|
|
597
|
-
def normal_flip(self):
|
|
478
|
+
def normal_flip(self) -> None:
|
|
598
479
|
"""Reverses winding of a face, which flips its normal."""
|
|
599
480
|
|
|
600
|
-
def normal_update(self):
|
|
481
|
+
def normal_update(self) -> None:
|
|
601
482
|
"""Update face normal based on the positions of the face verts.
|
|
602
483
|
This does not update the normals of face verts.
|
|
603
484
|
|
|
604
485
|
"""
|
|
605
486
|
|
|
606
|
-
def select_set(self, select: bool):
|
|
487
|
+
def select_set(self, select: bool) -> None:
|
|
607
488
|
"""Set the selection.
|
|
608
489
|
This is different from the select attribute because it updates the selection state of associated geometry.
|
|
609
490
|
|
|
610
491
|
:param select: Select or de-select.
|
|
611
|
-
|
|
492
|
+
"""
|
|
493
|
+
|
|
494
|
+
def uv_select_set(self, select: bool) -> None:
|
|
495
|
+
"""Select the face.
|
|
496
|
+
|
|
497
|
+
:param select: Select or de-select.
|
|
612
498
|
"""
|
|
613
499
|
|
|
614
500
|
def __getitem__[_GenericType1](
|
|
@@ -617,56 +503,47 @@ class BMFace:
|
|
|
617
503
|
"""
|
|
618
504
|
|
|
619
505
|
:param key:
|
|
620
|
-
:type key: BMLayerItem[_GenericType1]
|
|
621
506
|
:return:
|
|
622
|
-
:rtype: _GenericType1
|
|
623
507
|
"""
|
|
624
508
|
|
|
625
509
|
def __setitem__[_GenericType1](
|
|
626
510
|
self, key: BMLayerItem[_GenericType1], value: _GenericType1
|
|
627
|
-
):
|
|
511
|
+
) -> None:
|
|
628
512
|
"""
|
|
629
513
|
|
|
630
514
|
:param key:
|
|
631
|
-
:type key: BMLayerItem[_GenericType1]
|
|
632
515
|
:param value:
|
|
633
|
-
:type value: _GenericType1
|
|
634
516
|
"""
|
|
635
517
|
|
|
636
|
-
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]):
|
|
518
|
+
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]) -> None:
|
|
637
519
|
"""
|
|
638
520
|
|
|
639
521
|
:param key:
|
|
640
|
-
:type key: BMLayerItem[_GenericType1]
|
|
641
522
|
"""
|
|
642
523
|
|
|
643
524
|
class BMFaceSeq:
|
|
644
525
|
active: BMFace | None
|
|
645
|
-
""" active face.
|
|
646
|
-
|
|
647
|
-
:type: BMFace | None
|
|
648
|
-
"""
|
|
526
|
+
""" active face."""
|
|
649
527
|
|
|
650
528
|
layers: BMLayerAccessFace
|
|
651
|
-
""" custom-data layers (read-only).
|
|
652
|
-
|
|
653
|
-
:type: BMLayerAccessFace
|
|
654
|
-
"""
|
|
529
|
+
""" custom-data layers (read-only)."""
|
|
655
530
|
|
|
656
|
-
def ensure_lookup_table(self):
|
|
531
|
+
def ensure_lookup_table(self) -> None:
|
|
657
532
|
"""Ensure internal data needed for int subscription is initialized with verts/edges/faces, eg bm.verts[index].This needs to be called again after adding/removing data in this sequence."""
|
|
658
533
|
|
|
659
|
-
def get(
|
|
534
|
+
def get(
|
|
535
|
+
self,
|
|
536
|
+
verts: collections.abc.Sequence[BMVert],
|
|
537
|
+
fallback: typing.Any | None = None,
|
|
538
|
+
) -> BMFace:
|
|
660
539
|
"""Return a face which uses the verts passed.
|
|
661
540
|
|
|
662
541
|
:param verts: Sequence of verts.
|
|
663
|
-
:type verts: collections.abc.Sequence[BMVert]
|
|
664
542
|
:param fallback: Return this value if nothing is found.
|
|
665
543
|
:return: The face found or None
|
|
666
|
-
:rtype: BMFace
|
|
667
544
|
"""
|
|
668
545
|
|
|
669
|
-
def index_update(self):
|
|
546
|
+
def index_update(self) -> None:
|
|
670
547
|
"""Initialize the index values of this sequence.This is the equivalent of looping over all elements and assigning the index values."""
|
|
671
548
|
|
|
672
549
|
def new(
|
|
@@ -675,34 +552,29 @@ class BMFaceSeq:
|
|
|
675
552
|
"""Create a new face from a given set of verts.
|
|
676
553
|
|
|
677
554
|
:param verts: Sequence of 3 or more verts.
|
|
678
|
-
:type verts: collections.abc.Sequence[BMVert]
|
|
679
555
|
:param example: Existing face to initialize settings (optional argument).
|
|
680
|
-
:type example: BMFace | None
|
|
681
556
|
:return: The newly created face.
|
|
682
|
-
:rtype: BMFace
|
|
683
557
|
"""
|
|
684
558
|
|
|
685
|
-
def remove(self, face: BMFace):
|
|
559
|
+
def remove(self, face: BMFace) -> None:
|
|
686
560
|
"""Remove a face.
|
|
687
561
|
|
|
688
|
-
:param face:
|
|
689
|
-
:type face: BMFace
|
|
562
|
+
:param face: The face to remove.
|
|
690
563
|
"""
|
|
691
564
|
|
|
692
565
|
def sort(
|
|
693
566
|
self,
|
|
567
|
+
*,
|
|
694
568
|
key: None
|
|
695
569
|
| collections.abc.Callable[[BMVert | BMEdge | BMFace], int]
|
|
696
570
|
| None = None,
|
|
697
571
|
reverse: bool = False,
|
|
698
|
-
):
|
|
572
|
+
) -> None:
|
|
699
573
|
"""Sort the elements of this sequence, using an optional custom sort key.
|
|
700
|
-
Indices of elements are not changed, `BMElemSeq.index_update` can be used for that.
|
|
574
|
+
Indices of elements are not changed, `bmesh.types.BMElemSeq.index_update` can be used for that.
|
|
701
575
|
|
|
702
576
|
:param key: The key that sets the ordering of the elements.
|
|
703
|
-
:type key: None | collections.abc.Callable[[BMVert | BMEdge | BMFace], int] | None
|
|
704
577
|
:param reverse: Reverse the order of the elements
|
|
705
|
-
:type reverse: bool
|
|
706
578
|
"""
|
|
707
579
|
|
|
708
580
|
@typing.overload
|
|
@@ -710,441 +582,275 @@ class BMFaceSeq:
|
|
|
710
582
|
"""
|
|
711
583
|
|
|
712
584
|
:param key:
|
|
713
|
-
:type key: int
|
|
714
585
|
:return:
|
|
715
|
-
:rtype: BMFace
|
|
716
586
|
"""
|
|
717
587
|
|
|
718
588
|
@typing.overload
|
|
719
|
-
def __getitem__(self, key: slice) -> list[BMFace
|
|
589
|
+
def __getitem__(self, key: slice) -> list[BMFace]:
|
|
720
590
|
"""
|
|
721
591
|
|
|
722
592
|
:param key:
|
|
723
|
-
:type key: slice
|
|
724
593
|
:return:
|
|
725
|
-
:rtype: list[BMFace, ...]
|
|
726
594
|
"""
|
|
727
595
|
|
|
728
596
|
def __iter__(self) -> BMIter[BMFace]:
|
|
729
597
|
"""
|
|
730
598
|
|
|
731
599
|
:return:
|
|
732
|
-
:rtype: BMIter[BMFace]
|
|
733
600
|
"""
|
|
734
601
|
|
|
735
602
|
def __len__(self) -> int:
|
|
736
603
|
"""
|
|
737
604
|
|
|
738
605
|
:return:
|
|
739
|
-
:rtype: int
|
|
740
606
|
"""
|
|
741
607
|
|
|
742
608
|
class BMIter[_GenericType1]:
|
|
743
609
|
"""Internal BMesh type for looping over verts/faces/edges,
|
|
744
|
-
used for iterating over `BMElemSeq` types.
|
|
610
|
+
used for iterating over `bmesh.types.BMElemSeq` types.
|
|
745
611
|
"""
|
|
746
612
|
|
|
747
613
|
def __iter__(self) -> BMIter[_GenericType1]:
|
|
748
614
|
"""
|
|
749
615
|
|
|
750
616
|
:return:
|
|
751
|
-
:rtype: BMIter[_GenericType1]
|
|
752
617
|
"""
|
|
753
618
|
|
|
754
619
|
def __next__(self) -> _GenericType1:
|
|
755
620
|
"""
|
|
756
621
|
|
|
757
622
|
:return:
|
|
758
|
-
:rtype: _GenericType1
|
|
759
623
|
"""
|
|
760
624
|
|
|
761
625
|
class BMLayerAccessEdge:
|
|
762
626
|
"""Exposes custom-data layer attributes."""
|
|
763
627
|
|
|
764
|
-
bool:
|
|
765
|
-
""" Generic boolean custom-data layer.
|
|
766
|
-
|
|
767
|
-
:type: BMLayerCollection[boolean]
|
|
768
|
-
"""
|
|
769
|
-
|
|
770
|
-
color: BMLayerCollection[mathutils.Vector]
|
|
771
|
-
""" Generic RGBA color with 8-bit precision custom-data layer.
|
|
772
|
-
|
|
773
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
774
|
-
"""
|
|
775
|
-
|
|
776
|
-
float: BMLayerCollection[float]
|
|
777
|
-
""" Generic float custom-data layer.
|
|
778
|
-
|
|
779
|
-
:type: BMLayerCollection[float]
|
|
780
|
-
"""
|
|
781
|
-
|
|
782
|
-
float_color: BMLayerCollection[mathutils.Vector]
|
|
783
|
-
""" Generic RGBA color with float precision custom-data layer.
|
|
628
|
+
bool: typing.Any
|
|
629
|
+
""" Generic boolean custom-data layer."""
|
|
784
630
|
|
|
785
|
-
:
|
|
786
|
-
"""
|
|
787
|
-
|
|
788
|
-
float_vector: BMLayerCollection[mathutils.Vector]
|
|
789
|
-
""" Generic 3D vector with float precision custom-data layer.
|
|
790
|
-
|
|
791
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
792
|
-
"""
|
|
631
|
+
color: typing.Any
|
|
632
|
+
""" Generic RGBA color with 8-bit precision custom-data layer."""
|
|
793
633
|
|
|
794
|
-
|
|
795
|
-
"""
|
|
634
|
+
float: typing.Any
|
|
635
|
+
""" Generic float custom-data layer."""
|
|
796
636
|
|
|
797
|
-
:
|
|
798
|
-
"""
|
|
799
|
-
|
|
800
|
-
int: BMLayerCollection[int]
|
|
801
|
-
""" Generic int custom-data layer.
|
|
637
|
+
float_color: typing.Any
|
|
638
|
+
""" Generic RGBA color with float precision custom-data layer."""
|
|
802
639
|
|
|
803
|
-
:
|
|
804
|
-
"""
|
|
640
|
+
float_vector: typing.Any
|
|
641
|
+
""" Generic 3D vector with float precision custom-data layer."""
|
|
805
642
|
|
|
806
|
-
|
|
807
|
-
""" Generic
|
|
643
|
+
int: typing.Any
|
|
644
|
+
""" Generic int custom-data layer."""
|
|
808
645
|
|
|
809
|
-
:
|
|
810
|
-
"""
|
|
646
|
+
string: typing.Any
|
|
647
|
+
""" Generic string custom-data layer (exposed as bytes, 255 max length)."""
|
|
811
648
|
|
|
812
649
|
class BMLayerAccessFace:
|
|
813
650
|
"""Exposes custom-data layer attributes."""
|
|
814
651
|
|
|
815
|
-
bool:
|
|
816
|
-
""" Generic boolean custom-data layer.
|
|
652
|
+
bool: typing.Any
|
|
653
|
+
""" Generic boolean custom-data layer."""
|
|
817
654
|
|
|
818
|
-
:
|
|
819
|
-
"""
|
|
820
|
-
|
|
821
|
-
color: BMLayerCollection[mathutils.Vector]
|
|
822
|
-
""" Generic RGBA color with 8-bit precision custom-data layer.
|
|
823
|
-
|
|
824
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
825
|
-
"""
|
|
655
|
+
color: typing.Any
|
|
656
|
+
""" Generic RGBA color with 8-bit precision custom-data layer."""
|
|
826
657
|
|
|
827
|
-
float:
|
|
828
|
-
""" Generic float custom-data layer.
|
|
658
|
+
float: typing.Any
|
|
659
|
+
""" Generic float custom-data layer."""
|
|
829
660
|
|
|
830
|
-
:
|
|
831
|
-
"""
|
|
832
|
-
|
|
833
|
-
float_color: BMLayerCollection[mathutils.Vector]
|
|
834
|
-
""" Generic RGBA color with float precision custom-data layer.
|
|
661
|
+
float_color: typing.Any
|
|
662
|
+
""" Generic RGBA color with float precision custom-data layer."""
|
|
835
663
|
|
|
836
|
-
:
|
|
837
|
-
"""
|
|
664
|
+
float_vector: typing.Any
|
|
665
|
+
""" Generic 3D vector with float precision custom-data layer."""
|
|
838
666
|
|
|
839
|
-
|
|
840
|
-
""" Generic
|
|
667
|
+
int: typing.Any
|
|
668
|
+
""" Generic int custom-data layer."""
|
|
841
669
|
|
|
842
|
-
:
|
|
843
|
-
"""
|
|
844
|
-
|
|
845
|
-
freestyle: BMLayerCollection
|
|
846
|
-
""" Accessor for Freestyle face layer.
|
|
847
|
-
|
|
848
|
-
:type: BMLayerCollection
|
|
849
|
-
"""
|
|
850
|
-
|
|
851
|
-
int: BMLayerCollection[int]
|
|
852
|
-
""" Generic int custom-data layer.
|
|
853
|
-
|
|
854
|
-
:type: BMLayerCollection[int]
|
|
855
|
-
"""
|
|
856
|
-
|
|
857
|
-
string: BMLayerCollection[bytes]
|
|
858
|
-
""" Generic string custom-data layer (exposed as bytes, 255 max length).
|
|
859
|
-
|
|
860
|
-
:type: BMLayerCollection[bytes]
|
|
861
|
-
"""
|
|
670
|
+
string: typing.Any
|
|
671
|
+
""" Generic string custom-data layer (exposed as bytes, 255 max length)."""
|
|
862
672
|
|
|
863
673
|
class BMLayerAccessLoop:
|
|
864
674
|
"""Exposes custom-data layer attributes."""
|
|
865
675
|
|
|
866
|
-
bool:
|
|
867
|
-
""" Generic boolean custom-data layer.
|
|
868
|
-
|
|
869
|
-
:type: BMLayerCollection[boolean]
|
|
870
|
-
"""
|
|
871
|
-
|
|
872
|
-
color: BMLayerCollection[mathutils.Vector]
|
|
873
|
-
""" Generic RGBA color with 8-bit precision custom-data layer.
|
|
676
|
+
bool: typing.Any
|
|
677
|
+
""" Generic boolean custom-data layer."""
|
|
874
678
|
|
|
875
|
-
:
|
|
876
|
-
"""
|
|
679
|
+
color: typing.Any
|
|
680
|
+
""" Generic RGBA color with 8-bit precision custom-data layer."""
|
|
877
681
|
|
|
878
|
-
float:
|
|
879
|
-
""" Generic float custom-data layer.
|
|
682
|
+
float: typing.Any
|
|
683
|
+
""" Generic float custom-data layer."""
|
|
880
684
|
|
|
881
|
-
:
|
|
882
|
-
"""
|
|
685
|
+
float_color: typing.Any
|
|
686
|
+
""" Generic RGBA color with float precision custom-data layer."""
|
|
883
687
|
|
|
884
|
-
|
|
885
|
-
""" Generic
|
|
688
|
+
float_vector: typing.Any
|
|
689
|
+
""" Generic 3D vector with float precision custom-data layer."""
|
|
886
690
|
|
|
887
|
-
:
|
|
888
|
-
"""
|
|
691
|
+
int: typing.Any
|
|
692
|
+
""" Generic int custom-data layer."""
|
|
889
693
|
|
|
890
|
-
|
|
891
|
-
""" Generic
|
|
694
|
+
string: typing.Any
|
|
695
|
+
""" Generic string custom-data layer (exposed as bytes, 255 max length)."""
|
|
892
696
|
|
|
893
|
-
:
|
|
894
|
-
"""
|
|
895
|
-
|
|
896
|
-
int: BMLayerCollection[int]
|
|
897
|
-
""" Generic int custom-data layer.
|
|
898
|
-
|
|
899
|
-
:type: BMLayerCollection[int]
|
|
900
|
-
"""
|
|
901
|
-
|
|
902
|
-
string: BMLayerCollection[bytes]
|
|
903
|
-
""" Generic string custom-data layer (exposed as bytes, 255 max length).
|
|
904
|
-
|
|
905
|
-
:type: BMLayerCollection[bytes]
|
|
906
|
-
"""
|
|
907
|
-
|
|
908
|
-
uv: BMLayerCollection[BMLoopUV]
|
|
909
|
-
""" Accessor for `BMLoopUV` UV (as a 2D Vector).
|
|
910
|
-
|
|
911
|
-
:type: BMLayerCollection[BMLoopUV]
|
|
912
|
-
"""
|
|
697
|
+
uv: typing.Any
|
|
698
|
+
""" Accessor for `bmesh.types.BMLoopUV` UV (as a 2D Vector)."""
|
|
913
699
|
|
|
914
700
|
class BMLayerAccessVert:
|
|
915
701
|
"""Exposes custom-data layer attributes."""
|
|
916
702
|
|
|
917
|
-
bool:
|
|
918
|
-
""" Generic boolean custom-data layer.
|
|
703
|
+
bool: typing.Any
|
|
704
|
+
""" Generic boolean custom-data layer."""
|
|
919
705
|
|
|
920
|
-
:
|
|
921
|
-
"""
|
|
706
|
+
color: typing.Any
|
|
707
|
+
""" Generic RGBA color with 8-bit precision custom-data layer."""
|
|
922
708
|
|
|
923
|
-
|
|
924
|
-
"""
|
|
709
|
+
deform: typing.Any
|
|
710
|
+
""" Vertex deform weight `bmesh.types.BMDeformVert` (TODO)."""
|
|
925
711
|
|
|
926
|
-
:
|
|
927
|
-
"""
|
|
712
|
+
float: typing.Any
|
|
713
|
+
""" Generic float custom-data layer."""
|
|
928
714
|
|
|
929
|
-
|
|
930
|
-
"""
|
|
715
|
+
float_color: typing.Any
|
|
716
|
+
""" Generic RGBA color with float precision custom-data layer."""
|
|
931
717
|
|
|
932
|
-
:
|
|
933
|
-
"""
|
|
718
|
+
float_vector: typing.Any
|
|
719
|
+
""" Generic 3D vector with float precision custom-data layer."""
|
|
934
720
|
|
|
935
|
-
|
|
936
|
-
""" Generic
|
|
721
|
+
int: typing.Any
|
|
722
|
+
""" Generic int custom-data layer."""
|
|
937
723
|
|
|
938
|
-
:
|
|
939
|
-
"""
|
|
940
|
-
|
|
941
|
-
float_color: BMLayerCollection[mathutils.Vector]
|
|
942
|
-
""" Generic RGBA color with float precision custom-data layer.
|
|
943
|
-
|
|
944
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
945
|
-
"""
|
|
946
|
-
|
|
947
|
-
float_vector: BMLayerCollection[mathutils.Vector]
|
|
948
|
-
""" Generic 3D vector with float precision custom-data layer.
|
|
949
|
-
|
|
950
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
951
|
-
"""
|
|
952
|
-
|
|
953
|
-
int: BMLayerCollection[int]
|
|
954
|
-
""" Generic int custom-data layer.
|
|
955
|
-
|
|
956
|
-
:type: BMLayerCollection[int]
|
|
957
|
-
"""
|
|
958
|
-
|
|
959
|
-
shape: BMLayerCollection[mathutils.Vector]
|
|
960
|
-
""" Vertex shapekey absolute location (as a 3D Vector).
|
|
961
|
-
|
|
962
|
-
:type: BMLayerCollection[mathutils.Vector]
|
|
963
|
-
"""
|
|
724
|
+
shape: typing.Any
|
|
725
|
+
""" Vertex shape-key absolute location (as a 3D Vector)."""
|
|
964
726
|
|
|
965
727
|
skin: typing.Any
|
|
966
728
|
""" Accessor for skin layer."""
|
|
967
729
|
|
|
968
|
-
string:
|
|
969
|
-
""" Generic string custom-data layer (exposed as bytes, 255 max length).
|
|
970
|
-
|
|
971
|
-
:type: BMLayerCollection[bytes]
|
|
972
|
-
"""
|
|
730
|
+
string: typing.Any
|
|
731
|
+
""" Generic string custom-data layer (exposed as bytes, 255 max length)."""
|
|
973
732
|
|
|
974
733
|
class BMLayerCollection[_GenericType1]:
|
|
975
734
|
"""Gives access to a collection of custom-data layers of the same type and behaves like Python dictionaries, except for the ability to do list like index access."""
|
|
976
735
|
|
|
977
736
|
active: BMLayerItem[_GenericType1]
|
|
978
|
-
"""
|
|
979
|
-
|
|
980
|
-
:type: BMLayerItem[_GenericType1]
|
|
981
|
-
"""
|
|
982
|
-
|
|
983
737
|
is_singleton: bool
|
|
984
|
-
""" True if there can exists only one layer of this type (read-only).
|
|
985
|
-
|
|
986
|
-
:type: bool
|
|
987
|
-
"""
|
|
738
|
+
""" True if there can exists only one layer of this type (read-only)."""
|
|
988
739
|
|
|
989
740
|
def get[_GenericType2](
|
|
990
741
|
self, key: str, default: _GenericType2 = None
|
|
991
742
|
) -> BMLayerItem[_GenericType1] | _GenericType2:
|
|
992
743
|
"""Returns the value of the layer matching the key or default
|
|
993
|
-
when not found (matches
|
|
744
|
+
when not found (matches Pythons dictionary function of the same name).
|
|
994
745
|
|
|
995
746
|
:param key: The key associated with the layer.
|
|
996
|
-
:type key: str
|
|
997
747
|
:param default: Optional argument for the value to return if
|
|
998
748
|
key is not found.
|
|
999
|
-
:type default: _GenericType2
|
|
1000
749
|
:return:
|
|
1001
|
-
:rtype: BMLayerItem[_GenericType1] | _GenericType2
|
|
1002
750
|
"""
|
|
1003
751
|
|
|
1004
752
|
def items(self) -> list[str, BMLayerItem[_GenericType1]]:
|
|
1005
753
|
"""Return the identifiers of collection members
|
|
1006
|
-
(matching
|
|
754
|
+
(matching Pythons dict.items() functionality).
|
|
1007
755
|
|
|
1008
756
|
:return: (key, value) pairs for each member of this collection.
|
|
1009
|
-
:rtype: list[str, BMLayerItem[_GenericType1]]
|
|
1010
757
|
"""
|
|
1011
758
|
|
|
1012
759
|
def keys(self) -> list[str]:
|
|
1013
760
|
"""Return the identifiers of collection members
|
|
1014
|
-
(matching
|
|
761
|
+
(matching Pythons dict.keys() functionality).
|
|
1015
762
|
|
|
1016
763
|
:return: the identifiers for each member of this collection.
|
|
1017
|
-
:rtype: list[str]
|
|
1018
764
|
"""
|
|
1019
765
|
|
|
1020
766
|
def new(self, name: str | None = "") -> BMLayerItem[_GenericType1]:
|
|
1021
767
|
"""Create a new layer
|
|
1022
768
|
|
|
1023
769
|
:param name: Optional name argument (will be made unique).
|
|
1024
|
-
:type name: str | None
|
|
1025
770
|
:return: The newly created layer.
|
|
1026
|
-
:rtype: BMLayerItem[_GenericType1]
|
|
1027
771
|
"""
|
|
1028
772
|
|
|
1029
|
-
def remove(self, layer: BMLayerItem[_GenericType1]):
|
|
773
|
+
def remove(self, layer: BMLayerItem[_GenericType1]) -> None:
|
|
1030
774
|
"""Remove a layer
|
|
1031
775
|
|
|
1032
776
|
:param layer: The layer to remove.
|
|
1033
|
-
:type layer: BMLayerItem[_GenericType1]
|
|
1034
777
|
"""
|
|
1035
778
|
|
|
1036
779
|
def values(self) -> list[BMLayerItem[_GenericType1]]:
|
|
1037
780
|
"""Return the values of collection
|
|
1038
|
-
(matching
|
|
781
|
+
(matching Pythons dict.values() functionality).
|
|
1039
782
|
|
|
1040
783
|
:return: the members of this collection.
|
|
1041
|
-
:rtype: list[BMLayerItem[_GenericType1]]
|
|
1042
784
|
"""
|
|
1043
785
|
|
|
1044
786
|
def verify(self) -> BMLayerItem[_GenericType1]:
|
|
1045
787
|
"""Create a new layer or return an existing active layer
|
|
1046
788
|
|
|
1047
789
|
:return: The newly verified layer.
|
|
1048
|
-
:rtype: BMLayerItem[_GenericType1]
|
|
1049
790
|
"""
|
|
1050
791
|
|
|
1051
792
|
class BMLayerItem[_GenericType1]:
|
|
1052
793
|
"""Exposes a single custom data layer, their main purpose is for use as item accessors to custom-data when used with vert/edge/face/loop data."""
|
|
1053
794
|
|
|
1054
795
|
name: str
|
|
1055
|
-
""" The layers unique name (read-only).
|
|
1056
|
-
|
|
1057
|
-
:type: str
|
|
1058
|
-
"""
|
|
796
|
+
""" The layers unique name (read-only)."""
|
|
1059
797
|
|
|
1060
|
-
def copy_from(self, other: typing_extensions.Self):
|
|
1061
|
-
"""
|
|
798
|
+
def copy_from(self, other: typing_extensions.Self) -> None:
|
|
799
|
+
"""Copy data from another layer.
|
|
1062
800
|
|
|
1063
801
|
:param other: Another layer to copy from.
|
|
1064
|
-
:type other: typing_extensions.Self
|
|
1065
802
|
"""
|
|
1066
803
|
|
|
1067
804
|
class BMLoop:
|
|
1068
|
-
"""This is normally accessed from `BMFace.loops` where each face loop represents a corner of the face."""
|
|
805
|
+
"""This is normally accessed from `bmesh.types.BMFace.loops` where each face loop represents a corner of the face."""
|
|
1069
806
|
|
|
1070
807
|
edge: BMEdge
|
|
1071
|
-
""" The loop's edge (between this loop and the next), (read-only).
|
|
1072
|
-
|
|
1073
|
-
:type: BMEdge
|
|
1074
|
-
"""
|
|
808
|
+
""" The loop's edge (between this loop and the next), (read-only)."""
|
|
1075
809
|
|
|
1076
810
|
face: BMFace
|
|
1077
|
-
""" The face this loop makes (read-only).
|
|
1078
|
-
|
|
1079
|
-
:type: BMFace
|
|
1080
|
-
"""
|
|
811
|
+
""" The face this loop makes (read-only)."""
|
|
1081
812
|
|
|
1082
813
|
index: int
|
|
1083
|
-
""" Index of this element.
|
|
1084
|
-
|
|
1085
|
-
:type: int
|
|
1086
|
-
"""
|
|
814
|
+
""" Index of this element."""
|
|
1087
815
|
|
|
1088
816
|
is_convex: bool
|
|
1089
|
-
""" True when this loop is at the convex corner of a face, depends on a valid face normal (read-only).
|
|
1090
|
-
|
|
1091
|
-
:type: bool
|
|
1092
|
-
"""
|
|
817
|
+
""" True when this loop is at the convex corner of a face, depends on a valid face normal (read-only)."""
|
|
1093
818
|
|
|
1094
819
|
is_valid: bool
|
|
1095
|
-
""" True when this element is valid (hasn't been removed).
|
|
1096
|
-
|
|
1097
|
-
:type: bool
|
|
1098
|
-
"""
|
|
820
|
+
""" True when this element is valid (hasn't been removed)."""
|
|
1099
821
|
|
|
1100
822
|
link_loop_next: typing_extensions.Self
|
|
1101
|
-
""" The next face corner (read-only).
|
|
1102
|
-
|
|
1103
|
-
:type: typing_extensions.Self
|
|
1104
|
-
"""
|
|
823
|
+
""" The next face corner (read-only)."""
|
|
1105
824
|
|
|
1106
825
|
link_loop_prev: typing_extensions.Self
|
|
1107
|
-
""" The previous face corner (read-only).
|
|
1108
|
-
|
|
1109
|
-
:type: typing_extensions.Self
|
|
1110
|
-
"""
|
|
826
|
+
""" The previous face corner (read-only)."""
|
|
1111
827
|
|
|
1112
828
|
link_loop_radial_next: typing_extensions.Self
|
|
1113
|
-
""" The next loop around the edge (read-only).
|
|
1114
|
-
|
|
1115
|
-
:type: typing_extensions.Self
|
|
1116
|
-
"""
|
|
829
|
+
""" The next loop around the edge (read-only)."""
|
|
1117
830
|
|
|
1118
831
|
link_loop_radial_prev: typing_extensions.Self
|
|
1119
|
-
""" The previous loop around the edge (read-only).
|
|
1120
|
-
|
|
1121
|
-
:type: typing_extensions.Self
|
|
1122
|
-
"""
|
|
1123
|
-
|
|
1124
|
-
link_loops: BMElemSeq[BMLoop]
|
|
1125
|
-
""" Loops connected to this loop, (read-only).
|
|
832
|
+
""" The previous loop around the edge (read-only)."""
|
|
1126
833
|
|
|
1127
|
-
:
|
|
1128
|
-
"""
|
|
834
|
+
link_loops: typing.Any
|
|
835
|
+
""" Loops connected to this loop, (read-only)."""
|
|
1129
836
|
|
|
1130
837
|
tag: bool
|
|
1131
|
-
""" Generic attribute scripts can use for own logic
|
|
838
|
+
""" Generic attribute scripts can use for own logic"""
|
|
1132
839
|
|
|
1133
|
-
:
|
|
1134
|
-
"""
|
|
840
|
+
uv_select_edge: bool
|
|
841
|
+
""" UV selected state of this element."""
|
|
1135
842
|
|
|
1136
|
-
|
|
1137
|
-
"""
|
|
843
|
+
uv_select_vert: bool
|
|
844
|
+
""" UV selected state of this element."""
|
|
1138
845
|
|
|
1139
|
-
:
|
|
1140
|
-
"""
|
|
846
|
+
vert: BMVert
|
|
847
|
+
""" The loop's vertex (read-only)."""
|
|
1141
848
|
|
|
1142
849
|
def calc_angle(self) -> float:
|
|
1143
850
|
"""Return the angle at this loops corner of the face.
|
|
1144
851
|
This is calculated so sharper corners give lower angles.
|
|
1145
852
|
|
|
1146
853
|
:return: The angle in radians.
|
|
1147
|
-
:rtype: float
|
|
1148
854
|
"""
|
|
1149
855
|
|
|
1150
856
|
def calc_normal(self) -> mathutils.Vector:
|
|
@@ -1152,7 +858,6 @@ class BMLoop:
|
|
|
1152
858
|
Falls back to the face normal for straight lines.
|
|
1153
859
|
|
|
1154
860
|
:return: a normalized vector.
|
|
1155
|
-
:rtype: mathutils.Vector
|
|
1156
861
|
"""
|
|
1157
862
|
|
|
1158
863
|
def calc_tangent(self) -> mathutils.Vector:
|
|
@@ -1160,27 +865,34 @@ class BMLoop:
|
|
|
1160
865
|
Falls back to the face normal for straight lines.
|
|
1161
866
|
|
|
1162
867
|
:return: a normalized vector.
|
|
1163
|
-
:rtype: mathutils.Vector
|
|
1164
868
|
"""
|
|
1165
869
|
|
|
1166
|
-
def copy_from(self, other: typing_extensions.Self):
|
|
870
|
+
def copy_from(self, other: typing_extensions.Self) -> None:
|
|
1167
871
|
"""Copy values from another element of matching type.
|
|
1168
872
|
|
|
1169
873
|
:param other:
|
|
1170
|
-
:type other: typing_extensions.Self
|
|
1171
874
|
"""
|
|
1172
875
|
|
|
1173
876
|
def copy_from_face_interp(
|
|
1174
877
|
self, face: BMFace, vert: bool = True, multires: bool = True
|
|
1175
|
-
):
|
|
878
|
+
) -> None:
|
|
1176
879
|
"""Interpolate the customdata from a face onto this loop (the loops vert should overlap the face).
|
|
1177
880
|
|
|
1178
881
|
:param face: The face to interpolate data from.
|
|
1179
|
-
:type face: BMFace
|
|
1180
882
|
:param vert: When enabled, interpolate the loops vertex data (optional).
|
|
1181
|
-
:type vert: bool
|
|
1182
883
|
:param multires: When enabled, interpolate the loops multires data (optional).
|
|
1183
|
-
|
|
884
|
+
"""
|
|
885
|
+
|
|
886
|
+
def uv_select_edge_set(self, select: bool) -> None:
|
|
887
|
+
"""Set the UV edge selection state.
|
|
888
|
+
|
|
889
|
+
:param select: Select or de-select.
|
|
890
|
+
"""
|
|
891
|
+
|
|
892
|
+
def uv_select_vert_set(self, select: bool) -> None:
|
|
893
|
+
"""Select the UV vertex.
|
|
894
|
+
|
|
895
|
+
:param select: Select or de-select.
|
|
1184
896
|
"""
|
|
1185
897
|
|
|
1186
898
|
def __getitem__[_GenericType1](
|
|
@@ -1189,184 +901,111 @@ class BMLoop:
|
|
|
1189
901
|
"""
|
|
1190
902
|
|
|
1191
903
|
:param key:
|
|
1192
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1193
904
|
:return:
|
|
1194
|
-
:rtype: _GenericType1
|
|
1195
905
|
"""
|
|
1196
906
|
|
|
1197
907
|
def __setitem__[_GenericType1](
|
|
1198
908
|
self, key: BMLayerItem[_GenericType1], value: _GenericType1
|
|
1199
|
-
):
|
|
909
|
+
) -> None:
|
|
1200
910
|
"""
|
|
1201
911
|
|
|
1202
912
|
:param key:
|
|
1203
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1204
913
|
:param value:
|
|
1205
|
-
:type value: _GenericType1
|
|
1206
914
|
"""
|
|
1207
915
|
|
|
1208
|
-
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]):
|
|
916
|
+
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]) -> None:
|
|
1209
917
|
"""
|
|
1210
918
|
|
|
1211
919
|
:param key:
|
|
1212
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1213
920
|
"""
|
|
1214
921
|
|
|
1215
922
|
class BMLoopSeq:
|
|
1216
923
|
layers: BMLayerAccessLoop
|
|
1217
|
-
""" custom-data layers (read-only).
|
|
1218
|
-
|
|
1219
|
-
:type: BMLayerAccessLoop
|
|
1220
|
-
"""
|
|
924
|
+
""" custom-data layers (read-only)."""
|
|
1221
925
|
|
|
1222
926
|
@typing.overload
|
|
1223
927
|
def __getitem__(self, key: int) -> BMLoop:
|
|
1224
928
|
"""
|
|
1225
929
|
|
|
1226
930
|
:param key:
|
|
1227
|
-
:type key: int
|
|
1228
931
|
:return:
|
|
1229
|
-
:rtype: BMLoop
|
|
1230
932
|
"""
|
|
1231
933
|
|
|
1232
934
|
@typing.overload
|
|
1233
|
-
def __getitem__(self, key: slice) -> list[BMLoop
|
|
935
|
+
def __getitem__(self, key: slice) -> list[BMLoop]:
|
|
1234
936
|
"""
|
|
1235
937
|
|
|
1236
938
|
:param key:
|
|
1237
|
-
:type key: slice
|
|
1238
939
|
:return:
|
|
1239
|
-
:rtype: list[BMLoop, ...]
|
|
1240
940
|
"""
|
|
1241
941
|
|
|
1242
942
|
def __iter__(self) -> BMIter[BMLoop]:
|
|
1243
943
|
"""
|
|
1244
944
|
|
|
1245
945
|
:return:
|
|
1246
|
-
:rtype: BMIter[BMLoop]
|
|
1247
946
|
"""
|
|
1248
947
|
|
|
1249
948
|
def __len__(self) -> int:
|
|
1250
949
|
"""
|
|
1251
950
|
|
|
1252
951
|
:return:
|
|
1253
|
-
:rtype: int
|
|
1254
952
|
"""
|
|
1255
953
|
|
|
1256
954
|
class BMLoopUV:
|
|
1257
955
|
pin_uv: bool
|
|
1258
|
-
""" UV pin state.
|
|
1259
|
-
|
|
1260
|
-
:type: bool
|
|
1261
|
-
"""
|
|
1262
|
-
|
|
1263
|
-
select: bool
|
|
1264
|
-
""" UV select state.
|
|
1265
|
-
|
|
1266
|
-
:type: bool
|
|
1267
|
-
"""
|
|
1268
|
-
|
|
1269
|
-
select_edge: bool
|
|
1270
|
-
""" UV edge select state.
|
|
1271
|
-
|
|
1272
|
-
:type: bool
|
|
1273
|
-
"""
|
|
956
|
+
""" UV pin state."""
|
|
1274
957
|
|
|
1275
958
|
uv: mathutils.Vector
|
|
1276
|
-
""" Loops UV (as a 2D Vector).
|
|
1277
|
-
|
|
1278
|
-
:type: mathutils.Vector
|
|
1279
|
-
"""
|
|
959
|
+
""" Loops UV (as a 2D Vector)."""
|
|
1280
960
|
|
|
1281
961
|
class BMVert:
|
|
1282
962
|
"""The BMesh vertex type"""
|
|
1283
963
|
|
|
1284
964
|
co: mathutils.Vector
|
|
1285
|
-
""" The coordinates for this vertex as a 3D, wrapped vector.
|
|
1286
|
-
|
|
1287
|
-
:type: mathutils.Vector
|
|
1288
|
-
"""
|
|
965
|
+
""" The coordinates for this vertex as a 3D, wrapped vector."""
|
|
1289
966
|
|
|
1290
967
|
hide: bool
|
|
1291
|
-
""" Hidden state of this element.
|
|
1292
|
-
|
|
1293
|
-
:type: bool
|
|
1294
|
-
"""
|
|
968
|
+
""" Hidden state of this element."""
|
|
1295
969
|
|
|
1296
970
|
index: int
|
|
1297
|
-
""" Index of this element.
|
|
1298
|
-
|
|
1299
|
-
:type: int
|
|
1300
|
-
"""
|
|
971
|
+
""" Index of this element."""
|
|
1301
972
|
|
|
1302
973
|
is_boundary: bool
|
|
1303
|
-
""" True when this vertex is connected to boundary edges (read-only).
|
|
1304
|
-
|
|
1305
|
-
:type: bool
|
|
1306
|
-
"""
|
|
974
|
+
""" True when this vertex is connected to boundary edges (read-only)."""
|
|
1307
975
|
|
|
1308
976
|
is_manifold: bool
|
|
1309
|
-
""" True when this vertex is manifold (read-only).
|
|
1310
|
-
|
|
1311
|
-
:type: bool
|
|
1312
|
-
"""
|
|
977
|
+
""" True when this vertex is manifold (read-only)."""
|
|
1313
978
|
|
|
1314
979
|
is_valid: bool
|
|
1315
|
-
""" True when this element is valid (hasn't been removed).
|
|
1316
|
-
|
|
1317
|
-
:type: bool
|
|
1318
|
-
"""
|
|
980
|
+
""" True when this element is valid (hasn't been removed)."""
|
|
1319
981
|
|
|
1320
982
|
is_wire: bool
|
|
1321
|
-
""" True when this vertex is not connected to any faces (read-only).
|
|
1322
|
-
|
|
1323
|
-
:type: bool
|
|
1324
|
-
"""
|
|
1325
|
-
|
|
1326
|
-
link_edges: BMElemSeq[BMEdge]
|
|
1327
|
-
""" Edges connected to this vertex (read-only).
|
|
1328
|
-
|
|
1329
|
-
:type: BMElemSeq[BMEdge]
|
|
1330
|
-
"""
|
|
983
|
+
""" True when this vertex is not connected to any faces (read-only)."""
|
|
1331
984
|
|
|
1332
|
-
|
|
1333
|
-
"""
|
|
985
|
+
link_edges: typing.Any
|
|
986
|
+
""" Edges connected to this vertex (read-only)."""
|
|
1334
987
|
|
|
1335
|
-
:
|
|
1336
|
-
"""
|
|
1337
|
-
|
|
1338
|
-
link_loops: BMElemSeq[BMLoop]
|
|
1339
|
-
""" Loops that use this vertex (read-only).
|
|
988
|
+
link_faces: typing.Any
|
|
989
|
+
""" Faces connected to this vertex (read-only)."""
|
|
1340
990
|
|
|
1341
|
-
:
|
|
1342
|
-
"""
|
|
991
|
+
link_loops: typing.Any
|
|
992
|
+
""" Loops that use this vertex (read-only)."""
|
|
1343
993
|
|
|
1344
994
|
normal: mathutils.Vector
|
|
1345
|
-
""" The normal for this vertex as a 3D, wrapped vector.
|
|
1346
|
-
|
|
1347
|
-
:type: mathutils.Vector
|
|
1348
|
-
"""
|
|
995
|
+
""" The normal for this vertex as a 3D, wrapped vector."""
|
|
1349
996
|
|
|
1350
997
|
select: bool
|
|
1351
|
-
""" Selected state of this element.
|
|
1352
|
-
|
|
1353
|
-
:type: bool
|
|
1354
|
-
"""
|
|
998
|
+
""" Selected state of this element."""
|
|
1355
999
|
|
|
1356
1000
|
tag: bool
|
|
1357
|
-
""" Generic attribute scripts can use for own logic
|
|
1358
|
-
|
|
1359
|
-
:type: bool
|
|
1360
|
-
"""
|
|
1001
|
+
""" Generic attribute scripts can use for own logic"""
|
|
1361
1002
|
|
|
1362
1003
|
def calc_edge_angle(self, fallback: typing.Any | None = None) -> float:
|
|
1363
|
-
"""Return the angle between this
|
|
1004
|
+
"""Return the angle between this verts two connected edges.
|
|
1364
1005
|
|
|
1365
|
-
:param fallback: return this when the vert
|
|
1006
|
+
:param fallback: return this when the vert doesnt have 2 edges
|
|
1366
1007
|
(instead of raising a `ValueError`).
|
|
1367
|
-
:type fallback: typing.Any | None
|
|
1368
1008
|
:return: Angle between edges in radians.
|
|
1369
|
-
:rtype: float
|
|
1370
1009
|
"""
|
|
1371
1010
|
|
|
1372
1011
|
def calc_shell_factor(self) -> float:
|
|
@@ -1375,54 +1014,47 @@ class BMVert:
|
|
|
1375
1014
|
This is used to maintain shell thickness when offsetting verts along their normals.
|
|
1376
1015
|
|
|
1377
1016
|
:return: offset multiplier
|
|
1378
|
-
:rtype: float
|
|
1379
1017
|
"""
|
|
1380
1018
|
|
|
1381
|
-
def copy_from(self, other: typing_extensions.Self):
|
|
1019
|
+
def copy_from(self, other: typing_extensions.Self) -> None:
|
|
1382
1020
|
"""Copy values from another element of matching type.
|
|
1383
1021
|
|
|
1384
1022
|
:param other:
|
|
1385
|
-
:type other: typing_extensions.Self
|
|
1386
1023
|
"""
|
|
1387
1024
|
|
|
1388
|
-
def copy_from_face_interp(self, face: BMFace):
|
|
1025
|
+
def copy_from_face_interp(self, face: BMFace) -> None:
|
|
1389
1026
|
"""Interpolate the customdata from a face onto this loop (the loops vert should overlap the face).
|
|
1390
1027
|
|
|
1391
1028
|
:param face: The face to interpolate data from.
|
|
1392
|
-
:type face: BMFace
|
|
1393
1029
|
"""
|
|
1394
1030
|
|
|
1395
1031
|
def copy_from_vert_interp(
|
|
1396
1032
|
self, vert_pair: collections.abc.Sequence[BMVert], fac: float
|
|
1397
|
-
):
|
|
1033
|
+
) -> None:
|
|
1398
1034
|
"""Interpolate the customdata from a vert between 2 other verts.
|
|
1399
1035
|
|
|
1400
1036
|
:param vert_pair: The verts between which to interpolate data from.
|
|
1401
|
-
:
|
|
1402
|
-
:param fac:
|
|
1403
|
-
:type fac: float
|
|
1037
|
+
:param fac: The interpolation factor.
|
|
1404
1038
|
"""
|
|
1405
1039
|
|
|
1406
|
-
def hide_set(self, hide: bool):
|
|
1040
|
+
def hide_set(self, hide: bool) -> None:
|
|
1407
1041
|
"""Set the hide state.
|
|
1408
1042
|
This is different from the hide attribute because it updates the selection and hide state of associated geometry.
|
|
1409
1043
|
|
|
1410
1044
|
:param hide: Hidden or visible.
|
|
1411
|
-
:type hide: bool
|
|
1412
1045
|
"""
|
|
1413
1046
|
|
|
1414
|
-
def normal_update(self):
|
|
1047
|
+
def normal_update(self) -> None:
|
|
1415
1048
|
"""Update vertex normal.
|
|
1416
1049
|
This does not update the normals of adjoining faces.
|
|
1417
1050
|
|
|
1418
1051
|
"""
|
|
1419
1052
|
|
|
1420
|
-
def select_set(self, select: bool):
|
|
1053
|
+
def select_set(self, select: bool) -> None:
|
|
1421
1054
|
"""Set the selection.
|
|
1422
1055
|
This is different from the select attribute because it updates the selection state of associated geometry.
|
|
1423
1056
|
|
|
1424
1057
|
:param select: Select or de-select.
|
|
1425
|
-
:type select: bool
|
|
1426
1058
|
"""
|
|
1427
1059
|
|
|
1428
1060
|
def __getitem__[_GenericType1](
|
|
@@ -1431,40 +1063,32 @@ class BMVert:
|
|
|
1431
1063
|
"""
|
|
1432
1064
|
|
|
1433
1065
|
:param key:
|
|
1434
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1435
1066
|
:return:
|
|
1436
|
-
:rtype: _GenericType1
|
|
1437
1067
|
"""
|
|
1438
1068
|
|
|
1439
1069
|
def __setitem__[_GenericType1](
|
|
1440
1070
|
self, key: BMLayerItem[_GenericType1], value: _GenericType1
|
|
1441
|
-
):
|
|
1071
|
+
) -> None:
|
|
1442
1072
|
"""
|
|
1443
1073
|
|
|
1444
1074
|
:param key:
|
|
1445
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1446
1075
|
:param value:
|
|
1447
|
-
:type value: _GenericType1
|
|
1448
1076
|
"""
|
|
1449
1077
|
|
|
1450
|
-
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]):
|
|
1078
|
+
def __delitem__[_GenericType1](self, key: BMLayerItem[_GenericType1]) -> None:
|
|
1451
1079
|
"""
|
|
1452
1080
|
|
|
1453
1081
|
:param key:
|
|
1454
|
-
:type key: BMLayerItem[_GenericType1]
|
|
1455
1082
|
"""
|
|
1456
1083
|
|
|
1457
1084
|
class BMVertSeq:
|
|
1458
1085
|
layers: BMLayerAccessVert
|
|
1459
|
-
""" custom-data layers (read-only).
|
|
1460
|
-
|
|
1461
|
-
:type: BMLayerAccessVert
|
|
1462
|
-
"""
|
|
1086
|
+
""" custom-data layers (read-only)."""
|
|
1463
1087
|
|
|
1464
|
-
def ensure_lookup_table(self):
|
|
1088
|
+
def ensure_lookup_table(self) -> None:
|
|
1465
1089
|
"""Ensure internal data needed for int subscription is initialized with verts/edges/faces, eg bm.verts[index].This needs to be called again after adding/removing data in this sequence."""
|
|
1466
1090
|
|
|
1467
|
-
def index_update(self):
|
|
1091
|
+
def index_update(self) -> None:
|
|
1468
1092
|
"""Initialize the index values of this sequence.This is the equivalent of looping over all elements and assigning the index values."""
|
|
1469
1093
|
|
|
1470
1094
|
def new(
|
|
@@ -1475,34 +1099,29 @@ class BMVertSeq:
|
|
|
1475
1099
|
"""Create a new vertex.
|
|
1476
1100
|
|
|
1477
1101
|
:param co: The initial location of the vertex (optional argument).
|
|
1478
|
-
:type co: collections.abc.Sequence[float] | mathutils.Vector
|
|
1479
1102
|
:param example: Existing vert to initialize settings.
|
|
1480
|
-
:type example: BMVert | None
|
|
1481
1103
|
:return: The newly created vertex.
|
|
1482
|
-
:rtype: BMVert
|
|
1483
1104
|
"""
|
|
1484
1105
|
|
|
1485
|
-
def remove(self, vert: BMVert):
|
|
1106
|
+
def remove(self, vert: BMVert) -> None:
|
|
1486
1107
|
"""Remove a vert.
|
|
1487
1108
|
|
|
1488
|
-
:param vert:
|
|
1489
|
-
:type vert: BMVert
|
|
1109
|
+
:param vert: The vert to remove.
|
|
1490
1110
|
"""
|
|
1491
1111
|
|
|
1492
1112
|
def sort(
|
|
1493
1113
|
self,
|
|
1114
|
+
*,
|
|
1494
1115
|
key: None
|
|
1495
1116
|
| collections.abc.Callable[[BMVert | BMEdge | BMFace], int]
|
|
1496
1117
|
| None = None,
|
|
1497
1118
|
reverse: bool = False,
|
|
1498
|
-
):
|
|
1119
|
+
) -> None:
|
|
1499
1120
|
"""Sort the elements of this sequence, using an optional custom sort key.
|
|
1500
|
-
Indices of elements are not changed, `BMElemSeq.index_update` can be used for that.
|
|
1121
|
+
Indices of elements are not changed, `bmesh.types.BMElemSeq.index_update` can be used for that.
|
|
1501
1122
|
|
|
1502
1123
|
:param key: The key that sets the ordering of the elements.
|
|
1503
|
-
:type key: None | collections.abc.Callable[[BMVert | BMEdge | BMFace], int] | None
|
|
1504
1124
|
:param reverse: Reverse the order of the elements
|
|
1505
|
-
:type reverse: bool
|
|
1506
1125
|
"""
|
|
1507
1126
|
|
|
1508
1127
|
@typing.overload
|
|
@@ -1510,188 +1129,226 @@ class BMVertSeq:
|
|
|
1510
1129
|
"""
|
|
1511
1130
|
|
|
1512
1131
|
:param key:
|
|
1513
|
-
:type key: int
|
|
1514
1132
|
:return:
|
|
1515
|
-
:rtype: BMVert
|
|
1516
1133
|
"""
|
|
1517
1134
|
|
|
1518
1135
|
@typing.overload
|
|
1519
|
-
def __getitem__(self, key: slice) -> list[BMVert
|
|
1136
|
+
def __getitem__(self, key: slice) -> list[BMVert]:
|
|
1520
1137
|
"""
|
|
1521
1138
|
|
|
1522
1139
|
:param key:
|
|
1523
|
-
:type key: slice
|
|
1524
1140
|
:return:
|
|
1525
|
-
:rtype: list[BMVert, ...]
|
|
1526
1141
|
"""
|
|
1527
1142
|
|
|
1528
1143
|
def __iter__(self) -> BMIter[BMVert]:
|
|
1529
1144
|
"""
|
|
1530
1145
|
|
|
1531
1146
|
:return:
|
|
1532
|
-
:rtype: BMIter[BMVert]
|
|
1533
1147
|
"""
|
|
1534
1148
|
|
|
1535
1149
|
def __len__(self) -> int:
|
|
1536
1150
|
"""
|
|
1537
1151
|
|
|
1538
1152
|
:return:
|
|
1539
|
-
:rtype: int
|
|
1540
1153
|
"""
|
|
1541
1154
|
|
|
1542
1155
|
class BMesh:
|
|
1543
1156
|
"""The BMesh data structure"""
|
|
1544
1157
|
|
|
1545
1158
|
edges: BMEdgeSeq
|
|
1546
|
-
""" This meshes edge sequence (read-only).
|
|
1547
|
-
|
|
1548
|
-
:type: BMEdgeSeq
|
|
1549
|
-
"""
|
|
1159
|
+
""" This meshes edge sequence (read-only)."""
|
|
1550
1160
|
|
|
1551
1161
|
faces: BMFaceSeq
|
|
1552
|
-
""" This meshes face sequence (read-only).
|
|
1553
|
-
|
|
1554
|
-
:type: BMFaceSeq
|
|
1555
|
-
"""
|
|
1162
|
+
""" This meshes face sequence (read-only)."""
|
|
1556
1163
|
|
|
1557
1164
|
is_valid: bool
|
|
1558
|
-
""" True when this element is valid (hasn't been removed).
|
|
1559
|
-
|
|
1560
|
-
:type: bool
|
|
1561
|
-
"""
|
|
1165
|
+
""" True when this element is valid (hasn't been removed)."""
|
|
1562
1166
|
|
|
1563
1167
|
is_wrapped: bool
|
|
1564
|
-
""" True when this mesh is owned by blender (typically the editmode BMesh).
|
|
1565
|
-
|
|
1566
|
-
:type: bool
|
|
1567
|
-
"""
|
|
1168
|
+
""" True when this mesh is owned by blender (typically the editmode BMesh)."""
|
|
1568
1169
|
|
|
1569
1170
|
loops: BMLoopSeq
|
|
1570
|
-
""" This meshes loops (read-only).
|
|
1571
|
-
|
|
1572
|
-
:type: BMLoopSeq
|
|
1573
|
-
"""
|
|
1171
|
+
""" This meshes loops (read-only)."""
|
|
1574
1172
|
|
|
1575
1173
|
select_history: BMEditSelSeq
|
|
1576
|
-
""" Sequence of selected items (the last is displayed as active).
|
|
1577
|
-
|
|
1578
|
-
:type: BMEditSelSeq
|
|
1579
|
-
"""
|
|
1174
|
+
""" Sequence of selected items (the last is displayed as active)."""
|
|
1580
1175
|
|
|
1581
|
-
select_mode: set
|
|
1582
|
-
""" The selection mode,
|
|
1176
|
+
select_mode: set[typing.Literal["VERT", "EDGE", "FACE"]]
|
|
1177
|
+
""" The selection mode, cannot be assigned an empty set."""
|
|
1583
1178
|
|
|
1584
|
-
:
|
|
1585
|
-
"""
|
|
1179
|
+
uv_select_sync_valid: bool
|
|
1180
|
+
""" When true, the UV selection has been synchronized. Setting to False means the UV selection will be ignored. While setting to true is supported it is up to the script author to ensure a correct selection state before doing so."""
|
|
1586
1181
|
|
|
1587
1182
|
verts: BMVertSeq
|
|
1588
|
-
""" This meshes vert sequence (read-only).
|
|
1589
|
-
|
|
1590
|
-
:type: BMVertSeq
|
|
1591
|
-
"""
|
|
1183
|
+
""" This meshes vert sequence (read-only)."""
|
|
1592
1184
|
|
|
1593
1185
|
def calc_loop_triangles(self) -> list[tuple[BMLoop, BMLoop, BMLoop]]:
|
|
1594
1186
|
"""Calculate triangle tessellation from quads/ngons.
|
|
1595
1187
|
|
|
1596
1188
|
:return: The triangulated faces.
|
|
1597
|
-
:rtype: list[tuple[BMLoop, BMLoop, BMLoop]]
|
|
1598
1189
|
"""
|
|
1599
1190
|
|
|
1600
|
-
def calc_volume(self, signed: bool = False) -> float:
|
|
1191
|
+
def calc_volume(self, *, signed: bool = False) -> float:
|
|
1601
1192
|
"""Calculate mesh volume based on face normals.
|
|
1602
1193
|
|
|
1603
1194
|
:param signed: when signed is true, negative values may be returned.
|
|
1604
|
-
:type signed: bool
|
|
1605
1195
|
:return: The volume of the mesh.
|
|
1606
|
-
:rtype: float
|
|
1607
1196
|
"""
|
|
1608
1197
|
|
|
1609
|
-
def clear(self):
|
|
1198
|
+
def clear(self) -> None:
|
|
1610
1199
|
"""Clear all mesh data."""
|
|
1611
1200
|
|
|
1612
1201
|
def copy(self) -> typing_extensions.Self:
|
|
1613
1202
|
"""
|
|
1614
1203
|
|
|
1615
1204
|
:return: A copy of this BMesh.
|
|
1616
|
-
:rtype: typing_extensions.Self
|
|
1617
1205
|
"""
|
|
1618
1206
|
|
|
1619
|
-
def free(self):
|
|
1207
|
+
def free(self) -> None:
|
|
1620
1208
|
"""Explicitly free the BMesh data from memory, causing exceptions on further access."""
|
|
1621
1209
|
|
|
1622
1210
|
def from_mesh(
|
|
1623
1211
|
self,
|
|
1624
1212
|
mesh: bpy.types.Mesh,
|
|
1213
|
+
*,
|
|
1625
1214
|
face_normals: bool = True,
|
|
1626
1215
|
vertex_normals: bool = True,
|
|
1627
1216
|
use_shape_key: bool = False,
|
|
1628
1217
|
shape_key_index: int = 0,
|
|
1629
|
-
):
|
|
1630
|
-
"""Initialize this bmesh from existing mesh
|
|
1218
|
+
) -> None:
|
|
1219
|
+
"""Initialize this bmesh from existing mesh data-block.
|
|
1631
1220
|
|
|
1632
1221
|
:param mesh: The mesh data to load.
|
|
1633
|
-
:
|
|
1634
|
-
:param
|
|
1635
|
-
:type face_normals: bool
|
|
1636
|
-
:param vertex_normals:
|
|
1637
|
-
:type vertex_normals: bool
|
|
1222
|
+
:param face_normals: Calculate face normals.
|
|
1223
|
+
:param vertex_normals: Calculate vertex normals.
|
|
1638
1224
|
:param use_shape_key: Use the locations from a shape key.
|
|
1639
|
-
:type use_shape_key: bool
|
|
1640
1225
|
:param shape_key_index: The shape key index to use.
|
|
1641
|
-
:type shape_key_index: int
|
|
1642
1226
|
"""
|
|
1643
1227
|
|
|
1644
1228
|
def from_object(
|
|
1645
1229
|
self,
|
|
1646
1230
|
object: bpy.types.Object,
|
|
1647
1231
|
depsgraph: bpy.types.Depsgraph,
|
|
1232
|
+
*,
|
|
1648
1233
|
cage: bool = False,
|
|
1649
1234
|
face_normals: bool = True,
|
|
1650
1235
|
vertex_normals: bool = True,
|
|
1651
|
-
):
|
|
1236
|
+
) -> None:
|
|
1652
1237
|
"""Initialize this bmesh from existing object data-block (only meshes are currently supported).
|
|
1653
1238
|
|
|
1654
1239
|
:param object: The object data to load.
|
|
1655
|
-
:
|
|
1656
|
-
:param depsgraph:
|
|
1657
|
-
:type depsgraph: bpy.types.Depsgraph
|
|
1240
|
+
:param depsgraph: The dependency graph for evaluated data.
|
|
1658
1241
|
:param cage: Get the mesh as a deformed cage.
|
|
1659
|
-
:type cage: bool
|
|
1660
1242
|
:param face_normals: Calculate face normals.
|
|
1661
|
-
:type face_normals: bool
|
|
1662
1243
|
:param vertex_normals: Calculate vertex normals.
|
|
1663
|
-
:type vertex_normals: bool
|
|
1664
1244
|
"""
|
|
1665
1245
|
|
|
1666
|
-
def normal_update(self):
|
|
1246
|
+
def normal_update(self) -> None:
|
|
1667
1247
|
"""Update normals of mesh faces and verts."""
|
|
1668
1248
|
|
|
1669
|
-
def select_flush(self, select: bool):
|
|
1670
|
-
"""Flush selection, independent of the current selection mode.
|
|
1249
|
+
def select_flush(self, select: bool) -> None:
|
|
1250
|
+
"""Flush selection from vertices, independent of the current selection mode.
|
|
1671
1251
|
|
|
1672
1252
|
:param select: flush selection or de-selected elements.
|
|
1673
|
-
:type select: bool
|
|
1674
1253
|
"""
|
|
1675
1254
|
|
|
1676
|
-
def select_flush_mode(self):
|
|
1677
|
-
"""
|
|
1255
|
+
def select_flush_mode(self, *, flush_down: bool = False) -> None:
|
|
1256
|
+
"""Flush selection based on the current mode current `bmesh.types.BMesh.select_mode`.
|
|
1678
1257
|
|
|
1679
|
-
|
|
1680
|
-
"""
|
|
1258
|
+
:param flush_down: Flush selection down from faces to edges & verts or from edges to verts. This option is ignored when vertex selection mode is enabled.
|
|
1259
|
+
"""
|
|
1260
|
+
|
|
1261
|
+
def to_mesh(self, mesh: bpy.types.Mesh) -> None:
|
|
1262
|
+
"""Writes this BMesh data into an existing Mesh data-block.
|
|
1681
1263
|
|
|
1682
1264
|
:param mesh: The mesh data to write into.
|
|
1683
|
-
:type mesh: bpy.types.Mesh
|
|
1684
1265
|
"""
|
|
1685
1266
|
|
|
1686
1267
|
def transform(
|
|
1687
1268
|
self,
|
|
1688
1269
|
matrix: collections.abc.Sequence[collections.abc.Sequence[float]]
|
|
1689
1270
|
| mathutils.Matrix,
|
|
1690
|
-
|
|
1691
|
-
|
|
1271
|
+
*,
|
|
1272
|
+
filter: set[typing.Literal["SELECT", "HIDE", "SEAM", "SMOOTH", "TAG"]]
|
|
1273
|
+
| None = None,
|
|
1274
|
+
) -> None:
|
|
1692
1275
|
"""Transform the mesh (optionally filtering flagged data only).
|
|
1693
1276
|
|
|
1694
|
-
:param matrix:
|
|
1695
|
-
:
|
|
1696
|
-
:param filter: set of values in ('SELECT', 'HIDE', 'SEAM', 'SMOOTH', 'TAG').
|
|
1277
|
+
:param matrix: 4x4 transform matrix.
|
|
1278
|
+
:param filter: Flag to filter vertices.
|
|
1697
1279
|
"""
|
|
1280
|
+
|
|
1281
|
+
def uv_select_flush(self, select: bool) -> None:
|
|
1282
|
+
"""Flush selection from UV vertices to edges & faces independent of the selection mode.
|
|
1283
|
+
|
|
1284
|
+
:param select: Flush selection or de-selected elements.
|
|
1285
|
+
"""
|
|
1286
|
+
|
|
1287
|
+
def uv_select_flush_mode(self, *, flush_down: bool = False) -> None:
|
|
1288
|
+
"""Flush selection based on the current mode current `BMesh.select_mode`.
|
|
1289
|
+
|
|
1290
|
+
:param flush_down: Flush selection down from faces to edges & verts or from edges to verts. This option is ignored when vertex selection mode is enabled.
|
|
1291
|
+
"""
|
|
1292
|
+
|
|
1293
|
+
def uv_select_flush_shared(self, select: bool) -> None:
|
|
1294
|
+
"""Flush selection from UV vertices to contiguous UVs independent of the selection mode.
|
|
1295
|
+
|
|
1296
|
+
:param select: Flush selection or de-selected elements.
|
|
1297
|
+
"""
|
|
1298
|
+
|
|
1299
|
+
def uv_select_foreach_set(
|
|
1300
|
+
self,
|
|
1301
|
+
select: bool,
|
|
1302
|
+
/,
|
|
1303
|
+
*,
|
|
1304
|
+
loop_verts: collections.abc.Iterable[BMLoop] = (),
|
|
1305
|
+
loop_edges: collections.abc.Iterable[BMLoop] = (),
|
|
1306
|
+
faces: collections.abc.Iterable[BMFace] = (),
|
|
1307
|
+
sticky_select_mode: typing.Literal[
|
|
1308
|
+
"SHARED_LOCATION", "DISABLED", "SHARED_VERTEX"
|
|
1309
|
+
] = "SHARED_LOCATION",
|
|
1310
|
+
) -> None:
|
|
1311
|
+
"""Set the UV selection state for loop-vertices, loop-edges & faces.This is a close equivalent to selecting in the UV editor.
|
|
1312
|
+
|
|
1313
|
+
:param select: The selection state to set.
|
|
1314
|
+
:param loop_verts: Loop verts to operate on.
|
|
1315
|
+
:param loop_edges: Loop edges to operate on.
|
|
1316
|
+
:param faces: Faces to operate on.
|
|
1317
|
+
:param sticky_select_mode: See UV_STICKY_SELECT_MODE_REF.
|
|
1318
|
+
"""
|
|
1319
|
+
|
|
1320
|
+
def uv_select_foreach_set_from_mesh(
|
|
1321
|
+
self,
|
|
1322
|
+
select: bool,
|
|
1323
|
+
/,
|
|
1324
|
+
*,
|
|
1325
|
+
verts: collections.abc.Iterable[BMVert] = (),
|
|
1326
|
+
edges: collections.abc.Iterable[BMEdge] = (),
|
|
1327
|
+
faces: collections.abc.Iterable[BMFace] = (),
|
|
1328
|
+
sticky_select_mode: typing.Literal[
|
|
1329
|
+
"SHARED_LOCATION", "DISABLED", "SHARED_VERTEX"
|
|
1330
|
+
] = "SHARED_LOCATION",
|
|
1331
|
+
) -> None:
|
|
1332
|
+
"""Select or de-select mesh elements, updating the UV selection.An equivalent to selecting from the 3D viewport for selection operations that support maintaining a synchronized UV selection.
|
|
1333
|
+
|
|
1334
|
+
:param select: The selection state to set.
|
|
1335
|
+
:param verts: Verts to operate on.
|
|
1336
|
+
:param edges: Edges to operate on.
|
|
1337
|
+
:param faces: Faces to operate on.
|
|
1338
|
+
:param sticky_select_mode: See UV_STICKY_SELECT_MODE_REF.
|
|
1339
|
+
"""
|
|
1340
|
+
|
|
1341
|
+
def uv_select_sync_from_mesh(
|
|
1342
|
+
self,
|
|
1343
|
+
*,
|
|
1344
|
+
sticky_select_mode: typing.Literal[
|
|
1345
|
+
"SHARED_LOCATION", "DISABLED", "SHARED_VERTEX"
|
|
1346
|
+
] = "SHARED_LOCATION",
|
|
1347
|
+
) -> None:
|
|
1348
|
+
"""Sync selection from mesh to UVs.
|
|
1349
|
+
|
|
1350
|
+
:param sticky_select_mode: Behavior when flushing from the mesh to UV selection UV_STICKY_SELECT_MODE_REF. This should only be used when preparing to create a UV selection.
|
|
1351
|
+
"""
|
|
1352
|
+
|
|
1353
|
+
def uv_select_sync_to_mesh(self) -> None:
|
|
1354
|
+
"""Sync selection from UVs to the mesh."""
|