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