Exemple #1
0
        public override bool Execute()
        {
            var nodes = NodeBuilderUtils.CopyPaste(Dependency[0].ReferenceBuilder.Node);

            var nb          = new NodeBuilder(Dependency[1].ReferenceBuilder.Node);
            var sketchNodes = new List <Node>();

            foreach (var point in nodes)
            {
                var transformation = point.Set <TransformationInterpreter>();
                transformation.CurrTransform.SetMirror(nb.Dependency[1].TransformedPoint3D.GpPnt);
                var node = NodeBuilderUtils.FindSketchNode(point);
                if (node != null)
                {
                    sketchNodes.Add(node);
                }
                var nb1 = new NodeBuilder(point);
                nb1.ExecuteFunction();
            }

            if (sketchNodes.Count > 0)
            {
                var document = sketchNodes[0].Root.Get <DocumentContextInterpreter>().Document;
                foreach (var sketchNode in sketchNodes)
                {
                    int shapeIndex = 0;
                    if (NodeUtils.SketchHas3DApplied(document, sketchNode, out shapeIndex))
                    {
                        sketchNode.Children[2].Set <MeshTopoShapeInterpreter>().Shape = AutoGroupLogic.RebuildSketchFace(sketchNode, document);
                    }
                }
            }

            return(true);
        }
        private void PasteNode(DataPackage objectData)
        {
            if (_nodes.Count <= 0)
            {
                return;
            }
            if (_nodes[0] == null)
            {
                return;
            }

            var newChild = NodeBuilderUtils.CopyPaste(_nodes[0]);
            //if(newChild != null)
            //    newChild.Set<StringInterpreter>().Value += " Copy";
        }
        private void MakeArrayPattern(int rows, int columns, double rowDistance, double colomnsDistance, int reverseRows,
                                      int reverseColomns, bool previewMode)
        {
            var      indexColomns = 1;
            Document document     = null;
            var      sketchNodes  = new List <Node>();

            for (var indexRows = 0; indexRows < rows; indexRows++)
            {
                for (; indexColomns < columns; indexColomns++)
                {
                    var affectedPoints = NodeBuilderUtils.CopyPaste(_selectedNodes[0]);
                    foreach (var child in affectedPoints)
                    {
                        var node = NodeBuilderUtils.FindSketchNode(child);
                        var transformInterpreter = child.Set <TransformationInterpreter>();
                        transformInterpreter.ApplyGeneralArrayPattern(_axis, _ColumnAxis,
                                                                      indexRows * rowDistance * reverseRows,
                                                                      indexColomns * colomnsDistance * reverseColomns);
                        if (node != null)
                        {
                            sketchNodes.Add(node);
                        }
                        var nb = new NodeBuilder(child);
                        nb.ExecuteFunction();
                    }
                }
                indexColomns = 0;
            }
            if (sketchNodes.Count > 0)
            {
                document = sketchNodes[0].Root.Get <DocumentContextInterpreter>().Document;
                int shapeIndex = 0;
                foreach (var sketchNode in sketchNodes)
                {
                    if (NodeUtils.SketchHas3DApplied(document, sketchNode, out shapeIndex))
                    {
                        sketchNode.Children[2].Set <MeshTopoShapeInterpreter>().Shape = AutoGroupLogic.RebuildSketchFace(sketchNode, document);
                    }
                }
            }
            if (!previewMode)
            {
                CommitFinal("Apply Array Pattern");
                UpdateView();
                RebuildTreeView();
            }
        }
        private void MakeCircularPattern(int number, double angle, double heigth, int reverse, bool previewMode)
        {
            var sketchNodes = new List <Node>();

            for (var index = 1; index < number; index++)
            {
                var affectedPoints = NodeBuilderUtils.CopyPaste(_selectedNodes[0]);

                foreach (var child in affectedPoints)
                {
                    var node = NodeBuilderUtils.FindSketchNode(child);

                    var transformInterpreter = child.Get <TransformationInterpreter>();
                    transformInterpreter.ApplyGeneralCircularPattern(_axis, index * angle, index * heigth * reverse);
                    if (node != null)
                    {
                        sketchNodes.Add(node);
                    }
                    var nb = new NodeBuilder(child);
                    nb.ExecuteFunction();
                }
            }
            if (sketchNodes.Count > 0)
            {
                var document   = sketchNodes[0].Root.Get <DocumentContextInterpreter>().Document;
                int shapeIndex = 0;
                foreach (var sketchNode in sketchNodes)
                {
                    if (NodeUtils.SketchHas3DApplied(document, sketchNode, out shapeIndex))
                    {
                        sketchNode.Children[2].Set <MeshTopoShapeInterpreter>().Shape = AutoGroupLogic.RebuildSketchFace(sketchNode, document);
                    }
                }
            }
            if (!previewMode)
            {
                CommitFinal("Apply Circular Pattern");
                UpdateView();
                RebuildTreeView();
            }
        }