Skip to content

Instantly share code, notes, and snippets.

@hmasato
Created July 4, 2013 11:48
Show Gist options
  • Select an option

  • Save hmasato/5927033 to your computer and use it in GitHub Desktop.

Select an option

Save hmasato/5927033 to your computer and use it in GitHub Desktop.
[Softimage, SHED PoseLib, HTML, javascript] PoseLib
<html>
<head>
<script type="text/JavaScript">
function _sort(_f)
{
var fn = [];
for(var e=new Enumerator(_f); !e.atEnd(); e.moveNext())
fn.push({'name':e.item().Name, 'obj':e.item()});
fn = fn.sort(function(a, b) {return((a.name>b.name)?1:-1);});
var ret = [];
for(var i=0; i<fn.length; i++) ret.push(fn[i].obj);
delete fn;
return(ret);
}
function _clearTable(_table)
{
var tb = document.getElementById(_table);
for(var i=0; i<tb.rows.length; i++) tb.deleteRow(i);
}
function _applyPose(_xml)
{
var xsi = new ActiveXObject("XSI.Application");
var app = xsi.application;
var xml = new ActiveXObject("MSXML2.DOMDocument");
var cll = new ActiveXObject("XSI.Collection");
xml.async = false;
xml.load(_xml.replace(/\//g, "\\"));
if(xml.parseError.errorCode != 0) return;
var rt = xml.documentElement;
if(!rt.hasChildNodes()) return;
for(var e = new Enumerator(app.Selection); !e.atEnd(); e.moveNext()){
var char = e.item();
for(var i=0; i<rt.childNodes.length; i++){
var ch = rt.childNodes.item(i);;
var ctl = char.Name + "." + ch.nodeName;
for(var j=0; j<ch.childNodes.length; j++){
var att = ch.childNodes.item(j);
var v = att.getAttribute('Value');
if(v==null) continue;
var a = app.Dictionary.GetObject(ctl + "." + att.nodeName, false);
if(a==null) continue;
a.Value = v;
}
}
}
}
function _addLink(_title, _xml, _tr)
{
var f = _xml.replace(/\\/g, '/');
var fparts = f.split("/");
var fn = fparts.reverse()[0];
if(fn.split(".").reverse()[0] != "xml") return(0);
fn = fn.replace(".xml", "");
var td = _tr.insertCell(_tr.cells.length);
td.setAttribute("className","file");
td.innerHTML = "<span style=\"cursor: pointer\" onClick='_applyPose(\"" + f +"\")'>"
+ "<img src=\"file:///" + f.replace(".xml", ".jpg") + "\">" + _title + "</span>";
return(1);
}
function _listPoses(_table, _topDir)
{
var nrows = 5;
_clearTable(_table);
var tb = document.getElementById(_table);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tdir = fso.GetFolder(_topDir.replace(/\//g, "\\")+"/");
var dirs = new Enumerator(_sort(tdir.SubFolders));
for(; !dirs.atEnd(); dirs.moveNext()){
var tr = tb.insertRow(tb.rows.length);
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<h4>"+dirs.item().Name+"</h4>";
var idx=0;
var tr = tb.insertRow(tb.rows.length);
var sdirs = new Enumerator(_sort(dirs.item().SubFolders));
for(; !sdirs.atEnd(); sdirs.moveNext()){
var files = new Enumerator(_sort(sdirs.item().files));
for(; !files.atEnd(); files.moveNext()){
idx += _addLink(sdirs.item().Name, files.item().Path, tr);
if(idx % nrows == 0) tr = tb.insertRow(tb.rows.length);
}
}
}
}
</script>
<title>Pose Library</title>
</head>
<body onload="_listPoses('pose', 'C:/DATA/PoseLib');">
<table id="pose" border="0" width="100%"></table>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment