fake-bpy-module 20240321__py3-none-any.whl → 20240322__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.
Potentially problematic release.
This version of fake-bpy-module might be problematic. Click here for more details.
- addon_utils/__init__.pyi +54 -10
- animsys_refactor/__init__.pyi +27 -11
- aud/__init__.pyi +130 -123
- bgl/__init__.pyi +1831 -216
- bl_app_override/__init__.pyi +14 -3
- bl_app_override/helpers/__init__.pyi +19 -10
- bl_app_template_utils/__init__.pyi +19 -4
- bl_console_utils/autocomplete/complete_calltip/__init__.pyi +24 -5
- bl_console_utils/autocomplete/complete_import/__init__.pyi +14 -3
- bl_console_utils/autocomplete/complete_namespace/__init__.pyi +24 -5
- bl_console_utils/autocomplete/intellisense/__init__.pyi +9 -2
- bl_i18n_utils/bl_extract_messages/__init__.pyi +74 -15
- bl_i18n_utils/merge_po/__init__.pyi +4 -1
- bl_i18n_utils/settings/__init__.pyi +19 -23
- bl_i18n_utils/utils/__init__.pyi +81 -143
- bl_i18n_utils/utils_cli/__init__.pyi +29 -6
- bl_i18n_utils/utils_languages_menu/__init__.pyi +4 -1
- bl_i18n_utils/utils_rtl/__init__.pyi +9 -2
- bl_keymap_utils/io/__init__.pyi +44 -9
- bl_keymap_utils/keymap_from_toolbar/__init__.pyi +4 -1
- bl_keymap_utils/keymap_hierarchy/__init__.pyi +4 -1
- bl_keymap_utils/platform_helpers/__init__.pyi +9 -2
- bl_keymap_utils/versioning/__init__.pyi +4 -1
- bl_math/__init__.pyi +3 -3
- bl_operators/__init__.pyi +9 -2
- bl_operators/add_mesh_torus/__init__.pyi +120 -49
- bl_operators/anim/__init__.pyi +903 -297
- bl_operators/assets/__init__.pyi +348 -123
- bl_operators/bmesh/find_adjacent/__init__.pyi +44 -9
- bl_operators/clip/__init__.pyi +1262 -470
- bl_operators/console/__init__.pyi +542 -160
- bl_operators/constraint/__init__.pyi +452 -140
- bl_operators/file/__init__.pyi +339 -114
- bl_operators/freestyle/__init__.pyi +440 -132
- bl_operators/geometry_nodes/__init__.pyi +2131 -842
- bl_operators/image/__init__.pyi +330 -97
- bl_operators/mesh/__init__.pyi +339 -109
- bl_operators/node/__init__.pyi +1506 -621
- bl_operators/object/__init__.pyi +1828 -668
- bl_operators/object_align/__init__.pyi +124 -35
- bl_operators/object_quick_effects/__init__.pyi +470 -149
- bl_operators/object_randomize_transform/__init__.pyi +114 -35
- bl_operators/presets/__init__.pyi +3056 -1374
- bl_operators/rigidbody/__init__.pyi +336 -106
- bl_operators/screen_play_rendered_anim/__init__.pyi +115 -33
- bl_operators/sequencer/__init__.pyi +579 -204
- bl_operators/spreadsheet/__init__.pyi +110 -38
- bl_operators/userpref/__init__.pyi +3201 -1236
- bl_operators/uvcalc_follow_active/__init__.pyi +119 -38
- bl_operators/uvcalc_lightmap/__init__.pyi +137 -54
- bl_operators/uvcalc_transform/__init__.pyi +295 -83
- bl_operators/vertexpaint_dirt/__init__.pyi +119 -34
- bl_operators/view3d/__init__.pyi +542 -184
- bl_operators/wm/__init__.pyi +5554 -2159
- bl_previews_utils/bl_previews_render/__init__.pyi +34 -7
- bl_rna_utils/data_path/__init__.pyi +12 -2
- bl_text_utils/external_editor/__init__.pyi +4 -1
- bl_ui/__init__.pyi +346 -146
- bl_ui/anim/__init__.pyi +107 -47
- bl_ui/asset_shelf/__init__.pyi +111 -33
- bl_ui/generic_ui_list/__init__.pyi +349 -146
- bl_ui/node_add_menu/__init__.pyi +138 -53
- bl_ui/node_add_menu_compositor/__init__.pyi +2134 -1016
- bl_ui/node_add_menu_geometry/__init__.pyi +5833 -2855
- bl_ui/node_add_menu_shader/__init__.pyi +1162 -511
- bl_ui/node_add_menu_texture/__init__.pyi +1008 -450
- bl_ui/properties_animviz/__init__.pyi +14 -12
- bl_ui/properties_collection/__init__.pyi +601 -218
- bl_ui/properties_constraint/__init__.pyi +10115 -10647
- bl_ui/properties_data_armature/__init__.pyi +1550 -648
- bl_ui/properties_data_bone/__init__.pyi +1317 -511
- bl_ui/properties_data_camera/__init__.pyi +1852 -719
- bl_ui/properties_data_curve/__init__.pyi +2015 -781
- bl_ui/properties_data_curves/__init__.pyi +713 -262
- bl_ui/properties_data_empty/__init__.pyi +252 -84
- bl_ui/properties_data_gpencil/__init__.pyi +2505 -1105
- bl_ui/properties_data_grease_pencil/__init__.pyi +1350 -594
- bl_ui/properties_data_lattice/__init__.pyi +374 -123
- bl_ui/properties_data_light/__init__.pyi +1319 -489
- bl_ui/properties_data_lightprobe/__init__.pyi +734 -241
- bl_ui/properties_data_mesh/__init__.pyi +2652 -1189
- bl_ui/properties_data_metaball/__init__.pyi +610 -197
- bl_ui/properties_data_modifier/__init__.pyi +1143 -506
- bl_ui/properties_data_pointcloud/__init__.pyi +670 -303
- bl_ui/properties_data_shaderfx/__init__.pyi +126 -36
- bl_ui/properties_data_speaker/__init__.pyi +618 -195
- bl_ui/properties_data_volume/__init__.pyi +1052 -408
- bl_ui/properties_freestyle/__init__.pyi +3366 -1450
- bl_ui/properties_grease_pencil_common/__init__.pyi +1634 -776
- bl_ui/properties_mask_common/__init__.pyi +803 -371
- bl_ui/properties_material/__init__.pyi +2038 -831
- bl_ui/properties_material_gpencil/__init__.pyi +1272 -523
- bl_ui/properties_object/__init__.pyi +1863 -745
- bl_ui/properties_output/__init__.pyi +2482 -1071
- bl_ui/properties_paint_common/__init__.pyi +317 -424
- bl_ui/properties_particle/__init__.pyi +7235 -2942
- bl_ui/properties_physics_cloth/__init__.pyi +1903 -758
- bl_ui/properties_physics_common/__init__.pyi +164 -51
- bl_ui/properties_physics_dynamicpaint/__init__.pyi +2787 -1114
- bl_ui/properties_physics_field/__init__.pyi +1294 -486
- bl_ui/properties_physics_fluid/__init__.pyi +3631 -1545
- bl_ui/properties_physics_geometry_nodes/__init__.pyi +115 -34
- bl_ui/properties_physics_rigidbody/__init__.pyi +983 -312
- bl_ui/properties_physics_rigidbody_constraint/__init__.pyi +1718 -656
- bl_ui/properties_physics_softbody/__init__.pyi +2091 -836
- bl_ui/properties_render/__init__.pyi +7177 -2939
- bl_ui/properties_scene/__init__.pyi +1881 -760
- bl_ui/properties_texture/__init__.pyi +3539 -1399
- bl_ui/properties_view_layer/__init__.pyi +2368 -940
- bl_ui/properties_workspace/__init__.pyi +517 -202
- bl_ui/properties_world/__init__.pyi +862 -269
- bl_ui/space_clip/__init__.pyi +9127 -4137
- bl_ui/space_console/__init__.pyi +666 -286
- bl_ui/space_dopesheet/__init__.pyi +3287 -1504
- bl_ui/space_filebrowser/__init__.pyi +3958 -1935
- bl_ui/space_graph/__init__.pyi +2406 -1142
- bl_ui/space_image/__init__.pyi +9242 -4526
- bl_ui/space_info/__init__.pyi +664 -285
- bl_ui/space_nla/__init__.pyi +2014 -932
- bl_ui/space_node/__init__.pyi +4549 -1949
- bl_ui/space_outliner/__init__.pyi +1619 -745
- bl_ui/space_properties/__init__.pyi +340 -105
- bl_ui/space_sequencer/__init__.pyi +9396 -4264
- bl_ui/space_spreadsheet/__init__.pyi +110 -60
- bl_ui/space_statusbar/__init__.pyi +107 -32
- bl_ui/space_text/__init__.pyi +1907 -872
- bl_ui/space_time/__init__.pyi +812 -327
- bl_ui/space_toolsystem_common/__init__.pyi +203 -99
- bl_ui/space_toolsystem_toolbar/__init__.pyi +845 -289
- bl_ui/space_topbar/__init__.pyi +3131 -1437
- bl_ui/space_userpref/__init__.pyi +11510 -4926
- bl_ui/space_view3d/__init__.pyi +31358 -14417
- bl_ui/space_view3d_toolbar/__init__.pyi +12401 -6163
- bl_ui/utils/__init__.pyi +7 -16
- bl_ui_utils/bug_report_url/__init__.pyi +4 -1
- bl_ui_utils/layout/__init__.pyi +4 -1
- blend_render_info/__init__.pyi +13 -3
- blf/__init__.pyi +5 -7
- bmesh/__init__.pyi +7 -7
- bmesh/geometry/__init__.pyi +5 -5
- bmesh/ops/__init__.pyi +490 -504
- bmesh/types/__init__.pyi +253 -247
- bmesh/utils/__init__.pyi +54 -54
- bpy/__init__.pyi +2 -2
- bpy/app/__init__.pyi +4 -5
- bpy/app/handlers/__init__.pyi +36 -36
- bpy/app/icons/__init__.pyi +8 -10
- bpy/app/timers/__init__.pyi +9 -11
- bpy/app/translations/__init__.pyi +20 -22
- bpy/msgbus/__init__.pyi +3 -12
- bpy/ops/action/__init__.pyi +316 -415
- bpy/ops/anim/__init__.pyi +428 -566
- bpy/ops/armature/__init__.pyi +360 -488
- bpy/ops/asset/__init__.pyi +146 -183
- bpy/ops/boid/__init__.pyi +50 -67
- bpy/ops/brush/__init__.pyi +72 -96
- bpy/ops/buttons/__init__.pyi +128 -142
- bpy/ops/cachefile/__init__.pyi +124 -137
- bpy/ops/camera/__init__.pyi +22 -28
- bpy/ops/clip/__init__.pyi +768 -1005
- bpy/ops/cloth/__init__.pyi +10 -13
- bpy/ops/collection/__init__.pyi +36 -50
- bpy/ops/console/__init__.pyi +150 -203
- bpy/ops/constraint/__init__.pyi +150 -201
- bpy/ops/curve/__init__.pyi +474 -607
- bpy/ops/curves/__init__.pyi +170 -221
- bpy/ops/cycles/__init__.pyi +18 -26
- bpy/ops/dpaint/__init__.pyi +34 -46
- bpy/ops/ed/__init__.pyi +122 -149
- bpy/ops/export_anim/__init__.pyi +18 -21
- bpy/ops/export_mesh/__init__.pyi +26 -29
- bpy/ops/export_scene/__init__.pyi +307 -342
- bpy/ops/file/__init__.pyi +342 -436
- bpy/ops/fluid/__init__.pyi +88 -117
- bpy/ops/font/__init__.pyi +252 -311
- bpy/ops/geometry/__init__.pyi +86 -113
- bpy/ops/gizmogroup/__init__.pyi +22 -27
- bpy/ops/gpencil/__init__.pyi +1444 -1864
- bpy/ops/graph/__init__.pyi +642 -822
- bpy/ops/grease_pencil/__init__.pyi +426 -576
- bpy/ops/image/__init__.pyi +612 -733
- bpy/ops/import_anim/__init__.pyi +26 -29
- bpy/ops/import_curve/__init__.pyi +6 -9
- bpy/ops/import_mesh/__init__.pyi +18 -23
- bpy/ops/import_scene/__init__.pyi +86 -101
- bpy/ops/info/__init__.pyi +60 -77
- bpy/ops/lattice/__init__.pyi +64 -85
- bpy/ops/marker/__init__.pyi +106 -137
- bpy/ops/mask/__init__.pyi +318 -420
- bpy/ops/material/__init__.pyi +18 -24
- bpy/ops/mball/__init__.pyi +70 -93
- bpy/ops/mesh/__init__.pyi +1988 -2460
- bpy/ops/nla/__init__.pyi +330 -428
- bpy/ops/node/__init__.pyi +852 -1115
- bpy/ops/object/__init__.pyi +2420 -3081
- bpy/ops/outliner/__init__.pyi +498 -661
- bpy/ops/paint/__init__.pyi +518 -667
- bpy/ops/paintcurve/__init__.pyi +64 -84
- bpy/ops/palette/__init__.pyi +48 -66
- bpy/ops/particle/__init__.pyi +264 -355
- bpy/ops/pose/__init__.pyi +336 -438
- bpy/ops/poselib/__init__.pyi +70 -92
- bpy/ops/preferences/__init__.pyi +336 -440
- bpy/ops/ptcache/__init__.pyi +46 -62
- bpy/ops/render/__init__.pyi +114 -147
- bpy/ops/rigidbody/__init__.pyi +102 -135
- bpy/ops/scene/__init__.pyi +270 -364
- bpy/ops/screen/__init__.pyi +378 -477
- bpy/ops/script/__init__.pyi +18 -26
- bpy/ops/sculpt/__init__.pyi +400 -488
- bpy/ops/sculpt_curves/__init__.pyi +40 -53
- bpy/ops/sequencer/__init__.pyi +1040 -1279
- bpy/ops/sound/__init__.pyi +208 -226
- bpy/ops/spreadsheet/__init__.pyi +30 -40
- bpy/ops/surface/__init__.pyi +108 -126
- bpy/ops/text/__init__.pyi +382 -486
- bpy/ops/text_editor/__init__.pyi +10 -13
- bpy/ops/texture/__init__.pyi +26 -35
- bpy/ops/transform/__init__.pyi +790 -905
- bpy/ops/ui/__init__.pyi +216 -291
- bpy/ops/uilist/__init__.pyi +20 -29
- bpy/ops/uv/__init__.pyi +600 -742
- bpy/ops/view2d/__init__.pyi +156 -195
- bpy/ops/view3d/__init__.pyi +576 -742
- bpy/ops/wm/__init__.pyi +2360 -2702
- bpy/ops/workspace/__init__.pyi +42 -57
- bpy/ops/world/__init__.pyi +6 -8
- bpy/path/__init__.pyi +110 -81
- bpy/props/__init__.pyi +263 -267
- bpy/types/__init__.pyi +86353 -87337
- bpy/utils/__init__.pyi +242 -154
- bpy/utils/previews/__init__.pyi +57 -57
- bpy/utils/units/__init__.pyi +19 -22
- bpy_extras/anim_utils/__init__.pyi +11 -31
- bpy_extras/asset_utils/__init__.pyi +4 -1
- bpy_extras/image_utils/__init__.pyi +2 -2
- bpy_extras/io_utils/__init__.pyi +30 -27
- bpy_extras/keyconfig_utils/__init__.pyi +4 -1
- bpy_extras/mesh_utils/__init__.pyi +18 -18
- bpy_extras/node_utils/__init__.pyi +4 -1
- bpy_extras/object_utils/__init__.pyi +25 -26
- bpy_extras/view3d_utils/__init__.pyi +33 -38
- bpy_restrict_state/__init__.pyi +14 -1
- bpy_types/__init__.pyi +3748 -1248
- console_python/__init__.pyi +41 -7
- console_shell/__init__.pyi +24 -5
- {fake_bpy_module-20240321.dist-info → fake_bpy_module-20240322.dist-info}/METADATA +1 -1
- fake_bpy_module-20240322.dist-info/RECORD +343 -0
- freestyle/chainingiterators/__init__.pyi +50 -52
- freestyle/functions/__init__.pyi +303 -207
- freestyle/predicates/__init__.pyi +299 -115
- freestyle/shaders/__init__.pyi +49 -80
- freestyle/types/__init__.pyi +463 -470
- freestyle/utils/ContextFunctions/__init__.pyi +9 -9
- freestyle/utils/__init__.pyi +27 -17
- gpu/capabilities/__init__.pyi +19 -20
- gpu/matrix/__init__.pyi +14 -16
- gpu/platform/__init__.pyi +5 -5
- gpu/shader/__init__.pyi +2 -5
- gpu/state/__init__.pyi +1 -1
- gpu/texture/__init__.pyi +3 -3
- gpu/types/__init__.pyi +54 -85
- gpu_extras/batch/__init__.pyi +26 -6
- gpu_extras/presets/__init__.pyi +51 -16
- graphviz_export/__init__.pyi +9 -2
- idprop/types/__init__.pyi +36 -12
- imbuf/__init__.pyi +8 -9
- imbuf/types/__init__.pyi +8 -15
- keyingsets_builtins/__init__.pyi +2520 -1085
- keyingsets_utils/__init__.pyi +69 -14
- mathutils/__init__.pyi +491 -423
- mathutils/bvhtree/__init__.pyi +26 -31
- mathutils/geometry/__init__.pyi +176 -185
- mathutils/kdtree/__init__.pyi +14 -17
- mathutils/noise/__init__.pyi +47 -48
- nodeitems_builtins/__init__.pyi +37 -15
- nodeitems_utils/__init__.pyi +45 -13
- rna_info/__init__.pyi +177 -76
- rna_keymap_ui/__init__.pyi +29 -6
- rna_prop_ui/__init__.pyi +56 -14
- rna_xml/__init__.pyi +29 -6
- sys_info/__init__.pyi +4 -1
- fake_bpy_module-20240321.dist-info/RECORD +0 -343
- {fake_bpy_module-20240321.dist-info → fake_bpy_module-20240322.dist-info}/WHEEL +0 -0
- {fake_bpy_module-20240321.dist-info → fake_bpy_module-20240322.dist-info}/top_level.txt +0 -0
bmesh/ops/__init__.pyi
CHANGED
|
@@ -6,91 +6,91 @@ import mathutils
|
|
|
6
6
|
GenericType = typing.TypeVar("GenericType")
|
|
7
7
|
|
|
8
8
|
def average_vert_facedata(
|
|
9
|
-
bm:
|
|
9
|
+
bm: bmesh.types.BMesh, verts: typing.List[bmesh.types.BMVert] = []
|
|
10
10
|
):
|
|
11
11
|
"""Average Vertices Face-vert Data.Merge uv/vcols associated with the input vertices at
|
|
12
12
|
the bounding box center. (I know, it's not averaging but
|
|
13
13
|
the vert_snap_to_bb_center is just too long).
|
|
14
14
|
|
|
15
15
|
:param bm: The bmesh to operate on.
|
|
16
|
-
:type bm:
|
|
16
|
+
:type bm: bmesh.types.BMesh
|
|
17
17
|
:param verts: input vertices
|
|
18
|
-
:type verts: typing.List[
|
|
18
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
...
|
|
22
22
|
|
|
23
23
|
def beautify_fill(
|
|
24
|
-
bm:
|
|
25
|
-
faces: typing.List[
|
|
26
|
-
edges: typing.List[
|
|
24
|
+
bm: bmesh.types.BMesh,
|
|
25
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
26
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
27
27
|
use_restrict_tag: bool = False,
|
|
28
|
-
method: typing.Union[
|
|
28
|
+
method: typing.Union[str, int] = "AREA",
|
|
29
29
|
) -> typing.Dict:
|
|
30
30
|
"""Beautify Fill.Rotate edges to create more evenly spaced triangles.
|
|
31
31
|
|
|
32
32
|
:param bm: The bmesh to operate on.
|
|
33
|
-
:type bm:
|
|
33
|
+
:type bm: bmesh.types.BMesh
|
|
34
34
|
:param faces: input faces
|
|
35
|
-
:type faces: typing.List[
|
|
35
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
36
36
|
:param edges: edges that can be flipped
|
|
37
|
-
:type edges: typing.List[
|
|
37
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
38
38
|
:param use_restrict_tag: restrict edge rotation to mixed tagged vertices
|
|
39
39
|
:type use_restrict_tag: bool
|
|
40
40
|
:param method: method to define what is beautiful
|
|
41
|
-
:type method: typing.Union[
|
|
42
|
-
:rtype: typing.Dict
|
|
41
|
+
:type method: typing.Union[str, int]
|
|
43
42
|
:return: geom: new flipped faces and edges
|
|
44
43
|
|
|
45
44
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
45
|
+
:rtype: typing.Dict
|
|
46
46
|
"""
|
|
47
47
|
|
|
48
48
|
...
|
|
49
49
|
|
|
50
50
|
def bevel(
|
|
51
|
-
bm:
|
|
51
|
+
bm: bmesh.types.BMesh,
|
|
52
52
|
geom: typing.Union[
|
|
53
|
-
typing.List[
|
|
54
|
-
typing.List[
|
|
55
|
-
typing.List[
|
|
53
|
+
typing.List[bmesh.types.BMVert],
|
|
54
|
+
typing.List[bmesh.types.BMEdge],
|
|
55
|
+
typing.List[bmesh.types.BMFace],
|
|
56
56
|
] = [],
|
|
57
57
|
offset: float = 0,
|
|
58
|
-
offset_type: typing.Union[
|
|
59
|
-
profile_type: typing.Union[
|
|
58
|
+
offset_type: typing.Union[str, int] = "OFFSET",
|
|
59
|
+
profile_type: typing.Union[str, int] = "SUPERELLIPSE",
|
|
60
60
|
segments: int = 0,
|
|
61
61
|
profile: float = 0,
|
|
62
|
-
affect: typing.Union[
|
|
62
|
+
affect: typing.Union[str, int] = "VERTICES",
|
|
63
63
|
clamp_overlap: bool = False,
|
|
64
64
|
material: int = 0,
|
|
65
65
|
loop_slide: bool = False,
|
|
66
66
|
mark_seam: bool = False,
|
|
67
67
|
mark_sharp: bool = False,
|
|
68
68
|
harden_normals: bool = False,
|
|
69
|
-
face_strength_mode: typing.Union[
|
|
70
|
-
miter_outer: typing.Union[
|
|
71
|
-
miter_inner: typing.Union[
|
|
69
|
+
face_strength_mode: typing.Union[str, int] = "NONE",
|
|
70
|
+
miter_outer: typing.Union[str, int] = "SHARP",
|
|
71
|
+
miter_inner: typing.Union[str, int] = "SHARP",
|
|
72
72
|
spread: float = 0,
|
|
73
|
-
custom_profile:
|
|
74
|
-
vmesh_method: typing.Union[
|
|
73
|
+
custom_profile: bpy.types.bpy_struct = None,
|
|
74
|
+
vmesh_method: typing.Union[str, int] = "ADJ",
|
|
75
75
|
) -> typing.Dict:
|
|
76
76
|
"""Bevel.Bevels edges and vertices
|
|
77
77
|
|
|
78
78
|
:param bm: The bmesh to operate on.
|
|
79
|
-
:type bm:
|
|
79
|
+
:type bm: bmesh.types.BMesh
|
|
80
80
|
:param geom: input edges and vertices
|
|
81
|
-
:type geom: typing.Union[typing.List[
|
|
81
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
82
82
|
:param offset: amount to offset beveled edge
|
|
83
83
|
:type offset: float
|
|
84
84
|
:param offset_type: how to measure the offset
|
|
85
|
-
:type offset_type: typing.Union[
|
|
85
|
+
:type offset_type: typing.Union[str, int]
|
|
86
86
|
:param profile_type: The profile type to use for bevel.
|
|
87
|
-
:type profile_type: typing.Union[
|
|
87
|
+
:type profile_type: typing.Union[str, int]
|
|
88
88
|
:param segments: number of segments in bevel
|
|
89
89
|
:type segments: int
|
|
90
90
|
:param profile: profile shape, 0->1 (.5=>round)
|
|
91
91
|
:type profile: float
|
|
92
92
|
:param affect: Whether to bevel vertices or edges.
|
|
93
|
-
:type affect: typing.Union[
|
|
93
|
+
:type affect: typing.Union[str, int]
|
|
94
94
|
:param clamp_overlap: do not allow beveled edges/vertices to overlap each other
|
|
95
95
|
:type clamp_overlap: bool
|
|
96
96
|
:param material: material for bevel faces, -1 means get from adjacent faces
|
|
@@ -104,18 +104,17 @@ def bevel(
|
|
|
104
104
|
:param harden_normals: harden normals
|
|
105
105
|
:type harden_normals: bool
|
|
106
106
|
:param face_strength_mode: whether to set face strength, and which faces to set if so
|
|
107
|
-
:type face_strength_mode: typing.Union[
|
|
107
|
+
:type face_strength_mode: typing.Union[str, int]
|
|
108
108
|
:param miter_outer: outer miter kind
|
|
109
|
-
:type miter_outer: typing.Union[
|
|
109
|
+
:type miter_outer: typing.Union[str, int]
|
|
110
110
|
:param miter_inner: outer miter kind
|
|
111
|
-
:type miter_inner: typing.Union[
|
|
111
|
+
:type miter_inner: typing.Union[str, int]
|
|
112
112
|
:param spread: amount to offset beveled edge
|
|
113
113
|
:type spread: float
|
|
114
114
|
:param custom_profile: CurveProfile, if None ignored
|
|
115
|
-
:type custom_profile:
|
|
115
|
+
:type custom_profile: bpy.types.bpy_struct
|
|
116
116
|
:param vmesh_method: The method to use to create meshes at intersections.
|
|
117
|
-
:type vmesh_method: typing.Union[
|
|
118
|
-
:rtype: typing.Dict
|
|
117
|
+
:type vmesh_method: typing.Union[str, int]
|
|
119
118
|
:return: faces: output faces
|
|
120
119
|
|
|
121
120
|
type list of (`bmesh.types.BMFace`)
|
|
@@ -127,45 +126,45 @@ def bevel(
|
|
|
127
126
|
verts: output verts
|
|
128
127
|
|
|
129
128
|
type list of (`bmesh.types.BMVert`)
|
|
129
|
+
:rtype: typing.Dict
|
|
130
130
|
"""
|
|
131
131
|
|
|
132
132
|
...
|
|
133
133
|
|
|
134
134
|
def bisect_edges(
|
|
135
|
-
bm:
|
|
136
|
-
edges: typing.List[
|
|
135
|
+
bm: bmesh.types.BMesh,
|
|
136
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
137
137
|
cuts: int = 0,
|
|
138
|
-
edge_percents
|
|
138
|
+
edge_percents={},
|
|
139
139
|
) -> typing.Dict:
|
|
140
140
|
"""Edge Bisect.Splits input edges (but doesn't do anything else).
|
|
141
141
|
This creates a 2-valence vert.
|
|
142
142
|
|
|
143
143
|
:param bm: The bmesh to operate on.
|
|
144
|
-
:type bm:
|
|
144
|
+
:type bm: bmesh.types.BMesh
|
|
145
145
|
:param edges: input edges
|
|
146
|
-
:type edges: typing.List[
|
|
146
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
147
147
|
:param cuts: number of cuts
|
|
148
148
|
:type cuts: int
|
|
149
149
|
:param edge_percents: Undocumented.
|
|
150
|
-
:type edge_percents: typing.Dict
|
|
151
|
-
:rtype: typing.Dict
|
|
152
150
|
:return: geom_split: newly created vertices and edges
|
|
153
151
|
|
|
154
152
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
153
|
+
:rtype: typing.Dict
|
|
155
154
|
"""
|
|
156
155
|
|
|
157
156
|
...
|
|
158
157
|
|
|
159
158
|
def bisect_plane(
|
|
160
|
-
bm:
|
|
159
|
+
bm: bmesh.types.BMesh,
|
|
161
160
|
geom: typing.Union[
|
|
162
|
-
typing.List[
|
|
163
|
-
typing.List[
|
|
164
|
-
typing.List[
|
|
161
|
+
typing.List[bmesh.types.BMVert],
|
|
162
|
+
typing.List[bmesh.types.BMEdge],
|
|
163
|
+
typing.List[bmesh.types.BMFace],
|
|
165
164
|
] = [],
|
|
166
165
|
dist: float = 0,
|
|
167
|
-
plane_co: typing.Union[
|
|
168
|
-
plane_no: typing.Union[
|
|
166
|
+
plane_co: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
167
|
+
plane_no: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
169
168
|
use_snap_center: bool = False,
|
|
170
169
|
clear_outer: bool = False,
|
|
171
170
|
clear_inner: bool = False,
|
|
@@ -173,22 +172,21 @@ def bisect_plane(
|
|
|
173
172
|
"""Bisect Plane.Bisects the mesh by a plane (cut the mesh in half).
|
|
174
173
|
|
|
175
174
|
:param bm: The bmesh to operate on.
|
|
176
|
-
:type bm:
|
|
175
|
+
:type bm: bmesh.types.BMesh
|
|
177
176
|
:param geom: input geometry
|
|
178
|
-
:type geom: typing.Union[typing.List[
|
|
177
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
179
178
|
:param dist: minimum distance when testing if a vert is exactly on the plane
|
|
180
179
|
:type dist: float
|
|
181
180
|
:param plane_co: point on the plane
|
|
182
|
-
:type plane_co: typing.Union[
|
|
181
|
+
:type plane_co: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
183
182
|
:param plane_no: direction of the plane
|
|
184
|
-
:type plane_no: typing.Union[
|
|
183
|
+
:type plane_no: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
185
184
|
:param use_snap_center: snap axis aligned verts to the center
|
|
186
185
|
:type use_snap_center: bool
|
|
187
186
|
:param clear_outer: when enabled. remove all geometry on the positive side of the plane
|
|
188
187
|
:type clear_outer: bool
|
|
189
188
|
:param clear_inner: when enabled. remove all geometry on the negative side of the plane
|
|
190
189
|
:type clear_inner: bool
|
|
191
|
-
:rtype: typing.Dict
|
|
192
190
|
:return: geom_cut: output geometry aligned with the plane (new and existing)
|
|
193
191
|
|
|
194
192
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`)
|
|
@@ -196,28 +194,29 @@ def bisect_plane(
|
|
|
196
194
|
geom: input and output geometry (result of cut).
|
|
197
195
|
|
|
198
196
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
197
|
+
:rtype: typing.Dict
|
|
199
198
|
"""
|
|
200
199
|
|
|
201
200
|
...
|
|
202
201
|
|
|
203
202
|
def bmesh_to_mesh(
|
|
204
|
-
bm:
|
|
203
|
+
bm: bmesh.types.BMesh, mesh: bpy.types.Mesh, object: bpy.types.Object
|
|
205
204
|
):
|
|
206
205
|
"""BMesh to Mesh.Converts a bmesh to a Mesh. This is reserved for exiting editmode.
|
|
207
206
|
|
|
208
207
|
:param bm: The bmesh to operate on.
|
|
209
|
-
:type bm:
|
|
208
|
+
:type bm: bmesh.types.BMesh
|
|
210
209
|
:param mesh: pointer to a mesh structure to fill in
|
|
211
|
-
:type mesh:
|
|
210
|
+
:type mesh: bpy.types.Mesh
|
|
212
211
|
:param object: pointer to an object structure
|
|
213
|
-
:type object:
|
|
212
|
+
:type object: bpy.types.Object
|
|
214
213
|
"""
|
|
215
214
|
|
|
216
215
|
...
|
|
217
216
|
|
|
218
217
|
def bridge_loops(
|
|
219
|
-
bm:
|
|
220
|
-
edges: typing.List[
|
|
218
|
+
bm: bmesh.types.BMesh,
|
|
219
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
221
220
|
use_pairs: bool = False,
|
|
222
221
|
use_cyclic: bool = False,
|
|
223
222
|
use_merge: bool = False,
|
|
@@ -227,9 +226,9 @@ def bridge_loops(
|
|
|
227
226
|
"""Bridge edge loops with faces.
|
|
228
227
|
|
|
229
228
|
:param bm: The bmesh to operate on.
|
|
230
|
-
:type bm:
|
|
229
|
+
:type bm: bmesh.types.BMesh
|
|
231
230
|
:param edges: input edges
|
|
232
|
-
:type edges: typing.List[
|
|
231
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
233
232
|
:param use_pairs: Undocumented.
|
|
234
233
|
:type use_pairs: bool
|
|
235
234
|
:param use_cyclic: Undocumented.
|
|
@@ -240,7 +239,6 @@ def bridge_loops(
|
|
|
240
239
|
:type merge_factor: float
|
|
241
240
|
:param twist_offset: twist offset for closed loops
|
|
242
241
|
:type twist_offset: int
|
|
243
|
-
:rtype: typing.Dict
|
|
244
242
|
:return: faces: new faces
|
|
245
243
|
|
|
246
244
|
type list of (`bmesh.types.BMFace`)
|
|
@@ -248,98 +246,96 @@ def bridge_loops(
|
|
|
248
246
|
edges: new edges
|
|
249
247
|
|
|
250
248
|
type list of (`bmesh.types.BMEdge`)
|
|
249
|
+
:rtype: typing.Dict
|
|
251
250
|
"""
|
|
252
251
|
|
|
253
252
|
...
|
|
254
253
|
|
|
255
254
|
def collapse(
|
|
256
|
-
bm:
|
|
257
|
-
edges: typing.List[
|
|
255
|
+
bm: bmesh.types.BMesh,
|
|
256
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
258
257
|
uvs: bool = False,
|
|
259
258
|
):
|
|
260
259
|
"""Collapse Connected.Collapses connected vertices
|
|
261
260
|
|
|
262
261
|
:param bm: The bmesh to operate on.
|
|
263
|
-
:type bm:
|
|
262
|
+
:type bm: bmesh.types.BMesh
|
|
264
263
|
:param edges: input edges
|
|
265
|
-
:type edges: typing.List[
|
|
264
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
266
265
|
:param uvs: also collapse UVs and such
|
|
267
266
|
:type uvs: bool
|
|
268
267
|
"""
|
|
269
268
|
|
|
270
269
|
...
|
|
271
270
|
|
|
272
|
-
def collapse_uvs(
|
|
273
|
-
bm: "bmesh.types.BMesh", edges: typing.List["bmesh.types.BMEdge"] = []
|
|
274
|
-
):
|
|
271
|
+
def collapse_uvs(bm: bmesh.types.BMesh, edges: typing.List[bmesh.types.BMEdge] = []):
|
|
275
272
|
"""Collapse Connected UVs.Collapses connected UV vertices.
|
|
276
273
|
|
|
277
274
|
:param bm: The bmesh to operate on.
|
|
278
|
-
:type bm:
|
|
275
|
+
:type bm: bmesh.types.BMesh
|
|
279
276
|
:param edges: input edges
|
|
280
|
-
:type edges: typing.List[
|
|
277
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
281
278
|
"""
|
|
282
279
|
|
|
283
280
|
...
|
|
284
281
|
|
|
285
282
|
def connect_vert_pair(
|
|
286
|
-
bm:
|
|
287
|
-
verts: typing.List[
|
|
288
|
-
verts_exclude: typing.List[
|
|
289
|
-
faces_exclude: typing.List[
|
|
283
|
+
bm: bmesh.types.BMesh,
|
|
284
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
285
|
+
verts_exclude: typing.List[bmesh.types.BMVert] = [],
|
|
286
|
+
faces_exclude: typing.List[bmesh.types.BMFace] = [],
|
|
290
287
|
) -> typing.Dict:
|
|
291
288
|
"""Connect Verts.Split faces by adding edges that connect verts.
|
|
292
289
|
|
|
293
290
|
:param bm: The bmesh to operate on.
|
|
294
|
-
:type bm:
|
|
291
|
+
:type bm: bmesh.types.BMesh
|
|
295
292
|
:param verts: input vertices
|
|
296
|
-
:type verts: typing.List[
|
|
293
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
297
294
|
:param verts_exclude: input vertices to explicitly exclude from connecting
|
|
298
|
-
:type verts_exclude: typing.List[
|
|
295
|
+
:type verts_exclude: typing.List[bmesh.types.BMVert]
|
|
299
296
|
:param faces_exclude: input faces to explicitly exclude from connecting
|
|
300
|
-
:type faces_exclude: typing.List[
|
|
301
|
-
:rtype: typing.Dict
|
|
297
|
+
:type faces_exclude: typing.List[bmesh.types.BMFace]
|
|
302
298
|
:return: edges:
|
|
303
299
|
|
|
304
300
|
type list of (`bmesh.types.BMEdge`)
|
|
301
|
+
:rtype: typing.Dict
|
|
305
302
|
"""
|
|
306
303
|
|
|
307
304
|
...
|
|
308
305
|
|
|
309
306
|
def connect_verts(
|
|
310
|
-
bm:
|
|
311
|
-
verts: typing.List[
|
|
312
|
-
faces_exclude: typing.List[
|
|
307
|
+
bm: bmesh.types.BMesh,
|
|
308
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
309
|
+
faces_exclude: typing.List[bmesh.types.BMFace] = [],
|
|
313
310
|
check_degenerate: bool = False,
|
|
314
311
|
) -> typing.Dict:
|
|
315
312
|
"""Connect Verts.Split faces by adding edges that connect verts.
|
|
316
313
|
|
|
317
314
|
:param bm: The bmesh to operate on.
|
|
318
|
-
:type bm:
|
|
315
|
+
:type bm: bmesh.types.BMesh
|
|
319
316
|
:param verts: input vertices
|
|
320
|
-
:type verts: typing.List[
|
|
317
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
321
318
|
:param faces_exclude: input faces to explicitly exclude from connecting
|
|
322
|
-
:type faces_exclude: typing.List[
|
|
319
|
+
:type faces_exclude: typing.List[bmesh.types.BMFace]
|
|
323
320
|
:param check_degenerate: prevent splits with overlaps & intersections
|
|
324
321
|
:type check_degenerate: bool
|
|
325
|
-
:rtype: typing.Dict
|
|
326
322
|
:return: edges:
|
|
327
323
|
|
|
328
324
|
type list of (`bmesh.types.BMEdge`)
|
|
325
|
+
:rtype: typing.Dict
|
|
329
326
|
"""
|
|
330
327
|
|
|
331
328
|
...
|
|
332
329
|
|
|
333
330
|
def connect_verts_concave(
|
|
334
|
-
bm:
|
|
331
|
+
bm: bmesh.types.BMesh, faces: typing.List[bmesh.types.BMFace] = []
|
|
335
332
|
) -> typing.Dict:
|
|
336
333
|
"""Connect Verts to form Convex Faces.Ensures all faces are convex faces.
|
|
337
334
|
|
|
338
335
|
:param bm: The bmesh to operate on.
|
|
339
|
-
:type bm:
|
|
336
|
+
:type bm: bmesh.types.BMesh
|
|
340
337
|
:param faces: input faces
|
|
341
|
-
:type faces: typing.List[
|
|
342
|
-
:rtype: typing.Dict
|
|
338
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
343
339
|
:return: edges:
|
|
344
340
|
|
|
345
341
|
type list of (`bmesh.types.BMEdge`)
|
|
@@ -347,24 +343,24 @@ def connect_verts_concave(
|
|
|
347
343
|
faces:
|
|
348
344
|
|
|
349
345
|
type list of (`bmesh.types.BMFace`)
|
|
346
|
+
:rtype: typing.Dict
|
|
350
347
|
"""
|
|
351
348
|
|
|
352
349
|
...
|
|
353
350
|
|
|
354
351
|
def connect_verts_nonplanar(
|
|
355
|
-
bm:
|
|
352
|
+
bm: bmesh.types.BMesh,
|
|
356
353
|
angle_limit: float = 0,
|
|
357
|
-
faces: typing.List[
|
|
354
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
358
355
|
) -> typing.Dict:
|
|
359
356
|
"""Connect Verts Across non Planer Faces.Split faces by connecting edges along non planer faces.
|
|
360
357
|
|
|
361
358
|
:param bm: The bmesh to operate on.
|
|
362
|
-
:type bm:
|
|
359
|
+
:type bm: bmesh.types.BMesh
|
|
363
360
|
:param angle_limit: total rotation angle (radians)
|
|
364
361
|
:type angle_limit: float
|
|
365
362
|
:param faces: input faces
|
|
366
|
-
:type faces: typing.List[
|
|
367
|
-
:rtype: typing.Dict
|
|
363
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
368
364
|
:return: edges:
|
|
369
365
|
|
|
370
366
|
type list of (`bmesh.types.BMEdge`)
|
|
@@ -372,16 +368,17 @@ def connect_verts_nonplanar(
|
|
|
372
368
|
faces:
|
|
373
369
|
|
|
374
370
|
type list of (`bmesh.types.BMFace`)
|
|
371
|
+
:rtype: typing.Dict
|
|
375
372
|
"""
|
|
376
373
|
|
|
377
374
|
...
|
|
378
375
|
|
|
379
376
|
def contextual_create(
|
|
380
|
-
bm:
|
|
377
|
+
bm: bmesh.types.BMesh,
|
|
381
378
|
geom: typing.Union[
|
|
382
|
-
typing.List[
|
|
383
|
-
typing.List[
|
|
384
|
-
typing.List[
|
|
379
|
+
typing.List[bmesh.types.BMVert],
|
|
380
|
+
typing.List[bmesh.types.BMEdge],
|
|
381
|
+
typing.List[bmesh.types.BMFace],
|
|
385
382
|
] = [],
|
|
386
383
|
mat_nr: int = 0,
|
|
387
384
|
use_smooth: bool = False,
|
|
@@ -392,14 +389,13 @@ def contextual_create(
|
|
|
392
389
|
become a wire edge.
|
|
393
390
|
|
|
394
391
|
:param bm: The bmesh to operate on.
|
|
395
|
-
:type bm:
|
|
392
|
+
:type bm: bmesh.types.BMesh
|
|
396
393
|
:param geom: input geometry.
|
|
397
|
-
:type geom: typing.Union[typing.List[
|
|
394
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
398
395
|
:param mat_nr: material to use
|
|
399
396
|
:type mat_nr: int
|
|
400
397
|
:param use_smooth: smooth to use
|
|
401
398
|
:type use_smooth: bool
|
|
402
|
-
:rtype: typing.Dict
|
|
403
399
|
:return: faces: newly-made face(s)
|
|
404
400
|
|
|
405
401
|
type list of (`bmesh.types.BMFace`)
|
|
@@ -407,16 +403,17 @@ def contextual_create(
|
|
|
407
403
|
edges: newly-made edge(s)
|
|
408
404
|
|
|
409
405
|
type list of (`bmesh.types.BMEdge`)
|
|
406
|
+
:rtype: typing.Dict
|
|
410
407
|
"""
|
|
411
408
|
|
|
412
409
|
...
|
|
413
410
|
|
|
414
411
|
def convex_hull(
|
|
415
|
-
bm:
|
|
412
|
+
bm: bmesh.types.BMesh,
|
|
416
413
|
input: typing.Union[
|
|
417
|
-
typing.List[
|
|
418
|
-
typing.List[
|
|
419
|
-
typing.List[
|
|
414
|
+
typing.List[bmesh.types.BMVert],
|
|
415
|
+
typing.List[bmesh.types.BMEdge],
|
|
416
|
+
typing.List[bmesh.types.BMFace],
|
|
420
417
|
] = [],
|
|
421
418
|
use_existing_faces: bool = False,
|
|
422
419
|
) -> typing.Dict:
|
|
@@ -429,12 +426,11 @@ def convex_hull(
|
|
|
429
426
|
that were in the input and are part of the hull.
|
|
430
427
|
|
|
431
428
|
:param bm: The bmesh to operate on.
|
|
432
|
-
:type bm:
|
|
429
|
+
:type bm: bmesh.types.BMesh
|
|
433
430
|
:param input: input geometry
|
|
434
|
-
:type input: typing.Union[typing.List[
|
|
431
|
+
:type input: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
435
432
|
:param use_existing_faces: skip hull triangles that are covered by a pre-existing face
|
|
436
433
|
:type use_existing_faces: bool
|
|
437
|
-
:rtype: typing.Dict
|
|
438
434
|
:return: geom:
|
|
439
435
|
|
|
440
436
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
@@ -450,23 +446,24 @@ def convex_hull(
|
|
|
450
446
|
geom_holes:
|
|
451
447
|
|
|
452
448
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
449
|
+
:rtype: typing.Dict
|
|
453
450
|
"""
|
|
454
451
|
|
|
455
452
|
...
|
|
456
453
|
|
|
457
454
|
def create_circle(
|
|
458
|
-
bm:
|
|
455
|
+
bm: bmesh.types.BMesh,
|
|
459
456
|
cap_ends: bool = False,
|
|
460
457
|
cap_tris: bool = False,
|
|
461
458
|
segments: int = 0,
|
|
462
459
|
radius: float = 0,
|
|
463
|
-
matrix: typing.Union[
|
|
460
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
464
461
|
calc_uvs: bool = False,
|
|
465
462
|
) -> typing.Dict:
|
|
466
463
|
"""Creates a Circle.
|
|
467
464
|
|
|
468
465
|
:param bm: The bmesh to operate on.
|
|
469
|
-
:type bm:
|
|
466
|
+
:type bm: bmesh.types.BMesh
|
|
470
467
|
:param cap_ends: whether or not to fill in the ends with faces
|
|
471
468
|
:type cap_ends: bool
|
|
472
469
|
:param cap_tris: fill ends with triangles instead of ngons
|
|
@@ -476,32 +473,32 @@ def create_circle(
|
|
|
476
473
|
:param radius: Radius of the circle.
|
|
477
474
|
:type radius: float
|
|
478
475
|
:param matrix: matrix to multiply the new geometry with
|
|
479
|
-
:type matrix: typing.Union[
|
|
476
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
480
477
|
:param calc_uvs: calculate default UVs
|
|
481
478
|
:type calc_uvs: bool
|
|
482
|
-
:rtype: typing.Dict
|
|
483
479
|
:return: verts: output verts
|
|
484
480
|
|
|
485
481
|
type list of (`bmesh.types.BMVert`)
|
|
482
|
+
:rtype: typing.Dict
|
|
486
483
|
"""
|
|
487
484
|
|
|
488
485
|
...
|
|
489
486
|
|
|
490
487
|
def create_cone(
|
|
491
|
-
bm:
|
|
488
|
+
bm: bmesh.types.BMesh,
|
|
492
489
|
cap_ends: bool = False,
|
|
493
490
|
cap_tris: bool = False,
|
|
494
491
|
segments: int = 0,
|
|
495
492
|
radius1: float = 0,
|
|
496
493
|
radius2: float = 0,
|
|
497
494
|
depth: float = 0,
|
|
498
|
-
matrix: typing.Union[
|
|
495
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
499
496
|
calc_uvs: bool = False,
|
|
500
497
|
) -> typing.Dict:
|
|
501
498
|
"""Create Cone.Creates a cone with variable depth at both ends
|
|
502
499
|
|
|
503
500
|
:param bm: The bmesh to operate on.
|
|
504
|
-
:type bm:
|
|
501
|
+
:type bm: bmesh.types.BMesh
|
|
505
502
|
:param cap_ends: whether or not to fill in the ends with faces
|
|
506
503
|
:type cap_ends: bool
|
|
507
504
|
:param cap_tris: fill ends with triangles instead of ngons
|
|
@@ -515,53 +512,53 @@ def create_cone(
|
|
|
515
512
|
:param depth: distance between ends
|
|
516
513
|
:type depth: float
|
|
517
514
|
:param matrix: matrix to multiply the new geometry with
|
|
518
|
-
:type matrix: typing.Union[
|
|
515
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
519
516
|
:param calc_uvs: calculate default UVs
|
|
520
517
|
:type calc_uvs: bool
|
|
521
|
-
:rtype: typing.Dict
|
|
522
518
|
:return: verts: output verts
|
|
523
519
|
|
|
524
520
|
type list of (`bmesh.types.BMVert`)
|
|
521
|
+
:rtype: typing.Dict
|
|
525
522
|
"""
|
|
526
523
|
|
|
527
524
|
...
|
|
528
525
|
|
|
529
526
|
def create_cube(
|
|
530
|
-
bm:
|
|
527
|
+
bm: bmesh.types.BMesh,
|
|
531
528
|
size: float = 0,
|
|
532
|
-
matrix: typing.Union[
|
|
529
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
533
530
|
calc_uvs: bool = False,
|
|
534
531
|
) -> typing.Dict:
|
|
535
532
|
"""Create CubeCreates a cube.
|
|
536
533
|
|
|
537
534
|
:param bm: The bmesh to operate on.
|
|
538
|
-
:type bm:
|
|
535
|
+
:type bm: bmesh.types.BMesh
|
|
539
536
|
:param size: size of the cube
|
|
540
537
|
:type size: float
|
|
541
538
|
:param matrix: matrix to multiply the new geometry with
|
|
542
|
-
:type matrix: typing.Union[
|
|
539
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
543
540
|
:param calc_uvs: calculate default UVs
|
|
544
541
|
:type calc_uvs: bool
|
|
545
|
-
:rtype: typing.Dict
|
|
546
542
|
:return: verts: output verts
|
|
547
543
|
|
|
548
544
|
type list of (`bmesh.types.BMVert`)
|
|
545
|
+
:rtype: typing.Dict
|
|
549
546
|
"""
|
|
550
547
|
|
|
551
548
|
...
|
|
552
549
|
|
|
553
550
|
def create_grid(
|
|
554
|
-
bm:
|
|
551
|
+
bm: bmesh.types.BMesh,
|
|
555
552
|
x_segments: int = 0,
|
|
556
553
|
y_segments: int = 0,
|
|
557
554
|
size: float = 0,
|
|
558
|
-
matrix: typing.Union[
|
|
555
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
559
556
|
calc_uvs: bool = False,
|
|
560
557
|
) -> typing.Dict:
|
|
561
558
|
"""Create Grid.Creates a grid with a variable number of subdivisions
|
|
562
559
|
|
|
563
560
|
:param bm: The bmesh to operate on.
|
|
564
|
-
:type bm:
|
|
561
|
+
:type bm: bmesh.types.BMesh
|
|
565
562
|
:param x_segments: number of x segments
|
|
566
563
|
:type x_segments: int
|
|
567
564
|
:param y_segments: number of y segments
|
|
@@ -569,77 +566,77 @@ def create_grid(
|
|
|
569
566
|
:param size: size of the grid
|
|
570
567
|
:type size: float
|
|
571
568
|
:param matrix: matrix to multiply the new geometry with
|
|
572
|
-
:type matrix: typing.Union[
|
|
569
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
573
570
|
:param calc_uvs: calculate default UVs
|
|
574
571
|
:type calc_uvs: bool
|
|
575
|
-
:rtype: typing.Dict
|
|
576
572
|
:return: verts: output verts
|
|
577
573
|
|
|
578
574
|
type list of (`bmesh.types.BMVert`)
|
|
575
|
+
:rtype: typing.Dict
|
|
579
576
|
"""
|
|
580
577
|
|
|
581
578
|
...
|
|
582
579
|
|
|
583
580
|
def create_icosphere(
|
|
584
|
-
bm:
|
|
581
|
+
bm: bmesh.types.BMesh,
|
|
585
582
|
subdivisions: int = 0,
|
|
586
583
|
radius: float = 0,
|
|
587
|
-
matrix: typing.Union[
|
|
584
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
588
585
|
calc_uvs: bool = False,
|
|
589
586
|
) -> typing.Dict:
|
|
590
587
|
"""Create Ico-Sphere.Creates a grid with a variable number of subdivisions
|
|
591
588
|
|
|
592
589
|
:param bm: The bmesh to operate on.
|
|
593
|
-
:type bm:
|
|
590
|
+
:type bm: bmesh.types.BMesh
|
|
594
591
|
:param subdivisions: how many times to recursively subdivide the sphere
|
|
595
592
|
:type subdivisions: int
|
|
596
593
|
:param radius: radius
|
|
597
594
|
:type radius: float
|
|
598
595
|
:param matrix: matrix to multiply the new geometry with
|
|
599
|
-
:type matrix: typing.Union[
|
|
596
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
600
597
|
:param calc_uvs: calculate default UVs
|
|
601
598
|
:type calc_uvs: bool
|
|
602
|
-
:rtype: typing.Dict
|
|
603
599
|
:return: verts: output verts
|
|
604
600
|
|
|
605
601
|
type list of (`bmesh.types.BMVert`)
|
|
602
|
+
:rtype: typing.Dict
|
|
606
603
|
"""
|
|
607
604
|
|
|
608
605
|
...
|
|
609
606
|
|
|
610
607
|
def create_monkey(
|
|
611
|
-
bm:
|
|
612
|
-
matrix: typing.Union[
|
|
608
|
+
bm: bmesh.types.BMesh,
|
|
609
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
613
610
|
calc_uvs: bool = False,
|
|
614
611
|
) -> typing.Dict:
|
|
615
612
|
"""Create Suzanne.Creates a monkey (standard blender primitive).
|
|
616
613
|
|
|
617
614
|
:param bm: The bmesh to operate on.
|
|
618
|
-
:type bm:
|
|
615
|
+
:type bm: bmesh.types.BMesh
|
|
619
616
|
:param matrix: matrix to multiply the new geometry with
|
|
620
|
-
:type matrix: typing.Union[
|
|
617
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
621
618
|
:param calc_uvs: calculate default UVs
|
|
622
619
|
:type calc_uvs: bool
|
|
623
|
-
:rtype: typing.Dict
|
|
624
620
|
:return: verts: output verts
|
|
625
621
|
|
|
626
622
|
type list of (`bmesh.types.BMVert`)
|
|
623
|
+
:rtype: typing.Dict
|
|
627
624
|
"""
|
|
628
625
|
|
|
629
626
|
...
|
|
630
627
|
|
|
631
628
|
def create_uvsphere(
|
|
632
|
-
bm:
|
|
629
|
+
bm: bmesh.types.BMesh,
|
|
633
630
|
u_segments: int = 0,
|
|
634
631
|
v_segments: int = 0,
|
|
635
632
|
radius: float = 0,
|
|
636
|
-
matrix: typing.Union[
|
|
633
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
637
634
|
calc_uvs: bool = False,
|
|
638
635
|
) -> typing.Dict:
|
|
639
636
|
"""Create UV Sphere.Creates a grid with a variable number of subdivisions
|
|
640
637
|
|
|
641
638
|
:param bm: The bmesh to operate on.
|
|
642
|
-
:type bm:
|
|
639
|
+
:type bm: bmesh.types.BMesh
|
|
643
640
|
:param u_segments: number of u segments
|
|
644
641
|
:type u_segments: int
|
|
645
642
|
:param v_segments: number of v segment
|
|
@@ -647,161 +644,158 @@ def create_uvsphere(
|
|
|
647
644
|
:param radius: radius
|
|
648
645
|
:type radius: float
|
|
649
646
|
:param matrix: matrix to multiply the new geometry with
|
|
650
|
-
:type matrix: typing.Union[
|
|
647
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
651
648
|
:param calc_uvs: calculate default UVs
|
|
652
649
|
:type calc_uvs: bool
|
|
653
|
-
:rtype: typing.Dict
|
|
654
650
|
:return: verts: output verts
|
|
655
651
|
|
|
656
652
|
type list of (`bmesh.types.BMVert`)
|
|
653
|
+
:rtype: typing.Dict
|
|
657
654
|
"""
|
|
658
655
|
|
|
659
656
|
...
|
|
660
657
|
|
|
661
658
|
def create_vert(
|
|
662
|
-
bm:
|
|
663
|
-
co: typing.Union[
|
|
659
|
+
bm: bmesh.types.BMesh,
|
|
660
|
+
co: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
664
661
|
) -> typing.Dict:
|
|
665
662
|
"""Make Vertex.Creates a single vertex; this BMOP was necessary
|
|
666
663
|
for click-create-vertex.
|
|
667
664
|
|
|
668
665
|
:param bm: The bmesh to operate on.
|
|
669
|
-
:type bm:
|
|
666
|
+
:type bm: bmesh.types.BMesh
|
|
670
667
|
:param co: the coordinate of the new vert
|
|
671
|
-
:type co: typing.Union[
|
|
672
|
-
:rtype: typing.Dict
|
|
668
|
+
:type co: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
673
669
|
:return: vert: the new vert
|
|
674
670
|
|
|
675
671
|
type list of (`bmesh.types.BMVert`)
|
|
672
|
+
:rtype: typing.Dict
|
|
676
673
|
"""
|
|
677
674
|
|
|
678
675
|
...
|
|
679
676
|
|
|
680
677
|
def delete(
|
|
681
|
-
bm:
|
|
678
|
+
bm: bmesh.types.BMesh,
|
|
682
679
|
geom: typing.Union[
|
|
683
|
-
typing.List[
|
|
684
|
-
typing.List[
|
|
685
|
-
typing.List[
|
|
680
|
+
typing.List[bmesh.types.BMVert],
|
|
681
|
+
typing.List[bmesh.types.BMEdge],
|
|
682
|
+
typing.List[bmesh.types.BMFace],
|
|
686
683
|
] = [],
|
|
687
|
-
context: typing.Union[
|
|
684
|
+
context: typing.Union[str, int] = "VERTS",
|
|
688
685
|
):
|
|
689
686
|
"""Delete Geometry.Utility operator to delete geometry.
|
|
690
687
|
|
|
691
688
|
:param bm: The bmesh to operate on.
|
|
692
|
-
:type bm:
|
|
689
|
+
:type bm: bmesh.types.BMesh
|
|
693
690
|
:param geom: input geometry
|
|
694
|
-
:type geom: typing.Union[typing.List[
|
|
691
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
695
692
|
:param context: geometry types to delete
|
|
696
|
-
:type context: typing.Union[
|
|
693
|
+
:type context: typing.Union[str, int]
|
|
697
694
|
"""
|
|
698
695
|
|
|
699
696
|
...
|
|
700
697
|
|
|
701
698
|
def dissolve_degenerate(
|
|
702
|
-
bm:
|
|
703
|
-
dist: float = 0,
|
|
704
|
-
edges: typing.List["bmesh.types.BMEdge"] = [],
|
|
699
|
+
bm: bmesh.types.BMesh, dist: float = 0, edges: typing.List[bmesh.types.BMEdge] = []
|
|
705
700
|
):
|
|
706
701
|
"""Degenerate Dissolve.Dissolve edges with no length, faces with no area.
|
|
707
702
|
|
|
708
703
|
:param bm: The bmesh to operate on.
|
|
709
|
-
:type bm:
|
|
704
|
+
:type bm: bmesh.types.BMesh
|
|
710
705
|
:param dist: maximum distance to consider degenerate
|
|
711
706
|
:type dist: float
|
|
712
707
|
:param edges: input edges
|
|
713
|
-
:type edges: typing.List[
|
|
708
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
714
709
|
"""
|
|
715
710
|
|
|
716
711
|
...
|
|
717
712
|
|
|
718
713
|
def dissolve_edges(
|
|
719
|
-
bm:
|
|
720
|
-
edges: typing.List[
|
|
714
|
+
bm: bmesh.types.BMesh,
|
|
715
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
721
716
|
use_verts: bool = False,
|
|
722
717
|
use_face_split: bool = False,
|
|
723
718
|
) -> typing.Dict:
|
|
724
719
|
"""Dissolve Edges.
|
|
725
720
|
|
|
726
721
|
:param bm: The bmesh to operate on.
|
|
727
|
-
:type bm:
|
|
722
|
+
:type bm: bmesh.types.BMesh
|
|
728
723
|
:param edges: input edges
|
|
729
|
-
:type edges: typing.List[
|
|
724
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
730
725
|
:param use_verts: dissolve verts left between only 2 edges.
|
|
731
726
|
:type use_verts: bool
|
|
732
727
|
:param use_face_split: split off face corners to maintain surrounding geometry
|
|
733
728
|
:type use_face_split: bool
|
|
734
|
-
:rtype: typing.Dict
|
|
735
729
|
:return: region:
|
|
736
730
|
|
|
737
731
|
type list of (`bmesh.types.BMFace`)
|
|
732
|
+
:rtype: typing.Dict
|
|
738
733
|
"""
|
|
739
734
|
|
|
740
735
|
...
|
|
741
736
|
|
|
742
737
|
def dissolve_faces(
|
|
743
|
-
bm:
|
|
744
|
-
faces: typing.List[
|
|
738
|
+
bm: bmesh.types.BMesh,
|
|
739
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
745
740
|
use_verts: bool = False,
|
|
746
741
|
) -> typing.Dict:
|
|
747
742
|
"""Dissolve Faces.
|
|
748
743
|
|
|
749
744
|
:param bm: The bmesh to operate on.
|
|
750
|
-
:type bm:
|
|
745
|
+
:type bm: bmesh.types.BMesh
|
|
751
746
|
:param faces: input faces
|
|
752
|
-
:type faces: typing.List[
|
|
747
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
753
748
|
:param use_verts: dissolve verts left between only 2 edges.
|
|
754
749
|
:type use_verts: bool
|
|
755
|
-
:rtype: typing.Dict
|
|
756
750
|
:return: region:
|
|
757
751
|
|
|
758
752
|
type list of (`bmesh.types.BMFace`)
|
|
753
|
+
:rtype: typing.Dict
|
|
759
754
|
"""
|
|
760
755
|
|
|
761
756
|
...
|
|
762
757
|
|
|
763
758
|
def dissolve_limit(
|
|
764
|
-
bm:
|
|
759
|
+
bm: bmesh.types.BMesh,
|
|
765
760
|
angle_limit: float = 0,
|
|
766
761
|
use_dissolve_boundaries: bool = False,
|
|
767
|
-
verts: typing.List[
|
|
768
|
-
edges: typing.List[
|
|
769
|
-
delimit
|
|
762
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
763
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
764
|
+
delimit=None(),
|
|
770
765
|
) -> typing.Dict:
|
|
771
766
|
"""Limited Dissolve.Dissolve planar faces and co-linear edges.
|
|
772
767
|
|
|
773
768
|
:param bm: The bmesh to operate on.
|
|
774
|
-
:type bm:
|
|
769
|
+
:type bm: bmesh.types.BMesh
|
|
775
770
|
:param angle_limit: total rotation angle (radians)
|
|
776
771
|
:type angle_limit: float
|
|
777
772
|
:param use_dissolve_boundaries: dissolve all vertices in between face boundaries
|
|
778
773
|
:type use_dissolve_boundaries: bool
|
|
779
774
|
:param verts: input vertices
|
|
780
|
-
:type verts: typing.List[
|
|
775
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
781
776
|
:param edges: input edges
|
|
782
|
-
:type edges: typing.List[
|
|
777
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
783
778
|
:param delimit: delimit dissolve operation
|
|
784
|
-
:type delimit: typing.Set
|
|
785
|
-
:rtype: typing.Dict
|
|
786
779
|
:return: region:
|
|
787
780
|
|
|
788
781
|
type list of (`bmesh.types.BMFace`)
|
|
782
|
+
:rtype: typing.Dict
|
|
789
783
|
"""
|
|
790
784
|
|
|
791
785
|
...
|
|
792
786
|
|
|
793
787
|
def dissolve_verts(
|
|
794
|
-
bm:
|
|
795
|
-
verts: typing.List[
|
|
788
|
+
bm: bmesh.types.BMesh,
|
|
789
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
796
790
|
use_face_split: bool = False,
|
|
797
791
|
use_boundary_tear: bool = False,
|
|
798
792
|
):
|
|
799
793
|
"""Dissolve Verts.
|
|
800
794
|
|
|
801
795
|
:param bm: The bmesh to operate on.
|
|
802
|
-
:type bm:
|
|
796
|
+
:type bm: bmesh.types.BMesh
|
|
803
797
|
:param verts: input vertices
|
|
804
|
-
:type verts: typing.List[
|
|
798
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
805
799
|
:param use_face_split: split off face corners to maintain surrounding geometry
|
|
806
800
|
:type use_face_split: bool
|
|
807
801
|
:param use_boundary_tear: split off face corners instead of merging faces
|
|
@@ -811,13 +805,13 @@ def dissolve_verts(
|
|
|
811
805
|
...
|
|
812
806
|
|
|
813
807
|
def duplicate(
|
|
814
|
-
bm:
|
|
808
|
+
bm: bmesh.types.BMesh,
|
|
815
809
|
geom: typing.Union[
|
|
816
|
-
typing.List[
|
|
817
|
-
typing.List[
|
|
818
|
-
typing.List[
|
|
810
|
+
typing.List[bmesh.types.BMVert],
|
|
811
|
+
typing.List[bmesh.types.BMEdge],
|
|
812
|
+
typing.List[bmesh.types.BMFace],
|
|
819
813
|
] = [],
|
|
820
|
-
dest:
|
|
814
|
+
dest: bmesh.types.BMesh = None,
|
|
821
815
|
use_select_history: bool = False,
|
|
822
816
|
use_edge_flip_from_face: bool = False,
|
|
823
817
|
) -> typing.Dict:
|
|
@@ -825,16 +819,15 @@ def duplicate(
|
|
|
825
819
|
optionally into a destination mesh.
|
|
826
820
|
|
|
827
821
|
:param bm: The bmesh to operate on.
|
|
828
|
-
:type bm:
|
|
822
|
+
:type bm: bmesh.types.BMesh
|
|
829
823
|
:param geom: input geometry
|
|
830
|
-
:type geom: typing.Union[typing.List[
|
|
824
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
831
825
|
:param dest: destination bmesh, if None will use current on
|
|
832
|
-
:type dest:
|
|
826
|
+
:type dest: bmesh.types.BMesh
|
|
833
827
|
:param use_select_history: Undocumented.
|
|
834
828
|
:type use_select_history: bool
|
|
835
829
|
:param use_edge_flip_from_face: Undocumented.
|
|
836
830
|
:type use_edge_flip_from_face: bool
|
|
837
|
-
:rtype: typing.Dict
|
|
838
831
|
:return: geom_orig:
|
|
839
832
|
|
|
840
833
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
@@ -862,37 +855,38 @@ def duplicate(
|
|
|
862
855
|
isovert_map:
|
|
863
856
|
|
|
864
857
|
type dict mapping vert/edge/face types to `bmesh.types.BMVert`/`bmesh.types.BMEdge`/`bmesh.types.BMFace`
|
|
858
|
+
:rtype: typing.Dict
|
|
865
859
|
"""
|
|
866
860
|
|
|
867
861
|
...
|
|
868
862
|
|
|
869
863
|
def edgeloop_fill(
|
|
870
|
-
bm:
|
|
871
|
-
edges: typing.List[
|
|
864
|
+
bm: bmesh.types.BMesh,
|
|
865
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
872
866
|
mat_nr: int = 0,
|
|
873
867
|
use_smooth: bool = False,
|
|
874
868
|
) -> typing.Dict:
|
|
875
869
|
"""Edge Loop Fill.Create faces defined by one or more non overlapping edge loops.
|
|
876
870
|
|
|
877
871
|
:param bm: The bmesh to operate on.
|
|
878
|
-
:type bm:
|
|
872
|
+
:type bm: bmesh.types.BMesh
|
|
879
873
|
:param edges: input edges
|
|
880
|
-
:type edges: typing.List[
|
|
874
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
881
875
|
:param mat_nr: material to use
|
|
882
876
|
:type mat_nr: int
|
|
883
877
|
:param use_smooth: smooth state to use
|
|
884
878
|
:type use_smooth: bool
|
|
885
|
-
:rtype: typing.Dict
|
|
886
879
|
:return: faces: new faces
|
|
887
880
|
|
|
888
881
|
type list of (`bmesh.types.BMFace`)
|
|
882
|
+
:rtype: typing.Dict
|
|
889
883
|
"""
|
|
890
884
|
|
|
891
885
|
...
|
|
892
886
|
|
|
893
887
|
def edgenet_fill(
|
|
894
|
-
bm:
|
|
895
|
-
edges: typing.List[
|
|
888
|
+
bm: bmesh.types.BMesh,
|
|
889
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
896
890
|
mat_nr: int = 0,
|
|
897
891
|
use_smooth: bool = False,
|
|
898
892
|
sides: int = 0,
|
|
@@ -900,68 +894,68 @@ def edgenet_fill(
|
|
|
900
894
|
"""Edge Net Fill.Create faces defined by enclosed edges.
|
|
901
895
|
|
|
902
896
|
:param bm: The bmesh to operate on.
|
|
903
|
-
:type bm:
|
|
897
|
+
:type bm: bmesh.types.BMesh
|
|
904
898
|
:param edges: input edges
|
|
905
|
-
:type edges: typing.List[
|
|
899
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
906
900
|
:param mat_nr: material to use
|
|
907
901
|
:type mat_nr: int
|
|
908
902
|
:param use_smooth: smooth state to use
|
|
909
903
|
:type use_smooth: bool
|
|
910
904
|
:param sides: number of sides
|
|
911
905
|
:type sides: int
|
|
912
|
-
:rtype: typing.Dict
|
|
913
906
|
:return: faces: new faces
|
|
914
907
|
|
|
915
908
|
type list of (`bmesh.types.BMFace`)
|
|
909
|
+
:rtype: typing.Dict
|
|
916
910
|
"""
|
|
917
911
|
|
|
918
912
|
...
|
|
919
913
|
|
|
920
914
|
def edgenet_prepare(
|
|
921
|
-
bm:
|
|
915
|
+
bm: bmesh.types.BMesh, edges: typing.List[bmesh.types.BMEdge] = []
|
|
922
916
|
) -> typing.Dict:
|
|
923
917
|
"""Edge-net Prepare.Identifies several useful edge loop cases and modifies them so
|
|
924
918
|
they'll become a face when edgenet_fill is called. The cases covered are:
|
|
925
919
|
|
|
926
920
|
:param bm: The bmesh to operate on.
|
|
927
|
-
:type bm:
|
|
921
|
+
:type bm: bmesh.types.BMesh
|
|
928
922
|
:param edges: input edges
|
|
929
|
-
:type edges: typing.List[
|
|
930
|
-
:rtype: typing.Dict
|
|
923
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
931
924
|
:return: edges: new edges
|
|
932
925
|
|
|
933
926
|
type list of (`bmesh.types.BMEdge`)
|
|
927
|
+
:rtype: typing.Dict
|
|
934
928
|
"""
|
|
935
929
|
|
|
936
930
|
...
|
|
937
931
|
|
|
938
932
|
def extrude_discrete_faces(
|
|
939
|
-
bm:
|
|
940
|
-
faces: typing.List[
|
|
933
|
+
bm: bmesh.types.BMesh,
|
|
934
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
941
935
|
use_normal_flip: bool = False,
|
|
942
936
|
use_select_history: bool = False,
|
|
943
937
|
) -> typing.Dict:
|
|
944
938
|
"""Individual Face Extrude.Extrudes faces individually.
|
|
945
939
|
|
|
946
940
|
:param bm: The bmesh to operate on.
|
|
947
|
-
:type bm:
|
|
941
|
+
:type bm: bmesh.types.BMesh
|
|
948
942
|
:param faces: input faces
|
|
949
|
-
:type faces: typing.List[
|
|
943
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
950
944
|
:param use_normal_flip: Create faces with reversed direction.
|
|
951
945
|
:type use_normal_flip: bool
|
|
952
946
|
:param use_select_history: pass to duplicate
|
|
953
947
|
:type use_select_history: bool
|
|
954
|
-
:rtype: typing.Dict
|
|
955
948
|
:return: faces: output faces
|
|
956
949
|
|
|
957
950
|
type list of (`bmesh.types.BMFace`)
|
|
951
|
+
:rtype: typing.Dict
|
|
958
952
|
"""
|
|
959
953
|
|
|
960
954
|
...
|
|
961
955
|
|
|
962
956
|
def extrude_edge_only(
|
|
963
|
-
bm:
|
|
964
|
-
edges: typing.List[
|
|
957
|
+
bm: bmesh.types.BMesh,
|
|
958
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
965
959
|
use_normal_flip: bool = False,
|
|
966
960
|
use_select_history: bool = False,
|
|
967
961
|
) -> typing.Dict:
|
|
@@ -969,29 +963,29 @@ def extrude_edge_only(
|
|
|
969
963
|
winged extrusion.
|
|
970
964
|
|
|
971
965
|
:param bm: The bmesh to operate on.
|
|
972
|
-
:type bm:
|
|
966
|
+
:type bm: bmesh.types.BMesh
|
|
973
967
|
:param edges: input vertices
|
|
974
|
-
:type edges: typing.List[
|
|
968
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
975
969
|
:param use_normal_flip: Create faces with reversed direction.
|
|
976
970
|
:type use_normal_flip: bool
|
|
977
971
|
:param use_select_history: pass to duplicate
|
|
978
972
|
:type use_select_history: bool
|
|
979
|
-
:rtype: typing.Dict
|
|
980
973
|
:return: geom: output geometry
|
|
981
974
|
|
|
982
975
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
976
|
+
:rtype: typing.Dict
|
|
983
977
|
"""
|
|
984
978
|
|
|
985
979
|
...
|
|
986
980
|
|
|
987
981
|
def extrude_face_region(
|
|
988
|
-
bm:
|
|
982
|
+
bm: bmesh.types.BMesh,
|
|
989
983
|
geom: typing.Union[
|
|
990
|
-
typing.List[
|
|
991
|
-
typing.List[
|
|
992
|
-
typing.List[
|
|
984
|
+
typing.List[bmesh.types.BMVert],
|
|
985
|
+
typing.List[bmesh.types.BMEdge],
|
|
986
|
+
typing.List[bmesh.types.BMFace],
|
|
993
987
|
] = [],
|
|
994
|
-
edges_exclude
|
|
988
|
+
edges_exclude=None(),
|
|
995
989
|
use_keep_orig: bool = False,
|
|
996
990
|
use_normal_flip: bool = False,
|
|
997
991
|
use_normal_from_adjacent: bool = False,
|
|
@@ -1001,11 +995,10 @@ def extrude_face_region(
|
|
|
1001
995
|
"""Extrude Faces.Extrude operator (does not transform)
|
|
1002
996
|
|
|
1003
997
|
:param bm: The bmesh to operate on.
|
|
1004
|
-
:type bm:
|
|
998
|
+
:type bm: bmesh.types.BMesh
|
|
1005
999
|
:param geom: edges and faces
|
|
1006
|
-
:type geom: typing.Union[typing.List[
|
|
1000
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1007
1001
|
:param edges_exclude: input edges to explicitly exclude from extrusion
|
|
1008
|
-
:type edges_exclude: typing.Set
|
|
1009
1002
|
:param use_keep_orig: keep original geometry (requires geom to include edges).
|
|
1010
1003
|
:type use_keep_orig: bool
|
|
1011
1004
|
:param use_normal_flip: Create faces with reversed direction.
|
|
@@ -1016,28 +1009,27 @@ def extrude_face_region(
|
|
|
1016
1009
|
:type use_dissolve_ortho_edges: bool
|
|
1017
1010
|
:param use_select_history: pass to duplicate
|
|
1018
1011
|
:type use_select_history: bool
|
|
1019
|
-
:rtype: typing.Dict
|
|
1020
1012
|
:return: geom:
|
|
1021
1013
|
|
|
1022
1014
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1015
|
+
:rtype: typing.Dict
|
|
1023
1016
|
"""
|
|
1024
1017
|
|
|
1025
1018
|
...
|
|
1026
1019
|
|
|
1027
1020
|
def extrude_vert_indiv(
|
|
1028
|
-
bm:
|
|
1029
|
-
verts: typing.List[
|
|
1021
|
+
bm: bmesh.types.BMesh,
|
|
1022
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1030
1023
|
use_select_history: bool = False,
|
|
1031
1024
|
) -> typing.Dict:
|
|
1032
1025
|
"""Individual Vertex Extrude.Extrudes wire edges from vertices.
|
|
1033
1026
|
|
|
1034
1027
|
:param bm: The bmesh to operate on.
|
|
1035
|
-
:type bm:
|
|
1028
|
+
:type bm: bmesh.types.BMesh
|
|
1036
1029
|
:param verts: input vertices
|
|
1037
|
-
:type verts: typing.List[
|
|
1030
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1038
1031
|
:param use_select_history: pass to duplicate
|
|
1039
1032
|
:type use_select_history: bool
|
|
1040
|
-
:rtype: typing.Dict
|
|
1041
1033
|
:return: edges: output wire edges
|
|
1042
1034
|
|
|
1043
1035
|
type list of (`bmesh.types.BMEdge`)
|
|
@@ -1045,38 +1037,39 @@ def extrude_vert_indiv(
|
|
|
1045
1037
|
verts: output vertices
|
|
1046
1038
|
|
|
1047
1039
|
type list of (`bmesh.types.BMVert`)
|
|
1040
|
+
:rtype: typing.Dict
|
|
1048
1041
|
"""
|
|
1049
1042
|
|
|
1050
1043
|
...
|
|
1051
1044
|
|
|
1052
1045
|
def face_attribute_fill(
|
|
1053
|
-
bm:
|
|
1054
|
-
faces: typing.List[
|
|
1046
|
+
bm: bmesh.types.BMesh,
|
|
1047
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1055
1048
|
use_normals: bool = False,
|
|
1056
1049
|
use_data: bool = False,
|
|
1057
1050
|
) -> typing.Dict:
|
|
1058
1051
|
"""Face Attribute Fill.Fill in faces with data from adjacent faces.
|
|
1059
1052
|
|
|
1060
1053
|
:param bm: The bmesh to operate on.
|
|
1061
|
-
:type bm:
|
|
1054
|
+
:type bm: bmesh.types.BMesh
|
|
1062
1055
|
:param faces: input faces
|
|
1063
|
-
:type faces: typing.List[
|
|
1056
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1064
1057
|
:param use_normals: copy face winding
|
|
1065
1058
|
:type use_normals: bool
|
|
1066
1059
|
:param use_data: copy face data
|
|
1067
1060
|
:type use_data: bool
|
|
1068
|
-
:rtype: typing.Dict
|
|
1069
1061
|
:return: faces_fail: faces that could not be handled
|
|
1070
1062
|
|
|
1071
1063
|
type list of (`bmesh.types.BMFace`)
|
|
1064
|
+
:rtype: typing.Dict
|
|
1072
1065
|
"""
|
|
1073
1066
|
|
|
1074
1067
|
...
|
|
1075
1068
|
|
|
1076
1069
|
def find_doubles(
|
|
1077
|
-
bm:
|
|
1078
|
-
verts: typing.List[
|
|
1079
|
-
keep_verts: typing.List[
|
|
1070
|
+
bm: bmesh.types.BMesh,
|
|
1071
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1072
|
+
keep_verts: typing.List[bmesh.types.BMVert] = [],
|
|
1080
1073
|
dist: float = 0,
|
|
1081
1074
|
) -> typing.Dict:
|
|
1082
1075
|
"""Find Doubles.Takes input verts and find vertices they should weld to.
|
|
@@ -1084,37 +1077,37 @@ def find_doubles(
|
|
|
1084
1077
|
with vertices in that set.
|
|
1085
1078
|
|
|
1086
1079
|
:param bm: The bmesh to operate on.
|
|
1087
|
-
:type bm:
|
|
1080
|
+
:type bm: bmesh.types.BMesh
|
|
1088
1081
|
:param verts: input vertices
|
|
1089
|
-
:type verts: typing.List[
|
|
1082
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1090
1083
|
:param keep_verts: list of verts to keep
|
|
1091
|
-
:type keep_verts: typing.List[
|
|
1084
|
+
:type keep_verts: typing.List[bmesh.types.BMVert]
|
|
1092
1085
|
:param dist: maximum distance
|
|
1093
1086
|
:type dist: float
|
|
1094
|
-
:rtype: typing.Dict
|
|
1095
1087
|
:return: targetmap:
|
|
1096
1088
|
|
|
1097
1089
|
type dict mapping vert/edge/face types to `bmesh.types.BMVert`/`bmesh.types.BMEdge`/`bmesh.types.BMFace`
|
|
1090
|
+
:rtype: typing.Dict
|
|
1098
1091
|
"""
|
|
1099
1092
|
|
|
1100
1093
|
...
|
|
1101
1094
|
|
|
1102
1095
|
def flip_quad_tessellation(
|
|
1103
|
-
bm:
|
|
1096
|
+
bm: bmesh.types.BMesh, faces: typing.List[bmesh.types.BMFace] = []
|
|
1104
1097
|
):
|
|
1105
1098
|
"""Flip Quad TessellationFlip the tessellation direction of the selected quads.
|
|
1106
1099
|
|
|
1107
1100
|
:param bm: The bmesh to operate on.
|
|
1108
|
-
:type bm:
|
|
1101
|
+
:type bm: bmesh.types.BMesh
|
|
1109
1102
|
:param faces: Undocumented.
|
|
1110
|
-
:type faces: typing.List[
|
|
1103
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1111
1104
|
"""
|
|
1112
1105
|
|
|
1113
1106
|
...
|
|
1114
1107
|
|
|
1115
1108
|
def grid_fill(
|
|
1116
|
-
bm:
|
|
1117
|
-
edges: typing.List[
|
|
1109
|
+
bm: bmesh.types.BMesh,
|
|
1110
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1118
1111
|
mat_nr: int = 0,
|
|
1119
1112
|
use_smooth: bool = False,
|
|
1120
1113
|
use_interp_simple: bool = False,
|
|
@@ -1122,47 +1115,45 @@ def grid_fill(
|
|
|
1122
1115
|
"""Grid Fill.Create faces defined by 2 disconnected edge loops (which share edges).
|
|
1123
1116
|
|
|
1124
1117
|
:param bm: The bmesh to operate on.
|
|
1125
|
-
:type bm:
|
|
1118
|
+
:type bm: bmesh.types.BMesh
|
|
1126
1119
|
:param edges: input edges
|
|
1127
|
-
:type edges: typing.List[
|
|
1120
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1128
1121
|
:param mat_nr: material to use
|
|
1129
1122
|
:type mat_nr: int
|
|
1130
1123
|
:param use_smooth: smooth state to use
|
|
1131
1124
|
:type use_smooth: bool
|
|
1132
1125
|
:param use_interp_simple: use simple interpolation
|
|
1133
1126
|
:type use_interp_simple: bool
|
|
1134
|
-
:rtype: typing.Dict
|
|
1135
1127
|
:return: faces: new faces
|
|
1136
1128
|
|
|
1137
1129
|
type list of (`bmesh.types.BMFace`)
|
|
1130
|
+
:rtype: typing.Dict
|
|
1138
1131
|
"""
|
|
1139
1132
|
|
|
1140
1133
|
...
|
|
1141
1134
|
|
|
1142
1135
|
def holes_fill(
|
|
1143
|
-
bm:
|
|
1144
|
-
edges: typing.List["bmesh.types.BMEdge"] = [],
|
|
1145
|
-
sides: int = 0,
|
|
1136
|
+
bm: bmesh.types.BMesh, edges: typing.List[bmesh.types.BMEdge] = [], sides: int = 0
|
|
1146
1137
|
) -> typing.Dict:
|
|
1147
1138
|
"""Fill Holes.Fill boundary edges with faces, copying surrounding customdata.
|
|
1148
1139
|
|
|
1149
1140
|
:param bm: The bmesh to operate on.
|
|
1150
|
-
:type bm:
|
|
1141
|
+
:type bm: bmesh.types.BMesh
|
|
1151
1142
|
:param edges: input edges
|
|
1152
|
-
:type edges: typing.List[
|
|
1143
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1153
1144
|
:param sides: number of face sides to fill
|
|
1154
1145
|
:type sides: int
|
|
1155
|
-
:rtype: typing.Dict
|
|
1156
1146
|
:return: faces: new faces
|
|
1157
1147
|
|
|
1158
1148
|
type list of (`bmesh.types.BMFace`)
|
|
1149
|
+
:rtype: typing.Dict
|
|
1159
1150
|
"""
|
|
1160
1151
|
|
|
1161
1152
|
...
|
|
1162
1153
|
|
|
1163
1154
|
def inset_individual(
|
|
1164
|
-
bm:
|
|
1165
|
-
faces: typing.List[
|
|
1155
|
+
bm: bmesh.types.BMesh,
|
|
1156
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1166
1157
|
thickness: float = 0,
|
|
1167
1158
|
depth: float = 0,
|
|
1168
1159
|
use_even_offset: bool = False,
|
|
@@ -1172,9 +1163,9 @@ def inset_individual(
|
|
|
1172
1163
|
"""Face Inset (Individual).Insets individual faces.
|
|
1173
1164
|
|
|
1174
1165
|
:param bm: The bmesh to operate on.
|
|
1175
|
-
:type bm:
|
|
1166
|
+
:type bm: bmesh.types.BMesh
|
|
1176
1167
|
:param faces: input faces
|
|
1177
|
-
:type faces: typing.List[
|
|
1168
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1178
1169
|
:param thickness: thickness
|
|
1179
1170
|
:type thickness: float
|
|
1180
1171
|
:param depth: depth
|
|
@@ -1185,18 +1176,18 @@ def inset_individual(
|
|
|
1185
1176
|
:type use_interpolate: bool
|
|
1186
1177
|
:param use_relative_offset: scale the offset by surrounding geometry
|
|
1187
1178
|
:type use_relative_offset: bool
|
|
1188
|
-
:rtype: typing.Dict
|
|
1189
1179
|
:return: faces: output faces
|
|
1190
1180
|
|
|
1191
1181
|
type list of (`bmesh.types.BMFace`)
|
|
1182
|
+
:rtype: typing.Dict
|
|
1192
1183
|
"""
|
|
1193
1184
|
|
|
1194
1185
|
...
|
|
1195
1186
|
|
|
1196
1187
|
def inset_region(
|
|
1197
|
-
bm:
|
|
1198
|
-
faces: typing.List[
|
|
1199
|
-
faces_exclude: typing.List[
|
|
1188
|
+
bm: bmesh.types.BMesh,
|
|
1189
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1190
|
+
faces_exclude: typing.List[bmesh.types.BMFace] = [],
|
|
1200
1191
|
use_boundary: bool = False,
|
|
1201
1192
|
use_even_offset: bool = False,
|
|
1202
1193
|
use_interpolate: bool = False,
|
|
@@ -1209,11 +1200,11 @@ def inset_region(
|
|
|
1209
1200
|
"""Face Inset (Regions).Inset or outset face regions.
|
|
1210
1201
|
|
|
1211
1202
|
:param bm: The bmesh to operate on.
|
|
1212
|
-
:type bm:
|
|
1203
|
+
:type bm: bmesh.types.BMesh
|
|
1213
1204
|
:param faces: input faces
|
|
1214
|
-
:type faces: typing.List[
|
|
1205
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1215
1206
|
:param faces_exclude: input faces to explicitly exclude from inset
|
|
1216
|
-
:type faces_exclude: typing.List[
|
|
1207
|
+
:type faces_exclude: typing.List[bmesh.types.BMFace]
|
|
1217
1208
|
:param use_boundary: inset face boundaries
|
|
1218
1209
|
:type use_boundary: bool
|
|
1219
1210
|
:param use_even_offset: scale the offset to give more even thickness
|
|
@@ -1230,17 +1221,17 @@ def inset_region(
|
|
|
1230
1221
|
:type depth: float
|
|
1231
1222
|
:param use_outset: outset rather than inset
|
|
1232
1223
|
:type use_outset: bool
|
|
1233
|
-
:rtype: typing.Dict
|
|
1234
1224
|
:return: faces: output faces
|
|
1235
1225
|
|
|
1236
1226
|
type list of (`bmesh.types.BMFace`)
|
|
1227
|
+
:rtype: typing.Dict
|
|
1237
1228
|
"""
|
|
1238
1229
|
|
|
1239
1230
|
...
|
|
1240
1231
|
|
|
1241
1232
|
def join_triangles(
|
|
1242
|
-
bm:
|
|
1243
|
-
faces: typing.List[
|
|
1233
|
+
bm: bmesh.types.BMesh,
|
|
1234
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1244
1235
|
cmp_seam: bool = False,
|
|
1245
1236
|
cmp_sharp: bool = False,
|
|
1246
1237
|
cmp_uvs: bool = False,
|
|
@@ -1253,9 +1244,9 @@ def join_triangles(
|
|
|
1253
1244
|
to angle threshold and delimiters.
|
|
1254
1245
|
|
|
1255
1246
|
:param bm: The bmesh to operate on.
|
|
1256
|
-
:type bm:
|
|
1247
|
+
:type bm: bmesh.types.BMesh
|
|
1257
1248
|
:param faces: input geometry.
|
|
1258
|
-
:type faces: typing.List[
|
|
1249
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1259
1250
|
:param cmp_seam: Compare seam
|
|
1260
1251
|
:type cmp_seam: bool
|
|
1261
1252
|
:param cmp_sharp: Compare sharp
|
|
@@ -1270,29 +1261,29 @@ def join_triangles(
|
|
|
1270
1261
|
:type angle_face_threshold: float
|
|
1271
1262
|
:param angle_shape_threshold: Undocumented.
|
|
1272
1263
|
:type angle_shape_threshold: float
|
|
1273
|
-
:rtype: typing.Dict
|
|
1274
1264
|
:return: faces: joined faces
|
|
1275
1265
|
|
|
1276
1266
|
type list of (`bmesh.types.BMFace`)
|
|
1267
|
+
:rtype: typing.Dict
|
|
1277
1268
|
"""
|
|
1278
1269
|
|
|
1279
1270
|
...
|
|
1280
1271
|
|
|
1281
1272
|
def mesh_to_bmesh(
|
|
1282
|
-
bm:
|
|
1283
|
-
mesh:
|
|
1284
|
-
object:
|
|
1273
|
+
bm: bmesh.types.BMesh,
|
|
1274
|
+
mesh: bpy.types.Mesh,
|
|
1275
|
+
object: bpy.types.Object,
|
|
1285
1276
|
use_shapekey: bool = False,
|
|
1286
1277
|
):
|
|
1287
1278
|
"""Mesh to BMesh.Load the contents of a mesh into the bmesh. this BMOP is private, it's
|
|
1288
1279
|
reserved exclusively for entering editmode.
|
|
1289
1280
|
|
|
1290
1281
|
:param bm: The bmesh to operate on.
|
|
1291
|
-
:type bm:
|
|
1282
|
+
:type bm: bmesh.types.BMesh
|
|
1292
1283
|
:param mesh: pointer to a Mesh structure
|
|
1293
|
-
:type mesh:
|
|
1284
|
+
:type mesh: bpy.types.Mesh
|
|
1294
1285
|
:param object: pointer to an Object structure
|
|
1295
|
-
:type object:
|
|
1286
|
+
:type object: bpy.types.Object
|
|
1296
1287
|
:param use_shapekey: load active shapekey coordinates into verts
|
|
1297
1288
|
:type use_shapekey: bool
|
|
1298
1289
|
"""
|
|
@@ -1300,15 +1291,15 @@ def mesh_to_bmesh(
|
|
|
1300
1291
|
...
|
|
1301
1292
|
|
|
1302
1293
|
def mirror(
|
|
1303
|
-
bm:
|
|
1294
|
+
bm: bmesh.types.BMesh,
|
|
1304
1295
|
geom: typing.Union[
|
|
1305
|
-
typing.List[
|
|
1306
|
-
typing.List[
|
|
1307
|
-
typing.List[
|
|
1296
|
+
typing.List[bmesh.types.BMVert],
|
|
1297
|
+
typing.List[bmesh.types.BMEdge],
|
|
1298
|
+
typing.List[bmesh.types.BMFace],
|
|
1308
1299
|
] = [],
|
|
1309
|
-
matrix: typing.Union[
|
|
1300
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
1310
1301
|
merge_dist: float = 0,
|
|
1311
|
-
axis: typing.Union[
|
|
1302
|
+
axis: typing.Union[str, int] = "X",
|
|
1312
1303
|
mirror_u: bool = False,
|
|
1313
1304
|
mirror_v: bool = False,
|
|
1314
1305
|
mirror_udim: bool = False,
|
|
@@ -1319,15 +1310,15 @@ def mirror(
|
|
|
1319
1310
|
parameter (which defines the minimum distance for welding to happen).
|
|
1320
1311
|
|
|
1321
1312
|
:param bm: The bmesh to operate on.
|
|
1322
|
-
:type bm:
|
|
1313
|
+
:type bm: bmesh.types.BMesh
|
|
1323
1314
|
:param geom: input geometry
|
|
1324
|
-
:type geom: typing.Union[typing.List[
|
|
1315
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1325
1316
|
:param matrix: matrix defining the mirror transformation
|
|
1326
|
-
:type matrix: typing.Union[
|
|
1317
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
1327
1318
|
:param merge_dist: maximum distance for merging. does no merging if 0.
|
|
1328
1319
|
:type merge_dist: float
|
|
1329
1320
|
:param axis: the axis to use.
|
|
1330
|
-
:type axis: typing.Union[
|
|
1321
|
+
:type axis: typing.Union[str, int]
|
|
1331
1322
|
:param mirror_u: mirror UVs across the u axis
|
|
1332
1323
|
:type mirror_u: bool
|
|
1333
1324
|
:param mirror_v: mirror UVs across the v axis
|
|
@@ -1336,129 +1327,128 @@ def mirror(
|
|
|
1336
1327
|
:type mirror_udim: bool
|
|
1337
1328
|
:param use_shapekey: Transform shape keys too.
|
|
1338
1329
|
:type use_shapekey: bool
|
|
1339
|
-
:rtype: typing.Dict
|
|
1340
1330
|
:return: geom: output geometry, mirrored
|
|
1341
1331
|
|
|
1342
1332
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1333
|
+
:rtype: typing.Dict
|
|
1343
1334
|
"""
|
|
1344
1335
|
|
|
1345
1336
|
...
|
|
1346
1337
|
|
|
1347
1338
|
def object_load_bmesh(
|
|
1348
|
-
bm:
|
|
1339
|
+
bm: bmesh.types.BMesh, scene: bpy.types.Scene, object: bpy.types.Object
|
|
1349
1340
|
):
|
|
1350
1341
|
"""Object Load BMesh.Loads a bmesh into an object/mesh. This is a "private"
|
|
1351
1342
|
BMOP.
|
|
1352
1343
|
|
|
1353
1344
|
:param bm: The bmesh to operate on.
|
|
1354
|
-
:type bm:
|
|
1345
|
+
:type bm: bmesh.types.BMesh
|
|
1355
1346
|
:param scene: pointer to an scene structure
|
|
1356
|
-
:type scene:
|
|
1347
|
+
:type scene: bpy.types.Scene
|
|
1357
1348
|
:param object: pointer to an object structure
|
|
1358
|
-
:type object:
|
|
1349
|
+
:type object: bpy.types.Object
|
|
1359
1350
|
"""
|
|
1360
1351
|
|
|
1361
1352
|
...
|
|
1362
1353
|
|
|
1363
1354
|
def offset_edgeloops(
|
|
1364
|
-
bm:
|
|
1365
|
-
edges: typing.List[
|
|
1355
|
+
bm: bmesh.types.BMesh,
|
|
1356
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1366
1357
|
use_cap_endpoint: bool = False,
|
|
1367
1358
|
) -> typing.Dict:
|
|
1368
1359
|
"""Edge-loop Offset.Creates edge loops based on simple edge-outset method.
|
|
1369
1360
|
|
|
1370
1361
|
:param bm: The bmesh to operate on.
|
|
1371
|
-
:type bm:
|
|
1362
|
+
:type bm: bmesh.types.BMesh
|
|
1372
1363
|
:param edges: input edges
|
|
1373
|
-
:type edges: typing.List[
|
|
1364
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1374
1365
|
:param use_cap_endpoint: extend loop around end-points
|
|
1375
1366
|
:type use_cap_endpoint: bool
|
|
1376
|
-
:rtype: typing.Dict
|
|
1377
1367
|
:return: edges: output edges
|
|
1378
1368
|
|
|
1379
1369
|
type list of (`bmesh.types.BMEdge`)
|
|
1370
|
+
:rtype: typing.Dict
|
|
1380
1371
|
"""
|
|
1381
1372
|
|
|
1382
1373
|
...
|
|
1383
1374
|
|
|
1384
1375
|
def planar_faces(
|
|
1385
|
-
bm:
|
|
1386
|
-
faces: typing.List[
|
|
1376
|
+
bm: bmesh.types.BMesh,
|
|
1377
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1387
1378
|
iterations: int = 0,
|
|
1388
1379
|
factor: float = 0,
|
|
1389
1380
|
) -> typing.Dict:
|
|
1390
1381
|
"""Planar Faces.Iteratively flatten faces.
|
|
1391
1382
|
|
|
1392
1383
|
:param bm: The bmesh to operate on.
|
|
1393
|
-
:type bm:
|
|
1384
|
+
:type bm: bmesh.types.BMesh
|
|
1394
1385
|
:param faces: input geometry.
|
|
1395
|
-
:type faces: typing.List[
|
|
1386
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1396
1387
|
:param iterations: Number of times to flatten faces (for when connected faces are used)
|
|
1397
1388
|
:type iterations: int
|
|
1398
1389
|
:param factor: Influence for making planar each iteration
|
|
1399
1390
|
:type factor: float
|
|
1400
|
-
:rtype: typing.Dict
|
|
1401
1391
|
:return: geom: output slot, computed boundary geometry.
|
|
1402
1392
|
|
|
1403
1393
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1394
|
+
:rtype: typing.Dict
|
|
1404
1395
|
"""
|
|
1405
1396
|
|
|
1406
1397
|
...
|
|
1407
1398
|
|
|
1408
1399
|
def pointmerge(
|
|
1409
|
-
bm:
|
|
1410
|
-
verts: typing.List[
|
|
1411
|
-
merge_co: typing.Union[
|
|
1400
|
+
bm: bmesh.types.BMesh,
|
|
1401
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1402
|
+
merge_co: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1412
1403
|
):
|
|
1413
1404
|
"""Point Merge.Merge verts together at a point.
|
|
1414
1405
|
|
|
1415
1406
|
:param bm: The bmesh to operate on.
|
|
1416
|
-
:type bm:
|
|
1407
|
+
:type bm: bmesh.types.BMesh
|
|
1417
1408
|
:param verts: input vertices (all verts will be merged into the first).
|
|
1418
|
-
:type verts: typing.List[
|
|
1409
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1419
1410
|
:param merge_co: Position to merge at.
|
|
1420
|
-
:type merge_co: typing.Union[
|
|
1411
|
+
:type merge_co: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1421
1412
|
"""
|
|
1422
1413
|
|
|
1423
1414
|
...
|
|
1424
1415
|
|
|
1425
1416
|
def pointmerge_facedata(
|
|
1426
|
-
bm:
|
|
1427
|
-
verts: typing.List[
|
|
1428
|
-
vert_snap:
|
|
1417
|
+
bm: bmesh.types.BMesh,
|
|
1418
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1419
|
+
vert_snap: bmesh.types.BMVert = None,
|
|
1429
1420
|
):
|
|
1430
1421
|
"""Face-Data Point Merge.Merge uv/vcols at a specific vertex.
|
|
1431
1422
|
|
|
1432
1423
|
:param bm: The bmesh to operate on.
|
|
1433
|
-
:type bm:
|
|
1424
|
+
:type bm: bmesh.types.BMesh
|
|
1434
1425
|
:param verts: input vertices
|
|
1435
|
-
:type verts: typing.List[
|
|
1426
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1436
1427
|
:param vert_snap: snap vertex
|
|
1437
|
-
:type vert_snap:
|
|
1428
|
+
:type vert_snap: bmesh.types.BMVert
|
|
1438
1429
|
"""
|
|
1439
1430
|
|
|
1440
1431
|
...
|
|
1441
1432
|
|
|
1442
1433
|
def poke(
|
|
1443
|
-
bm:
|
|
1444
|
-
faces: typing.List[
|
|
1434
|
+
bm: bmesh.types.BMesh,
|
|
1435
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1445
1436
|
offset: float = 0,
|
|
1446
|
-
center_mode: typing.Union[
|
|
1437
|
+
center_mode: typing.Union[str, int] = "MEAN_WEIGHTED",
|
|
1447
1438
|
use_relative_offset: bool = False,
|
|
1448
1439
|
) -> typing.Dict:
|
|
1449
1440
|
"""Pokes a face.Splits a face into a triangle fan.
|
|
1450
1441
|
|
|
1451
1442
|
:param bm: The bmesh to operate on.
|
|
1452
|
-
:type bm:
|
|
1443
|
+
:type bm: bmesh.types.BMesh
|
|
1453
1444
|
:param faces: input faces
|
|
1454
|
-
:type faces: typing.List[
|
|
1445
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1455
1446
|
:param offset: center vertex offset along normal
|
|
1456
1447
|
:type offset: float
|
|
1457
1448
|
:param center_mode: calculation mode for center vertex
|
|
1458
|
-
:type center_mode: typing.Union[
|
|
1449
|
+
:type center_mode: typing.Union[str, int]
|
|
1459
1450
|
:param use_relative_offset: apply offset
|
|
1460
1451
|
:type use_relative_offset: bool
|
|
1461
|
-
:rtype: typing.Dict
|
|
1462
1452
|
:return: verts: output verts
|
|
1463
1453
|
|
|
1464
1454
|
type list of (`bmesh.types.BMVert`)
|
|
@@ -1466,29 +1456,30 @@ def poke(
|
|
|
1466
1456
|
faces: output faces
|
|
1467
1457
|
|
|
1468
1458
|
type list of (`bmesh.types.BMFace`)
|
|
1459
|
+
:rtype: typing.Dict
|
|
1469
1460
|
"""
|
|
1470
1461
|
|
|
1471
1462
|
...
|
|
1472
1463
|
|
|
1473
1464
|
def recalc_face_normals(
|
|
1474
|
-
bm:
|
|
1465
|
+
bm: bmesh.types.BMesh, faces: typing.List[bmesh.types.BMFace] = []
|
|
1475
1466
|
):
|
|
1476
1467
|
"""Right-Hand Faces.Computes an "outside" normal for the specified input faces.
|
|
1477
1468
|
|
|
1478
1469
|
:param bm: The bmesh to operate on.
|
|
1479
|
-
:type bm:
|
|
1470
|
+
:type bm: bmesh.types.BMesh
|
|
1480
1471
|
:param faces: input faces
|
|
1481
|
-
:type faces: typing.List[
|
|
1472
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1482
1473
|
"""
|
|
1483
1474
|
|
|
1484
1475
|
...
|
|
1485
1476
|
|
|
1486
1477
|
def region_extend(
|
|
1487
|
-
bm:
|
|
1478
|
+
bm: bmesh.types.BMesh,
|
|
1488
1479
|
geom: typing.Union[
|
|
1489
|
-
typing.List[
|
|
1490
|
-
typing.List[
|
|
1491
|
-
typing.List[
|
|
1480
|
+
typing.List[bmesh.types.BMVert],
|
|
1481
|
+
typing.List[bmesh.types.BMEdge],
|
|
1482
|
+
typing.List[bmesh.types.BMFace],
|
|
1492
1483
|
] = [],
|
|
1493
1484
|
use_contract: bool = False,
|
|
1494
1485
|
use_faces: bool = False,
|
|
@@ -1500,35 +1491,33 @@ def region_extend(
|
|
|
1500
1491
|
otherwise it spits out faces.
|
|
1501
1492
|
|
|
1502
1493
|
:param bm: The bmesh to operate on.
|
|
1503
|
-
:type bm:
|
|
1494
|
+
:type bm: bmesh.types.BMesh
|
|
1504
1495
|
:param geom: input geometry
|
|
1505
|
-
:type geom: typing.Union[typing.List[
|
|
1496
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1506
1497
|
:param use_contract: find boundary inside the regions, not outside.
|
|
1507
1498
|
:type use_contract: bool
|
|
1508
1499
|
:param use_faces: extend from faces instead of edges
|
|
1509
1500
|
:type use_faces: bool
|
|
1510
1501
|
:param use_face_step: step over connected faces
|
|
1511
1502
|
:type use_face_step: bool
|
|
1512
|
-
:rtype: typing.Dict
|
|
1513
1503
|
:return: geom: output slot, computed boundary geometry.
|
|
1514
1504
|
|
|
1515
1505
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1506
|
+
:rtype: typing.Dict
|
|
1516
1507
|
"""
|
|
1517
1508
|
|
|
1518
1509
|
...
|
|
1519
1510
|
|
|
1520
1511
|
def remove_doubles(
|
|
1521
|
-
bm:
|
|
1522
|
-
verts: typing.List["bmesh.types.BMVert"] = [],
|
|
1523
|
-
dist: float = 0,
|
|
1512
|
+
bm: bmesh.types.BMesh, verts: typing.List[bmesh.types.BMVert] = [], dist: float = 0
|
|
1524
1513
|
):
|
|
1525
1514
|
"""Remove Doubles.Finds groups of vertices closer than dist and merges them together,
|
|
1526
1515
|
using the weld verts BMOP.
|
|
1527
1516
|
|
|
1528
1517
|
:param bm: The bmesh to operate on.
|
|
1529
|
-
:type bm:
|
|
1518
|
+
:type bm: bmesh.types.BMesh
|
|
1530
1519
|
:param verts: input verts
|
|
1531
|
-
:type verts: typing.List[
|
|
1520
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1532
1521
|
:param dist: minimum distance
|
|
1533
1522
|
:type dist: float
|
|
1534
1523
|
"""
|
|
@@ -1536,16 +1525,16 @@ def remove_doubles(
|
|
|
1536
1525
|
...
|
|
1537
1526
|
|
|
1538
1527
|
def reverse_colors(
|
|
1539
|
-
bm:
|
|
1540
|
-
faces: typing.List[
|
|
1528
|
+
bm: bmesh.types.BMesh,
|
|
1529
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1541
1530
|
color_index: int = 0,
|
|
1542
1531
|
):
|
|
1543
1532
|
"""Color ReverseReverse the loop colors.
|
|
1544
1533
|
|
|
1545
1534
|
:param bm: The bmesh to operate on.
|
|
1546
|
-
:type bm:
|
|
1535
|
+
:type bm: bmesh.types.BMesh
|
|
1547
1536
|
:param faces: input faces
|
|
1548
|
-
:type faces: typing.List[
|
|
1537
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1549
1538
|
:param color_index: index into color attribute list
|
|
1550
1539
|
:type color_index: int
|
|
1551
1540
|
"""
|
|
@@ -1553,54 +1542,54 @@ def reverse_colors(
|
|
|
1553
1542
|
...
|
|
1554
1543
|
|
|
1555
1544
|
def reverse_faces(
|
|
1556
|
-
bm:
|
|
1557
|
-
faces: typing.List[
|
|
1545
|
+
bm: bmesh.types.BMesh,
|
|
1546
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1558
1547
|
flip_multires: bool = False,
|
|
1559
1548
|
):
|
|
1560
1549
|
"""Reverse Faces.Reverses the winding (vertex order) of faces.
|
|
1561
1550
|
This has the effect of flipping the normal.
|
|
1562
1551
|
|
|
1563
1552
|
:param bm: The bmesh to operate on.
|
|
1564
|
-
:type bm:
|
|
1553
|
+
:type bm: bmesh.types.BMesh
|
|
1565
1554
|
:param faces: input faces
|
|
1566
|
-
:type faces: typing.List[
|
|
1555
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1567
1556
|
:param flip_multires: maintain multi-res offset
|
|
1568
1557
|
:type flip_multires: bool
|
|
1569
1558
|
"""
|
|
1570
1559
|
|
|
1571
1560
|
...
|
|
1572
1561
|
|
|
1573
|
-
def reverse_uvs(bm:
|
|
1562
|
+
def reverse_uvs(bm: bmesh.types.BMesh, faces: typing.List[bmesh.types.BMFace] = []):
|
|
1574
1563
|
"""UV Reverse.Reverse the UVs
|
|
1575
1564
|
|
|
1576
1565
|
:param bm: The bmesh to operate on.
|
|
1577
|
-
:type bm:
|
|
1566
|
+
:type bm: bmesh.types.BMesh
|
|
1578
1567
|
:param faces: input faces
|
|
1579
|
-
:type faces: typing.List[
|
|
1568
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1580
1569
|
"""
|
|
1581
1570
|
|
|
1582
1571
|
...
|
|
1583
1572
|
|
|
1584
1573
|
def rotate(
|
|
1585
|
-
bm:
|
|
1586
|
-
cent: typing.Union[
|
|
1587
|
-
matrix: typing.Union[
|
|
1588
|
-
verts: typing.List[
|
|
1589
|
-
space: typing.Union[
|
|
1574
|
+
bm: bmesh.types.BMesh,
|
|
1575
|
+
cent: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1576
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
1577
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1578
|
+
space: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
1590
1579
|
use_shapekey: bool = False,
|
|
1591
1580
|
):
|
|
1592
1581
|
"""Rotate.Rotate vertices around a center, using a 3x3 rotation matrix.
|
|
1593
1582
|
|
|
1594
1583
|
:param bm: The bmesh to operate on.
|
|
1595
|
-
:type bm:
|
|
1584
|
+
:type bm: bmesh.types.BMesh
|
|
1596
1585
|
:param cent: center of rotation
|
|
1597
|
-
:type cent: typing.Union[
|
|
1586
|
+
:type cent: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1598
1587
|
:param matrix: matrix defining rotation
|
|
1599
|
-
:type matrix: typing.Union[
|
|
1588
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
1600
1589
|
:param verts: input vertices
|
|
1601
|
-
:type verts: typing.List[
|
|
1590
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1602
1591
|
:param space: matrix to define the space (typically object matrix)
|
|
1603
|
-
:type space: typing.Union[
|
|
1592
|
+
:type space: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
1604
1593
|
:param use_shapekey: Transform shape keys too.
|
|
1605
1594
|
:type use_shapekey: bool
|
|
1606
1595
|
"""
|
|
@@ -1608,17 +1597,17 @@ def rotate(
|
|
|
1608
1597
|
...
|
|
1609
1598
|
|
|
1610
1599
|
def rotate_colors(
|
|
1611
|
-
bm:
|
|
1612
|
-
faces: typing.List[
|
|
1600
|
+
bm: bmesh.types.BMesh,
|
|
1601
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1613
1602
|
use_ccw: bool = False,
|
|
1614
1603
|
color_index: int = 0,
|
|
1615
1604
|
):
|
|
1616
1605
|
"""Color Rotation.Cycle the loop colors
|
|
1617
1606
|
|
|
1618
1607
|
:param bm: The bmesh to operate on.
|
|
1619
|
-
:type bm:
|
|
1608
|
+
:type bm: bmesh.types.BMesh
|
|
1620
1609
|
:param faces: input faces
|
|
1621
|
-
:type faces: typing.List[
|
|
1610
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1622
1611
|
:param use_ccw: rotate counter-clockwise if true, otherwise clockwise
|
|
1623
1612
|
:type use_ccw: bool
|
|
1624
1613
|
:param color_index: index into color attribute list
|
|
@@ -1628,38 +1617,38 @@ def rotate_colors(
|
|
|
1628
1617
|
...
|
|
1629
1618
|
|
|
1630
1619
|
def rotate_edges(
|
|
1631
|
-
bm:
|
|
1632
|
-
edges: typing.List[
|
|
1620
|
+
bm: bmesh.types.BMesh,
|
|
1621
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1633
1622
|
use_ccw: bool = False,
|
|
1634
1623
|
) -> typing.Dict:
|
|
1635
1624
|
"""Edge Rotate.Rotates edges topologically. Also known as "spin edge" to some people.
|
|
1636
1625
|
Simple example: [/] becomes [|] then [].
|
|
1637
1626
|
|
|
1638
1627
|
:param bm: The bmesh to operate on.
|
|
1639
|
-
:type bm:
|
|
1628
|
+
:type bm: bmesh.types.BMesh
|
|
1640
1629
|
:param edges: input edges
|
|
1641
|
-
:type edges: typing.List[
|
|
1630
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1642
1631
|
:param use_ccw: rotate edge counter-clockwise if true, otherwise clockwise
|
|
1643
1632
|
:type use_ccw: bool
|
|
1644
|
-
:rtype: typing.Dict
|
|
1645
1633
|
:return: edges: newly spun edges
|
|
1646
1634
|
|
|
1647
1635
|
type list of (`bmesh.types.BMEdge`)
|
|
1636
|
+
:rtype: typing.Dict
|
|
1648
1637
|
"""
|
|
1649
1638
|
|
|
1650
1639
|
...
|
|
1651
1640
|
|
|
1652
1641
|
def rotate_uvs(
|
|
1653
|
-
bm:
|
|
1654
|
-
faces: typing.List[
|
|
1642
|
+
bm: bmesh.types.BMesh,
|
|
1643
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
1655
1644
|
use_ccw: bool = False,
|
|
1656
1645
|
):
|
|
1657
1646
|
"""UV Rotation.Cycle the loop UVs
|
|
1658
1647
|
|
|
1659
1648
|
:param bm: The bmesh to operate on.
|
|
1660
|
-
:type bm:
|
|
1649
|
+
:type bm: bmesh.types.BMesh
|
|
1661
1650
|
:param faces: input faces
|
|
1662
|
-
:type faces: typing.List[
|
|
1651
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
1663
1652
|
:param use_ccw: rotate counter-clockwise if true, otherwise clockwise
|
|
1664
1653
|
:type use_ccw: bool
|
|
1665
1654
|
"""
|
|
@@ -1667,22 +1656,22 @@ def rotate_uvs(
|
|
|
1667
1656
|
...
|
|
1668
1657
|
|
|
1669
1658
|
def scale(
|
|
1670
|
-
bm:
|
|
1671
|
-
vec: typing.Union[
|
|
1672
|
-
space: typing.Union[
|
|
1673
|
-
verts: typing.List[
|
|
1659
|
+
bm: bmesh.types.BMesh,
|
|
1660
|
+
vec: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1661
|
+
space: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
1662
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1674
1663
|
use_shapekey: bool = False,
|
|
1675
1664
|
):
|
|
1676
1665
|
"""Scale.Scales vertices by an offset.
|
|
1677
1666
|
|
|
1678
1667
|
:param bm: The bmesh to operate on.
|
|
1679
|
-
:type bm:
|
|
1668
|
+
:type bm: bmesh.types.BMesh
|
|
1680
1669
|
:param vec: scale factor
|
|
1681
|
-
:type vec: typing.Union[
|
|
1670
|
+
:type vec: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1682
1671
|
:param space: matrix to define the space (typically object matrix)
|
|
1683
|
-
:type space: typing.Union[
|
|
1672
|
+
:type space: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
1684
1673
|
:param verts: input vertices
|
|
1685
|
-
:type verts: typing.List[
|
|
1674
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1686
1675
|
:param use_shapekey: Transform shape keys too.
|
|
1687
1676
|
:type use_shapekey: bool
|
|
1688
1677
|
"""
|
|
@@ -1690,8 +1679,8 @@ def scale(
|
|
|
1690
1679
|
...
|
|
1691
1680
|
|
|
1692
1681
|
def smooth_laplacian_vert(
|
|
1693
|
-
bm:
|
|
1694
|
-
verts: typing.List[
|
|
1682
|
+
bm: bmesh.types.BMesh,
|
|
1683
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1695
1684
|
lambda_factor: float = 0,
|
|
1696
1685
|
lambda_border: float = 0,
|
|
1697
1686
|
use_x: bool = False,
|
|
@@ -1703,9 +1692,9 @@ def smooth_laplacian_vert(
|
|
|
1703
1692
|
Desbrun, et al. Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow.
|
|
1704
1693
|
|
|
1705
1694
|
:param bm: The bmesh to operate on.
|
|
1706
|
-
:type bm:
|
|
1695
|
+
:type bm: bmesh.types.BMesh
|
|
1707
1696
|
:param verts: input vertices
|
|
1708
|
-
:type verts: typing.List[
|
|
1697
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1709
1698
|
:param lambda_factor: lambda param
|
|
1710
1699
|
:type lambda_factor: float
|
|
1711
1700
|
:param lambda_border: lambda param in border
|
|
@@ -1723,8 +1712,8 @@ def smooth_laplacian_vert(
|
|
|
1723
1712
|
...
|
|
1724
1713
|
|
|
1725
1714
|
def smooth_vert(
|
|
1726
|
-
bm:
|
|
1727
|
-
verts: typing.List[
|
|
1715
|
+
bm: bmesh.types.BMesh,
|
|
1716
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1728
1717
|
factor: float = 0,
|
|
1729
1718
|
mirror_clip_x: bool = False,
|
|
1730
1719
|
mirror_clip_y: bool = False,
|
|
@@ -1737,9 +1726,9 @@ def smooth_vert(
|
|
|
1737
1726
|
"""Vertex Smooth.Smooths vertices by using a basic vertex averaging scheme.
|
|
1738
1727
|
|
|
1739
1728
|
:param bm: The bmesh to operate on.
|
|
1740
|
-
:type bm:
|
|
1729
|
+
:type bm: bmesh.types.BMesh
|
|
1741
1730
|
:param verts: input vertices
|
|
1742
|
-
:type verts: typing.List[
|
|
1731
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1743
1732
|
:param factor: smoothing factor
|
|
1744
1733
|
:type factor: float
|
|
1745
1734
|
:param mirror_clip_x: set vertices close to the x axis before the operation to 0
|
|
@@ -1761,42 +1750,42 @@ def smooth_vert(
|
|
|
1761
1750
|
...
|
|
1762
1751
|
|
|
1763
1752
|
def solidify(
|
|
1764
|
-
bm:
|
|
1753
|
+
bm: bmesh.types.BMesh,
|
|
1765
1754
|
geom: typing.Union[
|
|
1766
|
-
typing.List[
|
|
1767
|
-
typing.List[
|
|
1768
|
-
typing.List[
|
|
1755
|
+
typing.List[bmesh.types.BMVert],
|
|
1756
|
+
typing.List[bmesh.types.BMEdge],
|
|
1757
|
+
typing.List[bmesh.types.BMFace],
|
|
1769
1758
|
] = [],
|
|
1770
1759
|
thickness: float = 0,
|
|
1771
1760
|
) -> typing.Dict:
|
|
1772
1761
|
"""Solidify.Turns a mesh into a shell with thickness
|
|
1773
1762
|
|
|
1774
1763
|
:param bm: The bmesh to operate on.
|
|
1775
|
-
:type bm:
|
|
1764
|
+
:type bm: bmesh.types.BMesh
|
|
1776
1765
|
:param geom: input geometry
|
|
1777
|
-
:type geom: typing.Union[typing.List[
|
|
1766
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1778
1767
|
:param thickness: thickness
|
|
1779
1768
|
:type thickness: float
|
|
1780
|
-
:rtype: typing.Dict
|
|
1781
1769
|
:return: geom:
|
|
1782
1770
|
|
|
1783
1771
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1772
|
+
:rtype: typing.Dict
|
|
1784
1773
|
"""
|
|
1785
1774
|
|
|
1786
1775
|
...
|
|
1787
1776
|
|
|
1788
1777
|
def spin(
|
|
1789
|
-
bm:
|
|
1778
|
+
bm: bmesh.types.BMesh,
|
|
1790
1779
|
geom: typing.Union[
|
|
1791
|
-
typing.List[
|
|
1792
|
-
typing.List[
|
|
1793
|
-
typing.List[
|
|
1780
|
+
typing.List[bmesh.types.BMVert],
|
|
1781
|
+
typing.List[bmesh.types.BMEdge],
|
|
1782
|
+
typing.List[bmesh.types.BMFace],
|
|
1794
1783
|
] = [],
|
|
1795
|
-
cent: typing.Union[
|
|
1796
|
-
axis: typing.Union[
|
|
1797
|
-
dvec: typing.Union[
|
|
1784
|
+
cent: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1785
|
+
axis: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1786
|
+
dvec: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
1798
1787
|
angle: float = 0,
|
|
1799
|
-
space: typing.Union[
|
|
1788
|
+
space: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
1800
1789
|
steps: int = 0,
|
|
1801
1790
|
use_merge: bool = False,
|
|
1802
1791
|
use_normal_flip: bool = False,
|
|
@@ -1806,19 +1795,19 @@ def spin(
|
|
|
1806
1795
|
rotating and possibly translating after each step
|
|
1807
1796
|
|
|
1808
1797
|
:param bm: The bmesh to operate on.
|
|
1809
|
-
:type bm:
|
|
1798
|
+
:type bm: bmesh.types.BMesh
|
|
1810
1799
|
:param geom: input geometry
|
|
1811
|
-
:type geom: typing.Union[typing.List[
|
|
1800
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1812
1801
|
:param cent: rotation center
|
|
1813
|
-
:type cent: typing.Union[
|
|
1802
|
+
:type cent: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1814
1803
|
:param axis: rotation axis
|
|
1815
|
-
:type axis: typing.Union[
|
|
1804
|
+
:type axis: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1816
1805
|
:param dvec: translation delta per step
|
|
1817
|
-
:type dvec: typing.Union[
|
|
1806
|
+
:type dvec: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
1818
1807
|
:param angle: total rotation angle (radians)
|
|
1819
1808
|
:type angle: float
|
|
1820
1809
|
:param space: matrix to define the space (typically object matrix)
|
|
1821
|
-
:type space: typing.Union[
|
|
1810
|
+
:type space: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
1822
1811
|
:param steps: number of steps
|
|
1823
1812
|
:type steps: int
|
|
1824
1813
|
:param use_merge: Merge first/last when the angle is a full revolution.
|
|
@@ -1827,36 +1816,35 @@ def spin(
|
|
|
1827
1816
|
:type use_normal_flip: bool
|
|
1828
1817
|
:param use_duplicate: duplicate or extrude?
|
|
1829
1818
|
:type use_duplicate: bool
|
|
1830
|
-
:rtype: typing.Dict
|
|
1831
1819
|
:return: geom_last: result of last step
|
|
1832
1820
|
|
|
1833
1821
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1822
|
+
:rtype: typing.Dict
|
|
1834
1823
|
"""
|
|
1835
1824
|
|
|
1836
1825
|
...
|
|
1837
1826
|
|
|
1838
1827
|
def split(
|
|
1839
|
-
bm:
|
|
1828
|
+
bm: bmesh.types.BMesh,
|
|
1840
1829
|
geom: typing.Union[
|
|
1841
|
-
typing.List[
|
|
1842
|
-
typing.List[
|
|
1843
|
-
typing.List[
|
|
1830
|
+
typing.List[bmesh.types.BMVert],
|
|
1831
|
+
typing.List[bmesh.types.BMEdge],
|
|
1832
|
+
typing.List[bmesh.types.BMFace],
|
|
1844
1833
|
] = [],
|
|
1845
|
-
dest:
|
|
1834
|
+
dest: bmesh.types.BMesh = None,
|
|
1846
1835
|
use_only_faces: bool = False,
|
|
1847
1836
|
) -> typing.Dict:
|
|
1848
1837
|
"""Split Off Geometry.Disconnect geometry from adjacent edges and faces,
|
|
1849
1838
|
optionally into a destination mesh.
|
|
1850
1839
|
|
|
1851
1840
|
:param bm: The bmesh to operate on.
|
|
1852
|
-
:type bm:
|
|
1841
|
+
:type bm: bmesh.types.BMesh
|
|
1853
1842
|
:param geom: input geometry
|
|
1854
|
-
:type geom: typing.Union[typing.List[
|
|
1843
|
+
:type geom: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
1855
1844
|
:param dest: destination bmesh, if None will use current one
|
|
1856
|
-
:type dest:
|
|
1845
|
+
:type dest: bmesh.types.BMesh
|
|
1857
1846
|
:param use_only_faces: when enabled. don't duplicate loose verts/edges
|
|
1858
1847
|
:type use_only_faces: bool
|
|
1859
|
-
:rtype: typing.Dict
|
|
1860
1848
|
:return: geom:
|
|
1861
1849
|
|
|
1862
1850
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
@@ -1868,79 +1856,80 @@ def split(
|
|
|
1868
1856
|
isovert_map:
|
|
1869
1857
|
|
|
1870
1858
|
type dict mapping vert/edge/face types to `bmesh.types.BMVert`/`bmesh.types.BMEdge`/`bmesh.types.BMFace`
|
|
1859
|
+
:rtype: typing.Dict
|
|
1871
1860
|
"""
|
|
1872
1861
|
|
|
1873
1862
|
...
|
|
1874
1863
|
|
|
1875
1864
|
def split_edges(
|
|
1876
|
-
bm:
|
|
1877
|
-
edges: typing.List[
|
|
1878
|
-
verts: typing.List[
|
|
1865
|
+
bm: bmesh.types.BMesh,
|
|
1866
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1867
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
1879
1868
|
use_verts: bool = False,
|
|
1880
1869
|
) -> typing.Dict:
|
|
1881
1870
|
"""Edge Split.Disconnects faces along input edges.
|
|
1882
1871
|
|
|
1883
1872
|
:param bm: The bmesh to operate on.
|
|
1884
|
-
:type bm:
|
|
1873
|
+
:type bm: bmesh.types.BMesh
|
|
1885
1874
|
:param edges: input edges
|
|
1886
|
-
:type edges: typing.List[
|
|
1875
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1887
1876
|
:param verts: optional tag verts, use to have greater control of splits
|
|
1888
|
-
:type verts: typing.List[
|
|
1877
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
1889
1878
|
:param use_verts: use 'verts' for splitting, else just find verts to split from edges
|
|
1890
1879
|
:type use_verts: bool
|
|
1891
|
-
:rtype: typing.Dict
|
|
1892
1880
|
:return: edges: old output disconnected edges
|
|
1893
1881
|
|
|
1894
1882
|
type list of (`bmesh.types.BMEdge`)
|
|
1883
|
+
:rtype: typing.Dict
|
|
1895
1884
|
"""
|
|
1896
1885
|
|
|
1897
1886
|
...
|
|
1898
1887
|
|
|
1899
1888
|
def subdivide_edgering(
|
|
1900
|
-
bm:
|
|
1901
|
-
edges: typing.List[
|
|
1902
|
-
interp_mode: typing.Union[
|
|
1889
|
+
bm: bmesh.types.BMesh,
|
|
1890
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1891
|
+
interp_mode: typing.Union[str, int] = "LINEAR",
|
|
1903
1892
|
smooth: float = 0,
|
|
1904
1893
|
cuts: int = 0,
|
|
1905
|
-
profile_shape: typing.Union[
|
|
1894
|
+
profile_shape: typing.Union[str, int] = "SMOOTH",
|
|
1906
1895
|
profile_shape_factor: float = 0,
|
|
1907
1896
|
) -> typing.Dict:
|
|
1908
1897
|
"""Subdivide Edge-Ring.Take an edge-ring, and subdivide with interpolation options.
|
|
1909
1898
|
|
|
1910
1899
|
:param bm: The bmesh to operate on.
|
|
1911
|
-
:type bm:
|
|
1900
|
+
:type bm: bmesh.types.BMesh
|
|
1912
1901
|
:param edges: input vertices
|
|
1913
|
-
:type edges: typing.List[
|
|
1902
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1914
1903
|
:param interp_mode: interpolation method
|
|
1915
|
-
:type interp_mode: typing.Union[
|
|
1904
|
+
:type interp_mode: typing.Union[str, int]
|
|
1916
1905
|
:param smooth: smoothness factor
|
|
1917
1906
|
:type smooth: float
|
|
1918
1907
|
:param cuts: number of cuts
|
|
1919
1908
|
:type cuts: int
|
|
1920
1909
|
:param profile_shape: profile shape type
|
|
1921
|
-
:type profile_shape: typing.Union[
|
|
1910
|
+
:type profile_shape: typing.Union[str, int]
|
|
1922
1911
|
:param profile_shape_factor: how much intermediary new edges are shrunk/expanded
|
|
1923
1912
|
:type profile_shape_factor: float
|
|
1924
|
-
:rtype: typing.Dict
|
|
1925
1913
|
:return: faces: output faces
|
|
1926
1914
|
|
|
1927
1915
|
type list of (`bmesh.types.BMFace`)
|
|
1916
|
+
:rtype: typing.Dict
|
|
1928
1917
|
"""
|
|
1929
1918
|
|
|
1930
1919
|
...
|
|
1931
1920
|
|
|
1932
1921
|
def subdivide_edges(
|
|
1933
|
-
bm:
|
|
1934
|
-
edges: typing.List[
|
|
1922
|
+
bm: bmesh.types.BMesh,
|
|
1923
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
1935
1924
|
smooth: float = 0,
|
|
1936
|
-
smooth_falloff: typing.Union[
|
|
1925
|
+
smooth_falloff: typing.Union[str, int] = "SMOOTH",
|
|
1937
1926
|
fractal: float = 0,
|
|
1938
1927
|
along_normal: float = 0,
|
|
1939
1928
|
cuts: int = 0,
|
|
1940
1929
|
seed: int = 0,
|
|
1941
|
-
custom_patterns
|
|
1942
|
-
edge_percents
|
|
1943
|
-
quad_corner_type: typing.Union[
|
|
1930
|
+
custom_patterns={},
|
|
1931
|
+
edge_percents={},
|
|
1932
|
+
quad_corner_type: typing.Union[str, int] = "STRAIGHT_CUT",
|
|
1944
1933
|
use_grid_fill: bool = False,
|
|
1945
1934
|
use_single_edge: bool = False,
|
|
1946
1935
|
use_only_quads: bool = False,
|
|
@@ -1951,13 +1940,13 @@ def subdivide_edges(
|
|
|
1951
1940
|
with options for face patterns, smoothing and randomization.
|
|
1952
1941
|
|
|
1953
1942
|
:param bm: The bmesh to operate on.
|
|
1954
|
-
:type bm:
|
|
1943
|
+
:type bm: bmesh.types.BMesh
|
|
1955
1944
|
:param edges: input edges
|
|
1956
|
-
:type edges: typing.List[
|
|
1945
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
1957
1946
|
:param smooth: smoothness factor
|
|
1958
1947
|
:type smooth: float
|
|
1959
1948
|
:param smooth_falloff: smooth falloff type
|
|
1960
|
-
:type smooth_falloff: typing.Union[
|
|
1949
|
+
:type smooth_falloff: typing.Union[str, int]
|
|
1961
1950
|
:param fractal: fractal randomness factor
|
|
1962
1951
|
:type fractal: float
|
|
1963
1952
|
:param along_normal: apply fractal displacement along normal only
|
|
@@ -1967,11 +1956,9 @@ def subdivide_edges(
|
|
|
1967
1956
|
:param seed: seed for the random number generator
|
|
1968
1957
|
:type seed: int
|
|
1969
1958
|
:param custom_patterns: uses custom pointers
|
|
1970
|
-
:type custom_patterns: typing.Dict
|
|
1971
1959
|
:param edge_percents: Undocumented.
|
|
1972
|
-
:type edge_percents: typing.Dict
|
|
1973
1960
|
:param quad_corner_type: quad corner type
|
|
1974
|
-
:type quad_corner_type: typing.Union[
|
|
1961
|
+
:type quad_corner_type: typing.Union[str, int]
|
|
1975
1962
|
:param use_grid_fill: fill in fully-selected faces with a grid
|
|
1976
1963
|
:type use_grid_fill: bool
|
|
1977
1964
|
:param use_single_edge: tessellate the case of one edge selected in a quad or triangle
|
|
@@ -1982,7 +1969,6 @@ def subdivide_edges(
|
|
|
1982
1969
|
:type use_sphere: bool
|
|
1983
1970
|
:param use_smooth_even: maintain even offset when smoothing
|
|
1984
1971
|
:type use_smooth_even: bool
|
|
1985
|
-
:rtype: typing.Dict
|
|
1986
1972
|
:return: geom_inner:
|
|
1987
1973
|
|
|
1988
1974
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
@@ -1994,18 +1980,19 @@ def subdivide_edges(
|
|
|
1994
1980
|
geom: contains all output geometry
|
|
1995
1981
|
|
|
1996
1982
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
1983
|
+
:rtype: typing.Dict
|
|
1997
1984
|
"""
|
|
1998
1985
|
|
|
1999
1986
|
...
|
|
2000
1987
|
|
|
2001
1988
|
def symmetrize(
|
|
2002
|
-
bm:
|
|
1989
|
+
bm: bmesh.types.BMesh,
|
|
2003
1990
|
input: typing.Union[
|
|
2004
|
-
typing.List[
|
|
2005
|
-
typing.List[
|
|
2006
|
-
typing.List[
|
|
1991
|
+
typing.List[bmesh.types.BMVert],
|
|
1992
|
+
typing.List[bmesh.types.BMEdge],
|
|
1993
|
+
typing.List[bmesh.types.BMFace],
|
|
2007
1994
|
] = [],
|
|
2008
|
-
direction: typing.Union[
|
|
1995
|
+
direction: typing.Union[str, int] = "-X",
|
|
2009
1996
|
dist: float = 0,
|
|
2010
1997
|
use_shapekey: bool = False,
|
|
2011
1998
|
) -> typing.Dict:
|
|
@@ -2015,41 +2002,41 @@ def symmetrize(
|
|
|
2015
2002
|
symmetry are split as needed to enforce symmetry.All new vertices, edges, and faces are added to the "geom.out" slot.
|
|
2016
2003
|
|
|
2017
2004
|
:param bm: The bmesh to operate on.
|
|
2018
|
-
:type bm:
|
|
2005
|
+
:type bm: bmesh.types.BMesh
|
|
2019
2006
|
:param input: input geometry
|
|
2020
|
-
:type input: typing.Union[typing.List[
|
|
2007
|
+
:type input: typing.Union[typing.List[bmesh.types.BMVert], typing.List[bmesh.types.BMEdge], typing.List[bmesh.types.BMFace]]
|
|
2021
2008
|
:param direction: axis to use
|
|
2022
|
-
:type direction: typing.Union[
|
|
2009
|
+
:type direction: typing.Union[str, int]
|
|
2023
2010
|
:param dist: minimum distance
|
|
2024
2011
|
:type dist: float
|
|
2025
2012
|
:param use_shapekey: Transform shape keys too.
|
|
2026
2013
|
:type use_shapekey: bool
|
|
2027
|
-
:rtype: typing.Dict
|
|
2028
2014
|
:return: geom:
|
|
2029
2015
|
|
|
2030
2016
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
2017
|
+
:rtype: typing.Dict
|
|
2031
2018
|
"""
|
|
2032
2019
|
|
|
2033
2020
|
...
|
|
2034
2021
|
|
|
2035
2022
|
def transform(
|
|
2036
|
-
bm:
|
|
2037
|
-
matrix: typing.Union[
|
|
2038
|
-
space: typing.Union[
|
|
2039
|
-
verts: typing.List[
|
|
2023
|
+
bm: bmesh.types.BMesh,
|
|
2024
|
+
matrix: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
2025
|
+
space: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
2026
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
2040
2027
|
use_shapekey: bool = False,
|
|
2041
2028
|
):
|
|
2042
2029
|
"""Transform.Transforms a set of vertices by a matrix. Multiplies
|
|
2043
2030
|
the vertex coordinates with the matrix.
|
|
2044
2031
|
|
|
2045
2032
|
:param bm: The bmesh to operate on.
|
|
2046
|
-
:type bm:
|
|
2033
|
+
:type bm: bmesh.types.BMesh
|
|
2047
2034
|
:param matrix: transform matrix
|
|
2048
|
-
:type matrix: typing.Union[
|
|
2035
|
+
:type matrix: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
2049
2036
|
:param space: matrix to define the space (typically object matrix)
|
|
2050
|
-
:type space: typing.Union[
|
|
2037
|
+
:type space: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
2051
2038
|
:param verts: input vertices
|
|
2052
|
-
:type verts: typing.List[
|
|
2039
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
2053
2040
|
:param use_shapekey: Transform shape keys too.
|
|
2054
2041
|
:type use_shapekey: bool
|
|
2055
2042
|
"""
|
|
@@ -2057,22 +2044,22 @@ def transform(
|
|
|
2057
2044
|
...
|
|
2058
2045
|
|
|
2059
2046
|
def translate(
|
|
2060
|
-
bm:
|
|
2061
|
-
vec: typing.Union[
|
|
2062
|
-
space: typing.Union[
|
|
2063
|
-
verts: typing.List[
|
|
2047
|
+
bm: bmesh.types.BMesh,
|
|
2048
|
+
vec: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
2049
|
+
space: typing.Union[typing.Sequence[float], mathutils.Matrix] = None(4),
|
|
2050
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
2064
2051
|
use_shapekey: bool = False,
|
|
2065
2052
|
):
|
|
2066
2053
|
"""Translate.Translate vertices by an offset.
|
|
2067
2054
|
|
|
2068
2055
|
:param bm: The bmesh to operate on.
|
|
2069
|
-
:type bm:
|
|
2056
|
+
:type bm: bmesh.types.BMesh
|
|
2070
2057
|
:param vec: translation offset
|
|
2071
|
-
:type vec: typing.Union[
|
|
2058
|
+
:type vec: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
2072
2059
|
:param space: matrix to define the space (typically object matrix)
|
|
2073
|
-
:type space: typing.Union[
|
|
2060
|
+
:type space: typing.Union[typing.Sequence[float], mathutils.Matrix]
|
|
2074
2061
|
:param verts: input vertices
|
|
2075
|
-
:type verts: typing.List[
|
|
2062
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
2076
2063
|
:param use_shapekey: Transform shape keys too.
|
|
2077
2064
|
:type use_shapekey: bool
|
|
2078
2065
|
"""
|
|
@@ -2080,49 +2067,48 @@ def translate(
|
|
|
2080
2067
|
...
|
|
2081
2068
|
|
|
2082
2069
|
def triangle_fill(
|
|
2083
|
-
bm:
|
|
2070
|
+
bm: bmesh.types.BMesh,
|
|
2084
2071
|
use_beauty: bool = False,
|
|
2085
2072
|
use_dissolve: bool = False,
|
|
2086
|
-
edges: typing.List[
|
|
2087
|
-
normal: typing.Union[
|
|
2073
|
+
edges: typing.List[bmesh.types.BMEdge] = [],
|
|
2074
|
+
normal: typing.Union[typing.Sequence[float], mathutils.Vector] = None(),
|
|
2088
2075
|
) -> typing.Dict:
|
|
2089
2076
|
"""Triangle Fill.Fill edges with triangles
|
|
2090
2077
|
|
|
2091
2078
|
:param bm: The bmesh to operate on.
|
|
2092
|
-
:type bm:
|
|
2079
|
+
:type bm: bmesh.types.BMesh
|
|
2093
2080
|
:param use_beauty: use best triangulation division
|
|
2094
2081
|
:type use_beauty: bool
|
|
2095
2082
|
:param use_dissolve: dissolve resulting faces
|
|
2096
2083
|
:type use_dissolve: bool
|
|
2097
2084
|
:param edges: input edges
|
|
2098
|
-
:type edges: typing.List[
|
|
2085
|
+
:type edges: typing.List[bmesh.types.BMEdge]
|
|
2099
2086
|
:param normal: optionally pass the fill normal to use
|
|
2100
|
-
:type normal: typing.Union[
|
|
2101
|
-
:rtype: typing.Dict
|
|
2087
|
+
:type normal: typing.Union[typing.Sequence[float], mathutils.Vector]
|
|
2102
2088
|
:return: geom: new faces and edges
|
|
2103
2089
|
|
|
2104
2090
|
type list of (`bmesh.types.BMVert`, `bmesh.types.BMEdge`, `bmesh.types.BMFace`)
|
|
2091
|
+
:rtype: typing.Dict
|
|
2105
2092
|
"""
|
|
2106
2093
|
|
|
2107
2094
|
...
|
|
2108
2095
|
|
|
2109
2096
|
def triangulate(
|
|
2110
|
-
bm:
|
|
2111
|
-
faces: typing.List[
|
|
2112
|
-
quad_method: typing.Union[
|
|
2113
|
-
ngon_method: typing.Union[
|
|
2097
|
+
bm: bmesh.types.BMesh,
|
|
2098
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
2099
|
+
quad_method: typing.Union[str, int] = "BEAUTY",
|
|
2100
|
+
ngon_method: typing.Union[str, int] = "BEAUTY",
|
|
2114
2101
|
) -> typing.Dict:
|
|
2115
2102
|
"""Triangulate.
|
|
2116
2103
|
|
|
2117
2104
|
:param bm: The bmesh to operate on.
|
|
2118
|
-
:type bm:
|
|
2105
|
+
:type bm: bmesh.types.BMesh
|
|
2119
2106
|
:param faces: input faces
|
|
2120
|
-
:type faces: typing.List[
|
|
2107
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
2121
2108
|
:param quad_method: method for splitting the quads into triangles
|
|
2122
|
-
:type quad_method: typing.Union[
|
|
2109
|
+
:type quad_method: typing.Union[str, int]
|
|
2123
2110
|
:param ngon_method: method for splitting the polygons into triangles
|
|
2124
|
-
:type ngon_method: typing.Union[
|
|
2125
|
-
:rtype: typing.Dict
|
|
2111
|
+
:type ngon_method: typing.Union[str, int]
|
|
2126
2112
|
:return: edges:
|
|
2127
2113
|
|
|
2128
2114
|
type list of (`bmesh.types.BMEdge`)
|
|
@@ -2138,43 +2124,43 @@ def triangulate(
|
|
|
2138
2124
|
face_map_double: duplicate faces
|
|
2139
2125
|
|
|
2140
2126
|
type dict mapping vert/edge/face types to `bmesh.types.BMVert`/`bmesh.types.BMEdge`/`bmesh.types.BMFace`
|
|
2127
|
+
:rtype: typing.Dict
|
|
2141
2128
|
"""
|
|
2142
2129
|
|
|
2143
2130
|
...
|
|
2144
2131
|
|
|
2145
2132
|
def unsubdivide(
|
|
2146
|
-
bm:
|
|
2147
|
-
verts: typing.List[
|
|
2133
|
+
bm: bmesh.types.BMesh,
|
|
2134
|
+
verts: typing.List[bmesh.types.BMVert] = [],
|
|
2148
2135
|
iterations: int = 0,
|
|
2149
2136
|
):
|
|
2150
2137
|
"""Un-Subdivide.Reduce detail in geometry containing grids.
|
|
2151
2138
|
|
|
2152
2139
|
:param bm: The bmesh to operate on.
|
|
2153
|
-
:type bm:
|
|
2140
|
+
:type bm: bmesh.types.BMesh
|
|
2154
2141
|
:param verts: input vertices
|
|
2155
|
-
:type verts: typing.List[
|
|
2142
|
+
:type verts: typing.List[bmesh.types.BMVert]
|
|
2156
2143
|
:param iterations: number of times to unsubdivide
|
|
2157
2144
|
:type iterations: int
|
|
2158
2145
|
"""
|
|
2159
2146
|
|
|
2160
2147
|
...
|
|
2161
2148
|
|
|
2162
|
-
def weld_verts(bm:
|
|
2149
|
+
def weld_verts(bm: bmesh.types.BMesh, targetmap={}):
|
|
2163
2150
|
"""Weld Verts.Welds verts together (kind-of like remove doubles, merge, etc, all of which
|
|
2164
2151
|
use or will use this BMOP). You pass in mappings from vertices to the vertices
|
|
2165
2152
|
they weld with.
|
|
2166
2153
|
|
|
2167
2154
|
:param bm: The bmesh to operate on.
|
|
2168
|
-
:type bm:
|
|
2155
|
+
:type bm: bmesh.types.BMesh
|
|
2169
2156
|
:param targetmap: maps welded vertices to verts they should weld to
|
|
2170
|
-
:type targetmap: typing.Dict
|
|
2171
2157
|
"""
|
|
2172
2158
|
|
|
2173
2159
|
...
|
|
2174
2160
|
|
|
2175
2161
|
def wireframe(
|
|
2176
|
-
bm:
|
|
2177
|
-
faces: typing.List[
|
|
2162
|
+
bm: bmesh.types.BMesh,
|
|
2163
|
+
faces: typing.List[bmesh.types.BMFace] = [],
|
|
2178
2164
|
thickness: float = 0,
|
|
2179
2165
|
offset: float = 0,
|
|
2180
2166
|
use_replace: bool = False,
|
|
@@ -2188,9 +2174,9 @@ def wireframe(
|
|
|
2188
2174
|
"""Wire Frame.Makes a wire-frame copy of faces.
|
|
2189
2175
|
|
|
2190
2176
|
:param bm: The bmesh to operate on.
|
|
2191
|
-
:type bm:
|
|
2177
|
+
:type bm: bmesh.types.BMesh
|
|
2192
2178
|
:param faces: input faces
|
|
2193
|
-
:type faces: typing.List[
|
|
2179
|
+
:type faces: typing.List[bmesh.types.BMFace]
|
|
2194
2180
|
:param thickness: thickness
|
|
2195
2181
|
:type thickness: float
|
|
2196
2182
|
:param offset: offset the thickness from the center
|
|
@@ -2209,10 +2195,10 @@ def wireframe(
|
|
|
2209
2195
|
:type use_relative_offset: bool
|
|
2210
2196
|
:param material_offset: offset material index of generated faces
|
|
2211
2197
|
:type material_offset: int
|
|
2212
|
-
:rtype: typing.Dict
|
|
2213
2198
|
:return: faces: output faces
|
|
2214
2199
|
|
|
2215
2200
|
type list of (`bmesh.types.BMFace`)
|
|
2201
|
+
:rtype: typing.Dict
|
|
2216
2202
|
"""
|
|
2217
2203
|
|
|
2218
2204
|
...
|