using System.Collections.Generic; using System.Linq; using WW.Cad.Model.Entities; using WW.Math; namespace TProduct.PumpGraph.Dxf { public partial class LxpFeatChart : FeatChart { #region 绘制曲线 protected void DrawAllCurves() { if (_curveInfoQH == null) return; var wihte_color_entity = TProduct.PumpGraph.Dxf.AutoCadHelper.WhiteColor; DrawSingleCurveQH(wihte_color_entity, _curveInfoQH, this._defaultFeatCurveWidth, null); if (_curveInfoQE != null) DrawSingleCurveQE(wihte_color_entity, _curveInfoQE, this._defaultFeatCurveWidth, null); if (_curveInfoQP != null) DrawSingleCurveQP(wihte_color_entity, _curveInfoQP, this._defaultFeatCurveWidth, null); } #endregion protected virtual DxfSpline DrawSingleCurveQH( WW.Cad.Model.Entities.EntityColor colorCurve, List curvePoints, short curveWidth = 0, WW.Cad.Model.Tables.DxfLayer layer = null) { if (curvePoints == null || curvePoints.Count() < 3) return null; DxfSpline dxfSpline = new DxfSpline(); dxfSpline.Degree = 3; if (curveWidth > 0) dxfSpline.LineWeight = curveWidth; else dxfSpline.LineWeight = _defaultFeatCurveWidth; dxfSpline.Color = colorCurve; for (int i = 0; i < curvePoints.Count; i++) { if (_isTrimCurveOverCoord) { if (this._coordinateParas.CoordMinQ > curvePoints[i].X || this._coordinateParas.DispMaxQ() < curvePoints[i].X) continue; if (this._coordinateParas.CoordMinH > curvePoints[i].Y || this._coordinateParas.DispMaxH() < curvePoints[i].Y) continue; } Point3D pt3D = new Point3D(); pt3D.X = MapRealToPictQ(curvePoints[i].X); pt3D.Y = MapRealToPictH(curvePoints[i].Y); pt3D.Z = 0; dxfSpline.FitPoints.Add(pt3D); } if (dxfSpline.FitPoints.Count < 3) return null; if (layer != null) dxfSpline.Layer = layer; _dxfFileModel.Entities.Add(dxfSpline); // DxfLineType dashedLineType = new DxfLineType("Dashed", 0.5d, -0.3d); // DxfLineType dashedLineType = new DxfLineType("ByLayer", 1d, -0.3d); // _dxfFileModel.LineTypes.Add(dashedLineType); //_dxfFileModel.Colors.Add(colorCurve); return dxfSpline; } protected virtual DxfSpline DrawSingleCurveQE( WW.Cad.Model.Entities.EntityColor colorCurve, List curvePoints, short curveWidth = 0, WW.Cad.Model.Tables.DxfLayer layer = null) { if (curvePoints == null || curvePoints.Count() < 3) return null; DxfSpline dxfSpline = new DxfSpline(); dxfSpline.Degree = 3; if (curveWidth > 0) dxfSpline.LineWeight = curveWidth; else dxfSpline.LineWeight = _defaultFeatCurveWidth; dxfSpline.Color = colorCurve; // DxfLineType dashedLineType = new DxfLineType("Dashed", 0.5d, -0.3d); // DxfLineType dashedLineType = new DxfLineType("ByLayer", 1d, -0.3d); // _dxfFileModel.LineTypes.Add(dashedLineType); //_dxfFileModel.Colors.Add(colorCurve); for (int i = 0; i < curvePoints.Count; i++) { if (_isTrimCurveOverCoord) { if (this._coordinateParas.CoordMinQ > curvePoints[i].X || this._coordinateParas.DispMaxQ() < curvePoints[i].X) continue; if (this._coordinateParas.CoordMinE > curvePoints[i].Y || this._coordinateParas.DispMaxE() < curvePoints[i].Y) continue; } Point3D pt3D = new Point3D(); pt3D.X = MapRealToPictQ(curvePoints[i].X); pt3D.Y = MapRealToPictE(curvePoints[i].Y); pt3D.Z = 0; dxfSpline.FitPoints.Add(pt3D); } if (layer != null) dxfSpline.Layer = layer; if (dxfSpline.FitPoints.Count < 3) return null; _dxfFileModel.Entities.Add(dxfSpline); return dxfSpline; } protected virtual DxfSpline DrawSingleCurveQP( WW.Cad.Model.Entities.EntityColor colorCurve, List curvePoints, short curveWidth = 0, WW.Cad.Model.Tables.DxfLayer layer = null) { if (curvePoints == null || curvePoints.Count() < 3) return null; DxfSpline dxfSpline = new DxfSpline(); dxfSpline.Degree = 3; if (curveWidth > 0) dxfSpline.LineWeight = curveWidth; else dxfSpline.LineWeight = _defaultFeatCurveWidth; dxfSpline.Color = colorCurve; // DxfLineType dashedLineType = new DxfLineType("Dashed", 0.5d, -0.3d); // DxfLineType dashedLineType = new DxfLineType("ByLayer", 1d, -0.3d); // _dxfFileModel.LineTypes.Add(dashedLineType); //_dxfFileModel.Colors.Add(colorCurve); for (int i = 0; i < curvePoints.Count; i++) { if (_isTrimCurveOverCoord) { if (this._coordinateParas.CoordMinQ > curvePoints[i].X || this._coordinateParas.DispMaxQ() < curvePoints[i].X) continue; if (this._coordinateParas.CoordMinP > curvePoints[i].Y || this._coordinateParas.DispMaxP() < curvePoints[i].Y) continue; } Point3D pt3D = new Point3D(); pt3D.X = MapRealToPictQ(curvePoints[i].X); pt3D.Y = MapRealToPictP(curvePoints[i].Y); pt3D.Z = 0; dxfSpline.FitPoints.Add(pt3D); } if (layer != null) dxfSpline.Layer = layer; if (dxfSpline.FitPoints.Count < 3) return null; _dxfFileModel.Entities.Add(dxfSpline); return dxfSpline; } protected virtual DxfSpline DrawSingleCurveQNPSH( WW.Cad.Model.Entities.EntityColor colorCurve, List curvePoints, short curveWidth = 0, WW.Cad.Model.Tables.DxfLayer layer = null) { DxfSpline dxfSpline = new DxfSpline(); dxfSpline.Degree = 3; if (curveWidth > 0) dxfSpline.LineWeight = curveWidth; else dxfSpline.LineWeight = _defaultFeatCurveWidth; dxfSpline.Color = colorCurve; // DxfLineType dashedLineType = new DxfLineType("Dashed", 0.5d, -0.3d); // DxfLineType dashedLineType = new DxfLineType("ByLayer", 1d, -0.3d); // _dxfFileModel.LineTypes.Add(dashedLineType); //_dxfFileModel.Colors.Add(colorCurve); for (int i = 0; i < curvePoints.Count; i++) { if (_isTrimCurveOverCoord) { if (this._coordinateParas.CoordMinQ > curvePoints[i].X || this._coordinateParas.DispMaxQ() < curvePoints[i].X) continue; if (this._coordinateParas.CoordMinNPSH > curvePoints[i].Y || this._coordinateParas.DispMaxNPSH() < curvePoints[i].Y) continue; } Point3D pt3D = new Point3D(); pt3D.X = MapRealToPictQ(curvePoints[i].X); pt3D.Y = MapRealToPictNPSH(curvePoints[i].Y); pt3D.Z = 0; dxfSpline.FitPoints.Add(pt3D); } if (layer != null) dxfSpline.Layer = layer; if (dxfSpline.FitPoints.Count < 3) return dxfSpline; _dxfFileModel.Entities.Add(dxfSpline); return dxfSpline; } } }