Sorry, this was a classic stupidity. as i pass my variable crv i pass
the adress of it, not the content. so reinitializing crv in each pass
of the for loop solved the problem. shouldn't happen, but if you're
sitting in front of the computer too long it might. the first lines of
code now look like this:

List<MRhinoLoftCurve> loftCurves = new List<MRhinoLoftCurve>();
    MArgsRhinoLoft args = new MArgsRhinoLoft();
    OnBrep[] surfaces;

    count = C.Count;

    for (int j = 0;j < i;j++){
      MRhinoLoftCurve crv = new MRhinoLoftCurve();
      crv.m_curve = C[j].DuplicateCurve();
      crv.m_bClosed = C[j].IsClosed();
      loftCurves.Add(crv);
    }

this works. breaks rule!

On 1 Dez., 22:05, rompompom <[EMAIL PROTECTED]>
wrote:
> hey bg
>
> i've already found the thread you posted, but thanks anyway.
> i don't think it's a c# issue. maybe i pass some parameter in a wrong
> way/order. as c# is very very critical on data types (not like VB) it
> almost can't be, but who knows...
>
> On 1 Dez., 17:55, bgcallam <[EMAIL PROTECTED]> wrote:
>
> > I don't know any c# but you might have a look here:
>
> >http://groups.google.com/group/grasshopper3d/browse_thread/thread/6a7...
>
> > On Dec 1, 11:28 am, rompompom <[EMAIL PROTECTED]>
> > wrote:
>
> > > hi everyone
>
> > > i tried to write a script in C# that lofts curves of an array. the
> > > idea is that all lofts consist of the same count of curves. so i can
> > > pass 20 curves and build 4 lofts with 5 curves each or 5 lofts with 4
> > > curves each. the number of curves is passed to input i, the list of
> > > curves to input C. on my way to the target i tried to loft the first
> > > three curves. until now the script looks like that:
>
> > > #region members
> > >   private MRhinoApp app;
> > >   private MRhinoDoc doc;
>
> > >   public System.Object S;
> > > #endregion
>
> > >   void RunScript(List<OnCurve> C, int i)
> > >   {
> > >     List<MRhinoLoftCurve> loftCurves = new List<MRhinoLoftCurve>
> > > ();
> > >     MRhinoLoftCurve crv = new MRhinoLoftCurve();
> > >     MArgsRhinoLoft args = new MArgsRhinoLoft();
> > >     OnBrep[] surfaces;
>
> > >     for (int j = 0;j < i;j++){
> > >       crv.m_curve = C[j].DuplicateCurve();
> > >       crv.m_bClosed = C[j].IsClosed();
> > >       loftCurves.Add(crv);
> > >     }
>
> > >     args.m_loftcurves = loftCurves.ToArray();
> > >     args.SetClosed(false);
> > >     args.SetLoftType(0);
>
> > >     RhUtil.RhinoSdkLoft(args, out surfaces);
> > >     S = surfaces;
> > >   }
>
> > > the script is passing lofts that looks like it has lofted a single
> > > curve, i get an untrimmed surface that looks like one of the input
> > > curves. what did i misunderstand?

Reply via email to