public PointGraphics DrawPoint(
            double[] position,
            GraphicsNode node)
        {
            try
            {
                AdnGraphics graphicsData = WorkingGraphics;

                if (node == null)
                {
                    node = graphicsData.ClientGraphics.AddNode(
                        graphicsData.GetGraphicNodeFreeId());
                }

                PointGraphics graphic = node.AddPointGraphics();

                if (position != null)
                {
                    GraphicsCoordinateSet coordSet =
                        graphicsData.GraphicsDataSets.CreateCoordinateSet(
                            graphicsData.GetDataSetFreeId());

                    coordSet.PutCoordinates(ref position);

                    graphic.CoordinateSet = coordSet;
                }

                return(graphic);
            }
            catch
            {
                return(null);
            }
        }
        public TriangleStripGraphics DrawTriangleStrip(
            double[] coordinates,
            GraphicsNode node)
        {
            try
            {
                AdnGraphics graphicsData = WorkingGraphics;

                if (node == null)
                {
                    node = graphicsData.ClientGraphics.AddNode(
                        graphicsData.GetGraphicNodeFreeId());
                }

                TriangleStripGraphics graphic = node.AddTriangleStripGraphics();

                if (coordinates != null)
                {
                    GraphicsCoordinateSet coordSet =
                        graphicsData.GraphicsDataSets.CreateCoordinateSet(
                            graphicsData.GetDataSetFreeId());

                    coordSet.PutCoordinates(ref coordinates);

                    graphic.CoordinateSet = coordSet;
                }

                return(graphic);
            }
            catch
            {
                return(null);
            }
        }
예제 #3
0
        /// <summary>
        /// Draws the interaction graphics rectangle. Again, two paths for the part sketch or drawing sketch, with
        /// the drawing sketch not getting any color overrides due to how it blends into the "paper". Instead it
        /// defaults to black in the drawing sketch.  The part sketch gets a color from the Degrees of Freedom color
        /// schema.
        /// </summary>
        protected void DrawInteractionRectangle()
        {
            _upperRightPoint2d.X = _pickedPoint2d.X + 0.0001;
            _upperRightPoint2d.Y = _pickedPoint2d.Y + 0.0001;

            PositionPoint2dObjects();

            WriteToInteractionPointCoords();

            _rectangleCoordSet.PutCoordinates(ref _rectanglePointCoords);

            if (_planarSketch != null)
            {
                _activeDOFFreeColor        = _inventorApplication.ActiveColorScheme.DOFFreeColor;
                _rectangleGraphicsColorSet = _rectangleGraphicsDataSets.CreateColorSet(1);
                _rectangleGraphicsColorSet.Add(1, _activeDOFFreeColor.Red, _activeDOFFreeColor.Green, _activeDOFFreeColor.Blue);

                _rectangleIndexSet.Add(1, 1);
                _rectangleIndexSet.Add(2, 2);
                _rectangleIndexSet.Add(3, 3);
                _rectangleIndexSet.Add(4, 4);
                _rectangleIndexSet.Add(5, 1);

                _rectangleLineStripGraphics = _rectangleLineNode.AddLineStripGraphics();
                _rectangleLineStripGraphics.CoordinateSet      = _rectangleCoordSet;
                _rectangleLineStripGraphics.CoordinateIndexSet = _rectangleIndexSet;
                _rectangleLineStripGraphics.ColorSet           = _rectangleGraphicsColorSet;
            }
            else if (_drawingSketch != null)
            {
                _rectangleIndexSet.Add(1, 1);
                _rectangleIndexSet.Add(2, 2);
                _rectangleIndexSet.Add(3, 3);
                _rectangleIndexSet.Add(4, 4);
                _rectangleIndexSet.Add(5, 1);

                _rectangleLineStripGraphics = _rectangleLineNode.AddLineStripGraphics();
                _rectangleLineStripGraphics.CoordinateSet      = _rectangleCoordSet;
                _rectangleLineStripGraphics.CoordinateIndexSet = _rectangleIndexSet;
            }

            _rectangleInteractionGraphics.UpdateOverlayGraphics(_inventorApplication.ActiveView);
        }
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Description: Displays a LineGraphics between points [0, 0, 0] and [1, 1, 1].
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        static public void LineGraphicsDemo()
        {
            PartDocument doc =
                AdnInventorUtilities.InvApplication.ActiveDocument
                as PartDocument;

            // ClientId, can be any string
            // Typically use instead current add-in GUID
            string clientId = "{Add-in Guid}";

            // Add a new graphics group.
            // This will fail if a group with same name already exists
            ClientGraphics graphics =
                doc.ComponentDefinition.ClientGraphicsCollection.Add(clientId);

            // Add a new graphic node, with Id=1.
            // Id needs to be unique within graphics group
            GraphicsNode node = graphics.AddNode(1);

            // Add new data set
            GraphicsDataSets dataSets =
                doc.GraphicsDataSetsCollection.Add(clientId);

            // Add new coordinate set
            // Id needs to be unique within data set
            GraphicsCoordinateSet coordSet = dataSets.CreateCoordinateSet(1);

            // Fill up coordinates
            // Point1: [0.0, 0.0, 0.0]
            // Point2: [1.0, 1.0, 1.0]
            double[] coords = new double[]
            {
                0.0, 0.0, 0.0,
                1.0, 1.0, 1.0
            };

            coordSet.PutCoordinates(ref coords);

            // Create new GraphicsPrimitive
            LineGraphics lineGraphPrimitive = node.AddLineGraphics();

            lineGraphPrimitive.LineWeight = 5.0;

            // Set coordinates
            lineGraphPrimitive.CoordinateSet = coordSet;

            // Update the current view, so we see the graphics
            doc.Views[1].Update();
        }
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Description: Displays a PointGraphics using custom bitmap image.
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        static public void PointGraphicsDemo()
        {
            PartDocument doc =
                AdnInventorUtilities.InvApplication.ActiveDocument
                as PartDocument;

            string clientId = "{Add-in Guid}";

            ClientGraphics   graphics = null;
            GraphicsDataSets dataSets = null;

            try
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection[clientId];
                dataSets = doc.GraphicsDataSetsCollection[clientId];
            }
            catch
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection.Add(clientId);
                dataSets = doc.GraphicsDataSetsCollection.Add(clientId);
            }

            GraphicsNode node = graphics.AddNode(graphics.Count + 1);

            GraphicsCoordinateSet coordSet = dataSets.CreateCoordinateSet(dataSets.Count + 1);

            double[] coords = new double[]
            {
                5.0, 0.0, 0.0
            };

            coordSet.PutCoordinates(ref coords);

            GraphicsImageSet imageSet = dataSets.CreateImageSet(dataSets.Count + 1);

            stdole.IPictureDisp image =
                PictureDispConverter.ToIPictureDisp(Resources.PointImage);

            imageSet.Add(1, image, null, -1, -1);

            PointGraphics pointGraphPrimitive = node.AddPointGraphics();

            pointGraphPrimitive.CoordinateSet = coordSet;
            pointGraphPrimitive.SetCustomImage(imageSet, 1);

            doc.Views[1].Update();
        }
예제 #6
0
        void DoDemo()
        {
            Inventor.Application InvApp = AdnInventorUtilities.InvApplication;

            //Create new interaction event
            _interactionEvents = InvApp.CommandManager.CreateInteractionEvents();

            //Store mouse events
            _mouseEvents = _interactionEvents.MouseEvents;

            //Enable mouse move. This is disabled by default for performance reasons
            _mouseEvents.MouseMoveEnabled = true;

            //Listen to OnMouseMove event
            _mouseEvents.OnMouseMove +=
                new MouseEventsSink_OnMouseMoveEventHandler(MouseEvents_OnMouseMove);

            _interactionEvents.StatusBarText = "Select triangle vertex: ";

            //Retrieve InteractionGraphics
            InteractionGraphics ig = _interactionEvents.InteractionGraphics;

            //Create new node
            GraphicsNode node = ig.OverlayClientGraphics.AddNode(1);

            //Add Triangle primitive
            _triangleGraph = node.AddTriangleGraphics();

            //Set up coordinates
            GraphicsCoordinateSet coordSet = ig.GraphicsDataSets.CreateCoordinateSet(1);

            double[] coords = new double[]
            {
                0.0, 0.0, 0.0, //vertex 1
                5.0, 0.0, 0.0, //vertex 2
                2.5, 5.0, 0.0  //vertex 3
            };

            coordSet.PutCoordinates(ref coords);

            _triangleGraph.CoordinateSet = coordSet;

            _interactionEvents.Start();
        }
        public TriangleGraphics DrawTriangle(
            double[] v1,
            double[] v2,
            double[] v3,
            GraphicsNode node)
        {
            try
            {
                AdnGraphics graphicsData = WorkingGraphics;

                if (node == null)
                {
                    node = graphicsData.ClientGraphics.AddNode(
                        graphicsData.GetGraphicNodeFreeId());
                }

                TriangleGraphics graphic = node.AddTriangleGraphics();

                if ((v1 != null) && (v2 != null) && (v3 != null))
                {
                    GraphicsCoordinateSet coordSet =
                        graphicsData.GraphicsDataSets.CreateCoordinateSet(
                            graphicsData.GetDataSetFreeId());

                    List <double> coordinates = new List <double>();

                    coordinates.AddRange(v1);
                    coordinates.AddRange(v2);
                    coordinates.AddRange(v3);

                    double[] coordsArray = coordinates.ToArray();

                    coordSet.PutCoordinates(ref coordsArray);

                    graphic.CoordinateSet = coordSet;
                }

                return(graphic);
            }
            catch
            {
                return(null);
            }
        }
        public LineGraphics DrawLine(
            double[] startPoint,
            double[] endPoint,
            GraphicsNode node)
        {
            try
            {
                AdnGraphics graphicsData = WorkingGraphics;

                if (node == null)
                {
                    node = graphicsData.ClientGraphics.AddNode(
                        graphicsData.GetGraphicNodeFreeId());
                }

                LineGraphics graphic = node.AddLineGraphics();

                if ((startPoint != null) && (endPoint != null))
                {
                    GraphicsCoordinateSet coordSet =
                        graphicsData.GraphicsDataSets.CreateCoordinateSet(
                            graphicsData.GetDataSetFreeId());

                    double[] coordsArray = startPoint.Concat(endPoint).ToArray();

                    coordSet.PutCoordinates(ref coordsArray);

                    graphic.CoordinateSet = coordSet;
                }

                return(graphic);
            }
            catch
            {
                return(null);
            }
        }
예제 #9
0
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Simple example using Inventor API directly
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        public static void ClientFeatureDemo()
        {
            string clientId = AdnInventorUtilities.AddInGuid;

            Inventor.Application InvApp = AdnInventorUtilities.InvApplication;

            Document document = InvApp.ActiveDocument;

            // We will use late binding to retrieve ClientFeatures collection,
            // so we dont need to write specific code for PartDocument and
            // AssemblyDocument
            ComponentDefinition compDef =
                AdnInventorUtilities.GetCompDefinition(document);

            object features =
                AdnInventorUtilities.GetProperty(compDef, "Features");

            ClientFeatures clientFeatures =
                AdnInventorUtilities.GetProperty(features, "ClientFeatures")
                as ClientFeatures;

            ClientFeatureDefinition cfDef =
                clientFeatures.CreateDefinition("Graphics Feature", null, null, null);

            ClientFeature clientFeature =
                clientFeatures.Add(cfDef, clientId);

            NativeBrowserNodeDefinition nodeDef =
                clientFeature.BrowserNode.BrowserNodeDefinition as NativeBrowserNodeDefinition;

            stdole.IPictureDisp pic =
                PictureDispConverter.ToIPictureDisp(Resources.PointImage);

            ClientNodeResource res =
                document.BrowserPanes.ClientNodeResources.Add(
                    clientId,
                    document.BrowserPanes.ClientNodeResources.Count + 1,
                    pic);

            nodeDef.OverrideIcon = res;

            cfDef = clientFeature.Definition;

            cfDef.HighlightClientGraphicsWithFeature = true;

            GraphicsDataSets sets =
                cfDef.GraphicsDataSetsCollection.Add2(clientId, true);

            GraphicsCoordinateSet coordSet = sets.CreateCoordinateSet(1);

            double[] coords = new double[]
            {
                0.0, 0.0, 0.0,
                5.0, 0.0, 0.0,
                2.5, 5.0, 0.0
            };

            coordSet.PutCoordinates(ref coords);

            ClientGraphics cg =
                cfDef.ClientGraphicsCollection.Add(clientId);

            GraphicsNode node = cg.AddNode(1);

            node.RenderStyle = document.RenderStyles["Green (Flat)"];

            TriangleGraphics primitive = node.AddTriangleGraphics();

            primitive.CoordinateSet = coordSet;

            InvApp.ActiveView.Update();
        }
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Description: Displays a LineGraphics using Index and Color Sets.
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        static public void IndexSetDemo()
        {
            PartDocument doc =
                AdnInventorUtilities.InvApplication.ActiveDocument
                as PartDocument;

            string clientId = "{Add-in Guid}";

            ClientGraphics   graphics = null;
            GraphicsDataSets dataSets = null;

            // Add some error handling in case
            // graphics collection and data already exist
            try
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection[clientId];
                dataSets = doc.GraphicsDataSetsCollection[clientId];
            }
            catch
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection.Add(clientId);
                dataSets = doc.GraphicsDataSetsCollection.Add(clientId);
            }

            // Add new node and coord set
            // Id generation by increment - bad because previous nodes/sets
            // may have been deleted previously, hence making count invalid

            GraphicsNode node =
                graphics.AddNode(graphics.Count + 1);

            GraphicsCoordinateSet coordSet =
                dataSets.CreateCoordinateSet(dataSets.Count + 1);

            double[] coords = new double[]
            {
                0.0, 0.0, 0.0, //point 1
                1.0, 1.0, 0.0, //point 2
                0.0, 1.0, 0.0, //point 3
                1.0, 0.0, 0.0  //point 4
            };

            coordSet.PutCoordinates(ref coords);

            LineGraphics lineGraphPrimitive = node.AddLineGraphics();

            lineGraphPrimitive.LineWeight = 5.0;

            //Create Coordinate Index Set
            GraphicsIndexSet indexSetCoords = dataSets.CreateIndexSet(dataSets.Count + 1);

            indexSetCoords.Add(1, 1); //from point 1
            indexSetCoords.Add(2, 3); //connect to point 3
            indexSetCoords.Add(3, 3); //from point 3
            indexSetCoords.Add(4, 2); //connect to point 2
            indexSetCoords.Add(5, 2); //from point 2
            indexSetCoords.Add(6, 4); //connect to point 4

            lineGraphPrimitive.CoordinateSet      = coordSet;
            lineGraphPrimitive.CoordinateIndexSet = indexSetCoords;


            //Create the color set with two colors
            GraphicsColorSet colorSet = dataSets.CreateColorSet(dataSets.Count + 1);

            colorSet.Add(1, 221, 0, 0);
            colorSet.Add(2, 255, 170, 0);
            colorSet.Add(3, 119, 187, 17);

            //Create the index set for color
            GraphicsIndexSet indexSetColors = dataSets.CreateIndexSet(dataSets.Count + 1);

            indexSetColors.Add(1, 3); //line 1 uses color 3
            indexSetColors.Add(2, 1); //line 2 uses color 1
            indexSetColors.Add(3, 2); //line 3 uses color 2

            lineGraphPrimitive.ColorSet      = colorSet;
            lineGraphPrimitive.ColorIndexSet = indexSetColors;

            lineGraphPrimitive.ColorBinding = ColorBindingEnum.kPerItemColors;

            doc.Views[1].Update();
        }
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Description: Displays a TriangleFan Graphics.
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        static public void TriangleFanGraphicsDemo()
        {
            PartDocument doc =
                AdnInventorUtilities.InvApplication.ActiveDocument
                as PartDocument;

            string clientId = "{Add-in Guid}";

            ClientGraphics   graphics = null;
            GraphicsDataSets dataSets = null;

            try
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection[clientId];
                dataSets = doc.GraphicsDataSetsCollection[clientId];
            }
            catch
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection.Add(clientId);
                dataSets = doc.GraphicsDataSetsCollection.Add(clientId);
            }

            GraphicsNode node = graphics.AddNode(graphics.Count + 1);

            GraphicsCoordinateSet coordSet = dataSets.CreateCoordinateSet(dataSets.Count + 1);

            double[] coords = new double[]
            {
                0.0, 0.0, 0.0, //point 1
                1.0, 1.0, 0.0, //point 2
                2.0, 0.0, 0.0, //point 3
                3.0, 1.0, 0.0, //point 4
                4.0, 0.0, 0.0, //point 5
                5.0, 1.0, 0.0, //point 6
                6.0, 0.0, 0.0, //point 7
            };

            coordSet.PutCoordinates(ref coords);

            TriangleFanGraphics triFanPrimitive = node.AddTriangleFanGraphics();

            int[] strips = new int[]
            {
                3, //points 1,2,3 for strip 1
                4  //points 4,5,6,7 for strip 2
            };

            triFanPrimitive.PutStripLengths(ref strips);

            //Create the color set with 3 colors
            GraphicsColorSet colorSet = dataSets.CreateColorSet(dataSets.Count + 1);

            colorSet.Add(1, 221, 0, 0);
            colorSet.Add(2, 119, 187, 17);
            colorSet.Add(3, 119, 187, 17);

            //Create the index set for color
            GraphicsIndexSet indexSetColors = dataSets.CreateIndexSet(dataSets.Count + 1);

            indexSetColors.Add(1, 2); //strip 1 uses color 1
            indexSetColors.Add(2, 1); //strip 2 uses color 2

            triFanPrimitive.CoordinateSet = coordSet;
            triFanPrimitive.ColorIndexSet = indexSetColors;
            triFanPrimitive.ColorSet      = colorSet;
            triFanPrimitive.ColorBinding  = ColorBindingEnum.kPerStripColors;

            doc.Views[1].Update();
        }
예제 #12
0
        public void UpdatePreviewGraphics()
        {
            m_graphicsCoordinateSet = null;

            InteractionGraphics interactionGraphics = m_interactionEvents.InteractionGraphics;
            GraphicsDataSets    graphicsDataSets    = interactionGraphics.GraphicsDataSets;

            if (graphicsDataSets.Count != 0)
            {
                graphicsDataSets[1].Delete();
            }

            //  m_graphicsCoordinateSet = graphicsDataSets.CreateCoordinateSet(1);

            //m_pointGraphics.CoordinateSet = m_graphicsCoordinateSet;

            //TransientGeometry transientGeometry = m_inventorApplication.TransientGeometry;

            PartDocument oPartDoc;

            oPartDoc = (PartDocument)m_inventorApplication.ActiveDocument;

            PartComponentDefinition oPartCompDef;

            oPartCompDef = oPartDoc.ComponentDefinition;

            WorkAxis workAxis;

            workAxis = oPartCompDef.WorkAxes.AddByRevolvedFace(m_selectFace, true);

            if (m_UCS == null)
            {
                return;
            }

            WorkPoint workPoint;

            workPoint = oPartCompDef.WorkPoints.AddByCurveAndEntity(workAxis, m_UCS.XYPlane);
            Point transPoint = workPoint.Point;

            UnitVector xUnitVector = m_UCS.XAxis.Line.Direction;
            UnitVector yUnitVector = m_UCS.YAxis.Line.Direction;

            Double[] xCoords = new Double[3];
            xUnitVector.GetUnitVectorData(ref xCoords);
            Double[] yCoords = new Double[3];
            yUnitVector.GetUnitVectorData(ref yCoords);

            double xOffset = this.GetValueFromExpression(m_moveCmdDlg.xOffsetText.Text);
            double yOffset = this.GetValueFromExpression(m_moveCmdDlg.yOffsetText.Text);

            Double[] transCoords = new Double[3];
            transCoords[0] = xOffset * xCoords[0] + yOffset * yCoords[0];
            transCoords[1] = xOffset * xCoords[1] + yOffset * yCoords[1];
            transCoords[2] = xOffset * xCoords[2] + yOffset * yCoords[2];

            Vector transVector = m_inventorApplication.TransientGeometry.CreateVector();

            transVector.PutVectorData(transCoords);

            transPoint.TranslateBy(transVector);

            Double[] oPointCoords = new Double[3];
            oPointCoords[0] = transPoint.X;
            oPointCoords[1] = transPoint.Y;
            oPointCoords[2] = transPoint.Z;

            m_graphicsCoordinateSet = graphicsDataSets.CreateCoordinateSet(1);

            m_graphicsCoordinateSet.PutCoordinates(oPointCoords);

            m_pointGraphics.CoordinateSet = m_graphicsCoordinateSet;

            TransientGeometry transientGeometry = m_inventorApplication.TransientGeometry;

            // m_graphicsCoordinateSet.Add(1, transPoint);

            m_inventorApplication.ActiveView.Update();
        }