I forgot to mention that Pin and Rin are Plane and Radius input arguments in this particular example.
-- David Rutten Robert McNeel & Associates On Oct 21, 6:14 pm, David Rutten <[EMAIL PROTECTED]> wrote: > Luis, > > you can always bake them. And since the app and doc members are > available within the script component, you /could/ also insert > geometry directly into Rhino from within a Script node. > If you want to add a real curve, do: > > Dim C As New OnCircle(Pin, Rin) > doc.AddCurveObject(C) > > Do note that it will make a new curve object every time the script is > run. If you want to replace existing geometry, you'll have to do a lot > of extra work. > > -- > David Rutten > Robert McNeel & Associates > > On Oct 21, 5:11 pm, fraguada <[EMAIL PROTECTED]> wrote: > > > SO let me get this straight...and sorry if it is naive...but evoking > > SDK commands within the Grasshopper script node just makes grasshopper > > objects, it will not make rhino editable objects? I can live with > > that...I was staying away from doing that specifically because I > > thought it would make editable geometry in rhino, rather than Xmas > > [ cause of the green and red ;) ] geometry in Grasshopper. > > > Luis > > > On Oct 21, 10:08 am, David Rutten <[EMAIL PROTECTED]> wrote: > > > > Cool, nice implementation. Nothing wrong with that script. > > > > -- > > > David Rutten > > > Robert McNeel & Associates > > > > On Oct 21, 1:33 am, visose <[EMAIL PROTECTED]> wrote: > > > > > I did a simple example of multiple lofts with the help of the pointers > > > > mentioned above:http://grasshopper3d.googlegroups.com/web/loftcurves.jpg > > > > > In GH i create a 3D grid of points and I place a horizontal circle in > > > > each of the points.The radius of the circles is a function of the > > > > x,y,z values of its corresponding point (so all or most circles have a > > > > different size). > > > > Then I order the list of circles by its Z value. > > > > In the script component i select the curves that have the same X,Y > > > > position and loft them. > > > > My scripting skills are really bad, so the way i select the curves to > > > > loft was a bit of trial and error and its probably not the best way to > > > > do it. I tried to include only the necessary lines to create a loft, > > > > but there are a loft more loft options available. > > > > > On Oct 20, 3:28 pm, David Rutten <[EMAIL PROTECTED]> wrote: > > > > > > Hi Visose, > > > > > > that is indeed too simplistic. The Loft component is not part of > > > > > Grasshopper, it is part of the Surface.gha file which ships alongside > > > > > grasshopper. GHA files in Grasshopper are similar to RHP files in > > > > > Rhino. There's no way for a plugin to hack into another plugin. Only > > > > > functions that are available inside Rhino core (and inside dlls you > > > > > specifically reference when you compile your plugin) can be called > > > > > from within a plugin. > > > > > > I could make a simple Loft function in Grasshopper somewhere, which > > > > > could be used by people writing scripts. But since we (read: Dale > > > > > Fugier) are already in the process of porting all RhinoScript > > > > > functions to the SDK, I'd rather wait until V5 comes out so we can get > > > > > all this for free. > > > > > > The EH_Box, EH_Integer, EH_Surface classes you saw indeed come from > > > > > Grasshopper. I didn't bother changing the prefixes on all classes when > > > > > the name changed to Grasshopper, and to avoid a double naming standard > > > > > I still call everything "EH_". But, these classes are not components, > > > > > they are data types. EH_Curve can be likened to OnCurve, EH_Colour is > > > > > similar to System.Drawing.Color etc. etc. These classes typically do > > > > > not offer much functionality, they merely contain data. > > > > > > -- > > > > > David Rutten > > > > > Robert McNeel & Associates > > > > > > On Oct 20, 4:09 pm, visose <[EMAIL PROTECTED]> wrote: > > > > > > > What I'm going to ask is probably very simplistic and naive since i > > > > > > don't know how the internals work too well. > > > > > > But when the popup list appears when writing code the are seem to be > > > > > > some GH components like EH_box, EH_circle, EH_curve (I assume EH is > > > > > > from 'explicit history'). > > > > > > So I thought maybe there was a way (or there will be a way) of using > > > > > > the grasshopper component 'loft' inside the scripting component > > > > > > instead calling the SDK loft directly. > > > > > > So it would be as simple as: (here comes the most naive part of the > > > > > > post) > > > > > > > Having as input parameter of the scripting component 'loft_curves' > > > > > > and > > > > > > 'A' as output: > > > > > > Dim loft As New GH_Loft() > > > > > > loft.inputcurves = loft_curves.ToArray() > > > > > > A = loft.outputgeometry > > > > > > > On Oct 20, 1:11 pm, David Rutten <[EMAIL PROTECTED]> wrote: > > > > > > > > Hi Adam, > > > > > > > > Lofting is not easy. You have to construct a new instance of > > > > > > > MArgsRhinoLoft, which contains all the loft settings and curves. > > > > > > > Then, > > > > > > > you have to call RhUtil.RhinoSdkLoftSurface and pass it your > > > > > > > arguments. There's no function in the SDK which is as easy as > > > > > > > Rhino.AddLoftSrf in RhinoScript. I agree that there should be, but > > > > > > > there isn't. > > > > > > > > Let's assume you have a collection of 100 OnCurves, and you want > > > > > > > to > > > > > > > loft the first 10: > > > > > > > > 1) Create a new list of MRhinoLoftCurve and populate it using a > > > > > > > loop > > > > > > > > Dim loft_curves As New List(Of MRhinoLoftCurve) > > > > > > > For i As Integer = 0 To 9 > > > > > > > Dim crv_section As New MRhinoLoftCurve() > > > > > > > crv_section.m_curve = m_original_curves(i).DuplicateCurve() > > > > > > > crv_section.m_bClosed = m_original_curves(i).IsClosed() > > > > > > > crv_section.m_bIsPlanar = m_original_curves(i).IsPlanar() > > > > > > > loft_curves.Add(crv_section) > > > > > > > Next > > > > > > > > 2) Then, create new MArgsRhinoLoft and populate the values: > > > > > > > > Dim loft_args As New MArgsRhinoLoft() > > > > > > > loft_args.m_loftcurves = loft_curves.ToArray() > > > > > > > loft_args.SetClosed(<<value that indicates whether you want a > > > > > > > closed > > > > > > > loft of not>>) > > > > > > > ....<<set other loft settings in similar fashion>> > > > > > > > > 3) Finally, call the RMA.Rhino.RhUtil.RhinoSdkLoftSurface() > > > > > > > function > > > > > > > with loft_args and an array of OnNurbsSurfaces. > > > > > > > > -- > > > > > > > David Rutten > > > > > > > Robert McNeel & Associates > > > > > > > > On Oct 20, 1:48 pm, "Adam Holloway" <[EMAIL PROTECTED]> wrote: > > > > > > > > > I'm relatively new to scripting. I want to sort a number of > > > > > > > > curves, in > > > > > > > > different lists, and then loft them periodically in the > > > > > > > > scripting > > > > > > > > component. What is the best way to do this? I've looked > > > > > > > > through the sample > > > > > > > > code for SDKLoft but the different classes confused me and I > > > > > > > > wasn't sure > > > > > > > > what was appropriate for this. > > > > > > > > > Thanks, > > > > > > > > Adam
