[v]
s = Replace(ActiveProject.ActiveScene.Passes.GetAsText(), "Passes.", "")
set fso = CreateObject("Scripting.FileSystemObject")
set f = fso.CreateTextFile("C:\a.txt",True)
f.WriteLine(s)
f.Close()
LogMessage s
[j]
var a = new Array();
oPass = ActiveProject.ActiveScene.Passes;
for(var i=0;i<oPass.Count;i++) a.push(oPass(i).Name);
a.sort();
s = a.join(",");
var fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.CreateTextFile("C:\\a.txt");
f.WriteLine(s);
f.Close();
LogMessage(s);
[p]
l = list()
for p in Application.ActiveProject.ActiveScene.Passes:
l.append(p.Name)
l.sort()
s = ",".join(l)
f = open(r"C:\a.txt","w")
f.write(s)
f.close()
Application.LogMessage(s)
oFil = app.Filters("Polygon_Island")
oFacets = oName.ActivePrimitive.Geometry.Polygons
oCol = Dispatch('XSI.Collection')
oCol.AddItems(oFacets)
oCol = oFil.Subset(oCol)
s = set([i.SubElements for i in oCol])
今回の例では、「Application.Filters」、 「Filter.SubSet()」あたりは全く知らなかったので上記のSDKガイドでしらべて見たら「Subset()」の引数の型が「XSICollection」だったので取得してある「oFacets」をまんま「XSICollection」に入れてみたら入って、「Subset()」も通った、
戻り値「XSICollection」の中を調べてみると「CollectionItem」だったので「CollectionItem.SubElements」を使ってみた、
といった感じです。
ちなみに前回の書き込みをした時は「CollectionItem.SubComponent」がうまく取得できなかったような気がして、「[i.SubElements for i in oCol] とか自分でもよくわからないんですが」と書いたんですが今やってみたらちゃんと取得できました。
なので「SubComponent」を使った方が便利かもしれません。
そのまま選択とか出きますし。
取得したオブジェクトが何者なのかを調べるときには
Application.ClassName(オブジェクト)
を使うといいと思います。
出てきた結果をSDKガイドのキーワードタブに入れるとたいてい引っかかります。
今回で言うと
app.ClassName(oFil) で「Filter」が帰ってきますし、
for i in oCol:
app.ClassName(i)
で「CollectionItem」がずらーっと並びます。