コード例 #1
0
        private void UpdateSectionParasByParts(MidasCustomSectionEntity section)
        {
            double minx = double.MaxValue;
            double miny = double.MaxValue;
            double maxx = double.MinValue;
            double maxy = double.MinValue;

            foreach (var part in _midasPorterData.Parts.Where(p => p.SectionName == section.SecName))
            {
                double xc = 0, yc = 0, h = 0, w = 0;
                //TODO consider rotation later, usually not necessary
                if (part.ShapeName.Contains("Plate"))
                {
                    xc = double.Parse(part.GeoDef["XCenter"]);
                    yc = double.Parse(part.GeoDef["YCenter"]);
                    h  = double.Parse(part.GeoDef["Thickness"]);
                    w  = double.Parse(part.GeoDef["Width"]);
                }
                else if (part.ShapeName.Contains("Rectangle"))
                {
                    xc = double.Parse(part.GeoDef["XCenter"]);
                    yc = double.Parse(part.GeoDef["YCenter"]);
                    h  = double.Parse(part.GeoDef["Height"]);
                    w  = double.Parse(part.GeoDef["Width"]);
                }
                else
                {
                    Trace.WriteLine("possible error with section part.");
                    continue;
                }

                minx = Math.Min(xc - w / 2, minx);
                miny = Math.Min(yc - h / 2, miny);
                maxx = Math.Max(xc + w / 2, maxx);
                maxy = Math.Max(yc + h / 2, maxy);
            }

            section.Cyp   = maxx;
            section.Cym   = minx;
            section.Czp   = maxy;
            section.Czm   = miny;
            section.Ds[0] = maxx - minx;
            section.Ds[1] = maxy - miny;

            section.Cy = Math.Max(-minx, maxx);
            section.Cz = Math.Max(-miny, maxy);
        }
コード例 #2
0
        private void WriteSectionInfoToMGT(StreamWriter writer)
        {
            writer.WriteLine("*SECTION");
            foreach (MidasSectionEntity item in _midasPorterData.SecDict.Values)
            {
                if (item is MidasRectangleSectionEntity)
                {
                    MidasRectangleSectionEntity section = item as MidasRectangleSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    //writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write(section.Offset + ",");
                    writer.Write(section.ICent + ",");
                    writer.Write(section.IRef + ",");
                    writer.Write(section.IHorizontalZ + ",");
                    writer.Write(section.HUser + ",");
                    writer.Write(section.IVertical + ",");
                    writer.Write(section.VUser + ",");
                    writer.Write(section.ShearDeformation?"YES,":"NO,");
                    writer.Write(section.WrinkleEffect?"YES,":"NO,");
                    writer.Write("SB,");
                    writer.Write("2,");
                    writer.Write(section.Height + "," + section.Width + ",");
                    writer.WriteLine("0,0,0,0,0,0,0,0");
                }
                if (item is MidasAngleSectionEntity)
                {
                    MidasAngleSectionEntity section = item as MidasAngleSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("L,");
                    writer.Write("2,");
                    writer.Write(section.H + "," + section.B + "," + section.Tw + "," + section.Tf + ",");
                    writer.WriteLine("0,0,0,0,0,0");
                }
                if (item is MidasBoxSectionEntity)
                {
                    MidasBoxSectionEntity section = item as MidasBoxSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("B,");
                    writer.Write("2,");
                    writer.Write(section.H + "," + section.B + "," + section.Tw + "," + section.Tf1 + "," + section.C + "," + section.Tf2 + ",");
                    writer.WriteLine("0,0,0,0");
                }
                if (item is MidasCircleSectionEntity)
                {
                    MidasCircleSectionEntity section = item as MidasCircleSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("SR,");
                    writer.Write("2,");
                    writer.Write(section.Diameter + ",");
                    writer.WriteLine("0,0,0,0,0,0,0,0,0");
                }
                if (item is MidasDoubleAngleSectionEntity)
                {
                    MidasDoubleAngleSectionEntity section = item as MidasDoubleAngleSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("2L,");
                    writer.Write("2,");
                    writer.Write(section.H + "," + section.B + "," + section.Tw + "," + section.Tf + "," + section.C + ",");
                    writer.WriteLine("0,0,0,0,0");
                }
                if (item is MidasGongSectionEntity)
                {
                    MidasGongSectionEntity section = item as MidasGongSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("H,");
                    writer.Write("2,");
                    writer.Write(section.H + "," + section.B1 + "," + section.TW + "," + section.T1 + "," + section.B2 + "," + section.T2 + ",");
                    writer.WriteLine("0,0,0,0");
                }
                if (item is MidasPipeSectionEntity)
                {
                    MidasPipeSectionEntity section = item as MidasPipeSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("P,");
                    writer.Write("2,");
                    writer.Write(section.D + "," + section.Tw + ",");
                    writer.WriteLine("0,0,0,0,0,0,0,0");
                }
                if (item is MidasTeeSectionEntity)
                {
                    MidasTeeSectionEntity section = item as MidasTeeSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    if (section.IsUnderT)
                    {
                        writer.Write("UDT,");
                        writer.Write("2,");
                        writer.Write(section.H + "," + section.b1 + "," + section.b2 + "," + section.Tw + "," + section.Tf + ",");
                        writer.WriteLine("0,0,0,0,0");
                    }
                    else
                    {
                        writer.Write("T,");
                        writer.Write("2,");
                        writer.Write(section.H + "," + section.B + "," + section.Tw + "," + section.Tf + ",");
                        writer.WriteLine("0,0,0,0,0,0");
                    }
                }
                if (item is MidasChannelSectionEntity)
                {
                    MidasChannelSectionEntity section = item as MidasChannelSectionEntity;
                    writer.Write(section.Number + ",DBUSER,");
                    writer.Write(section.SecName + ",");
                    writer.Write("CC,0,0,0,0,0,0,YES,NO,");
                    writer.Write("CC,");
                    writer.Write("2,");
                    writer.Write(section.H + "," + section.B + "," + section.Tw + "," + section.r + "," + section.d + ",");
                    writer.WriteLine("0,0,0,0,0");
                }
            }
            writer.WriteLine();

            if (_midasPorterData.SecDict.Values.Any(s => s is MidasCustomSectionEntity))
            {
                writer.WriteLine("*SECT-PSCVALUE");
            }
            foreach (MidasSectionEntity item in _midasPorterData.SecDict.Values)
            {
                if (item is MidasCustomSectionEntity)
                {
                    MidasCustomSectionEntity section = item as MidasCustomSectionEntity;
                    writer.Write("SECT=" + section.Number + "," + section.MidasType + ",");
                    writer.Write(section.SecName + "," + section.Offset + "," + "0,0,0,0,0,0,");
                    writer.Write((section.bSD ? "YES" : "NO") + "," + (section.bWE ? "YES" : "NO") + "," + section.MidasShape + ",YES,YES");
                    UpdateSectionParasByParts(section);
                    writer.WriteLine();

                    writer.WriteLine("    " + section.Area + "," + section.Asy + "," + section.Asz + "," + section.Ixx + "," + section.Iyy + "," + section.Izz);
                    writer.WriteLine("    " + section.Cyp + "," + section.Cym + "," + section.Czp + "," + section.Czm + "," + section.Qyb + "," + section.Qzb + "," + section.PeriOut + "," + section.PeriIn + "," + section.Cy + "," + section.Cz);

                    writer.Write("    ");
                    for (int i = 0; i < 4; i++)
                    {
                        writer.Write(section.Ys[i] + ",");
                    }
                    for (int i = 0; i < 4; i++)
                    {
                        writer.Write(section.Zs[i] + ",");
                    }
                    //writer.Write(section.Zyy + "," + section.Zzz);
                    writer.WriteLine();
                }
            }
            writer.WriteLine();
        }