Beispiel #1
0
        /// <summary>
        /// Map the weld IDs and operation Ids corresponding to ids used by Idea
        /// </summary>
        public void MapWeldsIdsAndOperationIds()
        {
            // no direct relation between weld ID and operation is present.
            // therefore we will derive this relation by specificating of unique sizes for welds
            // as adjustment of the template
            //steps:
            // 0 temporary store welds sizes
            // 1 Set unique welds sizes
            // 2 Analyse
            // 3 match weld and operation
            // 4 reset weld sizes

            // 0+1 temporary store welds sizes and set unique weld sizes

            //4.Modify template set unique weldsizes
            //4.1.in cornerjoints there are weldless workshop operations
            List <CutBeamByBeamData> cut = new List <CutBeamByBeamData>();
            ConnectionTemplate       connectionTemplate1 = this.connectionTemplateGenerator.connectionTemplate;

            foreach (var c in connectionTemplate1.Properties.Items)
            {
                if (c.Value.GetType() == typeof(CutBeamByBeamData))
                {
                    CutBeamByBeamData cutBeamByBeamData = (c.Value as CutBeamByBeamData);
                    if (cutBeamByBeamData.FlangesWeld != null)
                    {
                        cut.Add(cutBeamByBeamData);
                    }
                }
            }

            //4.2
            double flangesize = 0.001; //flange odd
            double websize    = 0.002; //web even
            List <ConnectingMember> conlist2 = joint.attachedMembers.OfType <ConnectingMember>().ToList();

            foreach (ConnectingMember con in conlist2)
            {
                foreach (CutBeamByBeamData c in cut)
                {
                    string modifiedObject = c.ModifiedObjectPath;
                    string modifiedId     = modifiedObject.Remove(0, 18).Remove(1, 1);
                    int    modId          = Convert.ToInt32(modifiedId);

                    if (con.ideaOperationID == modId)
                    {
                        if (con.flangeWeld.weldType == Weld.WeldType.Fillet)
                        {
                            c.FlangesWeld.WeldType = WeldTypeCode.Fillet;
                            c.Weld.WeldType        = WeldTypeCode.Fillet;
                        }
                        else
                        {
                            c.FlangesWeld.WeldType = WeldTypeCode.DoubleFillet;
                            c.Weld.WeldType        = WeldTypeCode.DoubleFillet;
                        }
                        c.FlangesWeld.Size  = flangesize;        //m
                        con.flangeWeld.size = flangesize * 1000; //m to mm
                        c.Weld.Size         = websize;           //m
                        con.webWeld.size    = websize * 1000;    //m to mm
                    }
                }
                flangesize = flangesize + 0.002; //flange odd
                websize    = websize + 0.002;    //web evem
            }



            // 2 run analysis
            this.RunAnalysis();
            //8. get connection data
            IdeaRS.OpenModel.Connection.ConnectionData connectionData = this.GetConnectionData();


            // 3 match weld and operaton:
            foreach (IdeaRS.OpenModel.Connection.WeldData weldData in connectionData.Welds)
            {
                foreach (ConnectingMember con in this.joint.attachedMembers.OfType <ConnectingMember>().ToList())
                {
                    if (weldData.Thickness == (con.flangeWeld.size) / 1000)//compare m with mm
                    {
                        con.flangeWeld.Ids.Add(weldData.Id);
                    }
                    else
                    {
                        if (weldData.Thickness == (con.webWeld.size) / 1000)//compare m with mm
                        {
                            con.webWeld.Ids.Add(weldData.Id);
                        }
                    }
                }
            }

            // 5 reset original weldsizes
            double startsize = this.joint.project.minthroat;

            foreach (ConnectingMember con in this.joint.attachedMembers.OfType <ConnectingMember>().ToList())
            {
                con.flangeWeld.size = startsize;
                con.webWeld.size    = startsize;
            }
            this.connectionTemplateGenerator.UpdateTemplate(joint);
        }
        static private OpenModel CreateConnectionGeometry(OpenModel openModel)
        {
            //Get geometrical point
            IdeaRS.OpenModel.Geometry3D.Point3D point = openModel.Point3D.Find(p => p.Name.Equals("N2", StringComparison.InvariantCultureIgnoreCase));

            //Create a new connection point
            IdeaRS.OpenModel.Connection.ConnectionPoint connectionPoint = new IdeaRS.OpenModel.Connection.ConnectionPoint();

            connectionPoint.Node = new ReferenceElement(point);
            connectionPoint.Name = point.Name;
            connectionPoint.Id   = openModel.GetMaxId(connectionPoint) + 1;

            //create the new  connection data
            var newConnectionData = new IdeaRS.OpenModel.Connection.ConnectionData();

            //create list for beams
            newConnectionData.Beams = new List <IdeaRS.OpenModel.Connection.BeamData>();

            {
                //member1D - column
                var columnMember = openModel.Member1D.Find(x => x.Id == 1);
                IdeaRS.OpenModel.Connection.ConnectedMember connectedColumn = new IdeaRS.OpenModel.Connection.ConnectedMember
                {
                    Id           = columnMember.Id,
                    MemberId     = new ReferenceElement(columnMember),
                    IsContinuous = true,
                };
                connectionPoint.ConnectedMembers.Add(connectedColumn);

                IdeaRS.OpenModel.Connection.BeamData columnData = new IdeaRS.OpenModel.Connection.BeamData
                {
                    Name                     = "Column",
                    Id                       = 1,
                    OriginalModelId          = columnMember.Id.ToString(),
                    IsAdded                  = false,
                    MirrorY                  = false,
                    RefLineInCenterOfGravity = false,
                };

                newConnectionData.Beams.Add(columnData);
            }

            {
                //member1D - beam
                IdeaRS.OpenModel.Connection.BeamData beamData = new IdeaRS.OpenModel.Connection.BeamData
                {
                    Name                     = "Beam",
                    Id                       = 2,
                    OriginalModelId          = "2",
                    IsAdded                  = false,
                    MirrorY                  = false,
                    RefLineInCenterOfGravity = false,
                };
                newConnectionData.Beams.Add(beamData);

                var column = openModel.Member1D.Find(x => x.Id == 2);
                IdeaRS.OpenModel.Connection.ConnectedMember connectedBeam = new IdeaRS.OpenModel.Connection.ConnectedMember
                {
                    Id           = column.Id,
                    MemberId     = new ReferenceElement(column),
                    IsContinuous = false,
                };
                connectionPoint.ConnectedMembers.Add(connectedBeam);
            }

            openModel.Connections.Add(newConnectionData);
            openModel.AddObject(connectionPoint);

            return(openModel);
        }