1 # SPDX-FileCopyrightText: 2013-2023 Blender Foundation
3 # SPDX-License-Identifier: GPL-2.0-or-later
6 "name": "3D-Print Toolbox",
7 "author": "Campbell Barton",
9 "location": "3D View > Sidebar",
10 "description": "Utilities for 3D printing",
11 "doc_url": "{BLENDER_MANUAL_URL}/addons/mesh/3d_print_toolbox.html",
12 "support": 'OFFICIAL',
20 importlib
.reload(operators
)
21 if "mesh_helpers" in locals():
22 importlib
.reload(mesh_helpers
)
23 if "export" in locals():
24 importlib
.reload(export
)
29 from bpy
.types
import PropertyGroup
30 from bpy
.props
import (
44 class SceneProperties(PropertyGroup
):
45 use_alignxy_face_area
: BoolProperty(
47 description
="Normalize normals proportional to face areas",
51 export_format
: EnumProperty(
53 description
="Format type to export to",
62 use_export_texture
: BoolProperty(
64 description
="Copy textures on export to the output path",
67 use_apply_scale
: BoolProperty(
69 description
="Apply scene scale setting on export",
72 use_data_layers
: BoolProperty(
75 "Export normals, UVs, vertex colors and materials for formats that support it "
76 "significantly increasing file size"
79 export_path
: StringProperty(
80 name
="Export Directory",
81 description
="Path to directory where the files are created",
86 thickness_min
: FloatProperty(
88 description
="Minimum thickness",
94 threshold_zero
: FloatProperty(
96 description
="Limit for checking zero area/length",
102 angle_distort
: FloatProperty(
104 description
="Limit for checking distorted faces",
106 default
=math
.radians(45.0),
108 max=math
.radians(180.0),
110 angle_sharp
: FloatProperty(
113 default
=math
.radians(160.0),
115 max=math
.radians(180.0),
117 angle_overhang
: FloatProperty(
120 default
=math
.radians(45.0),
122 max=math
.radians(90.0),
129 ui
.VIEW3D_PT_print3d_analyze
,
130 ui
.VIEW3D_PT_print3d_cleanup
,
131 ui
.VIEW3D_PT_print3d_edit
,
132 ui
.VIEW3D_PT_print3d_export
,
134 operators
.MESH_OT_print3d_info_volume
,
135 operators
.MESH_OT_print3d_info_area
,
136 operators
.MESH_OT_print3d_check_degenerate
,
137 operators
.MESH_OT_print3d_check_distorted
,
138 operators
.MESH_OT_print3d_check_solid
,
139 operators
.MESH_OT_print3d_check_intersections
,
140 operators
.MESH_OT_print3d_check_thick
,
141 operators
.MESH_OT_print3d_check_sharp
,
142 operators
.MESH_OT_print3d_check_overhang
,
143 operators
.MESH_OT_print3d_check_all
,
144 operators
.MESH_OT_print3d_clean_distorted
,
145 # operators.MESH_OT_print3d_clean_thin,
146 operators
.MESH_OT_print3d_clean_non_manifold
,
147 operators
.MESH_OT_print3d_select_report
,
148 operators
.MESH_OT_print3d_scale_to_volume
,
149 operators
.MESH_OT_print3d_scale_to_bounds
,
150 operators
.MESH_OT_print3d_align_to_xy
,
151 operators
.MESH_OT_print3d_export
,
152 operators
.MESH_OT_print3d_hollow
,
158 bpy
.utils
.register_class(cls
)
160 bpy
.types
.Scene
.print_3d
= PointerProperty(type=SceneProperties
)
165 bpy
.utils
.unregister_class(cls
)
167 del bpy
.types
.Scene
.print_3d