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