Exemplo n.º 1
0
        //-----------------------------------------------------------------------------
        //----------------- MoveCmd implement ----------------------------------------
        //-----------------------------------------------------------------------------
        public void InitializePreviewGraphics()
        {
            m_interactionEvents = m_inventorApplication.CommandManager.CreateInteractionEvents();

            InteractionGraphics interactionGraphics = m_interactionEvents.InteractionGraphics;

            ClientGraphics previewClientGraphics = interactionGraphics.PreviewClientGraphics;

            m_previewClientGraphicsNode = previewClientGraphics.AddNode(1);

            m_pointGraphics = m_previewClientGraphicsNode.AddPointGraphics();

            GraphicsDataSets graphicsDateSets = interactionGraphics.GraphicsDataSets;

            m_graphicsCoordinateSet = graphicsDateSets.CreateCoordinateSet(1);

            m_graphicsColorSet = graphicsDateSets.CreateColorSet(1);

            m_graphicsColorSet.Add(1, 255, 0, 0);

            m_graphicsColorIndexSet = graphicsDateSets.CreateIndexSet(1);

            m_pointGraphics.CoordinateSet = m_graphicsCoordinateSet;
            m_pointGraphics.BurnThrough   = true;
        }
Exemplo n.º 2
0
        /// <summary>
        /// When the appropriate rectangle button is clicked the button's OnExecute event handler
        /// calls this method to hook up the mouse click event which will wait for the user to select
        /// a point from which to start the drawing of the rectangle
        /// </summary>
        public virtual void StartRectangleInteraction()
        {
            _interactionEvents = _inventorApplication.CommandManager.CreateInteractionEvents();

            _rectangleInteractionGraphics = _interactionEvents.InteractionGraphics;
            _rectangleClientGraphics      = _rectangleInteractionGraphics.OverlayClientGraphics;
            _rectangleLineNode            = _rectangleClientGraphics.AddNode(1);
            _rectangleGraphicsDataSets    = _rectangleInteractionGraphics.GraphicsDataSets;
            _rectangleCoordSet            = _rectangleGraphicsDataSets.CreateCoordinateSet(1);
            _rectangleIndexSet            = _rectangleGraphicsDataSets.CreateIndexSet(1);

            _onTerminate_Delegate           = new InteractionEventsSink_OnTerminateEventHandler(StopInteraction);
            _interactionEvents.OnTerminate += _onTerminate_Delegate;

            _userInputEvents = _inventorApplication.CommandManager.UserInputEvents;
            _userInputEvents_OnContextMenuDelegate = new UserInputEventsSink_OnContextMenuEventHandler(UserInputEvents_OnContextMenu);
            _userInputEvents.OnContextMenu        += _userInputEvents_OnContextMenuDelegate;

            _mouseEvents = _interactionEvents.MouseEvents;
            _mouseEvents.PointInferenceEnabled = true;
            _onMouseClick_Delegate             = new MouseEventsSink_OnMouseClickEventHandler(OnMouseClick_CreateRectangle);
            _mouseEvents.OnMouseClick         += _onMouseClick_Delegate;

            _interactionEvents.StatusBarText = "Select a Point from which to start the rectangle";

            _interactionEvents.AllowCommandAliases = true;

            _interactionEvents.Start();
        }
Exemplo n.º 3
0
        public void InitializePreviewGraphics()
        {
            m_interactionEvents = m_inventorApplication.CommandManager.CreateInteractionEvents();

            InteractionGraphics interactionGraphics = m_interactionEvents.InteractionGraphics;

            ClientGraphics previewClientGraphics = interactionGraphics.PreviewClientGraphics;

            m_previewClientGraphicsNode = previewClientGraphics.AddNode(1);

            m_triangleStripGraphics = m_previewClientGraphicsNode.AddTriangleStripGraphics();

            GraphicsDataSets graphicsDataSets = interactionGraphics.GraphicsDataSets;

            m_graphicsCoordinateSet = graphicsDataSets.CreateCoordinateSet(1);

            m_graphicsColorSet = graphicsDataSets.CreateColorSet(1);

            m_graphicsColorSet.Add(1, 100, 100, 200);
            m_graphicsColorSet.Add(2, 150, 150, 250);

            m_graphicsColorIndexSet = graphicsDataSets.CreateIndexSet(1);

            m_triangleStripGraphics.CoordinateSet = m_graphicsCoordinateSet;
            m_triangleStripGraphics.ColorSet      = m_graphicsColorSet;
            m_triangleStripGraphics.ColorIndexSet = m_graphicsColorIndexSet;

            m_triangleStripGraphics.ColorBinding = ColorBindingEnum.kPerItemColors;
            m_triangleStripGraphics.BurnThrough  = true;
        }
        //////////////////////////////////////////////////////////////////////////////////////////////
        // 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();
        }
Exemplo n.º 6
0
        public void UpdatePreviewGraphics()
        {
            //remove the existing co-ordinates
            m_graphicsCoordinateSet = null;

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

            m_graphicsCoordinateSet = graphicsDataSets.CreateCoordinateSet(1);

            //remove the existing color indices
            m_graphicsColorIndexSet = null;

            m_graphicsColorIndexSet = graphicsDataSets.CreateIndexSet(1);
            m_triangleStripGraphics.CoordinateSet = m_graphicsCoordinateSet;
            m_triangleStripGraphics.ColorIndexSet = m_graphicsColorIndexSet;

            TransientGeometry transientGeometry = m_inventorApplication.TransientGeometry;

            Point point1 = transientGeometry.CreatePoint(0, 0, 0);
            Point point2 = transientGeometry.CreatePoint(m_length, 0, 0);
            Point point3 = transientGeometry.CreatePoint(m_length, m_width, 0);
            Point point4 = transientGeometry.CreatePoint(0, m_width, 0);
            Point point5 = transientGeometry.CreatePoint(0, 0, m_height);
            Point point6 = transientGeometry.CreatePoint(m_length, 0, m_height);
            Point point7 = transientGeometry.CreatePoint(m_length, m_width, m_height);
            Point point8 = transientGeometry.CreatePoint(0, m_width, m_height);

            AddGraphicsPoints(point1);
            AddColorIndex(1);
            AddGraphicsPoints(point6);
            AddColorIndex(1);
            AddGraphicsPoints(point2);
            AddColorIndex(1);
            AddGraphicsPoints(point3);
            AddColorIndex(1);
            AddGraphicsPoints(point1);
            AddColorIndex(2);
            AddGraphicsPoints(point4);
            AddColorIndex(2);
            AddGraphicsPoints(point8);
            AddColorIndex(1);
            AddGraphicsPoints(point3);
            AddColorIndex(1);
            AddGraphicsPoints(point7);
            AddColorIndex(2);
            AddGraphicsPoints(point6);
            AddColorIndex(2);
            AddGraphicsPoints(point8);
            AddColorIndex(1);
            AddGraphicsPoints(point5);
            AddColorIndex(1);
            AddGraphicsPoints(point1);
            AddColorIndex(2);
            AddGraphicsPoints(point6);
            AddColorIndex(2);

            m_inventorApplication.ActiveView.Update();

            //Get the CommandManager object
            CommandManager oCommandManager;

            oCommandManager = m_inventorApplication.CommandManager;

            //Get control definition for the homeview command
            ControlDefinition oControlDef;

            oControlDef = oCommandManager.ControlDefinitions["AppIsometricViewCmd"];

            //Excute the command
            oControlDef.Execute();
        }
        /// <summary>
        /// When the appropriate rectangle button is clicked the button's OnExecute event handler
        /// calls this method to hook up the mouse click event which will wait for the user to select 
        /// a point from which to start the drawing of the rectangle
        /// </summary>
        public virtual void StartRectangleInteraction()
        {
            _interactionEvents = _inventorApplication.CommandManager.CreateInteractionEvents();

            _rectangleInteractionGraphics = _interactionEvents.InteractionGraphics;
            _rectangleClientGraphics = _rectangleInteractionGraphics.OverlayClientGraphics;
            _rectangleLineNode = _rectangleClientGraphics.AddNode(1);
            _rectangleGraphicsDataSets = _rectangleInteractionGraphics.GraphicsDataSets;
            _rectangleCoordSet = _rectangleGraphicsDataSets.CreateCoordinateSet(1);
            _rectangleIndexSet = _rectangleGraphicsDataSets.CreateIndexSet(1);

            _onTerminate_Delegate = new InteractionEventsSink_OnTerminateEventHandler(StopInteraction);
            _interactionEvents.OnTerminate += _onTerminate_Delegate;

            _userInputEvents = _inventorApplication.CommandManager.UserInputEvents;
            _userInputEvents_OnContextMenuDelegate = new UserInputEventsSink_OnContextMenuEventHandler(UserInputEvents_OnContextMenu);
            _userInputEvents.OnContextMenu += _userInputEvents_OnContextMenuDelegate;

            _mouseEvents = _interactionEvents.MouseEvents;
            _mouseEvents.PointInferenceEnabled = true;
            _onMouseClick_Delegate = new MouseEventsSink_OnMouseClickEventHandler(OnMouseClick_CreateRectangle);
            _mouseEvents.OnMouseClick += _onMouseClick_Delegate;

            _interactionEvents.StatusBarText = "Select a Point from which to start the rectangle";

            _interactionEvents.AllowCommandAliases = true;

            _interactionEvents.Start();
        }
        public void CreateMesh(NameValueMap nv)
        {
            var N  = 512;
            var T0 = DateTime.Now;

            if (null != mGraphicsDataSets)
            {
                mGraphicsDataSets.Delete();
                mGraphicsDataSets = null;

                mGraphicsNode.Delete();
                mGraphicsNode = null;

                mApp.ActiveView.Update();
                return;
            }

            var doc = mApp.ActiveDocument as PartDocument;

            if (null == mClientGraphics)
            {
                mClientGraphics = doc.ComponentDefinition.ClientGraphicsCollection.Add("MyTest");
            }

            mGraphicsDataSets = doc.GraphicsDataSetsCollection.Add("MyTest");

            var setupTimeSeconds = (DateTime.Now - T0).TotalSeconds;

            T0 = DateTime.Now;

            var msg = string.Format("N = {0}, {1} triangles\n", N, mNumTriangles)
                      + string.Format("Inventor setup time: {0} sec\n", setupTimeSeconds);

            T0 = DateTime.Now;

            try
            {
                var dataSetsTimeSeconds = (DateTime.Now - T0).TotalSeconds;
                T0 = DateTime.Now;

                var gcs = mGraphicsDataSets.CreateCoordinateSet(1) as GraphicsCoordinateSet;
                gcs.PutCoordinates(mVertices);

                var coordSetSeconds = (DateTime.Now - T0).TotalSeconds;
                T0 = DateTime.Now;

                var gis = mGraphicsDataSets.CreateIndexSet(2) as GraphicsIndexSet;
                gis.PutIndices(mIndices);

                var indexSetSeconds = (DateTime.Now - T0).TotalSeconds;
                T0 = DateTime.Now;

                var gns = mGraphicsDataSets.CreateNormalSet(3) as GraphicsNormalSet;
                gns.PutNormals(mNormals);

                var normalSetSeconds = (DateTime.Now - T0).TotalSeconds;
                T0 = DateTime.Now;

                mGraphicsNode = mClientGraphics.AddNode(1) as GraphicsNode;
                var triangles = mGraphicsNode.AddTriangleGraphics() as TriangleGraphics;

                triangles.CoordinateSet      = gcs;
                triangles.CoordinateIndexSet = gis;
                triangles.NormalSet          = gns;
                triangles.NormalBinding      = NormalBindingEnum.kPerItemNormals;
                triangles.NormalIndexSet     = gis;

                var trianglesSeconds = (DateTime.Now - T0).TotalSeconds;

                bool inActiveDocument;
                var  brassAsset = GetAsset("Brass - Satin", out inActiveDocument);
                if (null != brassAsset)
                {
                    if (!inActiveDocument)
                    {
                        brassAsset = brassAsset.CopyTo(doc);
                    }
                    mGraphicsNode.Appearance = brassAsset;
                }

                msg = msg + string.Format("GraphicsDataSetsCollection.Add time: {0} sec\n", dataSetsTimeSeconds)
                      + string.Format("Coordinate set creation time: {0} sec\n", coordSetSeconds)
                      + string.Format("Index set creation time: {0} sec\n", indexSetSeconds)
                      + string.Format("Normal set creation time: {0} sec\n", normalSetSeconds)
                      + string.Format("Triangle node creation time: {0} sec\n", trianglesSeconds);
            }
            catch (Exception e)
            {
                msg += string.Format("Exception: {0}", e.ToString());
            }

            mApp.ActiveView.Update();

            System.Windows.MessageBox.Show(msg);
        }
Exemplo n.º 9
0
        public void Draw3D(Part Bauteil, string Name)
        {
            foreach (var mmface in Bauteil.Faces)
            {
                foreach (var point in mmface.VertexCoords)
                {
                    mVertices.Add((double)point.X);
                    mVertices.Add((double)point.Y);
                    mVertices.Add((double)point.Z);
                }

                var N = mmface.VertexIndices.Count; //  Nomber of Indices
                foreach (var indice in mmface.VertexIndices)
                {
                    var i0 = indice;
                    var i1 = i0 + N;

                    var t0 = i0;
                    var t1 = i1;

                    // NOTE: The extra +1 on each line is because Inventor expects 1 - based indices.

                    mIndices.Add(t1 + 1 + 1);
                    mIndices.Add(t0 + 1);



                    mIndices.Add(t0 + 1 + 1);
                    //  mIndices.Add(t1 + 1 + 1);
                    //  mIndices.Add(t0 + 1);

                    mIndices.Add(t1 + 1);
                }
                foreach (var Norm in mmface.Normals)
                {
                    mNormals.Add((double)Norm.X);
                    mNormals.Add((double)Norm.Y);
                    mNormals.Add((double)Norm.Z);
                }
            }



            if (null != mGraphicsDataSets)
            {
                mGraphicsDataSets.Delete();
                mGraphicsDataSets = null;

                mGraphicsNode.Delete();
                mGraphicsNode = null;

                Addin3DPdf.TrAddInServer.MApp.ActiveView.Update();
                return;
            }

            PartDocument
                doc = Addin3DPdf.TrAddInServer.MApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject,
                                                                  Addin3DPdf.TrAddInServer.MApp.FileManager.GetTemplateFile(DocumentTypeEnum.kPartDocumentObject),
                                                                  true) as PartDocument;

            //    PartDocument doc = Addin3DPdf.TransAddInServer.MApp.ActiveDocument as PartDocument;
            if (null == mClientGraphics)
            {
                mClientGraphics = doc.ComponentDefinition.ClientGraphicsCollection.Add(Name);
            }

            mGraphicsDataSets = doc.GraphicsDataSetsCollection.Add(Name);



            double[] A_Verties = mVertices.ToArray();
            int[]    A_Indices = mIndices.ToArray();
            double[] A_Normals = mNormals.ToArray();
            try
            {
                var gcs = mGraphicsDataSets.CreateCoordinateSet(1) as GraphicsCoordinateSet;
                gcs.PutCoordinates(A_Verties);



                var gis = mGraphicsDataSets.CreateIndexSet(2) as GraphicsIndexSet;
                gis.PutIndices(A_Indices);



                var gns = mGraphicsDataSets.CreateNormalSet(3) as GraphicsNormalSet;
                gns.PutNormals(A_Normals);


                mGraphicsNode = mClientGraphics.AddNode(1) as GraphicsNode;
                var triangles = mGraphicsNode.AddTriangleGraphics() as TriangleGraphics;

                triangles.CoordinateSet      = gcs;
                triangles.CoordinateIndexSet = gis;
                triangles.NormalSet          = gns;
                triangles.NormalBinding      = NormalBindingEnum.kPerItemNormals;
                triangles.NormalIndexSet     = gis;



                bool inActiveDocument;
                var  brassAsset = GetAsset("Silver", out inActiveDocument);
                if (null != brassAsset)
                {
                    if (!inActiveDocument)
                    {
                        brassAsset = brassAsset.CopyTo(doc);
                    }
                    mGraphicsNode.Appearance = brassAsset;
                }
            }
            catch (Exception e)
            {
            }
            doc.SaveAs(Name, false);

            Addin3DPdf.TrAddInServer.MApp.ActiveView.Update();
        }