예제 #1
0
        public void UpdateForm()
        {
            var view3D   = Uiapp.ActiveUIDocument.ActiveView as Autodesk.Revit.DB.View3D;
            var uiView   = UtilTool.GetActiveUIView(Uiapp);
            var allGrids = UtilTool.GetAllGrids(Uiapp);

            if (uiView != null && view3D != null && allGrids.Count > 0)
            {
                var corners = uiView.GetZoomCorners().ToList();
                var isEnter = true;
                lock (EnterLock)
                {
                    if (EnterKeyData != null &&
                        EnterKeyData.Item1 == view3D.Id &&
                        EnterKeyData.Item2.DistanceTo(corners[0]) < UtilTool.mmToRevit(1) &&
                        EnterKeyData.Item3.DistanceTo(corners[1]) < UtilTool.mmToRevit(1))
                    {
                        isEnter = false;
                    }
                }
                if (isEnter)
                {
                    lock (EnterLock)
                    {
                        EnterKeyData = new Tuple <Autodesk.Revit.DB.ElementId
                                                  , Autodesk.Revit.DB.XYZ
                                                  , Autodesk.Revit.DB.XYZ>(view3D.Id, corners[0], corners[1]);
                    }
                    var viewRect = uiView.GetWindowRectangle();
                    UpdateWindowsPositionAndSize(viewRect);
                    lock (GridLock)
                    {
                        ShowedGrids = UtilTool.GetLocalGrids(allGrids, view3D, corners, viewRect);
                    }
                    this.Refresh();
                }
                else
                {
                }
            }
            else
            {
                lock (GridLock)
                {
                    ShowedGrids.Clear();
                }
                this.Refresh();
            }
        }
예제 #2
0
        private void AxisForm_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.Clear(this.BackColor);
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            var pointPairStrLList = new List <Tuple <List <PointF>, string> >();

            lock (GridLock)
            {
                pointPairStrLList.AddRange(ShowedGrids.Select(a => new Tuple <List <PointF>, string>(a.PointFs, a.Name)));
            }
            if (pointPairStrLList.Count > 0)
            {
                foreach (var pointPairStrList in pointPairStrLList)
                {
                    if (pointPairStrList.Item1.Count >= 2)
                    {
                        e.Graphics.DrawString(pointPairStrList.Item2, new Font("Verdana", 20), m_SolidBrush, pointPairStrList.Item1.First());
                        e.Graphics.DrawLines(m_LinePen, pointPairStrList.Item1.ToArray());
                        e.Graphics.DrawString(pointPairStrList.Item2, new Font("Verdana", 20), m_SolidBrush, pointPairStrList.Item1.Last());
                    }
                }
            }
        }