41 fprintf(stderr,
"STL Importer: failed to read file");
43 fprintf(stderr,
", end of file reached.\n");
45 else if (ferror(file)) {
54 fprintf(stderr,
"Failed to open STL file:'%s'.\n", import_params.
filepath);
57 "STL Import: Cannot open file '%s'",
70 if (fread(&num_tri,
sizeof(
uint32_t), 1, file) != 1) {
74 "STL Import: Failed to read file '%s'",
80 Mesh *mesh = is_ascii_stl ?
84 if (mesh ==
nullptr) {
85 fprintf(stderr,
"STL Importer: Failed to import mesh '%s'\n", import_params.
filepath);
88 "STL Import: Failed to import mesh from file '%s'",
94 bool verbose_validate =
false;
96 verbose_validate =
true;
132 obj->
data = mesh_in_main;
140 global_scale /= scene->unit.scale_length;
142 float scale_vec[3] = {global_scale, global_scale, global_scale};
143 float obmat3x3[3][3];
145 float obmat4x4[4][4];
bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
LayerCollection * BKE_layer_collection_get_active(ViewLayer *view_layer)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
void BKE_view_layer_base_deselect_all(const Scene *scene, ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
void BKE_view_layer_base_select_and_set_active(ViewLayer *view_layer, Base *selbase)
bool BKE_mesh_validate(Mesh *mesh, bool do_verbose, bool cddata_check_mask)
void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
Mesh * BKE_mesh_add(Main *bmain, const char *name)
General operations, lookup, etc. for blender objects.
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
FILE * BLI_fopen(const char *filepath, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
size_t BLI_file_size(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
File and directory operations.
void unit_m3(float m[3][3])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void rescale_m4(float mat[4][4], const float scale[3])
bool mat3_from_axis_conversion(int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3])
#define BLI_SCOPED_DEFER(function_to_defer)
bool bool BLI_path_extension_strip(char *path) ATTR_NONNULL(1)
void void void const char * BLI_path_basename(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
#define STRNCPY(dst, src)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_id_tag_update_ex(Main *bmain, ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
Mesh * read_stl_binary(FILE *file, const bool use_custom_normals)
constexpr size_t BINARY_STRIDE
void importer_main(const bContext *C, const STLImportParams &import_params)
constexpr size_t BINARY_HEADER_SIZE
void stl_import_report_error(FILE *file)
Mesh * read_stl_ascii(const char *filepath, const bool use_custom_normals)
Mesh * read_stl_file(const STLImportParams &import_params)
struct Collection * collection