Created
July 4, 2013 11:48
-
-
Save hmasato/5927033 to your computer and use it in GitHub Desktop.
[Softimage, SHED PoseLib, HTML, javascript] PoseLib
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <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