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