public static bool SetSupports(Frame frame) { robotApp.Interactive = 0; IRobotNode leftSupportnode = (IRobotNode)nodeServer.Get(frame.Supports[0].Position.Id); leftSupportnode.SetLabel(IRobotLabelType.I_LT_SUPPORT, frame.Supports[0].SupportType.ToString()); IRobotNode rightSupportnode = (IRobotNode)nodeServer.Get(frame.Supports[1].Position.Id); rightSupportnode.SetLabel(IRobotLabelType.I_LT_SUPPORT, frame.Supports[1].SupportType.ToString()); robotApp.Interactive = 1; return(true); }
//public static bool SetCases() //{ // robotApp.Interactive = 0; // IRobotSimpleCase deadLoad = caseServer.CreateSimple(caseServer.FreeNumber, "Frame Weight Dead", IRobotCaseNature.I_CN_PERMANENT, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase coverDaedLoad = caseServer.CreateSimple(caseServer.FreeNumber, "Cover Dead", IRobotCaseNature.I_CN_PERMANENT, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase liveLoad = caseServer.CreateSimple(caseServer.FreeNumber, "Live", IRobotCaseNature.I_CN_PERMANENT, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase windLoadLeft = caseServer.CreateSimple(caseServer.FreeNumber, "Wind_left", IRobotCaseNature.I_CN_WIND, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase windLoadRight = caseServer.CreateSimple(caseServer.FreeNumber, "Wind_right", IRobotCaseNature.I_CN_WIND, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase tempretureNegative = caseServer.CreateSimple(caseServer.FreeNumber, "Temprature +VE", IRobotCaseNature.I_CN_TEMPERATURE, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase tempreturePostive = caseServer.CreateSimple(caseServer.FreeNumber, "Temprature -VE", IRobotCaseNature.I_CN_TEMPERATURE, IRobotCaseAnalizeType.I_CAT_STATIC_LINEAR); // IRobotSimpleCase earthQuake = caseServer.CreateSimple(caseServer.FreeNumber, "EarthQuake", IRobotCaseNature.I_CN_SEISMIC, IRobotCaseAnalizeType.I_CAT_DYNAMIC_SEISMIC); // robotApp.Interactive = 1; // //====================== // // live Load = 0.57 // // Shall we Support Snow load or not ? // //Wind load is to be calculated using Bolt Wind calculator // // wind load = q = 2.546 * 10 ^ -5 * v ^ 2 * h ^ 2/7 // //Thermal load is to be calucalted form the eqution , Changes in Unit Stress = E e t ; // // E = 20340 , e = 0.0000117 , t // // Live load = 0.57 // // wind speed = 130 // return true; //} public static bool SetSupports(List <Node> frameNodes) { robotApp.Interactive = 0; IRobotNode leftSupportnode = (IRobotNode)nodeServer.Get(frameNodes[0].Id); leftSupportnode.SetLabel(IRobotLabelType.I_LT_SUPPORT, "Pinned"); IRobotNode rightSupportnode = (IRobotNode)nodeServer.Get(frameNodes[frameNodes.Count - 1].Id); rightSupportnode.SetLabel(IRobotLabelType.I_LT_SUPPORT, "Pinned"); robotApp.Interactive = 1; return(true); }
private void CreateNodes() { IRobotLabel sup = _structure.Labels.Create(IRobotLabelType.I_LT_SUPPORT, "CatiaSupport"); IRobotNodeSupportData sup_data = sup.Data as IRobotNodeSupportData; sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_UX, 1); sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_UY, 1); sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_UZ, 1); sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_RX, 0); sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_RY, 0); sup_data.SetFixed(IRobotNodeSupportFixingDirection.I_NSFD_RZ, 0); _structure.Labels.Store(sup); int nodeId = 100; for (int i = 0; i < _nodeInfo.Count; i++) { Console.WriteLine("Now creating " + nodeId.ToString() + "..."); var n = (AnalyticalNode)_nodeInfo[i]; //create the robot node _nodes.Create(nodeId, n.X, n.Y, n.Z); if (n.IsFixed == true) { Console.WriteLine("Fixing node " + nodeId.ToString() + "..."); IRobotNode node = _nodes.Get(nodeId) as IRobotNode; node.SetLabel(IRobotLabelType.I_LT_NODE_SUPPORT, "CatiaSupport"); } //set the robot node information in the List //to be pushed back into the XML n.Id = nodeId; //the robot node Id //n.displaceX = 0.0; //n.displaceY = 0.0; //n.displaceZ = 0.0; nodeId++; } }
/// <summary> /// 创建连续梁模型 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { //截面宽度,高度 double sectionWidth = double.Parse(txtSectionWdith.Text); double sectionHeight = double.Parse(txtSectionHeight.Text); //材料 // string material=comboBoxMaterial.SelectedItem.ToString(); //几何跨数,单跨长度 int elementAmount = int.Parse(comboBoxElementCount.SelectedItem.ToString()); double elementLength = double.Parse(textBoxElementLength.Text); //----------------------------------------------------------------------- //关闭和ROBOT的交互功能 iapp.Interactive = 0; //创建一个Frame2d类型的项目 iapp.Project.New(IRobotProjectType.I_PT_FRAME_2D); //创建节点 IRobotNodeServer inds = iapp.Project.Structure.Nodes;//获取节点集合 int n1 = startNode; inds.Create(n1, 0, 0, 0); for (int i = 1; i < elementAmount + 1; i++)//创建节点,格式为节点号,x坐标,y坐标,z坐标 { inds.Create(i + 1, i * elementLength, 0, 0); } //创建杆单元 IRobotBarServer ibars = iapp.Project.Structure.Bars;//获取杆单元集合 int b1 = startBar; for (int i = 1; i < elementAmount + 1; i++) { ibars.Create(i, i, i + 1);//创建杆单元,格式为单元号,单元起始节点,单元结束节点 } //设置材料和截面 //给量赋值截面 RobotLabelServer labels; labels = iapp.Project.Structure.Labels; string ColumnSectionName = "Rect. Column 60*100"; IRobotLabel label = labels.Create(IRobotLabelType.I_LT_BAR_SECTION, ColumnSectionName); RobotBarSectionData section; section = (RobotBarSectionData)label.Data; section.ShapeType = IRobotBarSectionShapeType.I_BSST_CONCR_COL_R; RobotBarSectionConcreteData concrete; concrete = (RobotBarSectionConcreteData)section.Concrete; concrete.SetValue(IRobotBarSectionConcreteDataValue.I_BSCDV_COL_B, 0.6); concrete.SetValue(IRobotBarSectionConcreteDataValue.I_BSCDV_COL_H, 1.0); section.CalcNonstdGeometry(); labels.Store(label); RobotSelection selectionBars; selectionBars = iapp.Project.Structure.Selections.Get(IRobotObjectType.I_OT_BAR); //selectionBars.FromText("1 2 3 4 5"); selectionBars.AddOne(1); selectionBars.AddOne(2); selectionBars.AddOne(3); selectionBars.AddOne(4); selectionBars.AddOne(5); //给量赋值截面 string MaterialName = "Concrete 30"; label = labels.Create(IRobotLabelType.I_LT_MATERIAL, MaterialName); RobotMaterialData Material; Material = (RobotMaterialData)label.Data; Material.Type = IRobotMaterialType.I_MT_CONCRETE; Material.E = 30000000000; // Young Material.NU = 1 / 6; // Poisson Material.RO = 25000; // Unit weight Material.Kirchoff = Material.E / (2 * (1 + Material.NU)); iapp.Project.Structure.Labels.Store(label); RobotSelection isel = iapp.Project.Structure.Selections.Create(IRobotObjectType.I_OT_BAR); isel.AddOne(1); isel.AddOne(2); isel.AddOne(3); isel.AddOne(4); isel.AddOne(5); ibars.SetLabel(isel, IRobotLabelType.I_LT_BAR_SECTION, ColumnSectionName); //ibars.SetLabel(isel, IRobotLabelType.I_LT_MATERIAL, MaterialName); //------------------------------------------------ //支撑 //给节点设置支持形式 IRobotNode ind = (IRobotNode)inds.Get(1); ind.SetLabel(IRobotLabelType.I_LT_SUPPORT, "固定"); //ind.SetLabel(IRobotLabelType.I_LT_SUPPORT, comboSupportLeft.Text); geometryCreated = true; //结构几何创建结束 loadsGenerated = false; //结构荷载没有创建 // switch Interactive flag on to allow user to work with Robot GUI //打开robot截面操作 iapp.Interactive = 1; // get the focus back this.Activate(); }
// create the structure geometry //建立结构的集合模型 private void createGeometry(object sender, EventArgs e) { // switch Interactive flag off to avoid any questions that need user interaction in Robot //关闭和ROBOT的交互功能 iapp.Interactive = 0; // create a new project of type Frame 2D //创建一个Frame2d类型的项目 iapp.Project.New(IRobotProjectType.I_PT_FRAME_2D); // create nodes //创建节点 double x = 0, y = 0; double h = System.Convert.ToDouble(editH.Text); //获取高度 double l = System.Convert.ToDouble(editL.Text); //获取长度 double alpha = System.Convert.ToDouble(editA.Text); //获取角度 IRobotNodeServer inds = iapp.Project.Structure.Nodes; //获取节点集合 int n1 = startNode; inds.Create(n1, x, 0, y);//创建节点,格式为节点号,x坐标,y坐标,z坐标 inds.Create(n1 + 1, x, 0, y + h); inds.Create(n1 + 2, x + (l / 2), 0, y + h + Math.Tan(alpha * (Math.PI / 180)) * l / 2); inds.Create(n1 + 3, x + l, 0, y + h); inds.Create(n1 + 4, x + l, 0, 0); // create bars //创建杆单元 IRobotBarServer ibars = iapp.Project.Structure.Bars;//获取杆单元集合 int b1 = startBar; ibars.Create(b1, n1, n1 + 1);//创建杆单元,格式为单元号,单元起始节点,单元结束节点 ibars.Create(b1 + 1, n1 + 1, n1 + 2); beam1 = b1 + 1; ibars.Create(b1 + 2, n1 + 2, n1 + 3); beam2 = b1 + 2; ibars.Create(b1 + 3, n1 + 3, n1 + 4); // set selected bar section label to columns //给柱子设置截面 RobotSelection isel = iapp.Project.Structure.Selections.Create(IRobotObjectType.I_OT_BAR); isel.AddOne(b1); isel.AddOne(b1 + 3); ibars.SetLabel(isel, IRobotLabelType.I_LT_BAR_SECTION, comboColumns.Text); // set selected bar section label to beams //给梁设置截面 isel.Clear(); isel.AddOne(b1 + 1); isel.AddOne(b1 + 2); ibars.SetLabel(isel, IRobotLabelType.I_LT_BAR_SECTION, comboBeams.Text); // set selected support label to nodes //给节点设置支持形式 IRobotNode ind = (IRobotNode)inds.Get(n1); ind.SetLabel(IRobotLabelType.I_LT_SUPPORT, comboSupportLeft.Text); ind = (IRobotNode)inds.Get(n1 + 4); ind.SetLabel(IRobotLabelType.I_LT_SUPPORT, comboSupportRight.Text); geometryCreated = true; //结构几何创建结束 loadsGenerated = false; //结构荷载没有创建 // switch Interactive flag on to allow user to work with Robot GUI //打开robot截面操作 iapp.Interactive = 1; // get the focus back this.Activate(); }