Skip to content

Export

let model = await SketchUpApi.getActiveModel();
// Now the data URL string in the format 'data:application/vnd.sketchup.skp;base64,...'
// can be used for downloading, saving, or transferring the model file.
let skpDataUrl = await model.getSkp();
let model = await SketchUpApi.getActiveModel();
let tagManager = await model.getTagManager();
function createHiddenTagFilter(tagManager) {
const hiddenTags = [];
const addHiddenTags = (tagFolder, parentHidden) => {
const folderHidden = parentHidden || !tagFolder.visible;
tagFolder.tags.forEach((tag) => {
if (folderHidden) hiddenTags.push(tag);
});
tagFolder.tagFolders.forEach((subFolder) => {
addHiddenTags(subFolder, folderHidden);
});
};
tagManager.tags.forEach((tag) => {
if (!tag.visible) hiddenTags.push(tag);
});
tagManager.tagFolders.forEach((tagFolder) => {
addHiddenTags(tagFolder, false);
});
return { tags: hiddenTags };
}
let hiddenElementsFilter = {
or: [
{ visible: false },
createHiddenTagFilter(tagManager)
],
};
await model.performOperation(async (op) => {
const invisible = await model.entities.get({filterBy: hiddenElementsFilter});
invisible.forEach(entity => op.drawingElementEraseWithForce(entity));
op.purgeUnusedDefinitions();
for(const component of (await model.getDefinitions())) {
const invisible = await component.entities.get({filterBy: hiddenElementsFilter});
invisible.forEach(entity => op.drawingElementEraseWithForce(entity));
}
// seconds purge
op.purgeUnusedDefinitions();
op.purgeUnusedMaterials();
}, 'Delete hidden entities');
let exportedData = await model.getSkp();
if (model.revision !== (await model.refresh()).revision) {
await model.undo();
}