Grasshopper

algorithmic modeling for Rhino

removing double definition of curves in grasshopper....

is there a better way of removing a double definition of a curve ... or brep?????

I can not deserialize curves and breps ... because its behind the COM....

 

 

 

if(curve_in.Count > 0){
List xml_curve_list = new List();
List xml_string_2 = new List();
for(int i = 0;curve_in.Count > i;i++)
{
xml_curve tp_xml = new xml_curve();
tp_xml.my_string = serialize_curve(curve_in[i]);
tp_xml.my_curve = curve_in[i];
tp_xml.counter = i;
xml_curve_list.Add(tp_xml);
xml_string_2.Add(tp_xml.my_string);

}

xml_curve_list.Sort
(
delegate(xml_curve a, xml_curve b)
{return a.my_string.CompareTo(b.my_string);}
);

List xml_curve_list_clear = new List();
xml_curve_list_clear.Add(xml_curve_list[0]);
for(int i = 1;xml_curve_list.Count > i;i++)
{
if(xml_curve_list[i].my_string != xml_curve_list[i - 1].my_string){xml_curve_list_clear.Add(xml_curve_list[i]);}
}

xml_curve_list_clear.Sort
(
delegate(xml_curve a, xml_curve b)
{return a.counter.CompareTo(b.counter);}
);



List cleared_curve = new List();
List cleared_string = new List();
for(int i = 0;xml_curve_list_clear.Count > i;i++)
{
cleared_curve.Add(xml_curve_list_clear[i].my_curve);
cleared_string.Add(xml_curve_list_clear[i].my_string);
}

string xml_finished = "\n" + "\n";
for(int i = 0;cleared_string.Count > i;i++)
{
xml_finished = xml_finished + cleared_string[i];
}

xml_finished = xml_finished + "";
A = cleared_curve;
B = xml_finished;
}

 

 

 

//// declaring

public class xml_curve
  {
    public Curve my_curve = null;
    public string my_string = "";
    public int counter = 0;

  }


  public string serialize_curve (Curve curve_in)
  {
    string my_xml_string = "<curve_array>\n";
    if(curve_in.IsLinear())
    {
      Line my_line = new Line(curve_in.PointAtStart, curve_in.PointAtEnd);
      my_xml_string = my_xml_string + "<line>\n";
      my_xml_string = my_xml_string + serialize_pt(my_line.From);
      my_xml_string = my_xml_string + serialize_pt(my_line.To);
      my_xml_string = my_xml_string + "</line>\n";
      my_xml_string = my_xml_string + "</curve_array>\n";
      return my_xml_string;
    }
    else
    {
      List<Curve> my_curve = new List<Curve>();
      my_curve.AddRange(curve_in.DuplicateSegments());
      for(int i = 0;my_curve.Count > i;i++)
      {
        if(my_curve[i].IsArc() )
        {
          Arc my_arc;
          my_curve[i].TryGetArc(out my_arc);
          my_xml_string = my_xml_string + "<arc>\n";
          my_xml_string = my_xml_string + serialize_pt(my_arc.StartPoint);
          my_xml_string = my_xml_string + serialize_pt(my_arc.MidPoint);
          my_xml_string = my_xml_string + serialize_pt(my_arc.EndPoint);
          my_xml_string = my_xml_string + "</arc>\n";
        }
        if(my_curve[i].IsLinear())
        {
          Line my_line = new Line(my_curve[i].PointAtStart, my_curve[i].PointAtEnd);

          my_xml_string = my_xml_string + "<line>\n";
          my_xml_string = my_xml_string + serialize_pt(my_line.From);
          my_xml_string = my_xml_string + serialize_pt(my_line.To);
          my_xml_string = my_xml_string + "</line>\n";
        }
        if(!my_curve[i].IsLinear() && !my_curve[i].IsArc())
        {
          Rhino.Geometry.NurbsCurve my_nurbs = my_curve[i].ToNurbsCurve();
          my_xml_string = my_xml_string + "<curve>\n";
          my_xml_string = my_xml_string + "<degree>\n";
          my_xml_string = my_xml_string + my_nurbs.Degree + "\n";
          my_xml_string = my_xml_string + "</degree>\n";
          Point3dList my_pt_list = my_nurbs.GrevillePoints();
          Rhino.Geometry.Collections.NurbsCurvePointList my_control_pts = my_nurbs.Points;
          for(int ii = 0;my_control_pts.Count > ii;ii++)
          {
            my_xml_string = my_xml_string + "<weight>\n";
            my_xml_string = my_xml_string + my_control_pts[ii].Weight + "\n";
            my_xml_string = my_xml_string + "</weight>\n";
            my_xml_string = my_xml_string + serialize_pt(my_control_pts[ii].Location);
          }
          my_xml_string = my_xml_string + "</curve>\n";
        }
      }
      my_xml_string = my_xml_string + "</curve_array>\n";
      return my_xml_string;}
  }


  public string serialize_pt (Point3d pt)
  {
    string my_xml_string = "";
    my_xml_string = my_xml_string + "<point>";
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "<x>\n" + pt.X;
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "</x>";
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "<y>\n" + pt.Y;
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "</y>";
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "<z>\n" + pt.Z;
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "</z>";
    my_xml_string = my_xml_string + "\n";
    my_xml_string = my_xml_string + "</point>";
    my_xml_string = my_xml_string + "\n";
    return my_xml_string;
  }

 

Views: 398

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service