Exemple #1
0
        /// <summary>
        /// 绘制中间主梁类型为3时向上的标注;
        /// </summary>
        private void DrawTypeMiddle3XUpDim()
        {
            //1.绘制左侧上方的标注;
            bool bNeedUpDim = false;

            List <Point> upDimPointList = new List <Point>();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet partDimSet = mrPart.GetBeamDoorFrontViewInfo().GetTypeMiddle3XUpDimSetMiddle();

                if (partDimSet != null && partDimSet.Count > 0)
                {
                    bNeedUpDim = true;
                    upDimPointList.AddRange(partDimSet.GetDimPointList());
                }
            }
            if (bNeedUpDim == false)
            {
                return;
            }

            CMrPart topBeam = CMrBeamDoorManager.GetInstance().mTopBeam;

            Point leftTopPt  = topBeam.mLeftTopPoint;
            Point rightTopPt = topBeam.mRightTopPoint;

            upDimPointList.Add(leftTopPt);
            upDimPointList.Add(rightTopPt);

            Comparison <Point> sorterX = new Comparison <Point>(CDimTools.ComparePointX);

            upDimPointList.Sort(sorterX);

            PointList pointList = new PointList();

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

            double dimDistance = Math.Abs(CCommonPara.mViewMaxY - upDimPointList[0].Y) + 2 * CCommonPara.mDefaultDimDistance;

            //计算标注向量;
            Vector directVector = new Vector(rightTopPt.X - leftTopPt.X, rightTopPt.Y - leftTopPt.Y, 0);

            directVector.Normalize();
            Vector upDimVector = new Vector(directVector.Y, -directVector.X, 0);

            MrSlopeType mrSlopeType = CDimTools.GetInstance().JudgeLineSlope(directVector, new Point(0, 0, 0));

            if (mrSlopeType == MrSlopeType.LESSTHAN_ZERO)
            {
                upDimVector = new Vector(Math.Abs(upDimVector.X), Math.Abs(upDimVector.Y), 0);
            }
            else if (mrSlopeType == MrSlopeType.MORETHAN_ZERO)
            {
                upDimVector = new Vector(-Math.Abs(upDimVector.X), Math.Abs(upDimVector.Y), 0);
            }

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);

            //2.再标注一个总长度;
            pointList.Clear();
            pointList.Add(leftTopPt);
            pointList.Add(rightTopPt);

            dimDistance = Math.Abs(CCommonPara.mViewMaxY - leftTopPt.Y) + 4 * CCommonPara.mDefaultDimDistance;

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);
        }
Exemple #2
0
        /// <summary>
        /// 绘制主梁中间的零部件标注;
        /// 主梁中间的零部件只有法向与主梁顶部部件平行的才进行标注;
        /// </summary>
        private void DrawMainBeamMiddlePartDimNormal()
        {
            CMrPart topBeam = CMrBeamDoorManager.GetInstance().mTopBeam;

            Point leftTopPoint  = topBeam.mLeftTopPoint;
            Point rightTopPoint = topBeam.mRightTopPoint;

            CMrBeamDoorManager.GetInstance().BuildMostNearPartToPartList(mMrPartList);

            Dictionary <CMrPart, List <CMrPart> > dicPartToPartList = CMrBeamDoorManager.GetInstance().mDicPartToPartList;

            List <CMrDimSet> mrDimSetList = new List <CMrDimSet>();

            foreach (CMrPart mostNearPart in dicPartToPartList.Keys)
            {
                List <CMrPart> mrPartList = dicPartToPartList[mostNearPart];

                if (mrPartList.Count == 0)
                {
                    continue;
                }

                //(1).与顶板平行方向标注螺钉;
                CMrDimSet mrDimSet = new CMrDimSet();

                MrSlopeType slopeType = CDimTools.GetInstance().JudgeLineSlope(leftTopPoint, rightTopPoint);

                if (slopeType == MrSlopeType.MORETHAN_ZERO)
                {
                    mrDimSet.AddPoint(mostNearPart.mRightTopPoint);
                }
                else
                {
                    mrDimSet.AddPoint(mostNearPart.mLeftTopPoint);
                }

                foreach (CMrPart mrPart in mrPartList)
                {
                    CMrBoltArray mrBoltArray = mrPart.GetBoltArrayList()[0];
                    Point        boltPoint   = mrBoltArray.GetMaxXPoint();
                    mrDimSet.AddPoint(boltPoint);
                }

                mrDimSet.mDimVector   = CMrBeamDoorManager.GetInstance().GetTopBeamUpDimVector();
                mrDimSet.mDimDistance = CCommonPara.mDefaultDimDistance;
                mrDimSetList.Add(mrDimSet);

                //(2).与顶板竖直方向标注;
                mrDimSet = new CMrDimSet();
                mrDimSet.AddPoint(mrPartList[0].mRightBottomPoint);

                Point fontPt = CDimTools.GetInstance().ComputeFootPointToLine(mrPartList[0].mRightBottomPoint, topBeam.mLeftTopPoint, topBeam.mRightTopPoint);
                mrDimSet.AddPoint(fontPt);
                mrDimSet.mDimDistance = CCommonPara.mDefaultDimDistance;

                mrDimSet.mDimVector = new Vector(rightTopPoint.X - leftTopPoint.X, rightTopPoint.Y - leftTopPoint.Y, 0);
                mrDimSetList.Add(mrDimSet);
            }
            foreach (CMrDimSet mrDimSet in mrDimSetList)
            {
                List <Point> dimPointList = mrDimSet.GetDimPointList();

                PointList pointList = new PointList();

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

                Vector dimVector = mrDimSet.mDimVector;
                double length    = mrDimSet.mDimDistance;

                CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, length, CCommonPara.mSizeDimPath);
            }
        }
Exemple #3
0
        /// <summary>
        /// 绘制中间主梁的类型为1和2时向上的标注;
        /// </summary>
        private void DrawTypeMiddle1And2XUpDim()
        {
            //1.绘制左侧上方的标注;
            bool bNeedUpDim = false;

            List <Point> upDimPointList = new List <Point>();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet partDimSet = mrPart.GetBeamDoorFrontViewInfo().GetLeftXUpDimSetMiddle();

                if (partDimSet != null && partDimSet.Count > 0)
                {
                    bNeedUpDim = true;
                    upDimPointList.AddRange(partDimSet.GetDimPointList());
                }
            }
            if (bNeedUpDim == false)
            {
                return;
            }

            CMrPart topBeam = CMrBeamDoorManager.GetInstance().mTopBeam;

            //把中间Y值最大的点加入到标注链表中;
            upDimPointList.Add(CMrBeamDoorManager.GetInstance().mMidMaxPoint);
            upDimPointList.Add(topBeam.mLeftTopPoint);

            Comparison <Point> sorterX = new Comparison <Point>(CDimTools.ComparePointX);

            upDimPointList.Sort(sorterX);

            PointList pointList = new PointList();

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

            Point minXPoint1 = upDimPointList[0];

            double dimDistance = Math.Abs(CCommonPara.mViewMaxY - minXPoint1.Y) + 2 * CCommonPara.mDefaultDimDistance;
            Vector upDimVector = CMrBeamDoorManager.GetInstance().mLeftTopVector;

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);

            //2.再标注左侧的一个总长度;
            pointList.Clear();

            Point firstPoint  = topBeam.mLeftTopPoint;
            Point secondPoint = CMrBeamDoorManager.GetInstance().mMidMaxPoint;

            pointList.Add(firstPoint);
            pointList.Add(secondPoint);

            dimDistance = Math.Abs(CCommonPara.mViewMaxY - firstPoint.Y) + 4 * CCommonPara.mDefaultDimDistance;

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);

            //3.绘制右侧上方的标注;
            bNeedUpDim = false;
            upDimPointList.Clear();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet partDimSet = mrPart.GetBeamDoorFrontViewInfo().GetRightXUpDimSetMiddle();

                if (partDimSet != null && partDimSet.Count > 0)
                {
                    bNeedUpDim = true;
                    upDimPointList.AddRange(partDimSet.GetDimPointList());
                }
            }
            if (bNeedUpDim == false)
            {
                return;
            }

            //把中间Y值最大的点加入到标注链表中;
            upDimPointList.Add(CMrBeamDoorManager.GetInstance().mMidMaxPoint);
            upDimPointList.Add(topBeam.mRightTopPoint);
            upDimPointList.Sort(sorterX);

            int nCount = upDimPointList.Count;

            upDimPointList.Reverse(0, nCount);

            pointList.Clear();

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

            Point minXPoint2 = upDimPointList[0];

            dimDistance = Math.Abs(CCommonPara.mViewMaxY - minXPoint2.Y) + 2 * CCommonPara.mDefaultDimDistance;
            upDimVector = CMrBeamDoorManager.GetInstance().mRightTopVector;

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);

            //4.再标注右侧的一个总长度;
            pointList.Clear();

            firstPoint  = topBeam.mRightTopPoint;
            secondPoint = CMrBeamDoorManager.GetInstance().mMidMaxPoint;

            pointList.Add(firstPoint);
            pointList.Add(secondPoint);

            dimDistance = Math.Abs(CCommonPara.mViewMaxY - firstPoint.Y) + 4 * CCommonPara.mDefaultDimDistance;
            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);
        }
Exemple #4
0
        /// <summary>
        /// 绘制第三种主梁上的螺钉的标注;
        /// </summary>
        public void DrawMainBeamBoltDimMiddle()
        {
            CMrPart topBeam = CMrBeamDoorManager.GetInstance().mTopBeam;

            Point leftTopPoint  = topBeam.mLeftTopPoint;
            Point rightTopPoint = topBeam.mRightTopPoint;
            Point midTopPoint   = CMrBeamDoorManager.GetInstance().mMidMaxPoint;

            List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList();

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                Point boltPoint = mrBoltArray.GetMaxXPoint();

                //寻找与该零件最近的零部件;
                CMrPart mostNearPart = CMrBeamDoorManager.GetInstance().GetMostNearPart(boltPoint);

                //(1).与顶板平行方向标注螺钉;
                PointList pointList = new PointList();

                if (mostNearPart.mLeftTopPoint.X < midTopPoint.X)
                {
                    pointList.Add(mostNearPart.mRightTopPoint);
                }
                else
                {
                    pointList.Add(mostNearPart.mLeftTopPoint);
                }

                pointList.Add(boltPoint);

                Vector dimVector = new Vector();

                if (boltPoint.X > midTopPoint.X)
                {
                    dimVector = CMrBeamDoorManager.GetInstance().mRightTopVector;
                }
                if (boltPoint.X < midTopPoint.X)
                {
                    dimVector = CMrBeamDoorManager.GetInstance().mLeftTopVector;
                }

                double dblDistance = CCommonPara.mDefaultDimDistance;

                CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dblDistance, CCommonPara.mSizeDimPath);

                //(2).与顶板竖直方向标注板的位置;
                pointList.Clear();
                pointList.Add(boltPoint);

                if (boltPoint.X > midTopPoint.X)
                {
                    Point fontPt = CDimTools.GetInstance().ComputeFootPointToLine(boltPoint, rightTopPoint, midTopPoint);

                    dimVector = new Vector(rightTopPoint.X - midTopPoint.X, rightTopPoint.Y - midTopPoint.Y, 0);

                    pointList.Add(fontPt);
                }
                if (boltPoint.X < midTopPoint.X)
                {
                    Point fontPt = CDimTools.GetInstance().ComputeFootPointToLine(boltPoint, leftTopPoint, midTopPoint);

                    dimVector = new Vector(leftTopPoint.X - midTopPoint.X, leftTopPoint.Y - midTopPoint.Y, 0);

                    pointList.Add(fontPt);
                }
                CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dblDistance, CCommonPara.mSizeDimPath);
            }
        }