Edit in JSFiddle

// Initialize viewer component
let viewerConfigs = {
  domElementId: "viewer",
  showUI: true
};
let viewer = new bimU.Viewer(viewerConfigs);
viewer.initialize();

// Add custom button and action
viewer.addCustomButton("button1", "camera", "#e91e63", "Save Viewpoint", function() {
  // Get BCF viewpoint
  let bcfViewpoint = viewer.getViewpoint();
  // Get screenshot
  let screenshot = viewer.getScreenshot();
  // Add clickable markup
  addMarkup(bcfViewpoint, screenshot);
});

// Cache BCF viewpoint and screenshot
let addMarkup = (bcfViewpoint, screenshot) => {
  let anchor = document.createElement("a");
  anchor.setAttribute("href", "#");
  anchor.onclick = () => viewer.setViewpoint(bcfViewpoint);
  let img = document.createElement("img");
  img.setAttribute("src", screenshot);
  img.setAttribute("class", "image");
  anchor.appendChild(img);
  document.body.appendChild(anchor);
}

// Callbacks
let onPorgress = (e) => {
  console.log(e);
  viewer.showDialog("Loading...", "Progress:" + e.progress, "Close", null, null, true);
};
let onLoaded = (e) => {
  console.log(e);
  viewer.closeDialog();
};
let onError = (e) => console.error(e);

// Load model
let modelConfigs = {
  modelId: "5dffdeb8cb9115000420d21f",
  password: "123456",
};
viewer.loadModel(modelConfigs, onPorgress, onLoaded, onError);
<div id="viewer" style="width:600px;height:400px;background-color:black;border:5px solid gray;"></div>
.image {
  width: 60px;
  height: 40px;
  margin: 5px;
  border: 2px solid gray;
}

External resources loaded into this fiddle: