I stand corrected. Cheers Matt.
On Thu, Apr 25, 2013 at 2:32 PM, Matt Lind <[email protected]> wrote: > *>> ISIVTCollection* collections exist because *Python was not in > Softimage since the very beginning*,**** > > ** ** > > Not true, Alan. Python WAS available in the beginning (along with > VBscript, Jscript, and PerlScript). People chose not to use Python.**** > > ** ** > > When ‘Sumatra’ (XSI) was being developed, all the internal scripts and > scripting examples written were in VBScript which supports output arguments > much like by-reference passing of arguments in C++. It wasn’t until I and > a few other users spoke up during early versions that Jscript did not > support this feature. Around XSI 1.5 or XSI 2.0, Softimage stopped writing > commands using ISITVCollections as output arguments and started moving > towards the paradigm used today of supplying a command or method with a > numeric suffix to account for these language specific situations > (PolygonMesh.Get() vs. PolygonMesh.Get2() for example).**** > > ** ** > > There were no Jscript examples in the documentation either – everything > was VBscript. I had to poke around in the dark to find the issues whether > it be ISITVCollections, arrays vs. VB Safe Arrays, reading/writing RGBA > color values, inability to make custom spreadsheet queries, and so on. > Yes, it was very frustrating. Eventually Softimage got the hint people > preferred using Jscript over VBscript, so the documentation started to > reflect that in later versions. Today Python users are merely going > through the same growing pains as there wasn’t a significant audience until > XSI v6 or later. The language has been around for more than 20 years, only > recently has it gotten traction in our industry. Perl used to be the > language of choice where Python is used today. Perlscript was an early > choice for XSI as well, but fell out of favor early on when it ran into the > same speed bumps Jscript and but didn’t have enough squeaky wheels to fight > for the cause.**** > > ** ** > > Part of the original design decision was probably due to the product being > waaaaaay behind schedule and developers were looking for the least cost way > to get things done. That meant focusing on getting one language working. > VBscript was the internal technology of Microsoft, who then owned > Softimage, and it interacted with many other windows applications. Problem > was many of the features 3D users wanted to use were not friendly to > VBscript, or were not in mass adoption (HTML pages for netview, for > example). Jscript could be used in the entire application, was available > on other platforms, and had decent methods for working with strings. > VBscript was restricted to Microsoft platforms via MainWin. Another early > feature, that was since dropped, was the ability to compile scripts into > executables – it was friendlier in Jscript than VBScript. Jscript was also > a much more widely used language than VBScript, making it easier to find > examples and documentation, as well as more similar to C++ to make > prototyping plugins easier.**** > > ** ** > > Long story short **** > > ** ** > > The main issue is the short sighted approach of the SDK design focusing > heavily on COM/OLE automation and exposing the capabilities to one language > in the scripting environment (VBscript) without testing against the > others. If a product is going to advertise multi-language support, then > the SDK and documentation should reflect that wholly. However in defense, > if you write code effectively, chances are your code is 90% focused on > interacting with the Softimage API and not leveraging the features of your > chosen language so much.**** > > ** ** > > ** ** > > Matt**** > > ** ** > > ** ** > > ** ** > > ** ** > > ** ** > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Alan Fregtman > *Sent:* Thursday, April 25, 2013 6:45 AM > *To:* XSI Mailing List > *Subject:* Re: scripting: returning value in SIImportMatLib**** > > ** ** > > *ISIVTCollection* collections exist because *Python was not in Softimage > since the very beginning*, so a few of the SDK command implementations > used these so-called "output arguments" feature (since a big chunk of the > core commands are written in VBScript, which supports it.) The special > collection object was a way of getting them to be accessible automatically > without having to go back and add new commands.**** > > ** ** > > ** ** > > ** ** > > >>* ** Either way, I don't think the new SDK docs really show what > arguments are the ones returned***** > > ** ** > > Perhaps not clearly, but they *do* show. For example:**** > > > http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/si_cmds/PickElement.html > **** > > ** ** > > Note how in the 2nd paragraph they mention output arguments, then in the > Parameters list, for "*PickedElement*", "*ButtonPressed*" and "* > ModifierPressed*" the Description of the parameter reads *"Returns the..." > *. That's how you know it's an *output argument*; because it's trying to > return something.**** > > ** ** > > The Parameter name for the output argument is the key for the > ISIVTCollection returned, so in this it might be something like * > Application.PickElement(...)("PickedElement")* for example.**** > > ** ** > > ** ** > > Cheers,**** > > ** ** > > -- Alan**** > > ** ** > > ** ** > > On Thu, Apr 25, 2013 at 9:10 AM, Eric Thivierge <[email protected]> > wrote:**** > > Yeah certain commands aren't, let's say, specifically compatible with > Python or other scripting languages that don't support output arguments. > That's an ugly explanation but is pretty much how I think of it. Either > way, I don't think the new SDK docs really show what arguments are the ones > returned so it may be a bit tough to know but if you take a look at the > various code around and maybe some of the older docs you'll see how it > works. > > This may help too in Python: > > http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/index.html?url=files/ISIVTCollection.htm,topicNumber=d30e53970 > **** > > > > On 25/04/2013 7:57 AM, David Barosin wrote:**** > > Look at these links - they help explain what ISIVTCollections are and when > they are returned. > > http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/index.html?url=files/outarg_bylang.htm,topicNumber=d30e53710 > > http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/index.html?url=files/ISIVTCollection.htm,topicNumber=d30e53970 > **** > > ** ** > > ** ** > > On Thu, Apr 25, 2013 at 7:36 AM, Martin <[email protected]> wrote:**** > > Hi list, **** > > ** ** > > I have a question about SIImportMatLib command. **** > > ** ** > > I was trying to get the return value in jscript without success until I > checked Eric's ET_PassManager code where he is using**** > > ** ** > > oMatLib = xsi.SIImportMatLib(strMatLibPath)("Value")**** > > ** ** > > and the oMatLib gets the return value.**** > > ** ** > > It works (in jscript too) and I'm using it now, but why does it work?**** > > I mean, where this ("Value") thing comes from? **** > > When should I use it?**** > > Thanks**** > > ** ** > > ** ** > > ** ** > > ** ** > > ** ** > > M.Yara**** > > ** ** > > ** ** > > ** ** >

