내가하려고하는 것은 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)) 코드는 루프 콜렉션에 하위 콜렉션에'reference'를 추가합니다. 이 참조는 동일한 하위 모음을 가리키고 있으므로 하위 모음이 지워질 때 루프 모음은이 모음을 가리키며 이제는 비어 있습니다. 하위 컬렉션 'by-value'을 추가 할 수 없습니다. 매번 새 컬렉션을 만들고 하위 컬렉션의 요소를이 새 컬렉션에 복사 한 다음이 새 컬렉션을 루프 컬렉션에 추가 할 수 있습니다. 이 새 컬렉션을 지우지 않으면 루프 컬렉션에서 유지합니다. – dee
그러나 루프의 하위 모음의 수를 가변적으로 처리하려면 어떻게해야합니까? 아는 한, 변수를 기반으로 변수를 정확하게 정의 할 수 없습니다. 즉 oLoop & i = oLoop1, oLoop2 for i = 1 ~ 2 – MechMachineMan
아마 접근 방식을 다시 생각하고 ObjectCollection으로 필요로하는 호출을하기 전에 oLoops를 ObjectCollection으로 저장해야합니다. 배열에 저장하고 배열을 ObjectCollection으로 변환합니다. – MechMachineMan