////////////////////////////////////////////////////////////////////////////////////////////// // Description: Displays a TextGraphics with different styles and properties. // ////////////////////////////////////////////////////////////////////////////////////////////// static public void TextGraphicsDemo() { 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); } TransientGeometry Tg = AdnInventorUtilities.InvApplication.TransientGeometry; GraphicsNode node = graphics.AddNode(graphics.Count + 1); //Create scalable text graphics TextGraphics scalableTxt = node.AddScalableTextGraphics(); //Set the properties of the text scalableTxt.Text = "Scalable Text"; scalableTxt.Anchor = Tg.CreatePoint(0, 20, 0); scalableTxt.Bold = true; scalableTxt.Font = "Arial"; scalableTxt.FontSize = 10; scalableTxt.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft; scalableTxt.Italic = true; scalableTxt.PutTextColor(119, 187, 17); scalableTxt.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle; //Create anchored text graphics TextGraphics anchoredTxt = node.AddTextGraphics(); //Set the properties of the text. anchoredTxt.Text = "Anchored Text"; anchoredTxt.Bold = true; anchoredTxt.FontSize = 30; anchoredTxt.PutTextColor(255, 170, 0); Point anchorPoint = Tg.CreatePoint(1, 1, 1); //Set the text's anchor in model space. anchoredTxt.Anchor = anchorPoint; //Anchor the text graphics in the view. anchoredTxt.SetViewSpaceAnchor( anchorPoint, Tg.CreatePoint2d(30, 30), ViewLayoutEnum.kTopLeftViewCorner); TextGraphics symbolTxt1 = node.AddTextGraphics(); symbolTxt1.Text = "n "; Point modelAnchorPoint = Tg.CreatePoint(50, 0, 0); //Because this text will have pixel scaling behavior these coordinates are in pixel space. symbolTxt1.Anchor = Tg.CreatePoint(0, 0, 0); symbolTxt1.Font = "AIGDT"; symbolTxt1.FontSize = 25; symbolTxt1.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft; symbolTxt1.PutTextColor(221, 0, 0); symbolTxt1.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle; symbolTxt1.SetTransformBehavior( modelAnchorPoint, DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling, 1); Box box = symbolTxt1.RangeBox; //Draw the next section of the string relative to the first section. TextGraphics symbolTxt2 = node.AddTextGraphics(); symbolTxt2.Text = "9.4 - 9.8"; //The range of the previous character is used to determine where to position //the next string. The range is returned in pixels. symbolTxt2.Anchor = Tg.CreatePoint(box.MaxPoint.X, 0, 0); symbolTxt2.Font = "Arial"; symbolTxt2.FontSize = 25; symbolTxt2.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft; symbolTxt2.PutTextColor(221, 0, 0); symbolTxt2.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle; symbolTxt2.SetTransformBehavior( modelAnchorPoint, DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling, 1); doc.Views[1].Update(); }
////////////////////////////////////////////////////////////////////////////////////////////// // Draws dimension graphics // ////////////////////////////////////////////////////////////////////////////////////////////// DimData DrawDimension(Point point1, Point point2, Point dimText, Vector normal) { // Compute extension points Vector xAxis = point1.VectorTo(point2); Vector upVector = normal.CrossProduct(xAxis); upVector.Normalize(); Plane plane = _Tg.CreatePlane(point1, normal); Point dimTextProj = AdnInventorUtilities.ProjectOnPlane(dimText, plane); double dotP1 = point1.VectorTo(dimTextProj).DotProduct(upVector); double dotP2 = point2.VectorTo(dimTextProj).DotProduct(upVector); Point extP1 = _Tg.CreatePoint( point1.X + upVector.X * dotP1, point1.Y + upVector.Y * dotP1, point1.Z + upVector.Z * dotP1); Point extP2 = _Tg.CreatePoint( point2.X + upVector.X * dotP2, point2.Y + upVector.Y * dotP2, point2.Z + upVector.Z * dotP2); double dimValue = extP1.DistanceTo(extP2); GraphicsNode node = _clientGraphicsMng.CreateNewGraphicsNode(); LineGraphics extLine1 = _clientGraphicsMng.DrawLine( AdnInventorUtilities.ToArray(point1), AdnInventorUtilities.ToArray(extP1), node); LineGraphics extLine2 = _clientGraphicsMng.DrawLine( AdnInventorUtilities.ToArray(point2), AdnInventorUtilities.ToArray(extP2), node); LineGraphics dimLine = _clientGraphicsMng.DrawLine( AdnInventorUtilities.ToArray(extP1), AdnInventorUtilities.ToArray(extP2), node); extLine1.LineType = LineTypeEnum.kDashedLineType; extLine2.LineType = LineTypeEnum.kDashedLineType; UnitVector v = extP1.VectorTo(extP2).AsUnitVector(); double length = 20.0; double radius = 7.0; Point bottom1 = _Tg.CreatePoint( extP1.X + length * v.X, extP1.Y + length * v.Y, extP1.Z + length * v.Z); Point bottom2 = _Tg.CreatePoint( extP2.X - length * v.X, extP2.Y - length * v.Y, extP2.Z - length * v.Z); SurfaceBody cone1 = _TBrep.CreateSolidCylinderCone( bottom1, extP1, radius, radius, 0.0, null); SurfaceBody cone2 = _TBrep.CreateSolidCylinderCone( bottom2, extP2, radius, radius, 0.0, null); GraphicsNode dimNode = _clientGraphicsMng.CreateNewGraphicsNode(); SurfaceGraphics arrow1 = _clientGraphicsMng.DrawSurface(cone1, dimNode); SurfaceGraphics arrow2 = _clientGraphicsMng.DrawSurface(cone2, dimNode); arrow1.SetTransformBehavior(extP1, DisplayTransformBehaviorEnum.kPixelScaling, 1.0); arrow2.SetTransformBehavior(extP2, DisplayTransformBehaviorEnum.kPixelScaling, 1.0); TextGraphics text = _clientGraphicsMng.DrawText( AdnInventorUtilities.GetStringFromAPILength(dimValue), false, dimNode); text.Font = "Arial"; text.Bold = false; text.Italic = false; text.FontSize = 20; text.PutTextColor(221, 0, 0); text.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle; text.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft; Point txtPos = _Tg.CreatePoint( (extP1.X + extP2.X) * 0.5, (extP1.Y + extP2.Y) * 0.5, (extP1.Z + extP2.Z) * 0.5); text.Anchor = txtPos; text.SetTransformBehavior(txtPos, DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling, 1.0); node.Selectable = true; dimNode.Selectable = true; return(new DimData(point1, point2, extLine1, extLine2, dimLine, dimNode)); }