/// <summary>
        /// 判断顶部的零部件,顶部的零部件法向与Y轴平行;
        /// </summary>
        /// <param name="?"></param>
        private void JudgeTopPart(CMrPart mrPart)
        {
            Vector normal = mrPart.mNormal;
            double maxY   = mrPart.GetMaxYPoint().Y;

            if (maxY < mMainBeamMaxY)
            {
                return;
            }

            //1.如果零部件的法向与Y轴的法向相同;
            if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0)))
            {
                if (Math.Abs(maxY - CCommonPara.mViewMaxY) < CCommonPara.mDblError)
                {
                    mTopPart = mrPart;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 绘制檩托板的零件标记;
        /// </summary>
        private void DrawMrApronPlateMark()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            Dictionary <CMrPart, CMrApronPlate> mapPartToMrApronPlate = CMrCylinderDoorTopManager.GetInstance().mMapYNormalPartToMrApronPlate;

            foreach (CMrApronPlate mrApronPlate in mapPartToMrApronPlate.Values)
            {
                CMrPart yNormalPart = mrApronPlate.mYNormalPart;
                CMrPart zNormalPart = mrApronPlate.mZNormalPart;

                DS.SelectObject(yNormalPart.mPartInDrawing);
                DS.SelectObject(zNormalPart.mPartInDrawing);
            }

            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获得主梁上方需要标注的螺钉组;
        /// </summary>
        private CMrDimSet GetMainPartBoltUpDimX()
        {
            CMrDimSet mrDimSet = new CMrDimSet();

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

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                Vector normal = mrBoltArray.mNormal;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)))
                {
                    continue;
                }
                List <Point> pointList = mrBoltArray.GetMaxYPointList();
                mrDimSet.AddRange(pointList);
            }
            return(mrDimSet);
        }
        /// <summary>
        /// 绘制零件标记;
        /// </summary>
        private void DrawPartMark()
        {
            //判断主梁在剖视图中的法向,主要是考虑与X方向和Y方向平行的两个方向;
            Vector normal = mMainBeam.mNormal;

            Vector xVector = new Vector(1, 0, 0);
            Vector yVector = new Vector(0, 1, 0);

            if (CDimTools.GetInstance().IsTwoVectorParallel(normal, xVector) ||
                CDimTools.GetInstance().IsVectorInXZPlane(normal))
            {
                DrawXParallelPartMark();
            }
            else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, yVector) ||
                     CDimTools.GetInstance().IsVectorInYZPlane(normal))
            {
                DrawYParallelPartMark();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 绘制零件标记;
        /// </summary>
        public void DrawPartMark()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrMark mrMark = mrPart.GetCylinderDoorTopViewInfo().GetPartMark();

                if (null == mrMark)
                {
                    continue;
                }

                DS.SelectObject(mrPart.mPartInDrawing);
            }
            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 6
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     //  return;
     timer1.Interval = 1000 * 60 * 1;
     try
     {
         // timer1.Enabled = false;
         if (timer1.Interval < 1000)
         {
             timer1.Interval = 1000 * 60 * 1;
             int re = CDogTools.GetInstance().GetUserAuthority();
             if (re == -1)
             {
                 CServers.GetServers().CloseService();
                 MessageBox.Show("您的加密狗已经在其他程序中使用,不能重复登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 this.Close();
             }
             else if (re <= 0)
             {
                 CServers.GetServers().CloseService();
                 MessageBox.Show("未检测到加密狗!请确认是否已经插好!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 this.Close();
             }
         }
         else
         {
             if (!CDimTools.GetInstance().IsOut)
             {
                 CServers.GetServers().GetUserName();
             }
             else
             {
                 MessageBox.Show("服务器异常,请确认网络或者加密狗", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 this.Close();
             }
         }
     }
     catch
     {
         MessageBox.Show("服务器异常,请确认网络或者加密狗", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         this.Close();
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// 判断左上侧中间的零部件;
        /// </summary>
        /// <param name="mrPart"></param>
        private void JudgeLeftMiddlePart(CMrPart mrPart)
        {
            if (mLeftTopMiddlePart != null)
            {
                return;
            }

            double partMaxX        = mrPart.GetMaxXPoint().X;
            double partMaxY        = mrPart.GetMaxYPoint().Y;
            double leftPartMaxY    = mLeftPart.GetMaxYPoint().Y;
            double leftTopPartMaxY = mLeftTopPart.GetMaxYPoint().Y;
            double leftTopPartMaxX = mLeftTopPart.GetMaxXPoint().X;

            if (partMaxY > leftPartMaxY && partMaxY < leftTopPartMaxY &&
                CDimTools.GetInstance().CompareTwoDoubleValue(partMaxX, leftTopPartMaxX) == 0)
            {
                mLeftTopMiddlePart = mrPart;
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 判断右上侧中间的零部件;
        /// </summary>
        /// <param name="mrPart"></param>
        private void JudgeRightMiddlePart(CMrPart mrPart)
        {
            if (mRightTopMiddlePart != null)
            {
                return;
            }

            double partMinX         = mrPart.GetMinXPoint().X;
            double partMaxY         = mrPart.GetMaxYPoint().Y;
            double rightPartMaxY    = mRightPart.GetMaxYPoint().Y;
            double rightTopPartMaxY = mRightTopPart.GetMaxYPoint().Y;
            double rightTopPartMinX = mRightTopPart.GetMinXPoint().X;

            if (partMaxY > rightPartMaxY && partMaxY < rightTopPartMaxY &&
                CDimTools.GetInstance().CompareTwoDoubleValue(partMinX, rightTopPartMinX) == 0)
            {
                mRightTopMiddlePart = mrPart;
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 绘制主梁上的螺钉标记;
        /// </summary>
        /// <param name="nFlag">nFlag=1:上翼板是倾斜。nFlag=2:上翼板向两侧倾斜</param>
        private void DrawMainBeamBoltMark(int nFlag)
        {
            List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList();
            Vector zVector = new Vector(0, 0, 1);

            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                //只有与Z轴平行的螺钉组才进行编号;
                if (!CDimTools.GetInstance().IsTwoVectorParallel(zVector, mrBoltArray.mNormal))
                {
                    continue;
                }
                DS.SelectObject(mrBoltArray.mBoltInDrawing);
            }
        }
        /// <summary>
        /// 判断零件是否是外围板;
        /// </summary>
        /// <param name="mrPart"></param>
        /// <returns></returns>
        private bool IsOutsidePlate(CMrPart mrPart)
        {
            Vector normal = mrPart.mNormal;
            double minZ   = mrPart.GetMinZPoint().Z;
            double maxZ   = mrPart.GetMaxZPoint().Z;

            double mainBeamMinZ = CMrMainBeam.GetInstance().GetMinZPoint().Z;
            double mainBeamMaxZ = CMrMainBeam.GetInstance().GetMaxZPoint().Z;

            if (CDimTools.GetInstance().CompareTwoDoubleValue(minZ, mainBeamMaxZ) >= 0)
            {
                return(true);
            }
            if (CDimTools.GetInstance().CompareTwoDoubleValue(maxZ, mainBeamMinZ) <= 0)
            {
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// 绘制主梁上面的螺钉标记;
        /// </summary>
        private void DrawMainBeamBoltMark()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

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

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1)))
                {
                    continue;
                }
                DS.SelectObject(mrBoltArray.mBoltInDrawing);
            }

            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 12
0
        /// <summary>
        /// 柱的顶视图标注;
        /// </summary>
        public void CreateCylinderTopViewDim()
        {
            ViewBase  topViewBase = null;
            PointList pointList   = new PointList();

            CDimTools.GetInstance().PickPoints(1, ref pointList, ref topViewBase);

            if (topViewBase != null)
            {
                topViewBase.Select();

                TSD.View         topView  = topViewBase as TSD.View;
                CCylinderTopView mTopView = new CCylinderTopView(topView, mModel);

                InitMainPart();
                InitView(topView);
                mTopView.CreateDim();
            }
        }
        /// <summary>
        /// 获取X值最小的点;
        /// </summary>
        /// <returns></returns>
        public Point GetMinXPoint()
        {
            Point minXPoint = mMrTopPart.GetMinXPoint();

            Point newMinXPoint = mMrMidPart.GetMinXPoint();

            if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, newMinXPoint.X) > 0)
            {
                minXPoint = newMinXPoint;
            }

            newMinXPoint = mMrBottomPart.GetMinXPoint();
            if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, newMinXPoint.X) > 0)
            {
                minXPoint = newMinXPoint;
            }

            return(minXPoint);
        }
        /// <summary>
        /// 绘制主部件外侧角钢的螺钉标注;
        /// </summary>
        private void DrawAngleSheetBoltDimX()
        {
            CCylinderTopViewSetting cylinderTopViewSetting = CCylinderDimSetting.GetInstance().mTopViewSetting;

            mMrPartList.Remove(mMainBeam);

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet mrBoltDimSet = mrPart.GetCylinderTopViewInfo().GetAngleSheetBoltXDimSet();

                PointList pointList = new PointList();

                //1.支撑板或连接板是否需要标注;
                if (cylinderTopViewSetting.FindDimValueByName(CCylinderTopViewSetting.mstrAngleSheet))
                {
                    if (mrBoltDimSet != null)
                    {
                        foreach (Point point in mrBoltDimSet.GetDimPointList())
                        {
                            pointList.Add(point);
                        }
                    }
                }
                if (pointList.Count > 0)
                {
                    if (mrBoltDimSet != null && mrBoltDimSet.Count > 0)
                    {
                        double dimDistance = mrBoltDimSet.mDimDistance;
                        Vector dimVector   = mrBoltDimSet.mDimVector;
                        CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath);
                    }
                    else
                    {
                        double dimDistance = Math.Abs(mrPart.GetMinYPoint().Y - pointList[0].Y) + CCommonPara.mDefaultDimDistance;
                        Vector dimVector   = new Vector(0, -1, 0);
                        CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath);
                    }
                }
            }

            mMrPartList.Add(mMainBeam);
        }
Exemplo n.º 15
0
        /// <summary>
        /// 根据给定的零部件找到上板或者下板;
        /// </summary>
        /// <param name="mrPart"></param>
        /// <param name="mrPartList"></param>
        /// <returns></returns>
        public CMrApronPlate CreateMrApronPlateType1(CMrPart myNormalPart, List <CMrPart> mrPartList)
        {
            Vector zVector = new Vector(0, 0, 1);

            double minY = myNormalPart.GetMinYPoint().Y;
            double maxY = myNormalPart.GetMaxYPoint().Y;
            double minX = myNormalPart.GetMinXPoint().X;
            double maxX = myNormalPart.GetMaxXPoint().X;

            foreach (CMrPart mrPart in mrPartList)
            {
                Vector normal = mrPart.mNormal;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector))
                {
                    continue;
                }

                double zNormalMaxY = mrPart.GetMaxYPoint().Y;
                double zNormalMinY = mrPart.GetMinYPoint().Y;
                double zNormalMaxX = mrPart.GetMaxXPoint().X;
                double zNormalMinX = mrPart.GetMinXPoint().X;

                if (CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxY, minY) == 0 &&
                    CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxX, maxX) == 0 &&
                    CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinX, minX) == 0)
                {
                    CMrApronPlate mrApronPlate = new CMrApronPlate(myNormalPart, mrPart, MrApronPlateType.Type1);
                    mrApronPlate.mIsUp = false;
                    return(mrApronPlate);
                }
                else if (CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinY, maxY) == 0 &&
                         CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxX, maxX) == 0 &&
                         CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinX, minX) == 0)
                {
                    CMrApronPlate mrApronPlate = new CMrApronPlate(myNormalPart, mrPart, MrApronPlateType.Type1);
                    mrApronPlate.mIsUp = true;
                    return(mrApronPlate);
                }
            }
            return(null);
        }
Exemplo n.º 16
0
        /// <summary>
        /// 绘制所有零件的下方标注;
        /// </summary>
        public void DrawAllPartDownDimX()
        {
            mMrPartList.Remove(mMainBeam);
            bool bNeedDownDim = false;

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

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrDimSet partDimSet = mrPart.GetBeamTopViewInfo().GetPartDownDimSet();

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

            //2.默认把主梁的左右最小最大点添加到链表中;
            Point minXPoint = mMainBeam.GetMinXPoint();
            Point maxXPoint = mMainBeam.GetMaxXPoint();

            downDimPointList.Add(minXPoint);
            downDimPointList.Add(maxXPoint);

            PointList pointList = new PointList();

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

            double dimDistance = GetDownDimDistance(pointList[0]);
            Vector upDimVector = new Vector(0, -1, 0);

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath);
            mMrPartList.Add(mMainBeam);
        }
        /// <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);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 判断主梁左下方是否有小切口;
        /// </summary>
        /// <returns></returns>
        public bool JudgeLeftBottomIncision()
        {
            Point minXminYPoint = GetMinXMinYPoint();
            Point minYminXPoint = GetMinYMinXPoint();

            if (CDimTools.GetInstance().CompareTwoDoubleValue(minXminYPoint.X, minYminXPoint.X) == 0)
            {
                return(false);
            }
            else
            {
                double yValue = Math.Abs(minXminYPoint.Y - minYminXPoint.Y);

                if (yValue <= mFlangeThickness * Math.Tan(45 * Math.PI / 180))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 19
0
        /// <summary>
        /// 得到右侧挡板零件向右的标注向量;
        /// </summary>
        /// <returns></returns>
        public Vector GetRightBeamRightDimVector()
        {
            Vector normal = mRightBeam.mNormal;

            Vector dimVector = new Vector();

            //根据挡板的斜率来判断标注的方向;
            MrSlopeType slopeType = CDimTools.GetInstance().JudgeLineSlope(mRightBeam.mRightTopPoint, mRightBeam.mRightBottomPoint);

            if (slopeType == MrSlopeType.MORETHAN_ZERO)
            {
                dimVector = new Vector(Math.Abs(normal.X), -Math.Abs(normal.Y), 0);
            }
            else
            {
                dimVector = new Vector(Math.Abs(normal.X), Math.Abs(normal.Y), 0);
            }

            return(dimVector);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 判断主梁右上方是否有小切口;
        /// </summary>
        /// <returns></returns>
        public bool JudgeRightTopIncision()
        {
            Point maxXmaxYPoint = GetMaxXMaxYPoint();
            Point maxYmaxXPoint = GetMaxYMaxXPoint();

            if (CDimTools.GetInstance().CompareTwoDoubleValue(maxXmaxYPoint.X, maxYmaxXPoint.X) == 0)
            {
                return(false);
            }
            else
            {
                double yValue = Math.Abs(maxXmaxYPoint.Y - maxYmaxXPoint.Y);

                if (yValue <= mFlangeThickness * Math.Tan(45 * Math.PI / 180))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 21
0
        /// <summary>
        /// 绘制主梁的Bolt在Y向上的标注;
        /// </summary>
        private void DrawMainPartBoltDimY()
        {
            CBeamTopViewSetting beamTopViewSetting = CBeamDimSetting.GetInstance().mTopViewSetting;

            bool bNeedMainBeamBoltDim = beamTopViewSetting.FindDimValueByName(CBeamTopViewSetting.mstrBolt);

            if (!bNeedMainBeamBoltDim)
            {
                return;
            }

            List <CMrDimSet> boltDimSetList = GetMainPartBoltDimSetY();

            if (boltDimSetList == null || boltDimSetList.Count == 0)
            {
                return;
            }

            foreach (CMrDimSet mrDimSet in boltDimSetList)
            {
                if (mrDimSet == null || mrDimSet.Count <= 1)
                {
                    continue;
                }
                if (!IsNeedMrDimSetDim(mrDimSet))
                {
                    continue;
                }

                List <Point> dimPointList = mrDimSet.GetDimPointList();
                PointList    pointList    = new PointList();
                foreach (Point point in dimPointList)
                {
                    pointList.Add(point);
                }

                double dimDistance = mrDimSet.mDimDistance;
                Vector dimVector   = mrDimSet.mDimVector;
                CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath);
            }
        }
Exemplo n.º 22
0
        public void CreateDim()
        {
            //启动初始化函数;
            Thread thread = new Thread(new ParameterizedThreadStart(ThreadFunc));

            thread.Start();

            //首先清空标注和标记;
            CDimTools.GetInstance().ClearAllDim(mViewBase);
            CDimTools.GetInstance().ClearAllPartMark(mViewBase);

            lock (mLockString)
            {
#if DEBUG
                DrawZNormalMiddleBoltDim();
                DrawYMainRightDim();
                DrawYMainLeftDim();
                DrawBoltDim();
                DrawPartMark();
                DrawMrApronPlateMark();
                DrawZNormalMiddleBoltMark();
#else
                try
                {
                    DrawZNormalMiddleBoltDim();
                    DrawYMainRightDim();
                    DrawYMainLeftDim();
                    DrawBoltDim();
                    DrawPartMark();
                    DrawMrApronPlateMark();
                    DrawZNormalMiddleBoltMark();
                }
                catch (Exception e)
                {
                    string strText = "提示:程序发生异常\n" + "异常信息:" + e.Message;
                    MessageBox.Show(strText);
                    return;
                }
#endif
            }
        }
        /// <summary>
        /// 判断主梁下方法向与Y轴平行的零部件,该零件的最大Y值与主梁的最小Y值相等;
        /// </summary>
        /// <param name="mrPart"></param>
        private void JudgeYNormalBottomPart(CMrPart mrPart)
        {
            if (mYNormalBottomPart != null)
            {
                return;
            }

            Vector normal = mrPart.mNormal;

            if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0)))
            {
                return;
            }

            double partMaxY = mrPart.GetMaxYPoint().Y;

            if (Math.Abs(partMaxY - mMainBeamMinY) < 0.1)
            {
                mYNormalBottomPart = mrPart;
            }
        }
Exemplo n.º 24
0
        /// <summary>
        /// 判断是否是最右侧的板部件;
        /// </summary>
        /// <param name="mrPart"></param>
        public void JudgeRightBeam(CMrPart mrPart)
        {
            if (mRightBeam == null)
            {
                mRightBeam = mrPart;

                return;
            }
            if (CDimTools.GetInstance().IsTwoVectorParallel(mrPart.mNormal, new Vector(0, 1, 0)))
            {
                return;
            }

            Point maxXPoint      = mrPart.GetMaxXPoint();
            Point rightMaxXPoint = mRightBeam.GetMaxXPoint();

            if (CDimTools.GetInstance().CompareTwoDoubleValue(maxXPoint.X, rightMaxXPoint.X) > 0)
            {
                mRightBeam = mrPart;
            }
        }
        /// <summary>
        /// 获得法向与Z轴平行的中间的零件中螺钉标注;
        /// </summary>
        /// <returns></returns>
        public List <CMrDimSet> GetZNormalMiddleDimSet()
        {
            List <CMrDimSet> mrDimSetList = new List <CMrDimSet>();

            Vector normal = mMrPart.mNormal;

            double minX = mMrPart.GetMinXPoint().X;
            double maxX = mMrPart.GetMaxXPoint().X;

            if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mMrPart.IsHaveBolt())
            {
                return(mrDimSetList);
            }
            if (CDimTools.GetInstance().CompareTwoDoubleValue(minX, 0) >= 0 ||
                CDimTools.GetInstance().CompareTwoDoubleValue(maxX, 0) <= 0)
            {
                return(mrDimSetList);
            }

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

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1)))
                {
                    continue;
                }

                List <Point> pointList = mrBoltArray.GetMaxYPointList();

                CMrDimSet mrDimSet = new CMrDimSet();

                mrDimSet.AddRange(pointList);
                mrDimSet.mDimVector   = new Vector(0, 1, 0);
                mrDimSet.mDimDistance = CCommonPara.mDefaultDimDistance;
                mrDimSetList.Add(mrDimSet);
            }

            return(mrDimSetList);
        }
        /// <summary>
        /// 获取零件标记;
        /// </summary>
        /// <returns></returns>
        public CMrMark GetPartMark()
        {
            CMrMark mrMark = new CMrMark();

            Vector normal = mMrPart.mNormal;

            double minX = mMrPart.GetMinXPoint().X;
            double maxX = mMrPart.GetMaxXPoint().X;

            if (minX < 0 && maxX > 0)
            {
                return(null);
            }
            if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mMrPart.IsHaveBolt())
            {
                return(null);
            }

            double dblAngle = CCommonPara.mPartMarkAngle;

            mrMark.mModelObject = mMrPart.mPartInDrawing;

            if (minX > 0)
            {
                mrMark.mInsertPoint = mMrPart.GetMaxXMaxYPoint();
                double increaseXDistance = CCommonPara.mPartMarkLength / Math.Tan(dblAngle);
                mrMark.mTextPoint.X = mrMark.mInsertPoint.X + increaseXDistance;
                mrMark.mTextPoint.Y = mrMark.mInsertPoint.Y + 1.2 * CCommonPara.mPartMarkLength;
                return(mrMark);
            }
            if (maxX < 0)
            {
                mrMark.mInsertPoint = mMrPart.GetMinXMaxYPoint();
                double increaseXDistance = CCommonPara.mPartMarkLength / Math.Tan(dblAngle);
                mrMark.mTextPoint.X = mrMark.mInsertPoint.X - increaseXDistance;
                mrMark.mTextPoint.Y = mrMark.mInsertPoint.Y + 1.2 * CCommonPara.mPartMarkLength;
                return(mrMark);
            }
            return(null);
        }
Exemplo n.º 27
0
        /// <summary>
        /// 对于正常的左右倾斜梁的下标注;
        /// </summary>
        public void DrawXDownDimNormal()
        {
            List <Point> downDimPointList = new List <Point>();

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

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

            CMrPart topBeam    = CMrBeamDoorManager.GetInstance().mTopBeam;
            CMrPart bottomBeam = CMrBeamDoorManager.GetInstance().mBottonBeam;
            CMrPart leftBeam   = CMrBeamDoorManager.GetInstance().mLeftBeam;
            CMrPart rightBeam  = CMrBeamDoorManager.GetInstance().mRightBeam;

            downDimPointList.Add(topBeam.mLeftTopPoint);
            downDimPointList.Add(bottomBeam.mLeftBottomPoint);
            downDimPointList.Add(topBeam.mRightTopPoint);
            downDimPointList.Add(bottomBeam.mRightBottomPoint);

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

            downDimPointList.Sort(sorterX);

            PointList pointList = new PointList();

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

            double dimDistance   = Math.Abs(CCommonPara.mViewMinY - downDimPointList[0].Y) + 1.5 * CCommonPara.mDefaultDimDistance;
            Vector downDimVector = new Vector(0, -1, 0);

            CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, downDimVector, dimDistance, CCommonPara.mSizeDimPath);
        }
        /// <summary>
        /// 获得支撑及牛腿中间的垂直加筋板;
        /// </summary>
        /// <param name="mrSupportPlate"></param>
        /// <returns></returns>
        private List <CMrPart> GetSupportPlateMiddleConnectPlates(CMrPart mrSupportPlate)
        {
            Point maxXPoint = mrSupportPlate.GetMaxXPoint();
            Point minXPoint = mrSupportPlate.GetMinXPoint();

            List <CMrPart> mrConnectPlates = new List <CMrPart>();

            if (maxXPoint.X < 0)
            {
                foreach (CMrPart mrPart in mVerticalConnectPlateList)
                {
                    if (IsOutsidePlate(mrPart) || mrPart.GetMaxXPoint().X > 0)
                    {
                        continue;
                    }
                    if (CDimTools.GetInstance().IsPartInOtherPartBox(mrPart, mrSupportPlate))
                    {
                        mrConnectPlates.Add(mrPart);
                    }
                }
                return(mrConnectPlates);
            }
            else if (minXPoint.X > 0)
            {
                foreach (CMrPart mrPart in mVerticalConnectPlateList)
                {
                    if (IsOutsidePlate(mrPart) || mrPart.GetMinXPoint().X < 0)
                    {
                        continue;
                    }
                    if (CDimTools.GetInstance().IsPartInOtherPartBox(mrPart, mrSupportPlate))
                    {
                        mrConnectPlates.Add(mrPart);
                    }
                }
                return(mrConnectPlates);
            }

            return(null);
        }
Exemplo n.º 29
0
        /// <summary>
        /// 构建类型2的檩托板;
        /// </summary>
        /// <param name="mrPartList"></param>
        public void BuildMrApronPlateType2(List <CMrPart> mrPartList)
        {
            CDimTools.GetInstance().SortMrPartByMinY(mrPartList);

            double mainBeamMinX = CMrMainBeam.GetInstance().GetMinXPoint().X;
            double mainBeamMaxX = CMrMainBeam.GetInstance().GetMaxXPoint().X;

            Vector yVector = new Vector(0, 1, 0);

            foreach (CMrPart mrPart in mrPartList)
            {
                Vector normal = mrPart.mNormal;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, yVector))
                {
                    continue;
                }

                double partMinX = mrPart.GetMinXPoint().X;
                double partMaxX = mrPart.GetMaxXPoint().X;

                if (!(CDimTools.GetInstance().CompareTwoDoubleValue(partMinX, mainBeamMinX) > 0 &&
                      CDimTools.GetInstance().CompareTwoDoubleValue(partMaxX, mainBeamMaxX) < 0))
                {
                    continue;
                }

                CMrApronPlate mrApronPlate = CreateMrApronPlateType2(mrPart, mrPartList);

                if (mrApronPlate == null)
                {
                    continue;
                }

                if (!mMapYNormalPartToMrApronPlate2.ContainsKey(mrPart))
                {
                    mMapYNormalPartToMrApronPlate2.Add(mrPart, mrApronPlate);
                }
            }
        }
Exemplo n.º 30
0
        /// <summary>
        /// 判断是否是最左边的板部件;
        /// </summary>
        /// <param name="mrPart"></param>
        /// <returns></returns>
        public void JudgeLeftBeam(CMrPart mrPart)
        {
            if (mLeftBeam == null)
            {
                mLeftBeam = mrPart;

                return;
            }
            if (CDimTools.GetInstance().IsTwoVectorParallel(mrPart.mNormal, new Vector(0, 1, 0)))
            {
                return;
            }

            Point minXPoint = mrPart.GetMinXPoint();

            Point leftMinXPoint = mLeftBeam.GetMinXPoint();

            if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, leftMinXPoint.X) < 0)
            {
                mLeftBeam = mrPart;
            }
        }