예제 #1
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            Util.Gears gear = new Util.Gears();
            LModules.Clear();
            Tangents.Clear();
            HelicalRacks.Clear();

            DA.GetDataList <Line>("Line", Tangents);
            DA.GetDataList <System.Object>("CircleModule", LModules);
            DA.GetData <double>("Teeth", ref Teeth);
            DA.GetData <double>("Angle", ref Angle);
            DA.GetData <double>("HelicalAngle", ref betaAngle);
            DA.GetData <double>("Depth", ref Depth);
            DA.GetData <double>("addendum", ref addendum);
            DA.GetData <double>("dedendum", ref dedendum);

            for (int i = 0; i < Tangents.Count; i++)
            {
                System.Object obj = LModules[0];
                if (LModules.Count - 1 < i)
                {
                    obj = LModules[LModules.Count - 1];
                }
                else
                {
                    obj = LModules[i];
                }
                double n;
                Circle c = new Circle();
                if (GH_Convert.ToCircle(obj, ref c, GH_Conversion.Both))
                {
                    HelicalRacks.Add(gear.buildHelicalRack(Tangents[i], c, Teeth, Angle, betaAngle, Depth, addendum, dedendum));
                }
                if (GH_Convert.ToDouble(obj, out n, GH_Conversion.Primary))
                {
                    HelicalRacks.Add(gear.buildHelicalRack(Tangents[i], n, Teeth, Angle, betaAngle, Depth, addendum, dedendum));
                }
            }


            DA.SetDataList(0, HelicalRacks);

            texts     = gear.texts;
            locations = gear.locations;
            sizes     = gear.sizes;
        }
예제 #2
0
파일: rack.cs 프로젝트: uwenji/ghGear
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            Util.Gears gear = new Util.Gears();
            LModules = new List <System.Object>();
            Tangents = new List <Line>();
            Rack     = new List <Curve>();

            DA.GetDataList <Line>(0, Tangents);
            DA.GetDataList <System.Object>(1, LModules);
            DA.GetData <double>(2, ref Teeth);
            DA.GetData <double>(3, ref Angle);
            DA.GetData <double>(4, ref addendum);
            DA.GetData <double>(5, ref dedendum);

            for (int i = 0; i < Tangents.Count; i++)
            {
                System.Object obj = LModules[0];
                if (LModules.Count - 1 < i)
                {
                    obj = LModules[LModules.Count - 1];
                }
                else
                {
                    obj = LModules[i];
                }
                double n;
                Circle c = new Circle();
                if (GH_Convert.ToCircle(obj, ref c, GH_Conversion.Both))
                {
                    Rack.Add(gear.buildRack(Tangents[i], c, Teeth, Angle, addendum, dedendum));
                }
                if (GH_Convert.ToDouble(obj, out n, GH_Conversion.Primary))
                {
                    Rack.Add(gear.buildRack(Tangents[i], n, Teeth, Angle, addendum, dedendum));
                }
            }


            DA.SetDataList(0, Rack);

            texts     = gear.texts;
            locations = gear.locations;
            sizes     = gear.sizes;
        }