Example #1
0
        public override bool CastTo <Q>(out Q target)
        {
            // This function is called when Grasshopper needs to convert this
            // instance of GsaGridPlane into some other type Q.


            if (typeof(Q).IsAssignableFrom(typeof(GsaGridPlaneSurface)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    target = (Q)(object)Value.Duplicate();
                }
                return(true);
            }

            if (typeof(Q).IsAssignableFrom(typeof(GH_Plane)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    GH_Plane pln = new GH_Plane();
                    GH_Convert.ToGHPlane(Value.Plane, GH_Conversion.Both, ref pln);
                    target = (Q)(object)pln;
                }
                return(true);
            }

            target = default;
            return(false);
        }
        public override bool CastTo <Q>(ref Q target)
        {
            // This function is called when Grasshopper needs to convert this
            // instance of GsaLoad into some other type Q.


            if (typeof(Q).IsAssignableFrom(typeof(GsaLoad)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    target = (Q)(object)Value.Duplicate();
                }
                return(true);
            }

            if (typeof(Q).IsAssignableFrom(typeof(GsaGridPlaneSurfaceGoo)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    if (Value.AreaLoad != null)
                    {
                        GsaGridPlaneSurface    gridplane = Value.AreaLoad.GridPlaneSurface;
                        GsaGridPlaneSurfaceGoo gpgoo     = new GsaGridPlaneSurfaceGoo(gridplane);
                        target = (Q)(object)gpgoo;
                        return(true);
                    }
                    if (Value.LineLoad != null)
                    {
                        GsaGridPlaneSurface    gridplane = Value.LineLoad.GridPlaneSurface;
                        GsaGridPlaneSurfaceGoo gpgoo     = new GsaGridPlaneSurfaceGoo(gridplane);
                        target = (Q)(object)gpgoo;
                        return(true);
                    }
                    if (Value.PointLoad != null)
                    {
                        GsaGridPlaneSurface    gridplane = Value.PointLoad.GridPlaneSurface;
                        GsaGridPlaneSurfaceGoo gpgoo     = new GsaGridPlaneSurfaceGoo(gridplane);
                        target = (Q)(object)gpgoo;
                        return(true);
                    }
                }
                return(true);
            }

            if (typeof(Q).IsAssignableFrom(typeof(GH_Plane)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    if (Value.LoadType == GsaLoad.LoadTypes.GridArea)
                    {
                        GH_Plane ghpln = new GH_Plane();
                        GH_Convert.ToGHPlane(Value.AreaLoad.GridPlaneSurface.Plane, GH_Conversion.Both, ref ghpln);
                        target = (Q)(object)ghpln;
                        return(true);
                    }
                    if (Value.LoadType == GsaLoad.LoadTypes.GridLine)
                    {
                        GH_Plane ghpln = new GH_Plane();
                        GH_Convert.ToGHPlane(Value.LineLoad.GridPlaneSurface.Plane, GH_Conversion.Both, ref ghpln);
                        target = (Q)(object)ghpln;
                        return(true);
                    }
                    if (Value.LoadType == GsaLoad.LoadTypes.GridPoint)
                    {
                        GH_Plane ghpln = new GH_Plane();
                        GH_Convert.ToGHPlane(Value.PointLoad.GridPlaneSurface.Plane, GH_Conversion.Both, ref ghpln);
                        target = (Q)(object)ghpln;
                        return(true);
                    }
                }
                return(false);
            }
            if (typeof(Q).IsAssignableFrom(typeof(GH_Point)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    if (Value.LoadType == GsaLoad.LoadTypes.GridPoint)
                    {
                        Point3d point = new Point3d
                        {
                            X = Value.PointLoad.GridPointLoad.X,
                            Y = Value.PointLoad.GridPointLoad.Y,
                            Z = Value.PointLoad.GridPlaneSurface.Plane.OriginZ
                        };
                        GH_Point ghpt = new GH_Point();
                        GH_Convert.ToGHPoint(point, GH_Conversion.Both, ref ghpt);
                        target = (Q)(object)ghpt;
                        return(true);
                    }
                }
                return(false);
            }
            if (typeof(Q).IsAssignableFrom(typeof(GH_Curve)))
            {
                if (Value == null)
                {
                    target = default;
                }
                else
                {
                    if (Value.LoadType == GsaLoad.LoadTypes.GridLine)
                    {
                        List <Point3d> pts = new List <Point3d>();
                        string         def = Value.LineLoad.GridLineLoad.PolyLineDefinition; //implement converter
                        // to be done
                        //target = (Q)(object)ghpt;
                        //return true;
                    }
                }
                return(false);
            }

            target = default;
            return(false);
        }
Example #3
0
        /*******************************************/

        public static bool CastToGoo(object value, ref GH_Plane target)
        {
            return(GH_Convert.ToGHPlane(value, GH_Conversion.Both, ref target));
        }
Example #4
0
        List <Polyline> RegionUnion(DataTree <Polyline> listOfCurves, List <Plane> frames)
        {
            int curveCount = listOfCurves.BranchCount;

            var regionUnion            = new SurfaceComponents.SolidComponents.Component_CurveBooleanUnion();
            var regionUnionInputCurves = regionUnion.Params.Input[0] as Grasshopper.Kernel.GH_PersistentParam <Grasshopper.Kernel.Types.GH_Curve>;

            regionUnionInputCurves.PersistentData.ClearData();

            var regionUnionInputPlanes = regionUnion.Params.Input[1] as Grasshopper.Kernel.GH_PersistentParam <Grasshopper.Kernel.Types.GH_Plane>;

            regionUnionInputPlanes.PersistentData.ClearData();

            var ghPlane = new GH_Plane();

            for (int i = 0; i < curveCount; ++i)
            {
                for (int j = 0; j < listOfCurves.Branch(i).Count; ++j)
                {
                    regionUnionInputCurves.PersistentData.Append(new GH_Curve(listOfCurves.Branch(i)[j].ToNurbsCurve()));

                    if (i == 0)
                    {
                        GH_Convert.ToGHPlane(frames[j], GH_Conversion.Both, ref ghPlane);
                        regionUnionInputPlanes.PersistentData.Append(new GH_Plane(ghPlane));
                    }
                }
            }

            regionUnion.ExpireSolution(true);

            var doc = new Grasshopper.Kernel.GH_Document();

            doc.AddObject(regionUnion, false);

            regionUnion.Params.Output[0].CollectData();

            int countOfUnions = regionUnion.Params.Output[0].VolatileData.PathCount;

            var listOfUnionObjs = new object();

            Curve temp     = null;
            var   polyOut  = new Polyline[countOfUnions][];
            var   polyList = new List <Polyline>();

            for (int i = 0; i < countOfUnions; ++i)
            {
                int item = regionUnion.Params.Output[0].VolatileData.get_Branch(i).Count;

                polyOut[i] = new Polyline[item];

                for (int j = 0; j < item; ++j)
                {
                    listOfUnionObjs = regionUnion.Params.Output[0].VolatileData.get_Branch(i)[j];
                    GH_Convert.ToCurve(listOfUnionObjs, ref temp, GH_Conversion.Both);
                    temp.TryGetPolyline(out polyOut[i][j]);
                    polyList.Add(polyOut[i][j]);
                }
            }

            doc.RemoveObject(regionUnion.Attributes, false);

            return(polyList);
        }