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; }
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; }
/// <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); }
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); } }
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; } }