Yea, the List option is very important.  Without that, each item that
is within the stream will cause the script component to execute once.
This will also employ the data matching method that's used within the
component (longest list, shortest list, etc).   When you enable the
List option, all that data gets passes to the script as one big chunk,
which is incredibly useful since you can deal with all of them at the
same time.  Also, if all the inputs are passes in as Lists, then your
script will only execute once every time its recalculated.

-Damien

On Mar 18, 10:45 am, merwin <[email protected]> wrote:
> 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

Reply via email to