Exemple #1
0
        protected override void PopulateDbRow(Element element, DataRow row)
        {
            AreaLoad areaLoad = element as AreaLoad;

            Utility.Assign(row, APIObjectList.ColumnRes("ColN_CST_AreaLoadId"), APIObjectList.GetIdDbValue(areaLoad));
            Utility.Assign(row, APIObjectList.ColumnRes("ColN_CST_SlabId"), APIObjectList.GetIdDbValue(areaLoad.HostElement));
        }
Exemple #2
0
        public bool Read(string FilePath)
        {
            ClearVars();
            //To Do: read from file
            FileStream   kFs = new FileStream(FilePath, FileMode.Open, FileAccess.ReadWrite);
            StreamReader sr  = new StreamReader(kFs);
            string       str = "";

            while (sr.EndOfStream == false)
            {
                str = sr.ReadLine();
                if (BasicInfo.UsersTitle == "")
                {
                    if (str.Contains("ASTRA"))
                    {
                        if (str.Length > 12)
                        {
                            str = str.Remove(0, 12);
                            BasicInfo.UsersTitle = str;
                            continue;
                        }
                    }
                }
                //if (ProjectTitle == "")
                //{
                //    ProjectTitle = str;
                //    continue;
                //}
                if (str.Contains("UNIT") && this.LUnit == "" && this.MUnit == "")
                {
                    string[] ss = CAstraUnits.GetBasicLengthMassUnits(str);
                    this.MUnit = ss[0];
                    this.LUnit = ss[1];

                    switch (this.MUnit.ToUpper())
                    {
                    case "MTON": this.wfct_flag = 1;
                        break;

                    case "KN": this.wfct_flag = 2;
                        break;

                    case "KG": this.wfct_flag = 3;
                        break;

                    case "NEW": this.wfct_flag = 4;
                        break;

                    case "N": this.wfct_flag = 4;
                        break;

                    case "GM": this.wfct_flag = 5;
                        break;

                    case "GMS": this.wfct_flag = 5;
                        break;

                    case "KIP": this.wfct_flag = 6;
                        break;

                    case "LBS": this.wfct_flag = 7;
                        break;
                    }
                    switch (this.LUnit.ToUpper())
                    {
                    case "MM": this.lfct_flag = 1;
                        break;

                    case "CM": this.lfct_flag = 2;
                        break;

                    case "M": this.lfct_flag = 3;
                        break;

                    case "ME": this.lfct_flag = 3;
                        break;

                    case "METRES": this.lfct_flag = 3;
                        break;

                    case "YDS": this.lfct_flag = 4;
                        break;

                    case "FT": this.lfct_flag = 5;
                        break;

                    case "INCH": this.lfct_flag = 6;
                        break;

                    case "IN": this.lfct_flag = 6;
                        break;
                    }
                }

                if (str.ToUpper().Contains("STRUCTURE"))
                {
                    str = str.Replace('\t', ' ');
                    string[] values = str.Split(new char[] { ' ' });
                    while (str.IndexOf("  ") != -1)
                    {
                        str = str.Replace("  ", " ");
                    }
                    if (values.Length == 3)
                    {
                        int.Parse(values[1]);
                        BasicInfo.Type          = (StructureType)int.Parse(values[1]);
                        BasicInfo.RunningOption = short.Parse(values[2]);
                    }



                    //str = str.Remove(0, 10);
                    //str = str.Trim();
                    //string[] values = str.Split(new char[] { ' ' });
                    //while (str.IndexOf("  ") != -1)
                    //{
                    //    str = str.Replace("  ", " ");
                    //}
                    //str = str.Replace('\t', ' ');
                    //values = str.Split(new char[] { ' ' });
                    //str = values[0];
                    //StructureType = ((str == "1") ? StructureType.SPACE : (str == "2") ? StructureType.FLOOR : StructureType.PLANE);
                    //try { this.Modex = short.Parse(values[1]); }
                    //catch (Exception ex) { this.Modex = -1; }
                }
                string find = getNodeName(str);

                if (find == "N000")
                {
                    str = str.Replace('\t', ' ');
                    string[] values = str.Split(new char[] { ' ' });
                    while (str.IndexOf("  ") != -1)
                    {
                        str = str.Replace("  ", " ");
                    }
                    if (values.Length == 3)
                    {
                        BasicInfo.MassUnit   = CAstraUnits.GetMassUnit(values[1]);
                        BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(values[2]);
                    }
                }
                if (find == "N001")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        NodeData.MassFactor   = d[0];
                        NodeData.LengthFactor = d[1];

                        string[] unt = CAstraUnits.GetUnits(str);
                        BasicInfo.MassUnit   = CAstraUnits.GetMassUnit(unt[0]);
                        BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        NodeData.MassUnit    = CAstraUnits.GetMassUnit(unt[2]);
                        NodeData.LengthUnit  = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        NodeData.Add(CNodeData.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N002")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        BeamConnectivity.MassFactor   = d[0];
                        BeamConnectivity.LengthFactor = d[1];
                    }
                    try
                    {
                        BeamConnectivity.Add(CMemberConnectivity.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N003")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        SectionProperty.MassFactor   = d[0];
                        SectionProperty.LengthFactor = d[1];

                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        SectionProperty.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        SectionProperty.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        SectionProperty.Add(CSectionProperty.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N004")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        MaterialProperty.MassFactor   = d[0];
                        MaterialProperty.LengthFactor = d[1];

                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        MaterialProperty.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        MaterialProperty.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        MaterialProperty.Add(CMaterialProperty.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N005")
                {
                    try
                    {
                        Support.Add(CSupport.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N008")
                {
                    try
                    {
                        MemberTruss.Add(CMemberTruss.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N010")
                {
                    try
                    {
                        SelfWeight = (CSelfWeight.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N007")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        MemberBeamLoad.MassFactor   = d[0];
                        MemberBeamLoad.LengthFactor = d[1];
                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        MemberBeamLoad.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        MemberBeamLoad.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        MemberBeamLoad.Add(CMemberBeamLoading.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N009")
                {
                    try
                    {
                        BeamConnectivityRelease.Add(CBeamConnectivityRelease.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N006")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        JointNodalLoad.MassFactor   = d[0];
                        JointNodalLoad.LengthFactor = d[1];

                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        JointNodalLoad.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        JointNodalLoad.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        //CJointNodalLoad jntLoad = new CJointNodalLoad();
                        //jntLoad = CJointNodalLoad.Parse(str);
                        JointNodalLoad.Add(CJointNodalLoad.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }

                else if (find == "N099")
                {
                    try
                    {
                        Analysis = CAnalysis.Parse(str);
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N011")
                {
                    if (str.Contains("FILE"))
                    {
                        int j = str.IndexOf("FILE");
                        str = str.Remove(0, j + 5);
                        str = str.ToUpper().Trim();
                        MovingLoad.FileName = str;
                    }
                    try
                    {
                        MovingLoad.Add(CMovingLoad.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N012")
                {
                    string[] values = str.Split(new char[] { ' ' });
                    if (values.Length == 4)
                    {
                        try
                        {
                            LoadGeneration.repeatTime = int.Parse(values[3]);
                        }
                        catch (Exception ex) { }
                    }
                    try
                    {
                        LoadGeneration.Add(CLoadGeneration.Parse(str));
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else if (find == "N013")
                {
                    try
                    {
                        LoadCombination.Add(CLoadCombination.Parse(str));
                    }
                    catch (Exception ex) { }
                }
                else if (find == "N014")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        AreaLoad.MassFactor   = d[0];
                        AreaLoad.LengthFactor = d[1];

                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        AreaLoad.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        AreaLoad.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        AreaLoad.Add(CAreaLoad.Parse(str));
                    }
                    catch (Exception ex) { }
                }
                else if (find == "N019")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        MatPropertyInfo.MassFactor   = d[0];
                        MatPropertyInfo.LengthFactor = d[1];
                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        MatPropertyInfo.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        MatPropertyInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        MatPropertyInfo.Add(CMaterialPropertyInformation.Parse(str));
                    }
                    catch (Exception ex) { }
                }

                else if (find == "N016")
                {
                    if (str.Contains("UNIT"))
                    {
                        double[] d = CAstraUnits.GetLengthMassUnits(str);
                        ElementData.MassFactor   = d[0];
                        ElementData.LengthFactor = d[1];
                        string[] unt = CAstraUnits.GetUnits(str);
                        //BasicInfo.MassUnit = CAstraUnits.GetMassUnit(unt[0]);
                        //BasicInfo.LengthUnit = CAstraUnits.GetLengthUnit(unt[1]);
                        ElementData.MassUnit   = CAstraUnits.GetMassUnit(unt[2]);
                        ElementData.LengthUnit = CAstraUnits.GetLengthUnit(unt[3]);
                    }
                    try
                    {
                        //ElementData.Add(CElementData.Parse(str));
                    }
                    catch (Exception ex) { }
                }


                else if (find == "N020")
                {
                    try
                    {
                        ElementMultiplier.Add(CElementMultiplier.Parse(str));
                    }
                    catch (Exception ex) { }
                }
                else if (find == "N018")
                {
                    try
                    {
                        ElementData.Add(CElementData.Parse(str));
                    }
                    catch (Exception ex) { }
                }
                if (Analysis.NDYN == 2)
                {
                    if (find == "N101")
                    {
                        try
                        {
                            TimeHistory.THist_1 = CTimeHistory1.Parse(str);
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                    else if (find == "N102")
                    {
                        try
                        {
                            TimeHistory.THist_2 = CTimeHistory2.Parse(str);
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                    else if (find == "N103")
                    {
                        try
                        {
                            TimeHistory.THist_3 = CTimeHistory3.Parse(str);
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                    else if (find == "N104")
                    {
                        try
                        {
                            TimeHistory.THist_4 = CTimeHistory4.Parse(str);
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                    else if (find == "N105")
                    {
                        try
                        {
                            if (TimeHistory.THist_5.Count > 0)
                            {
                                TimeHistory.THist_5.NodalConstraint = true;
                            }
                            TimeHistory.THist_5.Add(CTimeHistory5.Parse(str));
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                    else if (find == "N106")
                    {
                        try
                        {
                            TimeHistory.THist_6.Add(CTimeHistory6.Parse(str));
                        }
                        catch (Exception exx)
                        {
                        }
                    }
                }
                else if (Analysis.NDYN == 3)
                {
                    Response.ReadFromStream(sr);
                }
            }
            kFs.Close();
            sr.Close();
            return(true);
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="app"></param>
        /// <param name="element"></param>
        /// <returns></returns>
        public static Revit.Element CloneElement(Application app, Revit.Element element)
        {
            Opening opening = element as Opening;

            if (opening != null)
            {
                return(CloneElement(app, opening));
            }

            BoundaryConditions boundaryConditions = element as BoundaryConditions;

            if (boundaryConditions != null)
            {
                return(CloneElement(app, boundaryConditions));
            }

            AreaLoad areaLoad = element as AreaLoad;

            if (areaLoad != null)
            {
                return(CloneElement(app, areaLoad));
            }

            AreaReinforcement areaReinforcement = element as AreaReinforcement;

            if (areaReinforcement != null)
            {
                return(CloneElement(app, areaReinforcement));
            }

            BeamSystem beamSystem = element as BeamSystem;

            if (beamSystem != null)
            {
                return(CloneElement(app, beamSystem));
            }

            Dimension dimension = element as Dimension;

            if (dimension != null)
            {
                return(CloneElement(app, dimension));
            }

            FamilyInstance familyInstance = element as FamilyInstance;

            if (familyInstance != null)
            {
                return(CloneElement(app, familyInstance));
            }

            Floor floor = element as Floor;

            if (floor != null)
            {
                return(CloneElement(app, floor));
            }

            Grid grid = element as Grid;

            if (grid != null)
            {
                return(CloneElement(app, grid));
            }

            Group group = element as Group;

            if (group != null)
            {
                return(CloneElement(app, group));
            }

            Level level = element as Level;

            if (floor != null)
            {
                return(CloneElement(app, floor));
            }

            LineLoad lineLoad = element as LineLoad;

            if (lineLoad != null)
            {
                return(CloneElement(app, lineLoad));
            }

            LoadCase loadCase = element as LoadCase;

            if (loadCase != null)
            {
                return(CloneElement(app, loadCase));
            }

            LoadCombination loadCombination = element as LoadCombination;

            if (loadCombination != null)
            {
                return(CloneElement(app, loadCombination));
            }

            LoadNature loadNature = element as LoadNature;

            if (loadNature != null)
            {
                return(CloneElement(app, loadNature));
            }

            LoadUsage loadUsage = element as LoadUsage;

            if (loadUsage != null)
            {
                return(CloneElement(app, loadUsage));
            }

            ModelCurve modelCurve = element as ModelCurve;

            if (modelCurve != null)
            {
                return(CloneElement(app, modelCurve));
            }

            PointLoad pointLoad = element as PointLoad;

            if (pointLoad != null)
            {
                return(CloneElement(app, pointLoad));
            }

            Rebar rebar = element as Rebar;

            if (rebar != null)
            {
                return(CloneElement(app, rebar));
            }

            ReferencePlane referencePlane = element as ReferencePlane;

            if (referencePlane != null)
            {
                return(CloneElement(app, referencePlane));
            }

            Room room = element as Room;

            if (room != null)
            {
                return(CloneElement(app, room));
            }

            RoomTag roomTag = element as RoomTag;

            if (roomTag != null)
            {
                return(CloneElement(app, roomTag));
            }

            SketchPlane sketchPlane = element as SketchPlane;

            if (sketchPlane != null)
            {
                return(CloneElement(app, sketchPlane));
            }

            View3D view3D = element as View3D;

            if (view3D != null)
            {
                return(CloneElement(app, view3D));
            }

            ViewDrafting viewDrafting = element as ViewDrafting;

            if (viewDrafting != null)
            {
                return(CloneElement(app, viewDrafting));
            }

            ViewSection viewSection = element as ViewSection;

            if (viewSection != null)
            {
                return(CloneElement(app, viewSection));
            }

            ViewSheet viewSheet = element as ViewSheet;

            if (viewSheet != null)
            {
                return(CloneElement(app, viewSheet));
            }

            Wall wall = element as Wall;

            if (wall != null)
            {
                return(CloneElement(app, wall));
            }

            // this element has not yet been exposed in the Creation Document class
            //Debug.Assert(false);

            return(null);
        }
        private void Stream( ArrayList data, AreaLoad areaload )
        {
            data.Add( new Snoop.Data.ClassSeparator( typeof( AreaLoad ) ) );

              data.Add( new Snoop.Data.Xyz( "Force 1", areaload.ForceVector1 ) );
              data.Add( new Snoop.Data.Xyz( "Force 2", areaload.ForceVector2 ) );
              data.Add( new Snoop.Data.Xyz( "Force 3", areaload.ForceVector3 ) );

              data.Add( new Snoop.Data.CategorySeparator( "Loops" ) );
              data.Add( new Snoop.Data.Int( "Number of loops", areaload.GetLoops().Count ) );
              for( int i = 0; i < areaload.GetLoops().Count; i++ )
              {
            CurveLoop curveloop = areaload.GetLoops()[i] as CurveLoop;
            CurveLoopIterator iter = curveloop.GetCurveLoopIterator();
            iter.Reset();
            int j = 0;
            while( iter.MoveNext() )
            {
              data.Add( new Snoop.Data.Object( string.Format( "Loop [{0:d}], Curve [{1:d}]", i, j ), ( iter.Current as Curve ) ) );
              j++;
            }
              }

              data.Add( new Snoop.Data.CategorySeparator( "Reference Points" ) );
              data.Add( new Snoop.Data.Int( "Number of reference points", areaload.NumRefPoints ) );
              for( int i = 0; i < areaload.NumRefPoints; i++ )
              {
            data.Add( new Snoop.Data.Xyz( string.Format( "Reference PT [{0:d}]", i ), areaload.GetRefPoint( i ) ) );
              }
        }
        private void Stream( ArrayList data, AreaLoad areaload )
        {
            data.Add( new Snoop.Data.ClassSeparator( typeof( AreaLoad ) ) );

              data.Add( new Snoop.Data.Xyz( "Force 1", areaload.Force1 ) );
              data.Add( new Snoop.Data.Xyz( "Force 2", areaload.Force2 ) );
              data.Add( new Snoop.Data.Xyz( "Force 3", areaload.Force3 ) );

              data.Add( new Snoop.Data.CategorySeparator( "Loops" ) );
              data.Add( new Snoop.Data.Int( "Number of loops", areaload.NumLoops ) );
              for( int i = 0; i < areaload.NumLoops; i++ )
              {
            for( int j = 0; j < areaload.get_NumCurves( i ); j++ )
              data.Add( new Snoop.Data.Object( string.Format( "Loop [{0:d}], Curve [{1:d}]", i, j ), areaload.get_Curve( i, j ) ) );
              }

              data.Add( new Snoop.Data.CategorySeparator( "Reference Points" ) );
              data.Add( new Snoop.Data.Int( "Number of reference points", areaload.NumRefPoints ) );
              for( int i = 0; i < areaload.NumRefPoints; i++ )
              {
            data.Add( new Snoop.Data.Xyz( string.Format( "Reference PT [{0:d}]", i ), areaload.get_RefPoint( i ) ) );
              }
        }
        private void Stream( ArrayList data, AreaLoad areaload )
        {
            data.Add( new Snoop.Data.ClassSeparator( typeof( AreaLoad ) ) );

              data.Add( new Snoop.Data.Xyz( "Force 1", areaload.ForceVector1 ) );
              data.Add( new Snoop.Data.Xyz( "Force 2", areaload.ForceVector2 ) );
              data.Add( new Snoop.Data.Xyz( "Force 3", areaload.ForceVector3 ) );

              data.Add( new Snoop.Data.CategorySeparator( "Loops" ) );
              data.Add( new Snoop.Data.Int( "Number of loops", areaload.GetLoops().Count ) );
              int i = 0, j = 0;
              foreach( var loop in areaload.GetLoops() )
              {
            foreach( var curve in loop )
            {
              data.Add( new Snoop.Data.Object( string.Format( "Loop [{0:d}], Curve [{1:d}]", i, j ), curve ) );
              j++;
            }
            i++;
              }

              data.Add( new Snoop.Data.CategorySeparator( "Reference Points" ) );
              data.Add( new Snoop.Data.Int( "Number of reference points", areaload.NumRefPoints ) );
              for( i = 0; i < areaload.NumRefPoints; i++ )
              {
            data.Add( new Snoop.Data.Xyz( string.Format( "Reference PT [{0:d}]", i ), areaload.GetRefPoint( i ) ) );
              }
        }
Exemple #7
0
 private void store(OleDbConnection cn, uint itemId, string loadCase, AreaLoad obj)
 {
 }
 private void store(OleDbConnection cn, uint itemId, string loadCase, AreaLoad obj)
 {
 }
Exemple #9
0
 public bool Validate(AreaLoad areaLoad)
 {
     return(APIObjectList.GetCategoryId(areaLoad.HostElement) == (BuiltInCategory)(-2000032));
 }
        public static List <SpeckleObject> ToSpeckle(this AreaLoad myAreaLoad)
        {
            var polylines = new List <double[]>();

            var loops = myAreaLoad.GetLoops();

            foreach (var loop in loops)
            {
                var coor = new List <double>();
                foreach (var curve in loop)
                {
                    var points = curve.Tessellate();

                    foreach (var p in points.Skip(1))
                    {
                        coor.Add(p.X / Scale);
                        coor.Add(p.Y / Scale);
                        coor.Add(p.Z / Scale);
                    }
                }

                polylines.Add(coor.ToArray());

                // Only get outer loop
                break;
            }

            var forces = new StructuralVectorThree(new double[3]);

            forces.Value[0] = myAreaLoad.ForceVector1.X;
            forces.Value[1] = myAreaLoad.ForceVector1.Y;
            forces.Value[2] = myAreaLoad.ForceVector1.Z;

            if (myAreaLoad.OrientTo == LoadOrientTo.HostLocalCoordinateSystem)
            {
                var hostTransform = myAreaLoad.HostElement.GetLocalCoordinateSystem();

                var b0 = hostTransform.get_Basis(0);
                var b1 = hostTransform.get_Basis(1);
                var b2 = hostTransform.get_Basis(2);

                var fx = forces.Value[0] * b0.X + forces.Value[1] * b1.X + forces.Value[2] * b2.X;
                var fy = forces.Value[0] * b0.Y + forces.Value[1] * b1.Y + forces.Value[2] * b2.Y;
                var fz = forces.Value[0] * b0.Z + forces.Value[1] * b1.Z + forces.Value[2] * b2.Z;

                forces = new StructuralVectorThree(new double[] { fx, fy, fz });
            }
            else if (myAreaLoad.OrientTo == LoadOrientTo.WorkPlane)
            {
                var workPlane = ((SketchPlane)Doc.GetElement(myAreaLoad.WorkPlaneId)).GetPlane();

                var b0 = workPlane.XVec;
                var b1 = workPlane.YVec;
                var b2 = workPlane.Normal;

                var fx = forces.Value[0] * b0.X + forces.Value[1] * b1.X + forces.Value[2] * b2.X;
                var fy = forces.Value[0] * b0.Y + forces.Value[1] * b1.Y + forces.Value[2] * b2.Y;
                var fz = forces.Value[0] * b0.Z + forces.Value[1] * b1.Z + forces.Value[2] * b2.Z;

                forces = new StructuralVectorThree(new double[] { fx, fy, fz });
            }

            var myLoadCase = new StructuralLoadCase();

            myLoadCase.Name          = myAreaLoad.LoadCaseName;
            myLoadCase.ApplicationId = myAreaLoad.LoadCase.UniqueId;
            switch (myAreaLoad.LoadCategoryName)
            {
            case "Dead Loads":
                myLoadCase.CaseType = StructuralLoadCaseType.Dead;
                break;

            case "Live Loads":
                myLoadCase.CaseType = StructuralLoadCaseType.Live;
                break;

            case "Seismic Loads":
                myLoadCase.CaseType = StructuralLoadCaseType.Earthquake;
                break;

            case "Snow Loads":
                myLoadCase.CaseType = StructuralLoadCaseType.Snow;
                break;

            case "Wind Loads":
                myLoadCase.CaseType = StructuralLoadCaseType.Wind;
                break;

            default:
                myLoadCase.CaseType = StructuralLoadCaseType.Generic;
                break;
            }

            var myLoads = new List <SpeckleObject>();

            var counter = 0;

            foreach (var vals in polylines)
            {
                var myLoad = new Structural2DLoadPanel();
                myLoad.Name        = myAreaLoad.Name;
                myLoad.Value       = vals.ToList();
                myLoad.Loading     = forces;
                myLoad.LoadCaseRef = myLoadCase.ApplicationId;
                myLoad.Closed      = true;

                myLoad.ApplicationId = myAreaLoad.UniqueId + "_" + (counter++).ToString();

                myLoads.Add(myLoad);
            }

            return(myLoads.Concat(new List <SpeckleObject>()
            {
                myLoadCase
            }).ToList());
        }
Exemple #11
0
        /// <summary>
        /// 地域情報取得
        /// </summary>
        /// <returns>地域情報リスト</returns>
        public List <AreaData> GetAreaList()
        {
            var TelgObj = GetTelegrams().ToArray();

            return(AreaLoad.AnalyzeTelegram(TelgObj));
        }