/// <summary> /// 输出壳元命令流 /// </summary> void ExptShells() { for (int k = 0; k < Model.ShellElements.Count; k++) { ShellElementCls shellk = Model.ShellElements[k]; List <int> shellK_nodesInd = shellk.Nodes_no; if (shellK_nodesInd.Count == 3) { Sw.WriteLine(" {0},PLATE,{1},{2},{3},{4},{5},0,3,0", shellk.Ele_no, shellk.Mat, shellk.Prop, shellK_nodesInd[0] + 1, shellK_nodesInd[1] + 1, shellK_nodesInd[2] + 1); } if (shellK_nodesInd.Count == 4) { Sw.WriteLine(" {0},PLATE,{1},{2},{3},{4},{5},{6},3,0", shellk.Ele_no, shellk.Mat, shellk.Prop, shellK_nodesInd[0] + 1, shellK_nodesInd[1] + 1, shellK_nodesInd[2] + 1, shellK_nodesInd[3] + 1); } } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Mesh meshi = new Mesh(); int material = 0; int Thickness = 0; string gnames = null; List <string> gnames2 = null; DA.GetData(0, ref meshi); DA.GetData(1, ref material); DA.GetData(2, ref Thickness); bool bool_gname = DA.GetData(3, ref gnames); if (bool_gname) { string[] namesArray = gnames.Split(','); gnames2 = new List <string>(namesArray); } int meshfaces = meshi.Faces.Count; for (int j = 0; j < meshfaces; j++) { MeshFace fj = meshi.Faces[j]; //List<int> faceVind = new List<int>(); List <Point3d> faceNodes = new List <Point3d>(); faceNodes.Add(meshi.Vertices[fj.A]); faceNodes.Add(meshi.Vertices[fj.B]); faceNodes.Add(meshi.Vertices[fj.C]); if (fj.IsQuad) { faceNodes.Add(meshi.Vertices[fj.D]); } ShellElementCls shelli = new ShellElementCls(fj, material, Thickness); //对网格的每个面建立面单元对象 shelli.Meshi = meshi; //shelli.Nodes_no = faceVind;//对每个面单元对象赋予顶点索引 shelli.Nodes = faceNodes; //对每个面单元对象赋予顶点 shelli.Groupname = gnames2; //对每个面单元赋予组名 DA.SetData(0, new GH_ShellElement(shelli)); } }