Ejemplo n.º 1
0
        public override object Execute(vdControls.vdFramedControl vdFramedControl)
        {
            if (_setList == null)
            {
                return(null);
            }

            if (_moveNothingCount >= 1)
            {
                _setIndex = -1;
            }

            ++_setIndex;
            if (_setIndex <= _setList.Count - 1)
            {
                _moveNothingCount = 0;
                var entities = _setList[_setIndex];
                VdActionUtil.SelectFigures(vdFramedControl.BaseControl.ActiveDocument, entities);
                VdActionUtil.LocateFigures(vdFramedControl.BaseControl.ActiveDocument, entities);
                VdActionUtil.RefreshVectorDraw(vdFramedControl.BaseControl.ActiveDocument);
            }
            else
            {
                ++_moveNothingCount;
            }
            return(null);
        }
Ejemplo n.º 2
0
        private void btnFindById_Click(object sender, EventArgs e)
        {
            var handles = GetHandles(txtHandleId.Text.Trim());

            if (handles.Count == 0)
            {
                MessageBox.Show($"输入参数错误,无法识别为HandleId");
                return;
            }
            var document = VD.BaseControl.ActiveDocument;
            var figures  = new List <vdFigure>();

            foreach (var handleId in handles)
            {
                var figure = VdSqlUtil.GetFigureByHandle(document, handleId);
                if (figure == null)
                {
                    MessageBox.Show($"没有找到HandleId={handleId}的图元");
                    return;
                }
                figures.Add(figure);
            }

            VdActionUtil.SelectFigures(document, figures);
            VdActionUtil.LocateFigures(document, figures);
            VdActionUtil.RefreshVectorDraw(document);
        }
Ejemplo n.º 3
0
 public Box GetBoundingBox()
 {
     if (_boundingBox.IsEmpty && _entities.Count != 0)
     {
         _boundingBox = VdActionUtil.GetBoundingBox(_entities);
     }
     return(_boundingBox);
 }
Ejemplo n.º 4
0
        private void btnInsertRect_Click(object sender, EventArgs e)
        {
            var document = VD.BaseControl.ActiveDocument;
            var layout   = document.ActiveLayOut;

            if (document.CommandAction.CmdRect("USER", "USER"))
            {
                var rect = layout.Entities.Last;
                rect.PenColor = new vdColor(Color.BlueViolet);
                VdActionUtil.RefreshVectorDraw(document);
            }
        }
Ejemplo n.º 5
0
        private void tree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            var figureSet = e.Node.Tag as FigureSet;

            if (figureSet == null)
            {
                return;
            }
            VdActionUtil.SelectFigures(VD.BaseControl.ActiveDocument, figureSet.Entities);
            VdActionUtil.LocateFigures(VD.BaseControl.ActiveDocument, figureSet.Entities);
            VdActionUtil.RefreshVectorDraw(VD.BaseControl.ActiveDocument);
        }
Ejemplo n.º 6
0
        public override object Execute(vdControls.vdFramedControl vdFramedControl)
        {
            var document = vdFramedControl.BaseControl.ActiveDocument;
            var layout   = vdFramedControl.BaseControl.ActiveDocument.ActiveLayOut;

            var gripSelection    = VdActionUtil.GetGripSelection(layout);
            var srcList          = layout.Entities.Cast <vdFigure>().ToList();
            var entitiesOfSample = gripSelection.Cast <vdFigure>().ToList();

            var processor = new MatchProcessor(document);

            return(processor.Match(srcList, entitiesOfSample));
        }
Ejemplo n.º 7
0
        private void btnViewBox_Click(object sender, EventArgs e)
        {
            Box box = null;

            if (VdActionUtil.TryGetUserRect(VD.BaseControl.ActiveDocument, out box))
            {
                var form = new FormViewer
                {
                    Document      = VD.BaseControl.ActiveDocument,
                    RenderingArea = box
                };
                form.Show(this);
            }
        }
        public override object Execute(vdControls.vdFramedControl vdFramedControl)
        {
            var document       = vdFramedControl.BaseControl.ActiveDocument;
            var vdGrid         = vdFramedControl.vdGrid;
            var selectedObjArr = vdGrid.SelectedObject as object[];

            if (selectedObjArr == null)
            {
                return(null);
            }
            VdActionUtil.LocateFigures(document, selectedObjArr.OfType <vdFigure>().ToList());
            VdActionUtil.RefreshVectorDraw(document);
            return(null);
        }
        public override object Execute(vdControls.vdFramedControl vdFramedControl)
        {
            var document  = vdFramedControl.BaseControl.ActiveDocument;
            var selection = VdActionUtil.GetGripSelection(document.ActionLayout);

            if (selection.Count == 0)
            {
                return(string.Empty);
            }
            var sb = new StringBuilder();

            foreach (vdFigure figure in selection)
            {
                sb.AppendLine($"{figure.GetType().Name}, Handle={figure.HandleId}");
            }
            return(sb);
        }
Ejemplo n.º 10
0
        public static void SmartVisibleLayout(vdControls.vdFramedControl vd, vdControls.vdFramedControl.LayoutStyle layoutStyle)
        {
            var visible = vd.GetLayoutStyle(layoutStyle);

            vd.SetLayoutStyle(layoutStyle, !visible);
            if (visible)
            {
                return;
            }
            if (layoutStyle == vdControls.vdFramedControl.LayoutStyle.PropertyGrid)
            {
                var selection = VdActionUtil.GetGripSelection(vd.BaseControl.ActiveDocument.ActionLayout);
                if (selection.Count > 0)
                {
                    vd.vdGrid.SelectedObject = selection;
                }
                else
                {
                    vd.vdGrid.SelectedObject = vd.BaseControl.ActiveDocument;
                }
            }
        }
Ejemplo n.º 11
0
        private void btnDisNode_Click(object sender, EventArgs e)
        {
            var list = new List <vdFigure>();

            foreach (TreeNode node in tree.Nodes)
            {
                foreach (TreeNode subNode in node.Nodes)
                {
                    if (!subNode.Checked)
                    {
                        continue;
                    }
                    var figureSet = subNode.Tag as FigureSet;
                    if (figureSet == null)
                    {
                        continue;
                    }
                    list.AddRange(figureSet.Entities);
                }
            }
            VdActionUtil.SelectFigures(VD.BaseControl.ActiveDocument, list);
            VdActionUtil.LocateFigures(VD.BaseControl.ActiveDocument, list);
            VdActionUtil.RefreshVectorDraw(VD.BaseControl.ActiveDocument);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 匹配
        /// </summary>
        /// <param name="srcFigures"></param>
        /// <param name="itemsOfSample">样本组,里面包含多个图元</param>
        /// <returns></returns>
        public MatchItem Match(List <vdFigure> srcFigures, List <vdFigure> itemsOfSample)
        {
            if (itemsOfSample == null || itemsOfSample.Count < 2)
            {
                throw new ArgumentException(nameof(itemsOfSample));
            }

            //选中的样品,后续就是找跟这个相似的
            var sample = new FigureSet(itemsOfSample);

            var majorFilter = FilterFactory.Get(sample.Major.GetType());

            if (majorFilter == null)
            {
                return(null);
            }
            //从源图元集合中找出符合样本特征图元的元素
            var majorList = majorFilter.Filter(srcFigures, sample.Major);

            //样本组外包矩形
            var sampleBoundingBox = sample.GetBoundingBox();
            //样本组特征图元到中心点的位移
            var sampleOffsetOfMajor2Center = new gPoint(
                sampleBoundingBox.MidPoint.x - sample.Major.BoundingBox.MidPoint.x,
                sampleBoundingBox.MidPoint.y - sample.Major.BoundingBox.MidPoint.y);
            //样本组特征图元到中心点的位移长度
            var sampleOffsetLenOfMajor2Center = gPoint.Distance2D(sampleBoundingBox.MidPoint,
                                                                  sample.Major.BoundingBox.MidPoint);
            //sampleBoundingBox.MidPoint - sample.Major.BoundingBox.MidPoint;
            //样本外包矩形的对角线长度
            var sampleDiagonalLen = Math.Pow(Math.Pow(sampleBoundingBox.Width, 2.0) + Math.Pow(sampleBoundingBox.Height, 2.0), 0.5);

            //找到的和样本组类似的图元组集合
            var result = new MatchItem {
                Sample = sample, CadFileName = _document.FileName
            };

            //选择集合
            var selectingList = new List <vdFigure>();
            var debugLayer    = VdSqlUtil.AppendLayer(_document, "DebugLayer");

            VdSqlUtil.DeleteFiguresByLayer(_document.ActionLayout, debugLayer);
            foreach (var major in majorList)
            {
                //根据特征图元的中心点、样本组外包矩形的对角线长度,样本组特征图元到中心点的位移
                //计算该次框选的范围
                var boundingBox = new Box();
                boundingBox.AddPoint(major.BoundingBox.MidPoint);
                boundingBox.AddWidth((sampleDiagonalLen + sampleOffsetLenOfMajor2Center) / 2d + 1);
                //boundingBox.AddWidth(sampleMajorMaxLenOfBox);
                //boundingBox.AddWidth(1);
                //boundingBox.Offset(sampleOffsetOfMajor2Center.x, sampleOffsetOfMajor2Center.y, 0);

                //框选
                var selection = _document.Selections.Add("BoundingByMajor");
                selection.RemoveAll();
                selection.Select(RenderSelect.SelectingMode.WindowRectangle, new gPoints(new[] { boundingBox.UpperLeft, boundingBox.LowerRight }));

                //selectingList.Add(major);
                //selectingList.Add(AppendRect(_document, boundingBox, debugLayer));
                //continue;

                var fromFigures = selection.OfType <vdFigure>().ToList();
                fromFigures.Sort(new FigureMidPointComparer());
                //从框选结果中筛选图元
                var item = MatchCore(fromFigures, major, sample);
                if (item != null && GetXorItem(result, item) == null)
                {
                    result.Results.Add(item);
                    //selectingList.AddRange(item.Entities);
                }
                else
                {
                    //VdUtil.SelectFigures(_document, fromFigures);
                    //VdUtil.RefreshVectorDraw(_document);
                    //break;
                }
            }
            if (selectingList.Count > 0)
            {
                VdActionUtil.SelectFigures(_document, selectingList);
                VdActionUtil.RefreshVectorDraw(_document);
            }

            return(result);
        }