That did the trick! That was a problem I've been having for a while - I didn't know you had to specify 'list' as an option. Thanks Damien!
On Mar 18, 12:21 am, damien_alomar <[email protected]> wrote: > Since I'm not clear on what you actually want your code to do I can't > really say whether it its working or not, but as to the error you're > seeing, I believe its because all of the inputs to your script are > just considered objects, which is the most generic data type there > is. Also, your data is passed to your script as a singular object, > not a collection. Therefore, you can't refer to it with an index. > Whether the error is because your data isn't a collection or isn't a > On3dPoint, I don't know, but I would change those in the script > component itself and see if that helps. Right click on the name of > the variable (in GH) and set the type hint to On3dPoint, along with > enabling List. I think that should work, but its possible it > won't...if not, some more information would be helpful. > > Best, > Damien > > On Mar 17, 6:27 pm, merwin <[email protected]> wrote: > > > Hello, I have a issue with culling a list by another list. Here's > > what I'm trying to accomplish: > > > 1. I have an original list (of points) > > - this list is a list of vertices for octagons (@ 8 points per > > octagon) > > 2. I have a culled list derived from the original list (1 point > > represents each octagon) > > 3. I send this culled list into a Cellular Automata module which > > gives me a new culled list (of live points) > > 4. **I compare the new culled list with the original and draw out the > > remaining 7 points associated with each point in the new culled list. > > (so that I can create an octagon). > > > Below is the script I was using to try and accomplish #4, which > > returned "Script exception: Unable to cast object of type > > 'RMA.OpenNurbs.On3dPoint' to type ' System.Collections.IEnumerable'." > > > Any suggestions on how to fix or do #4 another way? Thanks! > > -Matt Erwin > > > Sub RunScript(ByVal OrigPoints As Object, ByVal CAPoints As Object, > > ByVal NumOrigPts As Object, ByVal NumCAPts As Object) > > ''' <your code> > > Dim LOctPoints As New List(Of On3dPoint ) > > Dim i As On3dPoint > > Dim j As On3dPoint > > Dim k As Int32 > > Dim m As Int32 > > Dim n As Int32 > > k = 0 > > m = 0 > > n = 0 > > > 'Cycle through the two list of points to find the matches > > For Each i In OrigPoints > > For Each j In CAPoints > > 'when you find a match, store the 8 octagon points from the > > original list that coinciding with the matching point > > If i = j Then > > For k = 0 To 7 > > n = m + k > > LOctPoints.Add(OrigPoints(n)) > > Next > > End If > > Next > > m = m + 1 > > Next > > 'output the new list > > liveOctPoints = LOctPoints
