/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }