/// <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); }