Esempio n. 1
0
        /// <summary>
        /// 绘制主梁右侧的标注;
        /// </summary>
        public void DrawYMainRightDim()
        {
            List <Point> rightDimPointList = new List <Point>();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet partDimSet = mrPart.GetCylinderDoorTopViewInfo().GetYRightPartDim();
                CMrDimSet boltDimSet = mrPart.GetCylinderDoorTopViewInfo().GetYRightBoltDim();

                if (partDimSet != null && partDimSet.Count > 0)
                {
                    rightDimPointList.AddRange(partDimSet.GetDimPointList());
                }
                if (boltDimSet != null && boltDimSet.Count > 0)
                {
                    rightDimPointList.AddRange(boltDimSet.GetDimPointList());
                }
            }

            //把最大Y值和最小Y值的点加进来;
            if (mMaxYPart != null)
            {
                rightDimPointList.Add(mMaxYPart.GetMaxYMaxXPoint());
            }
            if (mMinYPart != null)
            {
                rightDimPointList.Add(mMinYPart.GetMinYMaxXPoint());
            }

            //把檩托板的点加进来;
            List <CMrDimSet> mrDimSetList = GetMrApronPlateDimSet(2);

            foreach (CMrDimSet mrDimSet in mrDimSetList)
            {
                if (mrDimSet != null)
                {
                    rightDimPointList.AddRange(mrDimSet.GetDimPointList());
                }
            }
            Comparison <Point> sorterY = new Comparison <Point>(CDimTools.ComparePointY);

            rightDimPointList.Sort(sorterY);

            PointList pointList = new PointList();

            foreach (Point point in rightDimPointList)
            {
                pointList.Add(point);
            }

            Point  minYPoint      = rightDimPointList[0];
            double dimDistance    = Math.Abs(CCommonPara.mViewMaxX - minYPoint.X) + 2 * CCommonPara.mDefaultDimDistance;
            Vector rightDimVector = new Vector(1, 0, 0);

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, rightDimVector, dimDistance, CCommonPara.mSizeDimPath);
        }
Esempio n. 2
0
        /// <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);
        }