私がしようとしているのは、Autodesk Inventorです。私はスケッチで一連の行を繰り返すプログラムを書いています。接続された行のグループを集めてコレクションに入れます。次に、これらのコレクションのコレクションを処理します。コレクションのコレクション - 参照ではなく値によるサブコレクションの作成方法
私は一時的なコレクションに行を追加し、この一時的なコレクションをループのコレクションに追加することで、ループごとに未知の量のコレクションを生成する必要がないようにしようとしています。しかし、Clearメソッドを使用して一時的なコレクションをリセットするとすぐに、ループのコレクションにプッシュした情報が消去されます。一時コレクションに含まれているものとは無関係に、ループのコレクション内の情報を作成する方法はありますか?
ご覧のとおり、問題は、接続する線の数がわからないことがあるため、サブコレクションの数がわからないことです。
ここに私のコードです。
Dim oLoopColl As New Collection
Dim oSubColl As ObjectCollection
Set oSubColl = ThisApplication.TransientObjects.CreateObjectCollection
For j = 1 To oSLColl.Count
oSubColl.Add (oSLColl.Item(j))
'Check for last item to see if it is part of the first
If j = oSLColl.Count Then
If oSLColl.Item(j).EndSketchPoint Is oSLColl.Item(1).StartSketchPoint Then
MsgBox ("Last SL is part of first coll!")
oLoopColl.Item(1).Add (oSLColl.Item(j))
oSubColl.Clear
Else
Call oLoopColl.Add(oSubColl, CStr(j))
End If
Else
If Not oSLColl.Item(j).EndSketchPoint Is oSLColl.Item(j + 1).StartSketchPoint Then
Call oLoopColl.Add(oSubColl, CStr(j))
oSubColl.Clear
End If
End If
Next
oSubColl.Clear
Set oSubColl = Nothing
oLoopColl.Add(oSubColl、CStr(j))というコードは、ループコレクションにサブコレクションに '参照 'を追加します。この参照は同じサブコレクションを指しているだけなので、サブコレクションがクリアされると、ループコレクションはこのコレクションを指していますが、これは現在空です。サブコレクション 'by-value'を追加することはできません。毎回新しいコレクションを作成し、サブコレクションの要素をこの新しいコレクションにコピーして、この新しいコレクションをループコレクションに追加することができます。この新しいコレクションをクリアしないと、ループコレクションはそれを保持します。 – dee
しかし、これをループ内のサブコレクションの可変数でどのように扱うべきですか? 私が知る限り、変数に基づいて変数を正確に定義することはできません。つまり、oLoop&i = oLoop1、oLoop2 for i = 1〜2 – MechMachineMan
多分私は自分のアプローチを考え直し、oLoopsをObjectCollectionとして保存する必要があります。それらを配列に格納し、配列をObjectCollectionに変換します。 – MechMachineMan