/// <summary> /// 绘制主梁左侧的标注; /// </summary> public void DrawYMainLeftDim() { List <Point> leftDimPointList = new List <Point>(); foreach (CMrPart mrPart in mMrPartList) { CMrDimSet partDimSet = mrPart.GetCylinderDoorTopViewInfo().GetYLeftPartDim(); CMrDimSet boltDimSet = mrPart.GetCylinderDoorTopViewInfo().GetYLeftBoltDim(); if (partDimSet != null && partDimSet.Count > 0) { leftDimPointList.AddRange(partDimSet.GetDimPointList()); } if (boltDimSet != null && boltDimSet.Count > 0) { leftDimPointList.AddRange(boltDimSet.GetDimPointList()); } } //把最大Y值和最小Y值的点加进来; if (mMaxYPart != null) { leftDimPointList.Add(mMaxYPart.GetMaxYMinXPoint()); } if (mMinYPart != null) { leftDimPointList.Add(mMinYPart.GetMinYMinXPoint()); } //把檩托板的点加进来; List <CMrDimSet> mrDimSetList = GetMrApronPlateDimSet(1); foreach (CMrDimSet mrDimSet in mrDimSetList) { if (mrDimSet != null) { leftDimPointList.AddRange(mrDimSet.GetDimPointList()); } } Comparison <Point> sorterY = new Comparison <Point>(CDimTools.ComparePointY); leftDimPointList.Sort(sorterY); PointList pointList = new PointList(); foreach (Point point in leftDimPointList) { pointList.Add(point); } Point minYPoint = leftDimPointList[0]; double dimDistance = Math.Abs(CCommonPara.mViewMinX - minYPoint.X) + 2 * CCommonPara.mDefaultDimDistance; Vector rightDimVector = new Vector(-1, 0, 0); CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, rightDimVector, dimDistance, CCommonPara.mSizeDimPath); }
/// <summary> /// 绘制上侧的零部件标注; /// </summary> private void DrawYVectorUpDim() { List <Point> pointList = new List <Point>(); bool bNeedAddLeftPart = true; bool bNeedAddRightPart = true; foreach (CMrPart mrPart in mMrPartList) { double minY = mrPart.GetMinYPoint().Y; double maxY = mrPart.GetMaxYPoint().Y; if (minY < 0 && maxY < 0) { continue; } Vector normal = mrPart.mNormal; //1.先判断螺钉的标注; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 01))) { continue; } List <Point> maxYPointList = mrBoltArray.GetMaxYPointList(); pointList.AddRange(maxYPointList); //把该螺钉组添加到映射表中; mDicBoltArrayToUpDim.Add(mrBoltArray, true); } //2.如果法向与Y轴平行; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(1, 0, 0))) { if (mrPart.GetMaxXPoint().X < mLeftPart.GetMaxXPoint().X || mrPart.GetMinXPoint().X > mRightPart.GetMinXPoint().X) { continue; } if (!IsLeftPartNeedDim(mrPart)) { bNeedAddLeftPart = false; pointList.Add(mrPart.GetMaxYMaxXPoint()); } else if (!IsRightPartNeedDim(mrPart)) { bNeedAddRightPart = false; pointList.Add(mrPart.GetMaxYMinXPoint()); } else { pointList.Add(mrPart.GetMaxYMinXPoint()); } } if (IsMidPlate(mrPart)) { pointList.Add(mrPart.GetMaxYMinXPoint()); pointList.Add(mrPart.GetMaxYMaxXPoint()); } } if (pointList.Count == 0) { return; } if (mLeftPart != null && bNeedAddLeftPart) { pointList.Add(mLeftPart.GetMaxYMinXPoint()); } if (mRightPart != null && bNeedAddRightPart) { pointList.Add(mRightPart.GetMaxYMaxXPoint()); } Comparison <Point> sorterX = new Comparison <Point>(CDimTools.ComparePointX); pointList.Sort(sorterX); PointList dimPointList = new PointList(); foreach (Point pt in pointList) { dimPointList.Add(pt); } Vector dimVector = new Vector(0, 1, 0); double dimDistance = Math.Abs(CCommonPara.mViewMaxY - pointList[0].Y) + 0.6 * CCommonPara.mDefaultDimDistance; CDimTools.GetInstance().DrawDimensionSet(mViewBase, dimPointList, dimVector, dimDistance, CCommonPara.mSizeDimPath); }