V5 beta May-22-2022 available now

 From:  bemfarmer
10706.67 In reply to 10706.66 
Second try:

code:
  var title = "Snapshot";
var command = "snapshot(1600,1200, event.button, event.shiftKey, event.ctrlKey)";
var icon = "data:image/png;base64,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";

function snapshot(w, h, button, shiftkey,  ctrlkey)
{
	function ftime()
	{
		var d = new Date(), a=d.getDate(), o=d.getMonth()+1, y=d.getYear(), h=d.getHours(), m=d.getMinutes(), s=d.getSeconds();
		a=(a>9)?a:'0'+a; o=(o>9)?o:'0'+o; y=(y>999)?y:1900+y; h=(h>9)?h:'0'+h; m=(m>9)?m:'0'+m; s=(s>9)?s:'0'+s;
		return y+'.'+o+'.'+a+'-'+h+'.'+m+'.'+s;
	}
	var getDir = moi.filesystem.getAppDataDir;
	var st = [], settings  = ["view.meshAngle", "view.viewportBackgroundColor", "view.lineWidth", "grid.display", "grid.accentedLineColor", "grid.lineColor", "grid.showXYAxes", "view.showAxisIcon",  "view.showViewTitles"];
	var time = ftime();
	var vp = moi.ui.getLastClickedViewport();
	if (!vp) { vp = moi.ui.mainWindow.viewpanel.getViewport('3D'); }
	for (var sv in settings) { st.push(moi[settings[sv].split('.')[0]][settings[sv].split('.')[1]] ); } 
	moi.view.showViewTitles = false;
	moi.view.showAxisIcon = false;
	moi.grid.showXYAxes = false;
	moi.view.viewportBackgroundColor = 0xEEEEEE;
	if ( moi.view.meshAngle > 10 )  { moi.view.meshAngle = 10; }
	moi.grid.display = (button === 2 )?false:true;
	var m = (ctrlkey)?1.5:1;
	if ( !shiftkey ) { moi.grid.accentedLineColor = 0xBBBBBB;  moi.view.lineWidth = 1;  }  else {  w = w*m*2; h = h*m*2; moi.grid.accentedLineColor = 0x999999; moi.view.lineWidth = 2; }
	
	moi.grid.lineColor = moi.grid.accentedLineColor;
	vp.render(w, h).save(getDir()+"snapshots\\"+time+"-["+vp.name+"].png");
	for (var sv in settings) { moi[settings[sv].split('.')[0]][settings[sv].split('.')[1]] = st.shift(); }
}

var script, doc = moi.ui.getUIPanel("moi://ui/CommandBar.htm").document;
var head = doc.getElementsByTagName('head')[0];

for (var i in this) if (this.hasOwnProperty(i) && this[i] instanceof Function )
{
	script = doc.createElement('script');
	script.type = 'text/javascript';
	script.innerHTML = this[i].toString();
	head.appendChild(script);
}

moi.ui.commandBar.CommandBarCustomUI.insertAdjacentHTML( "beforeEnd", '<moi:Spacer/><moi:Spacer/><moi:CommandButton icon="'+icon+'" onbuttonclick="'+command+'">'+title+'</moi:CommandButton>');