Пример #1
0
 public PipeSection(double width, double height, HorizontalPos horPos, VerticalPos vtPos, double thick)
     : base(SecShape.RectangleRing)
 {
     this._width      = width;
     this._height     = height;
     this._thick      = thick;
     this._horPos     = horPos;
     this._vtPos      = vtPos;
     base._segCount   = 4;
     base._offX       = base.HorOffset(this._horPos, this._width);
     base._offY       = base.VtOffset(this._vtPos, this._height);
     base._vtxs       = new double[(base._segCount + 1) * 4];
     base._vtxs[0]    = this._width / 2.0;
     base._vtxs[1]    = this._height / 2.0;
     base._vtxs[2]    = (this._width / 2.0) - this._thick;
     base._vtxs[3]    = (this._height / 2.0) - this._thick;
     base._vtxs[4]    = this._width / 2.0;
     base._vtxs[5]    = -(this._height / 2.0);
     base._vtxs[6]    = base._offX + ((this._width / 2.0) - this._thick);
     base._vtxs[7]    = -((this._height / 2.0) - this._thick);
     base._vtxs[8]    = -(this._width / 2.0);
     base._vtxs[9]    = -(this._height / 2.0);
     base._vtxs[10]   = -((this._width / 2.0) - this._thick);
     base._vtxs[11]   = -((this._height / 2.0) - this._thick);
     base._vtxs[12]   = -(this._width / 2.0);
     base._vtxs[13]   = this._height / 2.0;
     base._vtxs[14]   = -((this._width / 2.0) - this._thick);
     base._vtxs[15]   = (this._height / 2.0) - this._thick;
     base._vtxs[0x10] = this._width / 2.0;
     base._vtxs[0x11] = this._height / 2.0;
     base._vtxs[0x12] = (this._width / 2.0) - this._thick;
     base._vtxs[0x13] = (this._height / 2.0) - this._thick;
 }
Пример #2
0
        private double _width;           // 管线管径宽度

        // Methods
        #region 管线截面构造函数
        public PipeSection(IPolygon SecGeometry, double Thick)
            : base(SecShape.PolygonRing)
        {
            this._horPos = HorizontalPos.Center;
            this._vtPos  = VerticalPos.Center;
            base._offX   = 0.0;
            base._offY   = 0.0;
        }
Пример #3
0
        /// <summary>
        /// 计算水平偏移
        /// </summary>
        /// <param name="horPos">水平偏移参数</param>
        /// <param name="width">宽度</param>
        /// <returns></returns>
        protected double HorOffset(HorizontalPos horPos, double width)
        {
            switch (horPos)
            {
            case HorizontalPos.Left:
                return(0.5 * width);

            case HorizontalPos.Right:
                return(-0.5 * width);
            }
            return(0.0);
        }
Пример #4
0
        public PipeSection(double dia, int segCount, HorizontalPos horPos, VerticalPos vtPos, double thick)
            : base(SecShape.CircleRing)
        {
            this._width    = dia;
            this._height   = 0.0;
            this._thick    = thick;
            this._horPos   = horPos;
            this._vtPos    = vtPos;
            base._segCount = segCount;
            base._offX     = base.HorOffset(this._horPos, this._width);
            base._offY     = base.VtOffset(this._vtPos, this._width);
            double num  = 6.2831853071795862;
            double num2 = 6.2831853071795862 / ((double)base.SegCount);

            base._vtxs = new double[(base._segCount + 1) * 4];
            for (int i = 0; i <= base._segCount; i++)
            {
                base._vtxs[i * 4]       = Math.Cos(num - (i * num2)) * (this._width / 2.0);
                base._vtxs[(i * 4) + 1] = Math.Sin(num - (i * num2)) * (this._width / 2.0);
                base._vtxs[(i * 4) + 2] = Math.Cos(num - (i * num2)) * ((this._width / 2.0) - this._thick);
                base._vtxs[(i * 4) + 3] = Math.Sin(num - (i * num2)) * ((this._width / 2.0) - this._thick);
            }
        }
Пример #5
0
        public PipeSection(double width, double height, HorizontalPos horPos, VerticalPos vtPos, double thick, int flag)
        {
            this._width  = width;
            this._height = height;
            this._thick  = thick;
            this._horPos = horPos;
            this._vtPos  = vtPos;
            if (height == 0.0)
            {
                // 根据管径分配片面数  FX 2014.09.18
                //base._segCount = DrawGeometry.PipeSegments;
                //base._segCount = Int32.Parse(Config.GetConfigValue("PipeSegCount"));

                //if (width <= 0.05)
                //{
                //    base._segCount = 3;
                //}
                //else if (0.05 < width && width <= 0.1)
                //{
                //    base._segCount = 5;
                //}
                //else if (0.1 < width && width <= 1)
                //{
                //    base._segCount = 6;
                //}
                //else if (width > 1)
                //{
                //    base._segCount = 8;
                //}
                if (width <= 0.1)
                {
                    base._segCount = 5;
                }
                else if (0.1 < width && width <= 1)
                {
                    base._segCount = 6;
                }
                else if (width > 1)
                {
                    base._segCount = 8;
                }

                base._secShape = SecShape.CircleRing;
                base._offX     = base.HorOffset(this._horPos, this._width);
                base._offY     = base.VtOffset(this._vtPos, this._width);
                double num  = 6.2831853071795862;
                double num2 = 6.2831853071795862 / ((double)base.SegCount);
                base._vtxs = new double[(base._segCount + 1) * 4];
                for (int i = 0; i <= base._segCount; i++)
                {
                    base._vtxs[i * 4]       = Math.Cos(num - (i * num2)) * (this._width / 2.0);
                    base._vtxs[(i * 4) + 1] = Math.Sin(num - (i * num2)) * (this._width / 2.0);
                    base._vtxs[(i * 4) + 2] = Math.Cos(num - (i * num2)) * ((this._width / 2.0) - this._thick);
                    base._vtxs[(i * 4) + 3] = Math.Sin(num - (i * num2)) * ((this._width / 2.0) - this._thick);
                }
            }
            else
            {
                base._segCount   = 4;
                base._secShape   = SecShape.RectangleRing;
                base._offX       = base.HorOffset(this._horPos, this._width);
                base._offY       = base.VtOffset(this._vtPos, this._height);
                base._vtxs       = new double[(base._segCount + 1) * 4];
                base._vtxs[0]    = this._width / 2.0;
                base._vtxs[1]    = this._height / 2.0;
                base._vtxs[2]    = (this._width / 2.0) - this._thick;
                base._vtxs[3]    = (this._height / 2.0) - this._thick;
                base._vtxs[4]    = this._width / 2.0;
                base._vtxs[5]    = -(this._height / 2.0);
                base._vtxs[6]    = base._offX + ((this._width / 2.0) - this._thick);
                base._vtxs[7]    = -((this._height / 2.0) - this._thick);
                base._vtxs[8]    = -(this._width / 2.0);
                base._vtxs[9]    = -(this._height / 2.0);
                base._vtxs[10]   = -((this._width / 2.0) - this._thick);
                base._vtxs[11]   = -((this._height / 2.0) - this._thick);
                base._vtxs[12]   = -(this._width / 2.0);
                base._vtxs[13]   = this._height / 2.0;
                base._vtxs[14]   = -((this._width / 2.0) - this._thick);
                base._vtxs[15]   = (this._height / 2.0) - this._thick;
                base._vtxs[0x10] = this._width / 2.0;
                base._vtxs[0x11] = this._height / 2.0;
                base._vtxs[0x12] = (this._width / 2.0) - this._thick;
                base._vtxs[0x13] = (this._height / 2.0) - this._thick;
            }
        }