Thanks guys, I should have posted last night, but I fell asleep....
I found the issues you both described. There were others of course, but the main issues were, as you describe David, was both the object types and the way they were being collected. Visose, your example was enormously helpful in clearing those up. Thank you both. Grasshopper is tremendously exciting! -b On Nov 4, 6:53 am, visose <[EMAIL PROTECTED]> wrote: > I posted this some time > ago:http://grasshopper3d.googlegroups.com/web/loftcurves.jpg > It creates multiple lofts in grasshopper. I tried to strip it of all > error checking and default loft options so it shows only the minimum > code needed for it to work (i think). Maybe it can help you. > > On Nov 3, 8:30 pm, bgcallam <[EMAIL PROTECTED]> wrote: > > > Hi, > > > First I should say I'm new to grasshopper and new to vb.net (but have > > used rhinoscript for a while) so I'm in new territory here. > > > I have a script node that was directly adapted from the example that > > was posted with the newest version of the plugin (the one that covers > > a surface with polylines in a spiral, like Foster's building in > > London). The function appears to work correctly now and draws the > > curves correctly, and the output of this node is a list of Polyline > > curves. > > > I'm now trying to feed this list into another vb.net node that will > > loft the output curves (in pairs, like strips) and return a list of > > the lofted surfaces. I am running into an error which seems to be a > > problem with data types, but being new to vb.net and grasshopper I'm a > > little stumped as to where to begin to troubleshoot...it may be > > something easily solvable with typecasting or something... > > > Error: [BC30456] 'Object' is not a member of > > 'System.Collections.Generic.List(Of RMA.OpenNURBS.OnCurve)'. > > Error: [BC30456] 'Object' is not a member of > > 'System.Collections.Generic.List(Of RMA.OpenNURBS.OnCurve)'. > > > In the node properties, I am specifying that the incoming data are > > lists, and with a typehint OnCurve. The rest of the code was adapted > > fromhttp://en.wiki.mcneel.com/default.aspx/McNeel/SdkLoftandis > > posted below. > > > Thanks for any help! This is an amazing product! > > > Imports System > > Imports System.IO > > Imports System.Drawing > > Imports System.Drawing.Drawing2D > > Imports System.Reflection > > Imports System.Collections > > Imports System.Collections.Generic > > Imports Microsoft.VisualBasic > > > Imports RMA.OpenNURBS > > Imports RMA.Rhino > > Imports Grasshopper.Kernel.Types > > > Class Grasshopper_Custom_Script > > #Region "members" > > Private app As MRhinoApp > > Private doc As MRhinoDoc > > > Public A As System.Object > > #End Region > > > Sub RunScript(ByVal topProfile As List(Of OnCurve), ByVal > > bottomProfile As List(Of OnCurve)) > > Dim surf_list As New List(Of OnNurbsSurface) > > > ' Fill in loft arguments class > > Dim args As New MArgsRhinoLoft() > > args.m_bAllowStartTangent = False > > args.m_bAllowEndTangent = False > > args.m_bUseStartpoint = False > > args.m_bUseEndpoint = False > > args.m_bClosed = False > > args.m_loft_type = IArgsRhinoLoft.eLoftType.ltTight > > args.m_simplify_method = IArgsRhinoLoft.eLoftSimplify.lsNone > > args.m_start_condition = IArgsRhinoLoft.eLoftEnds.leNatural > > args.m_end_condition = IArgsRhinoLoft.eLoftEnds.leNatural > > args.m_rebuild_point_count = 10 > > 'args.m_refit_tolerance = context.m_doc.AbsoluteTolerance() > > > Dim object_count As Integer = topProfile.Count() > > Dim loftcurves(object_count - 1) As MRhinoLoftCurve > > > ' Add loft curves > > ' top is 0, bottom is 1 > > Dim t As Integer = 0 > > Dim b As Integer = 0 > > > For i As Integer = 0 To object_count - 1 > > Dim curveTop As IOnCurve = > > topProfile.Object(i).Curve() > > Dim curveBottom As IOnCurve = > > bottomProfile.Object(i).Curve() > > If (curveTop IsNot Nothing) Then > > loftcurves(t) = New MRhinoLoftCurve() > > loftcurves(t).m_curve = > > curveTop.DuplicateCurve() > > > loftcurves(t).m_curve.RemoveShortSegments(OnUtil.On_ZERO_TOLERANCE, > > True) > > loftcurves(t).m_pick_point = New > > On3dPoint(OnUtil.On_UNSET_POINT) > > loftcurves(t).m_pick_t = > > OnUtil.On_UNSET_VALUE > > loftcurves(t).m_trim = Nothing > > loftcurves(t).m_bClosed = > > loftcurves(t).m_curve.IsClosed() > > loftcurves(t).m_bPlanar = > > loftcurves(t).m_curve.IsPlanar(loftcurves(t).m_plane) > > End If > > If (curveBottom IsNot Nothing) Then > > loftcurves(b) = New MRhinoLoftCurve() > > loftcurves(b).m_curve = > > curveBottom.DuplicateCurve() > > > loftcurves(b).m_curve.RemoveShortSegments(OnUtil.On_ZERO_TOLERANCE, > > True) > > loftcurves(b).m_pick_point = New > > On3dPoint(OnUtil.On_UNSET_POINT) > > loftcurves(b).m_pick_t = > > OnUtil.On_UNSET_VALUE > > loftcurves(b).m_trim = Nothing > > loftcurves(b).m_bClosed = > > loftcurves(b).m_curve.IsClosed() > > loftcurves(b).m_bPlanar = > > loftcurves(b).m_curve.IsPlanar(loftcurves(b).m_plane) > > End If > > > args.m_loftcurves = loftcurves > > > 'Do the loft operation > > Dim surface_list(0) As OnNurbsSurface > > Dim rc As Boolean = > > RhUtil.RhinoSdkLoftSurface(args, surface_list) > > > ' Assume 1 surface.... > > surf_list.Add(surface_list(0)) > > > Next > > A = surf_list > > > End Sub > > End Class
