コード例 #1
0
ファイル: Visualize.cs プロジェクト: BHoM/BHoM_Engine
        public static List <ICurve> Visualize(this ContourLoad contourLoad, double scaleFactor = 1.0, bool displayForces = true, bool displayMoments = true, bool asResultants = true)
        {
            if (contourLoad.IsNull())
            {
                return(null);
            }

            if (!displayForces)
            {
                return(new List <ICurve>());
            }

            List <ICurve> arrows         = new List <ICurve>();
            Vector        globalForceVec = contourLoad.Force * scaleFactor;

            Vector forceVec;
            Basis  orientation;

            if (contourLoad.Axis == LoadAxis.Global)
            {
                if (contourLoad.Projected)
                {
                    Vector normal = contourLoad.Contour.Normal();
                    double scale  = Math.Abs(normal.DotProduct(globalForceVec.Normalise()));
                    forceVec = globalForceVec * scale;
                }
                else
                {
                    forceVec = globalForceVec;
                }
                orientation = Basis.XY;
            }
            else
            {
                orientation = LocalOrientation(contourLoad.Contour.Normal(), 0);
                forceVec    = globalForceVec;
            }

            arrows.AddRange(ConnectedArrows(contourLoad.Contour.SubParts(), forceVec, asResultants, orientation, 1, true));

            return(arrows);
        }
コード例 #2
0
        /***************************************************/

        private bool CreateLoad(ContourLoad bhLoad)
        {
            double[] loadVals = bhLoad.Force.ToDoubleArray();

            List <Opening> openingsList = new List <Opening>();
            Panel          loadPanel    = Engine.Structure.Create.Panel(bhLoad.Contour as ICurve, openingsList);

            CreateObject(loadPanel);

            List <Panel> panelsToLoad = new List <Panel>();

            panelsToLoad.Add(loadPanel);
            AreaUniformlyDistributedLoad contourLoadArea = Engine.Structure.Create.AreaUniformlyDistributedLoad(bhLoad.Loadcase, loadVals.ToVector(), panelsToLoad,
                                                                                                                bhLoad.Axis, bhLoad.Projected, bhLoad.Name);

            CreateLoad(contourLoadArea);

            SetAdapterId(bhLoad, null);

            return(true);
        }