示例#1
0
 public DXFPolyline(DXFData aData, int aIndex) : base(aData)
 {
     if (aData.count > 0 && aIndex < aData.count)
     {
         this.Clear();
         this.data.count = this.data.points.Count;
         ArrayList arrayLists = new ArrayList();
         for (int i = 0; i < ((ArrayList)aData.points[aIndex]).Count; i++)
         {
             DXFPoint item = (DXFPoint)((ArrayList)aData.points[aIndex])[i];
             if (item.X < this.data.point.X)
             {
                 this.data.point.X = item.X;
             }
             if (item.Y < this.data.point.Y)
             {
                 this.data.point.Y = item.Y;
             }
             if (item.X > this.data.point1.X)
             {
                 this.data.point1.X = item.X;
             }
             if (item.Y > this.data.point1.Y)
             {
                 this.data.point1.Y = item.Y;
             }
             this.Points.Add(item);
         }
     }
 }
示例#2
0
        protected void SetStyle(DXFData Data)
        {
            this.style       = (HatchStyle)this.data.style;
            this.patternName = DXFTables.sPatternSOLID;
            this.data.flags  = 1;
            if (this.style != HatchStyle.hsSolid)
            {
                this.data.flags = 0;
                switch (this.style)
                {
                case HatchStyle.hsHorizontal:
                {
                    this.PatternName = DXFTables.sPatternLINE;
                    return;
                }

                case HatchStyle.hsVertical:
                {
                    this.PatternName = DXFTables.sPatternLINE;
                    return;
                }

                case HatchStyle.hsFDiagonal:
                {
                    this.PatternName = DXFTables.sPatternANSI31;
                    return;
                }

                case HatchStyle.hsBDiagonal:
                {
                    this.PatternName = DXFTables.sPatternANSI31;
                    return;
                }

                case HatchStyle.hsCross:
                {
                    this.PatternName = DXFTables.sPatternNET;
                    return;
                }

                case HatchStyle.hsDiagCross:
                {
                    this.PatternName = DXFTables.sPatternANSI37;
                    break;
                }

                default:
                {
                    return;
                }
                }
            }
        }
示例#3
0
文件: DXFData.cs 项目: secondii/Yutai
        public object Clone()
        {
            DXFData dXFDatum = new DXFData()
            {
                tag         = this.tag,
                count       = this.count,
                flags       = this.flags,
                style       = this.style,
                selfType    = this.selfType,
                color       = this.color,
                thickness   = this.thickness,
                rotation    = this.rotation,
                text        = (string)this.text.Clone(),
                point       = (DXFPoint)this.point.Clone(),
                point1      = (DXFPoint)this.point1.Clone(),
                point2      = (DXFPoint)this.point2.Clone(),
                point3      = (DXFPoint)this.point3.Clone(),
                radius      = this.radius,
                startAngle  = this.startAngle,
                endAngle    = this.endAngle,
                scale       = (DXFPoint)this.scale.Clone(),
                hAlign      = this.hAlign,
                vAlign      = this.vAlign,
                rWidth      = this.rWidth,
                rHeight     = this.rHeight,
                height      = this.height,
                fScale      = this.fScale,
                points      = new ArrayList(this.points),
                bold        = this.bold,
                italic      = this.italic,
                name        = (string)this.name.Clone(),
                globalWidth = this.globalWidth
            };

            return(dXFDatum);
        }
示例#4
0
        public void ParseToTexts(Rect aRect, ArrayList NewElemes)
        {
            int     num;
            float   x;
            string  pourStr  = "";
            string  str      = "";
            string  str1     = "";
            DXFData dXFDatum = new DXFData();

            if (this.data.rotation == 0f)
            {
                dXFDatum = (DXFData)this.data.Clone();
                if ((float)aRect.X1 > dXFDatum.point.X)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    num     =
                        (int)
                        Math.Round(
                            (double)((float)pourStr.Length * (((float)aRect.X1 - dXFDatum.point.X) / dXFDatum.rWidth)));
                    for (int i = 0; i < num; i++)
                    {
                        str = string.Concat(str, pourStr[i]);
                    }
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.rWidth = this.data.rWidth * (float)num / (float)pourStr.Length;
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
                dXFDatum = (DXFData)this.data.Clone();
                str      = "";
                if ((float)aRect.X2 < dXFDatum.point.X + dXFDatum.rWidth)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    x       = (dXFDatum.point.X + dXFDatum.rWidth - (float)aRect.X2) / dXFDatum.rWidth;
                    num     = (int)Math.Round((double)((float)pourStr.Length * x));
                    DXFPoint dXFPoint = dXFDatum.point;
                    dXFPoint.X = dXFPoint.X + (dXFDatum.rWidth - dXFDatum.rWidth * x);
                    for (int j = pourStr.Length; j < pourStr.Length - num + 1; j--)
                    {
                        str = string.Concat(pourStr[j], str);
                    }
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.rWidth = dXFDatum.rWidth * (float)num / (float)pourStr.Length;
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
            }
            if (this.data.rotation == 90f)
            {
                dXFDatum = (DXFData)this.data.Clone();
                if ((float)aRect.X1 > dXFDatum.point.X)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    num     =
                        (int)
                        Math.Round(
                            (double)((float)pourStr.Length * (((float)aRect.X1 - dXFDatum.point.X) / dXFDatum.rWidth)));
                    for (int k = 0; k < num; k++)
                    {
                        str = string.Concat(str, pourStr[k]);
                    }
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.rWidth = dXFDatum.rWidth * (float)num / (float)pourStr.Length;
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
                dXFDatum = (DXFData)this.data.Clone();
                str      = "";
                if ((float)aRect.X2 < dXFDatum.point.X + dXFDatum.rWidth)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    x       = (dXFDatum.point.X + dXFDatum.rWidth - (float)aRect.X2) / dXFDatum.rWidth;
                    num     = (int)Math.Round((double)((float)pourStr.Length * x));
                    DXFPoint x1 = dXFDatum.point;
                    x1.X = x1.X + (dXFDatum.rWidth - dXFDatum.rWidth * x);
                    DXFPoint y = dXFDatum.point;
                    y.Y = y.Y + (dXFDatum.rWidth - dXFDatum.rWidth * x);
                    for (int l = pourStr.Length; l < pourStr.Length - num + 1; l--)
                    {
                        str = string.Concat(pourStr[l], str);
                    }
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.rWidth = dXFDatum.rWidth * (float)num / (float)pourStr.Length;
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
            }
            if (this.data.rotation == 270f)
            {
                dXFDatum = (DXFData)this.data.Clone();
                if ((float)aRect.Y2 < dXFDatum.point.Y)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    num     =
                        (int)
                        Math.Round(
                            (double)((float)pourStr.Length * ((dXFDatum.point.Y - (float)aRect.Y2) / dXFDatum.rWidth)));
                    for (int m = 0; m < num; m++)
                    {
                        str = string.Concat(str, pourStr[m]);
                    }
                    dXFDatum.rWidth = dXFDatum.rWidth * (float)num / (float)pourStr.Length;
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
                dXFDatum = this.data;
                str      = "";
                if ((float)aRect.Y1 > dXFDatum.point.Y - dXFDatum.rWidth)
                {
                    pourStr = DXFExport.GetPourStr(dXFDatum.text);
                    str1    = dXFDatum.text.Substring(0, dXFDatum.text.Length - pourStr.Length);
                    x       = (dXFDatum.rWidth - dXFDatum.point.Y + (float)aRect.Y1) / dXFDatum.rWidth;
                    num     = (int)Math.Round((double)((float)pourStr.Length * x));
                    DXFPoint y1 = dXFDatum.point;
                    y1.Y = y1.Y - (dXFDatum.rWidth - dXFDatum.rWidth * x);
                    for (int n = pourStr.Length; n < pourStr.Length - num + 1; n--)
                    {
                        str = string.Concat(pourStr[n], str);
                    }
                    dXFDatum.rWidth = dXFDatum.rWidth * (float)num / (float)pourStr.Length;
                    pourStr         = string.Concat(str1, str);
                    dXFDatum.text   = pourStr;
                    NewElemes.Add(new DXFMText(dXFDatum));
                }
            }
        }
示例#5
0
 public DXFMText(DXFData aData) : base(aData)
 {
 }
示例#6
0
 public DXFPolyBezier(DXFData aData, int aIndex) : base(aData, aIndex)
 {
 }
示例#7
0
 public DXFLine(DXFData aData) : base(aData)
 {
 }
示例#8
0
 public DXFFigure(DXFData dt)
 {
     this.layer = "0";
     this.data  = (DXFData)dt.Clone();
 }
示例#9
0
 public DXFFigure()
 {
     this.layer = "0";
     this.data  = new DXFData();
 }
示例#10
0
 public DXFArc(DXFData aData) : base(aData)
 {
     this.type = (ArcType)aData.selfType;
 }
示例#11
0
 public DXFEllipse(DXFData aData, bool aEllipse) : base(aData)
 {
     this.ellipse = false;
     this.ellipse = aEllipse;
 }
示例#12
0
        public DXFHatch(DXFData aData) : base(aData)
        {
            int j;

            this.boundaries   = new ArrayList();
            this.patternName  = "";
            this.boundaryType = (HatchBoundaryType)aData.selfType;
            DXFPoint dXFPoint = new DXFPoint();

            base.Layer = "0";
            this.SetStyle(aData);
            this.boundaries.Clear();
            switch (this.boundaryType)
            {
            case HatchBoundaryType.hbtPolyPolyline:
            {
                if (aData.count > 0)
                {
                    for (int i = 0; i < aData.points.Count; i++)
                    {
                        if (((ArrayList)aData.points[i]).Count >= 3)
                        {
                            this.boundaries.Add(new ArrayList());
                            for (j = 0; j < ((ArrayList)aData.points[i]).Count; j++)
                            {
                                dXFPoint = (DXFPoint)((ArrayList)aData.points[i])[j];
                                if (j < 2 || dXFPoint.X != ((DXFPoint)((ArrayList)aData.points[i])[j - 2]).X ||
                                    dXFPoint.Y != ((DXFPoint)((ArrayList)aData.points[i])[j - 2]).Y)
                                {
                                    ((ArrayList)this.boundaries[this.boundaries.Count - 1]).Add(dXFPoint.Clone());
                                }
                                else
                                {
                                    dXFPoint = null;
                                }
                            }
                            if (((ArrayList)this.boundaries[this.boundaries.Count - 1]).Count < 3)
                            {
                                for (j = 0;
                                     j < ((ArrayList)this.boundaries[this.boundaries.Count - 1]).Count - 1;
                                     j++)
                                {
                                    ((ArrayList)this.boundaries[this.boundaries.Count - 1])[j] = null;
                                }
                                this.boundaries.Remove((ArrayList)this.boundaries[this.boundaries.Count - 1]);
                            }
                        }
                    }
                }
                return;
            }

            case HatchBoundaryType.hbtCircle:
            {
                this.bndAmount = 1;
                return;
            }

            case HatchBoundaryType.hbtEllipse:
            {
                this.bndAmount = 1;
                return;
            }
            }
            this.bndAmount = 0;
        }
示例#13
0
 public DXFRectangle(DXFData aData) : base(aData)
 {
 }