OS version : window 10 x64
SDK version : SDK_WIN_x64_2025-0-634
I got SU_ERROR_SERIALIZATION when save after clear.
purge_definitions_fail.skp
Can’t save file after clear useless definitions · Issue #1059 · SketchUp/api-issue-tracker
SUModelRef model = SU_INVALID;
SUModelLoadStatus model_status;
SU(SUModelCreateFromFileWithStatus(&model, "H:/Desktop/purge_definitions_fail.skp", &model_status));
size_t size = 0, group_size = 0, image_size = 0, total_size = 0;
SUModelGetNumComponentDefinitions(model, &size);
SUModelGetNumGroupDefinitions(model, &group_size);
SUModelGetNumImageDefinitions(model, &image_size);
total_size = size + group_size + image_size;
if (total_size != 0) {
std::vector<SUComponentDefinitionRef> definitions(total_size), erase_definitions(total_size);
if (size != 0)
SUModelGetComponentDefinitions(model, size, &definitions[0], &size);
if (group_size != 0)
SUModelGetGroupDefinitions(model, group_size, &definitions[size], &group_size);
if (image_size != 0)
SUModelGetImageDefinitions(model, image_size, &definitions[size + group_size], &image_size);
total_size = size + group_size + image_size;
while (true) {
size_t erase_size = 0;
for (int i = 0;i < total_size;i++) {
if (SUIsInvalid(definitions[i]))
continue;
size_t curr_def_use_size = 0;
SUComponentDefinitionGetNumInstances(definitions[i], &curr_def_use_size);
if (curr_def_use_size == 0) {
erase_definitions[erase_size++] = definitions[i];
definitions[i] = SU_INVALID;
}
}
if (erase_size == 0)
break;
SUModelRemoveComponentDefinitions(model, erase_size, &erase_definitions[0]);
}
SUResult res = SUModelSaveToFileWithVersion(model, "H:/Desktop/purge_definitions_tmp.skp", SUModelVersion_Current);
printf("SAVE RES : %d", res);
}
SUModelRelease(&model);