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); }
/*******************************************/ public static bool CastToGoo(object value, ref GH_Plane target) { return(GH_Convert.ToGHPlane(value, GH_Conversion.Both, ref target)); }
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); }