//----------------------------------------------------------------------------- //----------------- 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; }
/// <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 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(); }
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(); }
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); }
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(); }