let model = await SketchUpApi.getActiveModel();
let tagManager = await model.getTagManager();
function createHiddenTagFilter(tagManager) {
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 = {
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));
op.purgeUnusedDefinitions();
op.purgeUnusedMaterials();
}, 'Delete hidden entities');
let exportedData = await model.getSkp();
if (model.revision !== (await model.refresh()).revision) {