Ejemplo n.º 1
0
 /// <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);
         }
     }
 }
Ejemplo n.º 2
0
        /// <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));
            }
        }