/// <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 DrawYVectorDownDim() { List <Point> pointList = new List <Point>(); bool bNeedAddLeftPart = true; bool bNeedAddRightPart = true; foreach (CMrPart mrPart in mMrPartList) { double maxY = mrPart.GetMaxYPoint().Y; double minY = mrPart.GetMinYPoint().Y; if (minY > 0 && maxY > 0) { continue; } Vector normal = mrPart.mNormal; //1.如果法向与Z轴平行并且有螺钉; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1))) { continue; } if (mDicBoltArrayToUpDim.ContainsKey(mrBoltArray)) { continue; } List <Point> minYPointList = mrBoltArray.GetMinYPointList(); pointList.AddRange(minYPointList); } //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.GetMinYMaxXPoint()); } else if (!IsRightPartNeedDim(mrPart)) { bNeedAddRightPart = false; pointList.Add(mrPart.GetMinYMinXPoint()); } else { pointList.Add(mrPart.GetMinYMinXPoint()); } } if (IsMidPlate(mrPart)) { pointList.Add(mrPart.GetMinYMinXPoint()); pointList.Add(mrPart.GetMinYMaxXPoint()); } } if (pointList.Count == 0) { return; } if (mLeftPart != null && bNeedAddLeftPart) { pointList.Add(mLeftPart.GetMinYMinXPoint()); } if (mRightPart != null && bNeedAddRightPart) { pointList.Add(mRightPart.GetMinYMaxXPoint()); } 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.mViewMinY - pointList[0].Y) + 0.6 * CCommonPara.mDefaultDimDistance; CDimTools.GetInstance().DrawDimensionSet(mViewBase, dimPointList, dimVector, dimDistance, CCommonPara.mSizeDimPath); }