/// <summary> /// 获取顶部零件的标注集; /// </summary> /// <param name="nFlag">1:左侧,2:右侧</param> /// <returns></returns> private CMrDimSet GetTopPartDimSet(int nFlag) { CMrDimSet mrDimSet = new CMrDimSet(); CMrPart mrTopPart = CMrCylinderDoorFrontManager.GetInstance().mTopPart; CMrPart mrLeftTopPart = CMrCylinderDoorFrontManager.GetInstance().mLeftTopPart; CMrPart mrRightTopPart = CMrCylinderDoorFrontManager.GetInstance().mRightTopPart; //标注顶板右侧的情况; if (nFlag == 2) { //如果顶部零件为空,则把主梁最上面的点加入进去; if (mrTopPart == null) { mrDimSet.AddPoint(mMainBeam.GetMaxYMaxXPoint()); return(mrDimSet); } Vector normal = mrTopPart.mNormal; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0))) { mrDimSet.AddPoint(mrTopPart.GetMaxXMaxYPoint()); mrDimSet.AddPoint(mrTopPart.GetMaxXMinYPoint()); } else { if (mrLeftTopPart != null && mrRightTopPart != null) { if (mrLeftTopPart.GetMaxYPoint().Y > mrRightTopPart.GetMaxYPoint().Y) { mrDimSet.AddPoint(mrLeftTopPart.GetMaxXMaxYPoint()); } else { mrDimSet.AddPoint(mrRightTopPart.GetMaxXMaxYPoint()); } } else if (mrLeftTopPart != null) { mrDimSet.AddPoint(mrLeftTopPart.GetMaxXMaxYPoint()); } else if (mrRightTopPart != null) { mrDimSet.AddPoint(mrRightTopPart.GetMinXMaxYPoint()); } } } //标注顶板左侧的情况; else if (nFlag == 1) { if (mrTopPart == null) { mrDimSet.AddPoint(mMainBeam.GetMaxYMinXPoint()); return(mrDimSet); } Vector normal = mrTopPart.mNormal; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0))) { mrDimSet.AddPoint(mrTopPart.GetMinXMaxYPoint()); mrDimSet.AddPoint(mrTopPart.GetMinXMinYPoint()); } else { if (mrLeftTopPart != null && mrRightTopPart != null) { if (mrLeftTopPart.GetMaxYPoint().Y > mrRightTopPart.GetMaxYPoint().Y) { mrDimSet.AddPoint(mrLeftTopPart.GetMaxXMaxYPoint()); } else { mrDimSet.AddPoint(mrRightTopPart.GetMinXMaxYPoint()); } } else if (mrLeftTopPart != null) { mrDimSet.AddPoint(mrLeftTopPart.GetMaxXMaxYPoint()); } else if (mrRightTopPart != null) { mrDimSet.AddPoint(mrRightTopPart.GetMinXMaxYPoint()); } } } return(mrDimSet); }