/// <summary> /// 获取主梁右侧螺钉组的标注; /// </summary> /// <returns></returns> public CMrDimSet GetYRightBoltDim() { Vector zVector = new Vector(0, 0, 1); Vector normal = mMrPart.mNormal; double maxX = mMrPart.GetMaxXPoint().X; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector)) { return(null); } if (maxX < CCommonPara.mDblError || !mMrPart.IsHaveBolt()) { return(null); } CMrDimSet mrDimSet = new CMrDimSet(); List <CMrBoltArray> mrBoltArrayList = mMrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { //如果螺钉组的法向与Z轴不平行,则返回继续执行; if (!CDimTools.GetInstance().IsTwoVectorParallel(zVector, mrBoltArray.mNormal)) { continue; } if (mrBoltArray.mBoltArrayShapeType == MrBoltArrayShapeType.ARRAY) { List <Point> maxPointList = mrBoltArray.GetMaxXPointList(); mrDimSet.AddRange(maxPointList); } else if (mrBoltArray.mBoltArrayShapeType == MrBoltArrayShapeType.OBLIQUELINE) { List <Point> boltPointList = mrBoltArray.GetBoltPointList(); mrDimSet.AddRange(boltPointList); } } return(mrDimSet); }
/// <summary> /// 判断框架柱剖面中的两个零件是否相同; /// </summary> /// <param name="mrSrcPart"></param> /// <param name="mrDesPart"></param> /// <returns></returns> private bool IsTwoCylinderPartSame(CMrPart mrSrcPart, CMrPart mrDesPart) { Vector srcVector = mrSrcPart.mNormal; Vector desVector = mrDesPart.mNormal; string strSrcPartMark = mrSrcPart.mPartInModel.GetPartMark(); string strDesPartMark = mrDesPart.mPartInModel.GetPartMark(); if (!CDimTools.GetInstance().IsTwoVectorParallel(desVector, srcVector)) { return(false); } if (!strSrcPartMark.Equals(strDesPartMark)) { return(false); } if (mrSrcPart.IsHaveBolt() != mrDesPart.IsHaveBolt()) { return(false); } List <CMrBoltArray> mrSrcBoltArray = mrSrcPart.GetBoltArrayList(); List <CMrBoltArray> mrDesBoltArray = mrDesPart.GetBoltArrayList(); if (mrSrcBoltArray.Count != mrDesBoltArray.Count) { return(false); } List <Point> mrSrcBoltPointList = new List <Point>(); List <Point> mrDesBoltPointList = new List <Point>(); foreach (CMrBoltArray mrBoltArray in mrSrcBoltArray) { mrSrcBoltPointList.AddRange(mrBoltArray.GetBoltPointList()); } foreach (CMrBoltArray mrBoltArray in mrDesBoltArray) { mrDesBoltPointList.AddRange(mrBoltArray.GetBoltPointList()); } if (mrSrcBoltPointList.Count != mrDesBoltPointList.Count) { return(false); } return(true); }
/// <summary> /// 判断框架梁剖面中的两个零件是否相同; /// </summary> /// <param name="mrPart"></param> /// <returns></returns> private bool IsTwoBeamPartSame(CMrPart mrSrcPart, CMrPart mrDesPart) { Vector srcVector = mrSrcPart.mNormal; Vector desVector = mrDesPart.mNormal; string strSrcPartMark = mrSrcPart.mPartInModel.GetPartMark(); string strDesPartMark = mrDesPart.mPartInModel.GetPartMark(); if (!CDimTools.GetInstance().IsTwoVectorParallel(desVector, srcVector)) { return(false); } if (!strSrcPartMark.Equals(strDesPartMark)) { return(false); } if (mrSrcPart.IsHaveBolt() != mrDesPart.IsHaveBolt()) { return(false); } List <CMrBoltArray> mrSrcBoltArray = mrSrcPart.GetBoltArrayList(); List <CMrBoltArray> mrDesBoltArray = mrDesPart.GetBoltArrayList(); if (mrSrcBoltArray.Count != mrDesBoltArray.Count) { return(false); } List <Point> mrSrcBoltPointList = new List <Point>(); List <Point> mrDesBoltPointList = new List <Point>(); foreach (CMrBoltArray mrBoltArray in mrSrcBoltArray) { mrSrcBoltPointList.AddRange(mrBoltArray.GetBoltPointList()); } foreach (CMrBoltArray mrBoltArray in mrDesBoltArray) { mrDesBoltPointList.AddRange(mrBoltArray.GetBoltPointList()); } if (mrSrcBoltPointList.Count != mrDesBoltPointList.Count) { return(false); } int nCount = mrSrcBoltPointList.Count; if (CDimTools.GetInstance().IsTwoVectorParallel(srcVector, new Vector(1, 0, 0)) || CDimTools.GetInstance().IsTwoVectorParallel(srcVector, new Vector(0, 1, 0))) { for (int i = 0; i < nCount; i++) { CDimTools.GetInstance().GetMaxYPoint(mrDesBoltPointList); CDimTools.GetInstance().GetMaxYPoint(mrSrcBoltPointList); if (Math.Abs(mrDesBoltPointList[i].Y - mrSrcBoltPointList[i].Y) > 3) { return(false); } CDimTools.GetInstance().GetMaxZPoint(mrDesBoltPointList); CDimTools.GetInstance().GetMaxZPoint(mrSrcBoltPointList); if (Math.Abs(mrDesBoltPointList[i].Z - mrSrcBoltPointList[i].Z) > 3) { return(false); } } } return(true); }